gcc - Mac 上的 SSE4.1 内在函数编译错误

标签 gcc sse intrinsics

我在(我认为)支持它的硬件上使用 SSE4.1 内在函数时遇到了一些麻烦。
谁能告诉我我是否错过了什么?

在 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"

最佳答案

改变:
g++ -msse sse4.cpp -S -o sse4.asm
到:
g++ -msse4.1 sse4.cpp -S -o sse4.asm

关于gcc - Mac 上的 SSE4.1 内在函数编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3754491/

相关文章:

gcc - 链接到 libcuda.so 时出现问题

c++ - 为什么空数组的大小为 0 而空类的大小不为 0?

c++ - g++ 默认启用 sse2 吗?

c++ - 使用 SIMD 查找表

c++ - 如何将VDT的Pade Exp fast_ex()双重版本的标量代码转换为SSE2?

x86 - Rust 获取 SIMD 向量中真实字节的索引

c++ - 由于符号与 abi::cxx11 的链接问题?

assembly - 可以跳过每个第二个字节的SSE mov指令?

c++ - SSE 与类(class)保持一致

英特尔 SSE 内在函数 : Difference between si64 si64x