У меня возникли проблемы с использованием встроенных средств SSE4.1 на аппаратном обеспечении, которое (я думаю) поддерживает его. Может ли кто-нибудь сказать мне, что я что-то пропустил?Ошибка компиляции SSE4.1 на Mac
Построение следующий код на MacBookPro5,4 (Penryn):
>g++ -msse sse4.cpp -S -o sse4.asm
#include <stdio.h>
#include <smmintrin.h>
int main()
{
__m128 a, b;
const int mask = 0x55;
a.m128_f32[0] = 1.5;
a.m128_f32[1] = 10.25;
a.m128_f32[2] = -11.0625;
a.m128_f32[3] = 81.0;
b.m128_f32[0] = -1.5;
b.m128_f32[1] = 3.125;
b.m128_f32[2] = -50.5;
b.m128_f32[3] = 100.0;
__m128 res = _mm_dp_ps(a, b, mask);
printf_s("Original a: %f\t%f\t%f\t%f\nOriginal b: %f\t%f\t%f\t%f\n",
a.m128_f32[0], a.m128_f32[1], a.m128_f32[2], a.m128_f32[3],
b.m128_f32[0], b.m128_f32[1], b.m128_f32[2], b.m128_f32[3]);
printf_s("Result res: %f\t%f\t%f\t%f\n",
res.m128_f32[0], res.m128_f32[1], res.m128_f32[2], res.m128_f32[3]);
return 0;
}
Формирует следующее сообщение об ошибке:
/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/smmintrin.h:35:3: error: #error "SSE4.1 instruction set not enabled"
Независимо от того, поддерживает ли ваше оборудование SSE4.1, это не имеет значения. Даже если это не так, компилятор должен все же иметь возможность генерировать код для него. Или, если компилятор не может сгенерировать код для него, тот факт, что у вас есть оборудование снова, не помогает. –