英特尔的C++编译器和/或GCC是否支持以下英特尔本质,就像2012 /2013年以来的MSVC一样?
#include <immintrin.h> // for the following intrinsics
int _rdrand16_step(uint16_t*);
int _rdrand32_step(uint32_t*);
int _rdrand64_step(uint64_t*);
int _rdseed16_step(uint16_t*);
int _rdseed32_step(uint32_t*);
int _rdseed64_step(uint64_t*);如果支持这些本质,因为它们支持哪个版本(请使用编译时间常数)?
发布于 2015-03-31 18:03:15
GCC和英特尔编译器都支持他们。GCC的支持是在2010年底推出的。它们需要头<immintrin.h>。
GCC支持已经存在,至少从4.6版本,但似乎没有任何具体的编译时常数-你可以只检查__GNUC_MAJOR__ > 4 || (__GNUC_MAJOR__ == 4 && __GNUC_MINOR__ >= 6)。
发布于 2015-07-06 22:27:51
Microsoft编译器不支持RDSEED和RDRAND指令。
但是,您可以使用NASM或MASM实现这些指令。汇编代码可从以下网址获得:
对于Intel编译器,您可以使用标头来确定版本。您可以使用以下宏来确定版本和子版本:
__INTEL_COMPILER //Major Version
__INTEL_COMPILER_UPDATE // Minor Update.例如,如果使用ICC15.0Update 3编译器,它将显示
__INTEL_COMPILER = 1500
__INTEL_COMPILER_UPDATE = 3有关预定义宏的更多详细信息,请访问:https://software.intel.com/en-us/node/524490
https://stackoverflow.com/questions/29372893
复制相似问题