インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
次の単精度浮動小数点ベクトル組込み関数は、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3) 対応インテル® Pentium® 4 プロセッサー用に設計されたものです。これらの組込み関数のプロトタイプは、ヘッダーファイル pmmintrin.h 内にあります。
これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
各組込み関数演算の結果は、R0、R1、R2、および R3 レジスターに配置されます。
組込み関数名 |
演算 |
対応するインテル® SSE3 命令 |
---|---|---|
_mm_addsub_ps |
減算および加算 |
ADDSUBPS |
_mm_hadd_ps |
加算 |
HADDPS |
_mm_hsub_ps |
減算 |
HSUBPS |
_mm_movehdup_ps |
複製 |
MOVSHDUP |
_mm_moveldup_ps |
複製 |
MOVSLDUP |
extern __m128 _mm_addsub_ps(__m128 a, __m128 b);
奇数ベクトル要素を加え、偶数ベクトル要素を引きます。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
a0 - b0; |
a1 + b1; |
a2 - b2; |
a3 + b3; |
extern __m128 _mm_hadd_ps(__m128 a, __m128 b);
隣接したベクトル要素を加えます。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
a0 + a1; |
a2 + a3; |
b0 + b1; |
b2 + b3; |
extern __m128 _mm_hsub_ps(__m128 a, __m128 b);
隣接したベクトル要素を引きます。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
a0 - a1; |
a2 - a3; |
b0 - b1; |
b2 - b3; |
extern __m128 _mm_movehdup_ps(__m128 a);
奇数ベクトル要素を偶数ベクトル要素へ複製します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
a1; |
a1; |
a3; |
a3; |
extern __m128 _mm_moveldup_ps(__m128 a);
偶数ベクトル要素を奇数ベクトル要素へ複製します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
a0; |
a0; |
a2; |
a2; |