哪些头文件为不同的x86 SIMD指令集扩展(MMX、SSE、AVX、...)提供了内在函数?在网上似乎不可能找到这样的列表。如果我错了,请纠正我。
头文件名称取决于您的编译器和目标体系结构。
您可以使用条件预处理指令处理所有这些情况:
#if defined(_MSC_VER)
/* Microsoft C/C++-compatible compiler */
#include <intrin.h>
#elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
/* GCC-compatible compiler, targeting x86/x86-64 */
#include <x86intrin.h>
#elif defined(__GNUC__) && defined(__ARM_NEON__)
/* GCC-compatible compiler, targeting ARM with NEON */
#include <arm_neon.h>
#elif defined(__GNUC__) && defined(__IWMMXT__)
/* GCC-compatible compiler, targeting ARM with WMMX */
#include <mmintrin.h>
#elif (defined(__GNUC__) || defined(__xlC__)) && (defined(__VEC__) || defined(__ALTIVEC__))
/* XLC or GCC-compatible compiler, targeting PowerPC with VMX/VSX */
#include <altivec.h>
#elif defined(__GNUC__) && defined(__SPE__)
/* GCC-compatible compiler, targeting PowerPC with SPE */
#include <spe.h>
#endif
在GCC / clang上,如果您只使用
#include <x86intrin.h>
它将包括所有根据编译器开关启用的SSE/AVX头文件,如< code>-march=haswell或< code>-march=native。此外,一些特定于x86的指令,如< code>bswap或< code>ror可以作为内部函数使用。
此标头< code >的MSVC等效项
如果您只是想要便携式SIMD,请使用< code>#include
MSVC、ICC和gcc/clang(我想还有Sun等其他编译器)都支持英特尔唯一的内部函数查找器/搜索工具所记录的SIMD内部函数的这个头文件:https://software . Intel . com/sites/landing page/IntrinsicsGuide/
现在,您通常应该只包含<code>
GCC 和 clang 将阻止您在编译时将内部函数用于尚未启用的指令(例如,使用 -march=native
或 -mavx2 -mbmi2 -mpopcnt -mfma -mcx16 -mtune=znver1
或其他)。
MSVC和ICC将允许您在编译时使用内部函数而无需启用任何内容,但您仍然应该在使用AVX内部函数之前启用AVX。
历史上(在<code>imintrin.h
这对于 MSVC 和 ICC 可能仍然很有用,可以阻止自己使用不需要的指令集。
<mmintrin.h> MMX
<xmmintrin.h> SSE
<emmintrin.h> SSE2
<pmmintrin.h> SSE3
<tmmintrin.h> SSSE3
<smmintrin.h> SSE4.1
<nmmintrin.h> SSE4.2
<ammintrin.h> SSE4A
<wmmintrin.h> AES
<immintrin.h> AVX, AVX2, FMA
将其中一个拉入所有以前的拉入(除AMD外,仅SSE4A:imIntrin.h
不拉入)
一些编译器也有
我以为我理解了和箭头函数之间的关系,但是下面的代码片段让我怀疑我的理解。 我知道箭头函数捕获包含上下文的值。我原以为是对象,但它是。 有人能帮我理解为什么会这样吗?
严格说来,Ruby中没有函数.但Kernel模块中定义的方法(可以在任何地方用做函数,因此)可被其他语言当做函数来调用.若您对这些方法进行再定义时,就必需考虑到对其他方面的影响. `str 把字符串str当做外部命令来运行,并以字符串方式返回命令的输出.使用`str`形式来调用该方法(还可以使用%x(...)表示法进行调用.请参考命令输出). 可以使用$?来了解命令的结束状态. 若您只想执行命令,
我试图运行一个简单的mapdb示例,但出现了以下错误: 我的班级: 我的pomx.xml 我跑得很快-
这4个函数具有混合匹配的函数语法。调用嵌套函数时,func:with arrow函数返回空格。
我刚刚开始学习React和JavaScript。在我阅读了留档和教程之后,我看了一下示例项目,并试图整理我还没有得到的内容。 然后我看到有一些函数是在函数内部定义的,还有一些函数是在函数外部定义的。 例如,在之外: 和内部render()。。。 为什么它们看起来如此不同,为什么你想在内部和外部有一些函数? 编辑: 之外的函数的另一个示例: EDIT2:在另一个线程中,有人回答说,如果函数背后的逻辑