インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

変換組込み関数

変換操作用のインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) の組込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。

各組込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組込み関数ごとに R または R0 から R3 までを使用して示します。R0、R1、R2、および R3 はそれぞれ、結果レジスターの 4 つの 32 ビット部分を表します。

* が付いている組込み関数は、インテル® 64 アーキテクチャーでのみ利用できます。残りの組込み関数は、IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャーの両方で利用できます。

組込み関数名

演算

対応するインテル® SSE 命令

_mm_cvtss_si32

32 ビット整数値への変換

CVTSS2SI

_mm_cvtss_si64*

64 ビット整数値への変換

CVTSS2SI

_mm_cvtps_pi32

2 つの 32 ビット整数値への変換

CVTPS2PI

_mm_cvttss_si32

32 ビット整数値への変換

CVTTSS2SI

_mm_cvttss_si64*

64 ビット整数値への変換

CVTTSS2SI

_mm_cvttps_pi32

2 つの 32 ビット整数値への変換

CVTTPS2PI

_mm_cvtsi32_ss

32 ビット整数値からの変換

CVTSI2SS

_mm_cvtsi64_ss*

64 ビット整数値からの変換

CVTSI2SS

_mm_cvtpi32_ps

2 つの 32 ビット整数値からの変換

CVTTPI2PS

_mm_cvtpi16_ps

4 つの 16 ビット整数値からの変換

複合

_mm_cvtpu16_ps

4 つの 16 ビット整数値からの変換

複合

_mm_cvtpi8_ps

4 つの 8 ビット整数値からの変換

複合

_mm_cvtpu8_ps

4 つの 8 ビット整数値からの変換

複合

_mm_cvtpi32x2_ps

4 つの 32 ビット整数値からの変換

複合

_mm_cvtps_pi16

4 つの 16 ビット整数値への変換

複合

_mm_cvtps_pi8

4 つの 8 ビット整数値への変換

複合

_mm_cvtss_f32

抽出

複合

_mm_cvtss_si32

int _mm_cvtss_si32(__m128 a);

現在の丸めモードに従って、a の下位の単精度浮動小数点値を 32 ビット整数に変換します。

R

(int)a0

_mm_cvtss_si64

__int64 _mm_cvtss_si64(__m128 a);

現在の丸めモードに従って、a の下位の単精度浮動小数点値を符号付き 64 ビット整数値に変換します。

インテル® 64 アーキテクチャーのみで使用します。

R

(__int64)a0

_mm_cvtps_pi32

__m64 _mm_cvtps_pi32(__m128 a);

現在の丸めモードに従って、a の下位 2 つの単精度浮動小数点値を 2 つの 32 ビット整数に変換し、パックド形式で返します。

R0

R1

(int)a0

(int)a1

_mm_cvttss_si32

int _mm_cvttss_si32(__m128 a);

a の単精度浮動小数点値の下位側を、切り捨てモードで 1 つの 32 ビット整数に変換します。

R

(int)a0

_mm_cvttss_si64

__int64 _mm_cvttss_si64(__m128 a);

a の単精度浮動小数点値の下位側を、切り捨てモードで 1 つの 32 ビット整数に変換します。

インテル® 64 アーキテクチャーのみで使用します。

R

(__int64)a0

_mm_cvttps_pi32

__m64 _mm_cvttps_pi32(__m128 a);

切り捨てを使用して、a の下位 2 つの単精度浮動小数点値を 2 つの 32 ビット整数に変換し、パックド形式で返します。

R0

R1

(int)a0

(int)a1

_mm_cvtsi32_ss

__m128 _mm_cvtsi32_ss(__m128 a, int b);

32 ビット整数 b を単精度浮動小数点値に変換します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。

R0

R1

R2

R3

(float)b

a1

a2

a3

_mm_cvtsi64_ss

__m128 _mm_cvtsi64_ss(__m128 a, __int64 b);

64 ビット整数 b を単精度浮動小数点値に変換します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。

インテル® 64 アーキテクチャーのみで使用します。

R0

R1

R2

R3

(float)b

a1

a2

a3

_mm_cvtpi32_ps

__m128 _mm_cvtpi32_ps(__m128 a, __m64 b);

b のパックド形式の 2 つの 32 ビット整数値を、2 つの単精度浮動小数点値に変換します。上位 2 つの単精度浮動小数点値は、a からそのまま渡されます。

R0

R1

R2

R3

(float)b0

(float)b1

a2

a3

_mm_cvtpi16_ps

__m128 _mm_cvtpi16_ps(__m64 a);

a の 4 つの符号付き 16 ビット整数値を、4 つの単精度浮動小数点値に変換します。

R0

R1

R2

R3

(float)a0

(float)a1

(float)a2

(float)a3

_mm_cvtpu16_ps

__m128 _mm_cvtpu16_ps(__m64 a);

a の 4 つの符号付き 16 ビット整数値を、4 つの単精度浮動小数点値に変換します。

R0

R1

R2

R3

(float)a0

(float)a1

(float)a2

(float)a3

_mm_cvtpi8_ps

__m128 _mm_cvtpi8_ps(__m64 a);

a の下位 4 つの符号付き 8 ビット整数値を、4 つの単精度浮動小数点値に変換します。

R0

R1

R2

R3

(float)a0

(float)a1

(float)a2

(float)a3

_mm_cvtpu8_ps

__m128 _mm_cvtpu8_ps(__m64 a);

a の下位 4 つの符号なし 8 ビット整数値を、4 つの単精度浮動小数点値に変換します。

R0

R1

R2

R3

(float)a0

(float)a1

(float)a2

(float)a3

_mm_cvtpi32x2_ps

__m128 _mm_cvtpi32x2_ps(__m64 a, __m64 b);

a の 2 つの符号付き 32 ビット整数値と b の 2 つの符号付き 32 ビット整数値を、4 つの単精度浮動小数点値に変換します。

R0

R1

R2

R3

(float)a0

(float)a1

(float)b0

(float)b1

_mm_cvtps_pi16

__m64 _mm_cvtps_pi16(__m128 a);

a の 4 つの単精度浮動小数点値を、4 つの符号付き 16 ビット整数値に変換します。

R0

R1

R2

R3

(short)a0

(short)a1

(short)a2

(short)a3

_mm_cvtps_pi8

__m64 _mm_cvtps_pi8(__m128 a);

a の 4 つの単精度浮動小数点値を、結果の下位 4 つの符号付き 8 ビット整数値に変換します。

R0

R1

R2

R3

(char)a0

(char)a1

(char)a2

(char)a3

_mm_cvtss_f32

float _mm_cvtss_f32(__m128 a);

__m128 の最初のベクトル要素から単精度浮動小数点値を抽出します。使用されるコンテキストで可能な最も効率的な方法で行われます。