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

作者: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。

宏:判断该指令集是否启用的宏。

参数:启用该指令集的命令行参数。

描述:指令集描述。

GCC470GCC462参数描述
 abmintrin.h__ABM__-mabmABM: Advanced Bit Manipulation. 改为lzcntintrin.h.
ammintrin.hammintrin.h__SSE4A__-msse4aSSE4A
avx2intrin.h __AVX2__-mavx2AVX2
avxintrin.havxintrin.h__AVX__-mavxAVX: Advanced Vector   Extensions
bmi2intrin.h __BMI2__-mbmi2BMI2
bmiintrin.hbmiintrin.h__BMI__-mbmiBMI: Bit Manipulation   Instruction
bmmintrin.hbmmintrin.h  SSE5, 已废弃.
cpuid.hcpuid.h  CPUID
emmintrin.hemmintrin.h__SSE2__-msse2SSE2
f16cintrin.h __F16C__-mf16cF16C
fma4intrin.hfma4intrin.h__FMA4__-mfma4FMA4
fmaintrin.h __FMA__-mfmaFMA
ia32intrin.hia32intrin.h  bsf, bsr, bswap, crc32等.
immintrin.himmintrin.h__RDRND__, __FSGSBASE__-mrdrnd -mfsgsbaseIntel提出的扩展指令.
lwpintrin.hlwpintrin.h__LWP__-mlwpLWP: Light Weight Profiling
lzcntintrin.h __LZCNT__-mlzcntLZCNT
mm3dnow.hmm3dnow.h__3dNOW__-m3dnow3DNow!
mmintrin.hmmintrin.h__MMX__-mmmxMMX: MultiMedia eXtension
nmmintrin.hnmmintrin.h__SSE4_2__-msse4.2SSE4.2
pmmintrin.hpmmintrin.h__SSE3__-msse3SSE3
popcntintrin.hpopcntintrin.h__POPCNT__-mpopcntPOPCNT
smmintrin.hsmmintrin.h__SSE4_1__, __SSE4_2__-msse4SSE4.1, SSE4.2
tbmintrin.htbmintrin.h__TBM__-mtbmTBM: Trailing bit manipulation.
tmmintrin.htmmintrin.h__SSSE3__-mssse3SSSE3
wmmintrin.hwmmintrin.h__AES__, __PCLMUL__-maes -mpclmulAES, PCLMUL
x86intrin.hx86intrin.h  x86平台的intrin
xmmintrin.hxmmintrin.h__SSE__-msseSSE: Streaming SIMD Extensions
xopintrin.hxopintrin.h__XOP__-mxopXOP

 

在 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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值