1 // RUN: %clang -target armv8a-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8A %s 2 // CHECK-V8A: #define __ARMEL__ 1 3 // CHECK-V8A: #define __ARM_ARCH 8 4 // CHECK-V8A: #define __ARM_ARCH_8A__ 1 5 // CHECK-V8A: #define __ARM_FEATURE_CRC32 1 6 // CHECK-V8A: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 7 // CHECK-V8A: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 8 // CHECK-V8A: #define __ARM_FP 0xE 9 // CHECK-V8A: #define __ARM_FP16_ARGS 1 10 // CHECK-V8A: #define __ARM_FP16_FORMAT_IEEE 1 11 12 // RUN: %clang -target armv8r-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8R %s 13 // CHECK-V8R: #define __ARMEL__ 1 14 // CHECK-V8R: #define __ARM_ARCH 8 15 // CHECK-V8R: #define __ARM_ARCH_8R__ 1 16 // CHECK-V8R: #define __ARM_FEATURE_CRC32 1 17 // CHECK-V8R: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 18 // CHECK-V8R: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 19 // CHECK-V8R: #define __ARM_FP 0xE 20 21 // RUN: %clang -target armv7a-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7 %s 22 // CHECK-V7: #define __ARMEL__ 1 23 // CHECK-V7: #define __ARM_ARCH 7 24 // CHECK-V7: #define __ARM_ARCH_7A__ 1 25 // CHECK-V7-NOT: __ARM_FEATURE_CRC32 26 // CHECK-V7-NOT: __ARM_FEATURE_NUMERIC_MAXMIN 27 // CHECK-V7-NOT: __ARM_FEATURE_DIRECTED_ROUNDING 28 // CHECK-V7: #define __ARM_FP 0xC 29 30 // RUN: %clang -target x86_64-apple-macosx10.10 -arch armv7s -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7S %s 31 // CHECK-V7S: #define __ARMEL__ 1 32 // CHECK-V7S: #define __ARM_ARCH 7 33 // CHECK-V7S: #define __ARM_ARCH_7S__ 1 34 // CHECK-V7S-NOT: __ARM_FEATURE_CRC32 35 // CHECK-V7S-NOT: __ARM_FEATURE_NUMERIC_MAXMIN 36 // CHECK-V7S-NOT: __ARM_FEATURE_DIRECTED_ROUNDING 37 // CHECK-V7S: #define __ARM_FP 0xE 38 39 // RUN: %clang -target armv8a -mfloat-abi=hard -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-V8-BAREHF %s 40 // CHECK-V8-BAREHF: #define __ARMEL__ 1 41 // CHECK-V8-BAREHF: #define __ARM_ARCH 8 42 // CHECK-V8-BAREHF: #define __ARM_ARCH_8A__ 1 43 // CHECK-V8-BAREHF: #define __ARM_FEATURE_CRC32 1 44 // CHECK-V8-BAREHF: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 45 // CHECK-V8-BAREHF: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 46 // CHECK-V8-BAREHP: #define __ARM_FP 0xE 47 // CHECK-V8-BAREHF: #define __ARM_NEON__ 1 48 // CHECK-V8-BAREHF: #define __ARM_PCS_VFP 1 49 // CHECK-V8-BAREHF: #define __VFP_FP__ 1 50 51 // RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=fp-armv8 -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-V8-BAREHF-FP %s 52 // CHECK-V8-BAREHF-FP-NOT: __ARM_NEON__ 1 53 // CHECK-V8-BAREHP-FP: #define __ARM_FP 0xE 54 // CHECK-V8-BAREHF-FP: #define __VFP_FP__ 1 55 56 // RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=neon-fp-armv8 -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-V8-BAREHF-NEON-FP %s 57 // RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=crypto-neon-fp-armv8 -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-V8-BAREHF-NEON-FP %s 58 // CHECK-V8-BAREHP-NEON-FP: #define __ARM_FP 0xE 59 // CHECK-V8-BAREHF-NEON-FP: #define __ARM_NEON__ 1 60 // CHECK-V8-BAREHF-NEON-FP: #define __VFP_FP__ 1 61 62 // RUN: %clang -target armv8a -mnocrc -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-V8-NOCRC %s 63 // CHECK-V8-NOCRC-NOT: __ARM_FEATURE_CRC32 1 64 65 // Check that -mhwdiv works properly for armv8/thumbv8 (enabled by default). 66 67 // RUN: %clang -target armv8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8 %s 68 // RUN: %clang -target armv8 -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8 %s 69 // RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8 %s 70 // RUN: %clang -target armv8-eabi -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8 %s 71 // V8:#define __ARM_ARCH_EXT_IDIV__ 1 72 73 // RUN: %clang -target armv8 -mhwdiv=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV-V8 %s 74 // RUN: %clang -target armv8 -mthumb -mhwdiv=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV-V8 %s 75 // RUN: %clang -target armv8 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV-V8 %s 76 // RUN: %clang -target armv8 -mthumb -mhwdiv=arm -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV-V8 %s 77 // NOHWDIV-V8-NOT:#define __ARM_ARCH_EXT_IDIV__ 78 79 // RUN: %clang -target armv8a -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s 80 // RUN: %clang -target armv8a -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s 81 // RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s 82 // RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s 83 // V8A:#define __ARM_ARCH_EXT_IDIV__ 1 84 // V8A:#define __ARM_FP 0xE 85 86 // RUN: %clang -target armv8m.base-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M_BASELINE %s 87 // V8M_BASELINE: #define __ARM_ARCH 8 88 // V8M_BASELINE: #define __ARM_ARCH_8M_BASE__ 1 89 // V8M_BASELINE: #define __ARM_ARCH_EXT_IDIV__ 1 90 // V8M_BASELINE-NOT: __ARM_ARCH_ISA_ARM 91 // V8M_BASELINE: #define __ARM_ARCH_ISA_THUMB 1 92 // V8M_BASELINE: #define __ARM_ARCH_PROFILE 'M' 93 // V8M_BASELINE-NOT: __ARM_FEATURE_CRC32 94 // V8M_BASELINE-NOT: __ARM_FEATURE_DSP 95 // V8M_BASELINE-NOT: __ARM_FP 0x{{.*}} 96 // V8M_BASELINE-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 97 98 // RUN: %clang -target armv8m.main-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M_MAINLINE %s 99 // V8M_MAINLINE: #define __ARM_ARCH 8 100 // V8M_MAINLINE: #define __ARM_ARCH_8M_MAIN__ 1 101 // V8M_MAINLINE: #define __ARM_ARCH_EXT_IDIV__ 1 102 // V8M_MAINLINE-NOT: __ARM_ARCH_ISA_ARM 103 // V8M_MAINLINE: #define __ARM_ARCH_ISA_THUMB 2 104 // V8M_MAINLINE: #define __ARM_ARCH_PROFILE 'M' 105 // V8M_MAINLINE-NOT: __ARM_FEATURE_CRC32 106 // V8M_MAINLINE-NOT: __ARM_FEATURE_DSP 107 // V8M_MAINLINE: #define __ARM_FP 0xE 108 // V8M_MAINLINE: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 109 110 // RUN: %clang -target arm-none-linux-gnu -march=armv8-m.main+dsp -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M_MAINLINE_DSP %s 111 // V8M_MAINLINE_DSP: #define __ARM_ARCH 8 112 // V8M_MAINLINE_DSP: #define __ARM_ARCH_8M_MAIN__ 1 113 // V8M_MAINLINE_DSP: #define __ARM_ARCH_EXT_IDIV__ 1 114 // V8M_MAINLINE_DSP-NOT: __ARM_ARCH_ISA_ARM 115 // V8M_MAINLINE_DSP: #define __ARM_ARCH_ISA_THUMB 2 116 // V8M_MAINLINE_DSP: #define __ARM_ARCH_PROFILE 'M' 117 // V8M_MAINLINE_DSP-NOT: __ARM_FEATURE_CRC32 118 // V8M_MAINLINE_DSP: #define __ARM_FEATURE_DSP 1 119 // V8M_MAINLINE_DSP: #define __ARM_FP 0xE 120 // V8M_MAINLINE_DSP: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 121 122 // RUN: %clang -target arm-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-DEFS %s 123 // CHECK-DEFS:#define __ARM_PCS 1 124 // CHECK-DEFS:#define __ARM_SIZEOF_MINIMAL_ENUM 4 125 // CHECK-DEFS:#define __ARM_SIZEOF_WCHAR_T 4 126 127 // RUN: %clang -target arm-none-linux-gnu -fno-math-errno -fno-signed-zeros\ 128 // RUN: -fno-trapping-math -fassociative-math -freciprocal-math\ 129 // RUN: -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FASTMATH %s 130 // RUN: %clang -target arm-none-linux-gnu -ffast-math -x c -E -dM %s -o -\ 131 // RUN: | FileCheck -match-full-lines --check-prefix=CHECK-FASTMATH %s 132 // CHECK-FASTMATH: #define __ARM_FP_FAST 1 133 134 // RUN: %clang -target arm-none-linux-gnu -fshort-wchar -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-SHORTWCHAR %s 135 // CHECK-SHORTWCHAR:#define __ARM_SIZEOF_WCHAR_T 2 136 137 // RUN: %clang -target arm-none-linux-gnu -fshort-enums -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-SHORTENUMS %s 138 // CHECK-SHORTENUMS:#define __ARM_SIZEOF_MINIMAL_ENUM 1 139 140 // Test that -mhwdiv has the right effect for a target CPU which has hwdiv enabled by default. 141 // RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=HWDIV %s 142 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=HWDIV %s 143 // RUN: %clang -target armv7 -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=HWDIV %s 144 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=HWDIV %s 145 // HWDIV:#define __ARM_ARCH_EXT_IDIV__ 1 146 147 // RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV %s 148 // RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV %s 149 // RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV %s 150 // RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV %s 151 // NOHWDIV-NOT:#define __ARM_ARCH_EXT_IDIV__ 152 153 154 // Check that -mfpu works properly for Cortex-A7 (enabled by default). 155 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A7 %s 156 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A7 %s 157 // DEFAULTFPU-A7:#define __ARM_FP 0xE 158 // DEFAULTFPU-A7:#define __ARM_NEON__ 1 159 // DEFAULTFPU-A7:#define __ARM_VFPV4__ 1 160 161 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=FPUNONE-A7 %s 162 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -mfpu=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=FPUNONE-A7 %s 163 // FPUNONE-A7-NOT:#define __ARM_FP 0x{{.*}} 164 // FPUNONE-A7-NOT:#define __ARM_NEON__ 1 165 // FPUNONE-A7-NOT:#define __ARM_VFPV4__ 1 166 167 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NONEON-A7 %s 168 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NONEON-A7 %s 169 // NONEON-A7:#define __ARM_FP 0xE 170 // NONEON-A7-NOT:#define __ARM_NEON__ 1 171 // NONEON-A7:#define __ARM_VFPV4__ 1 172 173 // Check that -mfpu works properly for Cortex-A5 (enabled by default). 174 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A5 %s 175 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A5 %s 176 // DEFAULTFPU-A5:#define __ARM_FP 0xE 177 // DEFAULTFPU-A5:#define __ARM_NEON__ 1 178 // DEFAULTFPU-A5:#define __ARM_VFPV4__ 1 179 180 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -mfpu=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=FPUNONE-A5 %s 181 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -mfpu=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=FPUNONE-A5 %s 182 // FPUNONE-A5-NOT:#define __ARM_FP 0x{{.*}} 183 // FPUNONE-A5-NOT:#define __ARM_NEON__ 1 184 // FPUNONE-A5-NOT:#define __ARM_VFPV4__ 1 185 186 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -mfpu=vfp4-d16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NONEON-A5 %s 187 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -mfpu=vfp4-d16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NONEON-A5 %s 188 // NONEON-A5:#define __ARM_FP 0xE 189 // NONEON-A5-NOT:#define __ARM_NEON__ 1 190 // NONEON-A5:#define __ARM_VFPV4__ 1 191 192 // FIXME: add check for further predefines 193 // Test whether predefines are as expected when targeting ep9312. 194 // RUN: %clang -target armv4t -mcpu=ep9312 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A4T %s 195 // A4T-NOT:#define __ARM_FEATURE_DSP 196 // A4T-NOT:#define __ARM_FP 0x{{.*}} 197 198 // Test whether predefines are as expected when targeting arm10tdmi. 199 // RUN: %clang -target armv5 -mcpu=arm10tdmi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5T %s 200 // A5T-NOT:#define __ARM_FEATURE_DSP 201 // A5T-NOT:#define __ARM_FP 0x{{.*}} 202 203 // Test whether predefines are as expected when targeting cortex-a5. 204 // RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5 %s 205 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5 %s 206 // A5:#define __ARM_ARCH 7 207 // A5:#define __ARM_ARCH_7A__ 1 208 // A5-NOT:#define __ARM_ARCH_EXT_IDIV__ 209 // A5:#define __ARM_ARCH_PROFILE 'A' 210 // A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING 211 // A5:#define __ARM_FEATURE_DSP 1 212 // A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN 213 // A5:#define __ARM_FP 0xE 214 215 // Test whether predefines are as expected when targeting cortex-a7. 216 // RUN: %clang -target armv7k -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7 %s 217 // RUN: %clang -target armv7k -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7 %s 218 // A7:#define __ARM_ARCH 7 219 // A7:#define __ARM_ARCH_EXT_IDIV__ 1 220 // A7:#define __ARM_ARCH_PROFILE 'A' 221 // A7:#define __ARM_FEATURE_DSP 1 222 // A7:#define __ARM_FP 0xE 223 224 // Test whether predefines are as expected when targeting cortex-a7. 225 // RUN: %clang -target x86_64-apple-darwin -arch armv7k -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV7K %s 226 // ARMV7K:#define __ARM_ARCH 7 227 // ARMV7K:#define __ARM_ARCH_EXT_IDIV__ 1 228 // ARMV7K:#define __ARM_ARCH_PROFILE 'A' 229 // ARMV7K:#define __ARM_DWARF_EH__ 1 230 // ARMV7K:#define __ARM_FEATURE_DSP 1 231 // ARMV7K:#define __ARM_FP 0xE 232 // ARMV7K:#define __ARM_PCS_VFP 1 233 234 235 // Test whether predefines are as expected when targeting cortex-a8. 236 // RUN: %clang -target armv7 -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8 %s 237 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8 %s 238 // A8-NOT:#define __ARM_ARCH_EXT_IDIV__ 239 // A8:#define __ARM_FEATURE_DSP 1 240 // A8:#define __ARM_FP 0xC 241 242 // Test whether predefines are as expected when targeting cortex-a9. 243 // RUN: %clang -target armv7 -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9 %s 244 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9 %s 245 // A9-NOT:#define __ARM_ARCH_EXT_IDIV__ 246 // A9:#define __ARM_FEATURE_DSP 1 247 // A9:#define __ARM_FP 0xE 248 249 250 // Check that -mfpu works properly for Cortex-A12 (enabled by default). 251 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A12 %s 252 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A12 %s 253 // DEFAULTFPU-A12:#define __ARM_FP 0xE 254 // DEFAULTFPU-A12:#define __ARM_NEON__ 1 255 // DEFAULTFPU-A12:#define __ARM_VFPV4__ 1 256 257 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -mfpu=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=FPUNONE-A12 %s 258 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a12 -mfpu=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=FPUNONE-A12 %s 259 // FPUNONE-A12-NOT:#define __ARM_FP 0x{{.*}} 260 // FPUNONE-A12-NOT:#define __ARM_NEON__ 1 261 // FPUNONE-A12-NOT:#define __ARM_VFPV4__ 1 262 263 // Test whether predefines are as expected when targeting cortex-a12. 264 // RUN: %clang -target armv7 -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12 %s 265 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12 %s 266 // A12:#define __ARM_ARCH 7 267 // A12:#define __ARM_ARCH_7A__ 1 268 // A12:#define __ARM_ARCH_EXT_IDIV__ 1 269 // A12:#define __ARM_ARCH_PROFILE 'A' 270 // A12:#define __ARM_FEATURE_DSP 1 271 // A12:#define __ARM_FP 0xE 272 273 // Test whether predefines are as expected when targeting cortex-a15. 274 // RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15 %s 275 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15 %s 276 // A15:#define __ARM_ARCH_EXT_IDIV__ 1 277 // A15:#define __ARM_FEATURE_DSP 1 278 // A15:#define __ARM_FP 0xE 279 280 // Check that -mfpu works properly for Cortex-A17 (enabled by default). 281 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A17 %s 282 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A17 %s 283 // DEFAULTFPU-A17:#define __ARM_FP 0xE 284 // DEFAULTFPU-A17:#define __ARM_NEON__ 1 285 // DEFAULTFPU-A17:#define __ARM_VFPV4__ 1 286 287 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -mfpu=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=FPUNONE-A17 %s 288 // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a17 -mfpu=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=FPUNONE-A17 %s 289 // FPUNONE-A17-NOT:#define __ARM_FP 0x{{.*}} 290 // FPUNONE-A17-NOT:#define __ARM_NEON__ 1 291 // FPUNONE-A17-NOT:#define __ARM_VFPV4__ 1 292 293 // Test whether predefines are as expected when targeting cortex-a17. 294 // RUN: %clang -target armv7 -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17 %s 295 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17 %s 296 // A17:#define __ARM_ARCH 7 297 // A17:#define __ARM_ARCH_7A__ 1 298 // A17:#define __ARM_ARCH_EXT_IDIV__ 1 299 // A17:#define __ARM_ARCH_PROFILE 'A' 300 // A17:#define __ARM_FEATURE_DSP 1 301 // A17:#define __ARM_FP 0xE 302 303 // Test whether predefines are as expected when targeting swift. 304 // RUN: %clang -target armv7s -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT %s 305 // RUN: %clang -target armv7s -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT %s 306 // SWIFT:#define __ARM_ARCH_EXT_IDIV__ 1 307 // SWIFT:#define __ARM_FEATURE_DSP 1 308 // SWIFT:#define __ARM_FP 0xE 309 310 // Test whether predefines are as expected when targeting ARMv8-A Cortex implementations 311 // RUN: %clang -target armv8 -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 312 // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 313 // RUN: %clang -target armv8 -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 314 // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 315 // RUN: %clang -target armv8 -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 316 // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 317 // RUN: %clang -target armv8 -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 318 // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 319 // RUN: %clang -target armv8 -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 320 // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 321 // RUN: %clang -target armv8 -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 322 // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s 323 // ARMV8:#define __ARM_ARCH_EXT_IDIV__ 1 324 // ARMV8:#define __ARM_FEATURE_DSP 1 325 // ARMV8:#define __ARM_FP 0xE 326 327 // Test whether predefines are as expected when targeting cortex-r4. 328 // RUN: %clang -target armv7 -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4-ARM %s 329 // R4-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ 330 // R4-ARM:#define __ARM_FEATURE_DSP 1 331 // R4-ARM-NOT:#define __ARM_FP 0x{{.*}} 332 333 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4-THUMB %s 334 // R4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 335 // R4-THUMB:#define __ARM_FEATURE_DSP 1 336 // R4-THUMB-NOT:#define __ARM_FP 0x{{.*}} 337 338 // Test whether predefines are as expected when targeting cortex-r4f. 339 // RUN: %clang -target armv7 -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-ARM %s 340 // R4F-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ 341 // R4F-ARM:#define __ARM_FEATURE_DSP 1 342 // R4F-ARM:#define __ARM_FP 0xC 343 344 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-THUMB %s 345 // R4F-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 346 // R4F-THUMB:#define __ARM_FEATURE_DSP 1 347 // R4F-THUMB:#define __ARM_FP 0xC 348 349 // Test whether predefines are as expected when targeting cortex-r5. 350 // RUN: %clang -target armv7 -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5 %s 351 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5 %s 352 // R5:#define __ARM_ARCH_EXT_IDIV__ 1 353 // R5:#define __ARM_FEATURE_DSP 1 354 // R5:#define __ARM_FP 0xC 355 356 // Test whether predefines are as expected when targeting cortex-r7 and cortex-r8. 357 // RUN: %clang -target armv7 -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s 358 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s 359 // RUN: %clang -target armv7 -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s 360 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s 361 // R7-R8:#define __ARM_ARCH_EXT_IDIV__ 1 362 // R7-R8:#define __ARM_FEATURE_DSP 1 363 // R7-R8:#define __ARM_FP 0xE 364 365 // Test whether predefines are as expected when targeting cortex-m0. 366 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M0-THUMB %s 367 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0plus -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M0-THUMB %s 368 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M0-THUMB %s 369 // RUN: %clang -target armv7 -mthumb -mcpu=sc000 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M0-THUMB %s 370 // M0-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__ 371 // M0-THUMB-NOT:#define __ARM_FEATURE_DSP 372 // M0-THUMB-NOT:#define __ARM_FP 0x{{.*}} 373 374 // Test whether predefines are as expected when targeting cortex-m3. 375 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M3-THUMB %s 376 // RUN: %clang -target armv7 -mthumb -mcpu=sc300 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M3-THUMB %s 377 // M3-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 378 // M3-THUMB-NOT:#define __ARM_FEATURE_DSP 379 // M3-THUMB-NOT:#define __ARM_FP 0x{{.*}} 380 381 // Test whether predefines are as expected when targeting cortex-m4. 382 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M4-THUMB %s 383 // M4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 384 // M4-THUMB:#define __ARM_FEATURE_DSP 1 385 // M4-THUMB:#define __ARM_FP 0x6 386 387 // Test whether predefines are as expected when targeting cortex-m7. 388 // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M7-THUMB %s 389 // M7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 390 // M7-THUMB:#define __ARM_FEATURE_DSP 1 391 // M7-THUMB:#define __ARM_FP 0xE 392 // M7-THUMB:#define __ARM_FPV5__ 1 393 394 // Test whether predefines are as expected when targeting krait. 395 // RUN: %clang -target armv7 -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT %s 396 // RUN: %clang -target armv7 -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT %s 397 // KRAIT:#define __ARM_ARCH_EXT_IDIV__ 1 398 // KRAIT:#define __ARM_FEATURE_DSP 1 399 // KRAIT:#define __ARM_VFPV4__ 1 400 401 // RUN: %clang -target armv8.1a-none-none-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V81A %s 402 // CHECK-V81A: #define __ARM_ARCH 8 403 // CHECK-V81A: #define __ARM_ARCH_8_1A__ 1 404 // CHECK-V81A: #define __ARM_ARCH_PROFILE 'A' 405 // CHECK-V81A: #define __ARM_FEATURE_QRDMX 1 406 // CHECK-V81A: #define __ARM_FP 0xE 407 408 // RUN: %clang -target armv8.2a-none-none-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V82A %s 409 // CHECK-V82A: #define __ARM_ARCH 8 410 // CHECK-V82A: #define __ARM_ARCH_8_2A__ 1 411 // CHECK-V82A: #define __ARM_ARCH_PROFILE 'A' 412 // CHECK-V82A: #define __ARM_FP 0xE 413