#include <stdio.h>
#include <immintrin.h>
int main() {
__m128i va;
va = _mm_set_epi64((__m64)1, (__m64)2);
printf("va is set!\n");
return 0;
}
这是一段简单的代码,使用_mm_set_epi64来给一个__m128i 设置初始值, 使用gcc编译:
gcc -o intrin -msse4 main.c
编译报错:
main.c: In function 'main':
main.c:7:2: error: can't convert between vector values of different size
va = _mm_set_epi64((__m64)1, (__m64)2);
^
main.c:7:2: error: can't convert between vector values of different size
环境如下:
Centos 7
gcc 4.8.5
修改为
va = _mm_set_epi64x((uint64_t)1, (uint64_t)2);