- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有时(不总是)当我在项目中包含我的数学头文件时,编译器会提示(尝试过 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/
SSE 内在函数包括 _mm_shuffle_ps xmm1 xmm2 immx允许从 xmm1 中选取 2 个元素与来自 xmm2 的 2 个元素连接.然而,这是针对浮点数,(由 _ps 暗示,打包
有时(不总是)当我在项目中包含我的数学头文件时,编译器会提示(尝试过 gcc 和 clang)_mm_shuffle_ps和 _mm_shuffle_pd即使设置了所有编译器标志 (-msse -ms
_mm_shuffle_ps() 内在函数允许将浮点输入交错为输出的低 2 float 和高 2 float 。 例如: R = _mm_shuffle_ps(L1, H1, _MM_SHUFFLE(
如果我的理解正确的话 _mm_movehdup_ps(a) 给出相同的结果 _mm_shuffle_ps(a, a, _MM_SHUFFLE(1, 1, 3, 3)) ? 两者有性能差异吗? 最佳答案
我正在尝试将 SSE 编写的代码转换为 NEON SIMD,但由于 _mm_shuffle_ps SSE 内在函数而陷入困境。这是代码: b = _mm_shuffle_ps(a, b, 136);
我是一名优秀的程序员,十分优秀!