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