gpt4 book ai didi

c++ - _mm_shuffle_ps 即使包含 header 也未声明

转载 作者:太空宇宙 更新时间:2023-11-04 03:45:41 25 4
gpt4 key购买 nike

有时(不总是)当我在项目中包含我的数学头文件时,编译器会提示(尝试过 gcc 和 clang)_mm_shuffle_ps_mm_shuffle_pd即使设置了所有编译器标志 (-msse -msse2 -msse3) 并包含正确的 header (<x86intrin.h>),也未声明。

以下是我如何使用这些函数:

extern "C"{
#include <x86intrin.h>
}

template<typename T>
struct sse_type;

template<>
struct sse_type<float>{
typedef __m128 type;

constexpr static type(&shuffle)(type, type, int) = _mm_shuffle_ps;

// other sse functions
};

template<>
struct sse_type<double>{
typedef __m128d type;

constexpr static type(&shuffle)(type, type, int) = _mm_shuffle_pd;

// other sse functions
};

然后我在这些类上定义了一堆运算符重载,以便于使用。

这就是我只使用这些函数的方式,因为编译器不会提示这些类中定义的任何其他 sse 函数。

请记住,编译器并不总是提示这一点,并且某些项目使用此 header 编译得很好,我在这里到底做错了什么?或者这是一个编译器错误?

最佳答案

在问了这个问题后几乎马上就弄明白了(尽管我已经尝试弄清楚这个问题好几个小时了)。

如果没有设置优化标志,GCC 将从编译中发出一些 sse 函数。奇怪。

-O3 添加到我的编译标志中就可以了。

所以我仍然在 clang 中遇到错误,但是在 gcc 4.8 中设置 -O3 修复了错误:/

关于c++ - _mm_shuffle_ps 即使包含 header 也未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com