GCC中的Intrinsics头文件与SIMD指令集、宏、参数的对应表

原文地址:http://www.cnblogs.com/zyl910/archive/2012/08/27/intrin_table_gcc.html

列名解释——

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
复制代码

你可能感兴趣的:(GCC中的Intrinsics头文件与SIMD指令集、宏、参数的对应表)