Pau*_*l R 17
是的,你可以使用内部函数在*mmintrin.h头(emmintrin.h,xmmintrin.h等等,这取决于你想使用什么级别的SSE的).由于许多原因,这通常优于使用汇编程序.
#include <emmintrin.h>
int main(void)
{
__m128i a = _mm_set_epi32(4, 3, 2, 1);
__m128i b = _mm_set_epi32(7, 6, 5, 4);
__m128i c = _mm_add_epi32(a, b);
// ...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,此方法适用于各种平台上的大多数x86和x86-64编译器,例如Linux/Mac OS X/Windows上的gcc,clang和Intel的ICC,甚至是Microsoft的Visual C/C++(当然只有Windows).
*intrin.h在你的 gcc 中找到头文件包含(/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/include/这里)。
也许值得注意的是,immintrin.h根据您允许的功能(使用-msse2或-mavx例如),标头包括所有其他内部。
你想要的是内在函数,它看起来像库函数但实际上内置在编译器中,因此它们转换为特定的机器代码.
Paul R和hroptatyr描述了在哪里可以找到GCC的文档.微软在其编译器中也有关于内在函数的良好文档 ; 即使你使用的是GCC,你也许会发现MS对这个想法的描述是一个更好的教程.
| 归档时间: |
|
| 查看次数: |
8834 次 |
| 最近记录: |