• 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。

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

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

    描述:指令集描述。

    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
    作者:zyl910
    版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0.
  • 相关阅读:
    cloud_config学习_2
    layui的tab和form冲突
    layui+beetl实现三级菜单
    postgreSQL官网教程_管理表、类型
    08、异 常&包
    07、面向对象特征之多态&内部类
    06、面向对象特征之继承
    04、面向对象
    03、数组&内存划分
    02、函数
  • 原文地址:https://www.cnblogs.com/zyl910/p/intrin_table_gcc.html
Copyright © 2020-2023  润新知