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