SSE中__m128与__m128i的区别

来源:百度知道 编辑:UC知道 时间:2024/06/01 14:12:39
int main()
{
__m128i a;
__m128 b;
a.m128i_i32[0]=0x7FFFFFFF;
b.m128_i32[0]=0x7FFFFFFF;
printf("m128i:%d\n",a.m128i_i32[0]);
printf("m128:%d\n",b.m128_i32[0]);
}

谁知道__m128与__m128i的区别

__m128 数据类型
该数据类型的变量可用做SSE指令的操作数,也可称作向量浮点数
,它们不能被用户指令直接存取。_m128类型的变量被自动分配为16个字节的字长。

__m128i 数据类型
该数据类型的变量可用做SSE2指令的操作数,也可称作向量,它们不能被用户指令直接存取。_m128i类型的变量被自动分配为16个字节的字长。

我印象没什么大区别,但是有一个对照表你可以参考一下:
向量数据类型的苹果名称和Intel名称
包装类型的向量----苹果名称--Intel名称
unsigned char------vUInt8----__m128i
signed char--------vSInt8----__m128i
unsigned short-----vUInt16---__m128i
signed short-------vSInt16---__m128i
unsigned int-------vUInt32---__m128i
signed int---------vSInt32---__m128i
unsigned long long-vUInt64---__m128i
signed long long---vSInt64---__m128i
32-bit boolean-----vBool32---__m128i
float--------------vFloat----__m128
double-------------vDouble---__m128d