作者:zyl910。
列名解释——
GCC470:GCC 4.7.0 (Fedora 17)。/usr/lib/gcc/i686-redhat-linux/4.7.0/include/。
GCC462:GCC 4.6.2 (MinGW)。\lib\gcc\mingw32\4.6.2\include。
宏:判断该指令集是否启用的宏。
参数:启用该指令集的命令行参数。
描述:指令集描述。
GCC470 | GCC462 | 宏 | 参数 | 描述 |
abmintrin.h | __ABM__ | -mabm | ABM: Advanced Bit Manipulation. 改为lzcntintrin.h. | |
ammintrin.h | ammintrin.h | __SSE4A__ | -msse4a | SSE4A |
avx2intrin.h | __AVX2__ | -mavx2 | AVX2 | |
avxintrin.h | avxintrin.h | __AVX__ | -mavx | AVX: Advanced Vector Extensions |
bmi2intrin.h | __BMI2__ | -mbmi2 | BMI2 | |
bmiintrin.h | bmiintrin.h | __BMI__ | -mbmi | BMI: Bit Manipulation Instruction |
bmmintrin.h | bmmintrin.h | SSE5, 已废弃. | ||
cpuid.h | cpuid.h | CPUID | ||
emmintrin.h | emmintrin.h | __SSE2__ | -msse2 | SSE2 |
f16cintrin.h | __F16C__ | -mf16c | F16C | |
fma4intrin.h | fma4intrin.h | __FMA4__ | -mfma4 | FMA4 |
fmaintrin.h | __FMA__ | -mfma | FMA | |
ia32intrin.h | ia32intrin.h | bsf, bsr, bswap, crc32等. | ||
immintrin.h | immintrin.h | __RDRND__, __FSGSBASE__ | -mrdrnd -mfsgsbase | Intel提出的扩展指令. |
lwpintrin.h | lwpintrin.h | __LWP__ | -mlwp | LWP: Light Weight Profiling |
lzcntintrin.h | __LZCNT__ | -mlzcnt | LZCNT | |
mm3dnow.h | mm3dnow.h | __3dNOW__ | -m3dnow | 3DNow! |
mmintrin.h | mmintrin.h | __MMX__ | -mmmx | MMX: MultiMedia eXtension |
nmmintrin.h | nmmintrin.h | __SSE4_2__ | -msse4.2 | SSE4.2 |
pmmintrin.h | pmmintrin.h | __SSE3__ | -msse3 | SSE3 |
popcntintrin.h | popcntintrin.h | __POPCNT__ | -mpopcnt | POPCNT |
smmintrin.h | smmintrin.h | __SSE4_1__, __SSE4_2__ | -msse4 | SSE4.1, SSE4.2 |
tbmintrin.h | tbmintrin.h | __TBM__ | -mtbm | TBM: Trailing bit manipulation. |
tmmintrin.h | tmmintrin.h | __SSSE3__ | -mssse3 | SSSE3 |
wmmintrin.h | wmmintrin.h | __AES__, __PCLMUL__ | -maes -mpclmul | AES, PCLMUL |
x86intrin.h | x86intrin.h | x86平台的intrin | ||
xmmintrin.h | xmmintrin.h | __SSE__ | -msse | SSE: Streaming SIMD Extensions |
xopintrin.h | xopintrin.h | __XOP__ | -mxop | XOP |
在 Fedora 17 x64版中执行“gcc --target-help”的输出信息——
下列选项与特定目标机相关: -m128bit-long-double sizeof(long double) 等于 16 -m32 生成 32 位 i386 代码 -m3dnow 支持 3DNow! 内建函数 -m64 生成 64 位 x86-64 代码 -m80387 使用硬件浮点单元 -m8bit-idiv 将 32/64 位整数除法扩展为带运行时检查的 8 位无符号整数除法 -m96bit-long-double sizeof(long double) 等于 12 -mabi= 生成遵循给定 ABI 的代码 -mabm 支持生成高级位操作(ABM)指令。 -maccumulate-outgoing-args 在函数序言中为输出参数预留空间 -maes 支持 AES 内建函数及代码生成 -malign-double 一些双精度浮点数在双字边界上对齐 -malign-functions= 函数入口对齐在 2 的此次方上 -malign-jumps= 跳转目标对齐在 2 的此次方上 -malign-loops= 循环代码对齐到 2 的此次方上 -malign-stringops 对齐字符串操作的目标 -mandroid 为 Android 操作系统生成代码。 -march= 为给定的 CPU 生成代码 -masm= 使用给定的汇编风格 -mavx 支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2 和 AVX 内建函数及代码生成 -mavx2 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation -mavx256-split-unaligned-load Split 32-byte AVX unaligned load -mavx256-split-unaligned-store Split 32-byte AVX unaligned store -mbionic 使用 Bionic C 标准库 -mbmi 支持 BMI 内建函数及代码生成 -mbmi2 Support BMI2 built-in functions and code generation -mbranch-cost= 指定分支的代价(1-5,任意单位) -mcld 在函数序言中生成 cld 指令 -mcmodel= 使用给定的 x86-64 代码模式 -mcrc32 支持生成 crc32 指令。 -mcx16 支持生成 cmpxchg16b 指令。 -mdispatch-scheduler Do dispatch scheduling if processor is bdver1 or bdver2 and Haifa scheduling is selected. -mf16c 支持 F16C 内建函数及代码生成 -mfancy-math-387 为 FPU 生成 sin、cos 和 sqrt 指令 -mfentry Emit profiling counter call at function entry before prologue. -mfma 支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX 和 FMA 内建函数及代码生成 -mfma4 支持 FMA4 内建函数及代码生成 -mforce-drap 总是使用动态对齐参数指针(DRAP)来重新对齐堆栈 -mfp-ret-in-387 在 FPU 寄存器中存放函数返回值 -mfpmath= 为指定的指令集生成浮点数学代码 -mfsgsbase 支持 FSGSBASE 内建函数及代码生成 -mglibc 使用 GNU C 标准库 -mhard-float 使用硬件浮点单元 -mieee-fp 浮点数间的比较严格遵循 IEEE 标准 -mincoming-stack-boundary= 假定栈对齐到 2 的此次方上 -minline-all-stringops 内联所有已知的字符串操作 -minline-stringops-dynamically 内联 memset/memcpy 字符串操作,但仅为较小的块使用内联版本 -mlarge-data-threshold= 在 x86-64 中等模式下大于指定阈值的数据将被存放在 .ldata 节中 -mlwp 支持 LWP 内建函数及代码生成 -mlzcnt Support LZCNT built-in function and code generation -mmmx 支持 MMX 内建函数 -mmovbe 支持生成 movbe 指令。 -mms-bitfields 使用本地 (MS) 位段存储方式 -mno-sse4 不支持 SSE4.1 和 SSE4.2 内建函数及代码生成 -momit-leaf-frame-pointer 为叶函数(不调用其他函数的函数)忽略框架指针 -mpc32 Set 80387 floating-point precision to 32-bit -mpc64 Set 80387 floating-point precision to 64-bit -mpc80 Set 80387 floating-point precision to 80-bit -mpclmul 支持 PCLMUL 内建函数及代码生成 -mpopcnt 支持生成 popcnt 指令。 -mprefer-avx128 自动向量化时使用 128 位 AVX 指令而不是 256 位 AVX 指令 -mpreferred-stack-boundary= 试图让栈保持对齐到 2 的此次方上 -mpush-args 使用 push 指令保存输出参数 -mrdrnd 支持 RDRND 内建函数及代码生成 -mrecip 生成倒数指令而不是 divss 和 sqrtss。 -mrecip= Control generation of reciprocal estimates. -mred-zone 在 x86-64 代码中使用红区 -mregparm= 用以传递整数参数的寄存器个数 -mrtd 更改调用约定 -msahf 支持在 x86-64 模式下生成 sahf 指令。 -msoft-float 不使用硬件浮点单元 -msse 支持 MMX 和 SSE 内建函数及代码生成 -msse2 支持 MMX、SSE 和 SSE2 内建函数及代码生成 -msse2avx 支持带 VEX 前缀的 SSE 指令 -msse3 支持 MMX、SSE、SSE2 和 SSE3 内建函数及代码生成 -msse4 支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1 和 SSE4.2 内建函数及代码生成 -msse4.1 支持 MMX、SSE、SSE2、SSE3、SSSE3 和 SSE4.1 内建函数及代码生成 -msse4.2 支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1 和 SSE4.2 内建函数及代码生成 -msse4a 支持 MMX、SSE、SSE2、SSE3 和 SSE4A 内建函数及代码生成 -msseregparm 在 SF 和 DF 模式下使用 SSE 寄存器调用约定 -mssse3 支持 MMX、SSE、SSE2、SSE3 和 SSSE3 内建函数及代码生成 -mstack-arg-probe 启用堆栈探测 -mstackrealign 在前言中重新对齐堆栈 -mstringop-strategy= 选择生成字符串操作的策略 -mtbm 支持 TBM 内建函数及代码生成 -mtls-dialect= 使用给定的线程局部存储模式 -mtls-direct-seg-refs 当访问线程局部数据时直接引用 %gs -mtune= 为指定的 CPU 优化代码 -muclibc 使用 uClibc C 标准库 -mveclibabi= 指定要使用的向量库 ABI -mvect8-ret-in-mem 将 8 字节向量在内存中返回 -mvzeroupper Generate vzeroupper instruction before a transfer of control flow out of the function. -mx32 Generate 32bit x86-64 code -mxop 支持 XOP 内建函数及代码生成 Known assembler dialects (for use with the -masm-dialect= option): att intel Known ABIs (for use with the -mabi= option): ms sysv Known code models (for use with the -mcmodel= option): 32 kernel large medium small Valid arguments to -mfpmath=: 387 387+sse 387,sse both sse sse+387 sse,387 Known vectorization library ABIs (for use with the -mveclibabi= option): acml svml Valid arguments to -mstringop-strategy=: byte_loop libcall loop rep_4byte rep_8byte rep_byte unrolled_loop Known TLS dialects (for use with the -mtls-dialect= option): gnu gnu2