Home | History | Annotate | Download | only in Preprocessor
      1 // RUN: %clang -target i386-unknown-unknown -march=core2 -msse4 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE4 %s
      2 
      3 // SSE4: #define __SSE2_MATH__ 1
      4 // SSE4: #define __SSE2__ 1
      5 // SSE4: #define __SSE3__ 1
      6 // SSE4: #define __SSE4_1__ 1
      7 // SSE4: #define __SSE4_2__ 1
      8 // SSE4: #define __SSE_MATH__ 1
      9 // SSE4: #define __SSE__ 1
     10 // SSE4: #define __SSSE3__ 1
     11 
     12 // RUN: %clang -target i386-unknown-unknown -march=core2 -msse4.1 -mno-sse4 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOSSE4 %s
     13 
     14 // NOSSE4-NOT: #define __SSE4_1__ 1
     15 
     16 // RUN: %clang -target i386-unknown-unknown -march=core2 -msse4 -mno-sse2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE %s
     17 
     18 // SSE-NOT: #define __SSE2_MATH__ 1
     19 // SSE-NOT: #define __SSE2__ 1
     20 // SSE-NOT: #define __SSE3__ 1
     21 // SSE-NOT: #define __SSE4_1__ 1
     22 // SSE-NOT: #define __SSE4_2__ 1
     23 // SSE: #define __SSE_MATH__ 1
     24 // SSE: #define __SSE__ 1
     25 // SSE-NOT: #define __SSSE3__ 1
     26 
     27 // RUN: %clang -target i386-unknown-unknown -march=pentium-m -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE2 %s
     28 
     29 // SSE2: #define __SSE2_MATH__ 1
     30 // SSE2: #define __SSE2__ 1
     31 // SSE2-NOT: #define __SSE3__ 1
     32 // SSE2-NOT: #define __SSE4_1__ 1
     33 // SSE2-NOT: #define __SSE4_2__ 1
     34 // SSE2: #define __SSE_MATH__ 1
     35 // SSE2: #define __SSE__ 1
     36 // SSE2-NOT: #define __SSSE3__ 1
     37 
     38 // RUN: %clang -target i386-unknown-unknown -march=pentium-m -mno-sse -mavx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX %s
     39 
     40 // AVX: #define __AVX__ 1
     41 // AVX: #define __SSE2_MATH__ 1
     42 // AVX: #define __SSE2__ 1
     43 // AVX: #define __SSE3__ 1
     44 // AVX: #define __SSE4_1__ 1
     45 // AVX: #define __SSE4_2__ 1
     46 // AVX: #define __SSE_MATH__ 1
     47 // AVX: #define __SSE__ 1
     48 // AVX: #define __SSSE3__ 1
     49 
     50 // RUN: %clang -target i386-unknown-unknown -march=pentium-m -mxop -mno-avx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE4A %s
     51 
     52 // SSE4A: #define __SSE2_MATH__ 1
     53 // SSE4A: #define __SSE2__ 1
     54 // SSE4A: #define __SSE3__ 1
     55 // SSE4A: #define __SSE4A__ 1
     56 // SSE4A: #define __SSE4_1__ 1
     57 // SSE4A: #define __SSE4_2__ 1
     58 // SSE4A: #define __SSE_MATH__ 1
     59 // SSE4A: #define __SSE__ 1
     60 // SSE4A: #define __SSSE3__ 1
     61 
     62 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512f -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512F %s
     63 
     64 // AVX512F: #define __AVX2__ 1
     65 // AVX512F: #define __AVX512F__ 1
     66 // AVX512F: #define __AVX__ 1
     67 // AVX512F: #define __SSE2_MATH__ 1
     68 // AVX512F: #define __SSE2__ 1
     69 // AVX512F: #define __SSE3__ 1
     70 // AVX512F: #define __SSE4_1__ 1
     71 // AVX512F: #define __SSE4_2__ 1
     72 // AVX512F: #define __SSE_MATH__ 1
     73 // AVX512F: #define __SSE__ 1
     74 // AVX512F: #define __SSSE3__ 1
     75 
     76 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512cd -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512CD %s
     77 
     78 // AVX512CD: #define __AVX2__ 1
     79 // AVX512CD: #define __AVX512CD__ 1
     80 // AVX512CD: #define __AVX512F__ 1
     81 // AVX512CD: #define __AVX__ 1
     82 // AVX512CD: #define __SSE2_MATH__ 1
     83 // AVX512CD: #define __SSE2__ 1
     84 // AVX512CD: #define __SSE3__ 1
     85 // AVX512CD: #define __SSE4_1__ 1
     86 // AVX512CD: #define __SSE4_2__ 1
     87 // AVX512CD: #define __SSE_MATH__ 1
     88 // AVX512CD: #define __SSE__ 1
     89 // AVX512CD: #define __SSSE3__ 1
     90 
     91 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512er -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512ER %s
     92 
     93 // AVX512ER: #define __AVX2__ 1
     94 // AVX512ER: #define __AVX512ER__ 1
     95 // AVX512ER: #define __AVX512F__ 1
     96 // AVX512ER: #define __AVX__ 1
     97 // AVX512ER: #define __SSE2_MATH__ 1
     98 // AVX512ER: #define __SSE2__ 1
     99 // AVX512ER: #define __SSE3__ 1
    100 // AVX512ER: #define __SSE4_1__ 1
    101 // AVX512ER: #define __SSE4_2__ 1
    102 // AVX512ER: #define __SSE_MATH__ 1
    103 // AVX512ER: #define __SSE__ 1
    104 // AVX512ER: #define __SSSE3__ 1
    105 
    106 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512pf -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512PF %s
    107 
    108 // AVX512PF: #define __AVX2__ 1
    109 // AVX512PF: #define __AVX512F__ 1
    110 // AVX512PF: #define __AVX512PF__ 1
    111 // AVX512PF: #define __AVX__ 1
    112 // AVX512PF: #define __SSE2_MATH__ 1
    113 // AVX512PF: #define __SSE2__ 1
    114 // AVX512PF: #define __SSE3__ 1
    115 // AVX512PF: #define __SSE4_1__ 1
    116 // AVX512PF: #define __SSE4_2__ 1
    117 // AVX512PF: #define __SSE_MATH__ 1
    118 // AVX512PF: #define __SSE__ 1
    119 // AVX512PF: #define __SSSE3__ 1
    120 
    121 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512dq -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512DQ %s
    122 
    123 // AVX512DQ: #define __AVX2__ 1
    124 // AVX512DQ: #define __AVX512DQ__ 1
    125 // AVX512DQ: #define __AVX512F__ 1
    126 // AVX512DQ: #define __AVX__ 1
    127 // AVX512DQ: #define __SSE2_MATH__ 1
    128 // AVX512DQ: #define __SSE2__ 1
    129 // AVX512DQ: #define __SSE3__ 1
    130 // AVX512DQ: #define __SSE4_1__ 1
    131 // AVX512DQ: #define __SSE4_2__ 1
    132 // AVX512DQ: #define __SSE_MATH__ 1
    133 // AVX512DQ: #define __SSE__ 1
    134 // AVX512DQ: #define __SSSE3__ 1
    135 
    136 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512bw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512BW %s
    137 
    138 // AVX512BW: #define __AVX2__ 1
    139 // AVX512BW: #define __AVX512BW__ 1
    140 // AVX512BW: #define __AVX512F__ 1
    141 // AVX512BW: #define __AVX__ 1
    142 // AVX512BW: #define __SSE2_MATH__ 1
    143 // AVX512BW: #define __SSE2__ 1
    144 // AVX512BW: #define __SSE3__ 1
    145 // AVX512BW: #define __SSE4_1__ 1
    146 // AVX512BW: #define __SSE4_2__ 1
    147 // AVX512BW: #define __SSE_MATH__ 1
    148 // AVX512BW: #define __SSE__ 1
    149 // AVX512BW: #define __SSSE3__ 1
    150 
    151 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512vl -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512VL %s
    152 
    153 // AVX512VL: #define __AVX2__ 1
    154 // AVX512VL: #define __AVX512F__ 1
    155 // AVX512VL: #define __AVX512VL__ 1
    156 // AVX512VL: #define __AVX__ 1
    157 // AVX512VL: #define __SSE2_MATH__ 1
    158 // AVX512VL: #define __SSE2__ 1
    159 // AVX512VL: #define __SSE3__ 1
    160 // AVX512VL: #define __SSE4_1__ 1
    161 // AVX512VL: #define __SSE4_2__ 1
    162 // AVX512VL: #define __SSE_MATH__ 1
    163 // AVX512VL: #define __SSE__ 1
    164 // AVX512VL: #define __SSSE3__ 1
    165 
    166 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512pf -mno-avx512f -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512F2 %s
    167 
    168 // AVX512F2: #define __AVX2__ 1
    169 // AVX512F2-NOT: #define __AVX512F__ 1
    170 // AVX512F2-NOT: #define __AVX512PF__ 1
    171 // AVX512F2: #define __AVX__ 1
    172 // AVX512F2: #define __SSE2_MATH__ 1
    173 // AVX512F2: #define __SSE2__ 1
    174 // AVX512F2: #define __SSE3__ 1
    175 // AVX512F2: #define __SSE4_1__ 1
    176 // AVX512F2: #define __SSE4_2__ 1
    177 // AVX512F2: #define __SSE_MATH__ 1
    178 // AVX512F2: #define __SSE__ 1
    179 // AVX512F2: #define __SSSE3__ 1
    180 
    181 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512ifma -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512IFMA %s
    182 
    183 // AVX512IFMA: #define __AVX2__ 1
    184 // AVX512IFMA: #define __AVX512F__ 1
    185 // AVX512IFMA: #define __AVX512IFMA__ 1
    186 // AVX512IFMA: #define __AVX__ 1
    187 // AVX512IFMA: #define __SSE2_MATH__ 1
    188 // AVX512IFMA: #define __SSE2__ 1
    189 // AVX512IFMA: #define __SSE3__ 1
    190 // AVX512IFMA: #define __SSE4_1__ 1
    191 // AVX512IFMA: #define __SSE4_2__ 1
    192 // AVX512IFMA: #define __SSE_MATH__ 1
    193 // AVX512IFMA: #define __SSE__ 1
    194 // AVX512IFMA: #define __SSSE3__ 1
    195 
    196 // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512vbmi -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512VBMI %s
    197 
    198 // AVX512VBMI: #define __AVX2__ 1
    199 // AVX512VBMI: #define __AVX512F__ 1
    200 // AVX512VBMI: #define __AVX512VBMI__ 1
    201 // AVX512VBMI: #define __AVX__ 1
    202 // AVX512VBMI: #define __SSE2_MATH__ 1
    203 // AVX512VBMI: #define __SSE2__ 1
    204 // AVX512VBMI: #define __SSE3__ 1
    205 // AVX512VBMI: #define __SSE4_1__ 1
    206 // AVX512VBMI: #define __SSE4_2__ 1
    207 // AVX512VBMI: #define __SSE_MATH__ 1
    208 // AVX512VBMI: #define __SSE__ 1
    209 // AVX512VBMI: #define __SSSE3__ 1
    210 
    211 // RUN: %clang -target i386-unknown-unknown -march=atom -msse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE42POPCNT %s
    212 
    213 // SSE42POPCNT: #define __POPCNT__ 1
    214 
    215 // RUN: %clang -target i386-unknown-unknown -march=atom -mno-popcnt -msse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE42NOPOPCNT %s
    216 
    217 // SSE42NOPOPCNT-NOT: #define __POPCNT__ 1
    218 
    219 // RUN: %clang -target i386-unknown-unknown -march=atom -mpopcnt -mno-sse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOSSE42POPCNT %s
    220 
    221 // NOSSE42POPCNT: #define __POPCNT__ 1
    222 
    223 // RUN: %clang -target i386-unknown-unknown -march=atom -msse -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSEMMX %s
    224 
    225 // SSEMMX: #define __MMX__ 1
    226 
    227 // RUN: %clang -target i386-unknown-unknown -march=atom -msse -mno-sse -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSENOSSEMMX %s
    228 
    229 // SSENOSSEMMX-NOT: #define __MMX__ 1
    230 
    231 // RUN: %clang -target i386-unknown-unknown -march=atom -msse -mno-mmx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSENOMMX %s
    232 
    233 // SSENOMMX-NOT: #define __MMX__ 1
    234 
    235 // RUN: %clang -target i386-unknown-unknown -march=atom -mf16c -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=F16C %s
    236 
    237 // F16C: #define __AVX__ 1
    238 // F16C: #define __F16C__ 1
    239 
    240 // RUN: %clang -target i386-unknown-unknown -march=atom -mf16c -mno-avx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=F16CNOAVX %s
    241 
    242 // F16CNOAVX-NOT: #define __AVX__ 1
    243 // F16CNOAVX-NOT: #define __F16C__ 1
    244 
    245 // RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mpclmul -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=PCLMUL %s
    246 
    247 // PCLMUL: #define __PCLMUL__ 1
    248 // PCLMUL: #define __SSE2__ 1
    249 // PCLMUL-NOT: #define __SSE3__ 1
    250 
    251 // RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mpclmul -mno-sse2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=PCLMULNOSSE2 %s
    252 
    253 // PCLMULNOSSE2-NOT: #define __PCLMUL__ 1
    254 // PCLMULNOSSE2-NOT: #define __SSE2__ 1
    255 // PCLMULNOSSE2-NOT: #define __SSE3__ 1
    256 
    257 // RUN: %clang -target i386-unknown-unknown -march=pentiumpro -maes -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AES %s
    258 
    259 // AES: #define __AES__ 1
    260 // AES: #define __SSE2__ 1
    261 // AES-NOT: #define __SSE3__ 1
    262 
    263 // RUN: %clang -target i386-unknown-unknown -march=pentiumpro -maes -mno-sse2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AESNOSSE2 %s
    264 
    265 // AESNOSSE2-NOT: #define __AES__ 1
    266 // AESNOSSE2-NOT: #define __SSE2__ 1
    267 // AESNOSSE2-NOT: #define __SSE3__ 1
    268 
    269 // RUN: %clang -target i386-unknown-unknown -march=pentiumpro -msha -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SHA %s
    270 
    271 // SHA: #define __SHA__ 1
    272 // SHA: #define __SSE2__ 1
    273 // SHA-NOT: #define __SSE3__ 1
    274 
    275 // RUN: %clang -target i386-unknown-unknown -march=pentiumpro -msha -mno-sha -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SHANOSHA %s
    276 
    277 // SHANOSHA-NOT: #define __SHA__ 1
    278 // SHANOSHA-NOT: #define __SSE2__ 1
    279 
    280 // RUN: %clang -target i386-unknown-unknown -march=pentiumpro -msha -mno-sse2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SHANOSSE2 %s
    281 
    282 // SHANOSSE2-NOT: #define __SHA__ 1
    283 // SHANOSSE2-NOT: #define __SSE2__ 1
    284 // SHANOSSE2-NOT: #define __SSE3__ 1
    285 
    286 // RUN: %clang -target i386-unknown-unknown -march=atom -mtbm -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=TBM %s
    287 
    288 // TBM: #define __TBM__ 1
    289 
    290 // RUN: %clang -target i386-unknown-unknown -march=bdver2 -mno-tbm -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOTBM %s
    291 
    292 // NOTBM-NOT: #define __TBM__ 1
    293 
    294 // RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mcx16 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=MCX16 %s
    295 
    296 // MCX16: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1
    297 
    298 // RUN: %clang -target i386-unknown-unknown -march=atom -mprfchw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=PRFCHW %s
    299 
    300 // PRFCHW: #define __PRFCHW__ 1
    301 
    302 // RUN: %clang -target i386-unknown-unknown -march=btver2 -mno-prfchw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOPRFCHW %s
    303 
    304 // NOPRFCHW-NOT: #define __PRFCHW__ 1
    305 
    306 // RUN: %clang -target i386-unknown-unknown -march=atom -m3dnow -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=3DNOWPRFCHW %s
    307 
    308 // 3DNOWPRFCHW: #define __PRFCHW__ 1
    309 
    310 // RUN: %clang -target i386-unknown-unknown -march=atom -mno-prfchw -m3dnow -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=3DNOWNOPRFCHW %s
    311 
    312 // 3DNOWNOPRFCHW-NOT: #define __PRFCHW__ 1
    313 
    314 // RUN: %clang -target i386-unknown-unknown -march=atom -mprfchw -mno-3dnow -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NO3DNOWPRFCHW %s
    315 
    316 // NO3DNOWPRFCHW: #define __PRFCHW__ 1
    317 
    318 // RUN: %clang -target i386-unknown-unknown -march=atom -madx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=ADX %s
    319 
    320 // ADX: #define __ADX__ 1
    321 
    322 // RUN: %clang -target i386-unknown-unknown -march=atom -mrdseed -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=RDSEED %s
    323 
    324 // RDSEED: #define __RDSEED__ 1
    325 
    326 // RUN: %clang -target i386-unknown-unknown -march=atom -mxsave -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=XSAVE %s
    327 
    328 // XSAVE: #define __XSAVE__ 1
    329 
    330 // RUN: %clang -target i386-unknown-unknown -march=atom -mxsaveopt -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=XSAVEOPT %s
    331 
    332 // XSAVEOPT: #define __XSAVEOPT__ 1
    333 // XSAVEOPT: #define __XSAVE__ 1
    334 
    335 // RUN: %clang -target i386-unknown-unknown -march=atom -mxsavec -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=XSAVEC %s
    336 
    337 // XSAVEC: #define __XSAVEC__ 1
    338 // XSAVEC: #define __XSAVE__ 1
    339 
    340 // RUN: %clang -target i386-unknown-unknown -march=atom -mxsaves -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=XSAVES %s
    341 
    342 // XSAVES: #define __XSAVES__ 1
    343 // XSAVES: #define __XSAVE__ 1
    344 
    345 // RUN: %clang -target i386-unknown-unknown -march=atom -mxsaveopt -mno-xsave -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOXSAVE %s
    346 
    347 // NOXSAVE-NOT: #define __XSAVEOPT__ 1
    348 // NOXSAVE-NOT: #define __XSAVE__ 1
    349