我正在尝试将一些曾经在窗口上运行的代码移植到opensuse 12.1。但是我在编译使用SSE指令的代码部分时遇到问题。
opensuse在带有这些标志的intel Core i7上运行:
fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat dts tpr_shadow vnmi flexpriority ept vpid
。
大多数SSE指令都很好,但编译器似乎无法知道:_mm_dp_ps
。
它还抱怨__builtin_ia32_pshufd
和_mm_cvtepu8_epi32
。
任何人都可以帮助我吗?我错过了什么?
答案 0 :(得分:1)
_mm_dp_ps
和_mm_cvtepu8_epi32
都是SSE4.1 - 所以你需要:
#include <smmintrin.h> // SSE 4.1 intrinsics
你还需要编译:
$ gcc -msse4.1 ...