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