1*67e74705SXin Li // RUN: %clang -target arm-eabi -x c -E -dM %s -o - | FileCheck %s 2*67e74705SXin Li // RUN: %clang -target thumb-eabi -x c -E -dM %s -o - | FileCheck %s 3*67e74705SXin Li 4*67e74705SXin Li // CHECK-NOT: __ARM_64BIT_STATE 5*67e74705SXin Li // CHECK-NOT: __ARM_ARCH_ISA_A64 6*67e74705SXin Li // CHECK-NOT: __ARM_BIG_ENDIAN 7*67e74705SXin Li // CHECK: __ARM_32BIT_STATE 1 8*67e74705SXin Li // CHECK: __ARM_ACLE 200 9*67e74705SXin Li 10*67e74705SXin Li // RUN: %clang -target armeb-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-BIGENDIAN 11*67e74705SXin Li // RUN: %clang -target thumbeb-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-BIGENDIAN 12*67e74705SXin Li 13*67e74705SXin Li // CHECK-BIGENDIAN: __ARM_BIG_ENDIAN 1 14*67e74705SXin Li 15*67e74705SXin Li // RUN: %clang -target armv7-none-linux-eabi -mno-unaligned-access -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-UNALIGNED 16*67e74705SXin Li 17*67e74705SXin Li // CHECK-UNALIGNED-NOT: __ARM_FEATURE_UNALIGNED 18*67e74705SXin Li 19*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V4 20*67e74705SXin Li 21*67e74705SXin Li // CHECK-V4-NOT: __ARM_ARCH_ISA_THUMB 22*67e74705SXin Li // CHECK-V4-NOT: __ARM_ARCH_PROFILE 23*67e74705SXin Li // CHECK-V4-NOT: __ARM_FEATURE_CLZ 24*67e74705SXin Li // CHECK-V4-NOT: __ARM_FEATURE_LDREX 25*67e74705SXin Li // CHECK-V4-NOT: __ARM_FEATURE_UNALIGNED 26*67e74705SXin Li // CHECK-V4-NOT: __ARM_FEATURE_DSP 27*67e74705SXin Li // CHECK-V4-NOT: __ARM_FEATURE_SAT 28*67e74705SXin Li // CHECK-V4-NOT: __ARM_FEATURE_QBIT 29*67e74705SXin Li // CHECK-V4-NOT: __ARM_FEATURE_SIMD32 30*67e74705SXin Li // CHECK-V4-NOT: __ARM_FEATURE_IDIV 31*67e74705SXin Li // CHECK-V4: __ARM_ARCH 4 32*67e74705SXin Li // CHECK-V4: __ARM_ARCH_ISA_ARM 1 33*67e74705SXin Li 34*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv4t -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V4T 35*67e74705SXin Li 36*67e74705SXin Li // CHECK-V4T: __ARM_ARCH_ISA_THUMB 1 37*67e74705SXin Li 38*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv5t -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V5 39*67e74705SXin Li 40*67e74705SXin Li // CHECK-V5-NOT: __ARM_ARCH_PROFILE 41*67e74705SXin Li // CHECK-V5-NOT: __ARM_FEATURE_LDREX 42*67e74705SXin Li // CHECK-V5-NOT: __ARM_FEATURE_UNALIGNED 43*67e74705SXin Li // CHECK-V5-NOT: __ARM_FEATURE_DSP 44*67e74705SXin Li // CHECK-V5-NOT: __ARM_FEATURE_SAT 45*67e74705SXin Li // CHECK-V5-NOT: __ARM_FEATURE_QBIT 46*67e74705SXin Li // CHECK-V5-NOT: __ARM_FEATURE_SIMD32 47*67e74705SXin Li // CHECK-V5-NOT: __ARM_FEATURE_IDIV 48*67e74705SXin Li // CHECK-V5: __ARM_ARCH 5 49*67e74705SXin Li // CHECK-V5: __ARM_ARCH_ISA_ARM 1 50*67e74705SXin Li // CHECK-V5: __ARM_ARCH_ISA_THUMB 1 51*67e74705SXin Li // CHECK-V5: __ARM_FEATURE_CLZ 1 52*67e74705SXin Li 53*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv5te -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V5E 54*67e74705SXin Li 55*67e74705SXin Li // CHECK-V5E: __ARM_FEATURE_DSP 1 56*67e74705SXin Li // CHECK-V5E: __ARM_FEATURE_QBIT 1 57*67e74705SXin Li 58*67e74705SXin Li // RUN: %clang -target armv6-none-netbsd-eabi -mcpu=arm1136jf-s -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6 59*67e74705SXin Li 60*67e74705SXin Li // CHECK-V6-NOT: __ARM_ARCH_PROFILE 61*67e74705SXin Li // CHECK-V6-NOT: __ARM_FEATURE_IDIV 62*67e74705SXin Li // CHECK-V6: __ARM_ARCH 6 63*67e74705SXin Li // CHECK-V6: __ARM_ARCH_ISA_ARM 1 64*67e74705SXin Li // CHECK-V6: __ARM_ARCH_ISA_THUMB 1 65*67e74705SXin Li // CHECK-V6: __ARM_FEATURE_CLZ 1 66*67e74705SXin Li // CHECK-V6: __ARM_FEATURE_DSP 1 67*67e74705SXin Li // CHECK-V6: __ARM_FEATURE_LDREX 0x4 68*67e74705SXin Li // CHECK-V6: __ARM_FEATURE_QBIT 1 69*67e74705SXin Li // CHECK-V6: __ARM_FEATURE_SAT 1 70*67e74705SXin Li // CHECK-V6: __ARM_FEATURE_SIMD32 1 71*67e74705SXin Li // CHECK-V6: __ARM_FEATURE_UNALIGNED 1 72*67e74705SXin Li 73*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv6m -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6M 74*67e74705SXin Li 75*67e74705SXin Li // CHECK-V6M-NOT: __ARM_ARCH_ISA_ARM 76*67e74705SXin Li // CHECK-V6M-NOT: __ARM_FEATURE_CLZ 77*67e74705SXin Li // CHECK-V6M-NOT: __ARM_FEATURE_LDREX 78*67e74705SXin Li // CHECK-V6M-NOT: __ARM_FEATURE_UNALIGNED 79*67e74705SXin Li // CHECK-V6M-NOT: __ARM_FEATURE_DSP 80*67e74705SXin Li // CHECK-V6M-NOT: __ARM_FEATURE_QBIT 81*67e74705SXin Li // CHECK-V6M-NOT: __ARM_FEATURE_SAT 82*67e74705SXin Li // CHECK-V6M-NOT: __ARM_FEATURE_SIMD32 83*67e74705SXin Li // CHECK-V6M-NOT: __ARM_FEATURE_IDIV 84*67e74705SXin Li // CHECK-V6M: __ARM_ARCH 6 85*67e74705SXin Li // CHECK-V6M: __ARM_ARCH_ISA_THUMB 1 86*67e74705SXin Li // CHECK-V6M: __ARM_ARCH_PROFILE 'M' 87*67e74705SXin Li 88*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv6t2 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6T2 89*67e74705SXin Li 90*67e74705SXin Li // CHECK-V6T2: __ARM_ARCH_ISA_THUMB 2 91*67e74705SXin Li 92*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv6k -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6K 93*67e74705SXin Li 94*67e74705SXin Li // CHECK-V6K: __ARM_FEATURE_LDREX 0xF 95*67e74705SXin Li 96*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv7-a -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A 97*67e74705SXin Li 98*67e74705SXin Li // CHECK-V7A: __ARM_ARCH 7 99*67e74705SXin Li // CHECK-V7A: __ARM_ARCH_ISA_ARM 1 100*67e74705SXin Li // CHECK-V7A: __ARM_ARCH_ISA_THUMB 2 101*67e74705SXin Li // CHECK-V7A: __ARM_ARCH_PROFILE 'A' 102*67e74705SXin Li // CHECK-V7A: __ARM_FEATURE_CLZ 1 103*67e74705SXin Li // CHECK-V7A: __ARM_FEATURE_DSP 1 104*67e74705SXin Li // CHECK-V7A: __ARM_FEATURE_LDREX 0xF 105*67e74705SXin Li // CHECK-V7A: __ARM_FEATURE_QBIT 1 106*67e74705SXin Li // CHECK-V7A: __ARM_FEATURE_SAT 1 107*67e74705SXin Li // CHECK-V7A: __ARM_FEATURE_SIMD32 1 108*67e74705SXin Li // CHECK-V7A: __ARM_FEATURE_UNALIGNED 1 109*67e74705SXin Li 110*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-IDIV 111*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-IDIV 112*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-IDIV 113*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-IDIV 114*67e74705SXin Li 115*67e74705SXin Li // CHECK-V7A-IDIV: __ARM_FEATURE_IDIV 1 116*67e74705SXin Li 117*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-NO-IDIV 118*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-NO-IDIV 119*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-NO-IDIV 120*67e74705SXin Li 121*67e74705SXin Li // CHECK-V7A-NO-IDIV-NOT: __ARM_FEATURE_IDIV 122*67e74705SXin Li 123*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv7-r -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R 124*67e74705SXin Li 125*67e74705SXin Li // CHECK-V7R: __ARM_ARCH 7 126*67e74705SXin Li // CHECK-V7R: __ARM_ARCH_ISA_ARM 1 127*67e74705SXin Li // CHECK-V7R: __ARM_ARCH_ISA_THUMB 2 128*67e74705SXin Li // CHECK-V7R: __ARM_ARCH_PROFILE 'R' 129*67e74705SXin Li // CHECK-V7R: __ARM_FEATURE_CLZ 1 130*67e74705SXin Li // CHECK-V7R: __ARM_FEATURE_DSP 1 131*67e74705SXin Li // CHECK-V7R: __ARM_FEATURE_LDREX 0xF 132*67e74705SXin Li // CHECK-V7R: __ARM_FEATURE_QBIT 1 133*67e74705SXin Li // CHECK-V7R: __ARM_FEATURE_SAT 1 134*67e74705SXin Li // CHECK-V7R: __ARM_FEATURE_SIMD32 1 135*67e74705SXin Li // CHECK-V7R: __ARM_FEATURE_UNALIGNED 1 136*67e74705SXin Li 137*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R-NO-IDIV 138*67e74705SXin Li 139*67e74705SXin Li // CHECK-V7R-NO-IDIV-NOT: __ARM_FEATURE_IDIV 140*67e74705SXin Li 141*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R-IDIV 142*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R-IDIV 143*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R-IDIV 144*67e74705SXin Li 145*67e74705SXin Li // CHECK-V7R-IDIV: __ARM_FEATURE_IDIV 1 146*67e74705SXin Li 147*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv7-m -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7M 148*67e74705SXin Li 149*67e74705SXin Li // CHECK-V7M-NOT: __ARM_ARCH_ISA_ARM 150*67e74705SXin Li // CHECK-V7M-NOT: __ARM_FEATURE_DSP 151*67e74705SXin Li // CHECK-V7M-NOT: __ARM_FEATURE_SIMD32 152*67e74705SXin Li // CHECK-V7M: __ARM_ARCH 7 153*67e74705SXin Li // CHECK-V7M: __ARM_ARCH_ISA_THUMB 2 154*67e74705SXin Li // CHECK-V7M: __ARM_ARCH_PROFILE 'M' 155*67e74705SXin Li // CHECK-V7M: __ARM_FEATURE_CLZ 1 156*67e74705SXin Li // CHECK-V7M: __ARM_FEATURE_IDIV 1 157*67e74705SXin Li // CHECK-V7M: __ARM_FEATURE_LDREX 0x7 158*67e74705SXin Li // CHECK-V7M: __ARM_FEATURE_QBIT 1 159*67e74705SXin Li // CHECK-V7M: __ARM_FEATURE_SAT 1 160*67e74705SXin Li // CHECK-V7M: __ARM_FEATURE_UNALIGNED 1 161*67e74705SXin Li 162*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv7e-m -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7EM 163*67e74705SXin Li 164*67e74705SXin Li // CHECK-V7EM: __ARM_FEATURE_DSP 1 165*67e74705SXin Li // CHECK-V7EM: __ARM_FEATURE_SIMD32 1 166*67e74705SXin Li 167*67e74705SXin Li // RUN: %clang -target arm-none-linux-eabi -march=armv8-a -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V8A 168*67e74705SXin Li 169*67e74705SXin Li // CHECK-V8A: __ARM_ARCH 8 170*67e74705SXin Li // CHECK-V8A: __ARM_ARCH_ISA_ARM 1 171*67e74705SXin Li // CHECK-V8A: __ARM_ARCH_ISA_THUMB 2 172*67e74705SXin Li // CHECK-V8A: __ARM_ARCH_PROFILE 'A' 173*67e74705SXin Li // CHECK-V8A: __ARM_FEATURE_CLZ 1 174*67e74705SXin Li // CHECK-V8A: __ARM_FEATURE_DSP 1 175*67e74705SXin Li // CHECK-V8A: __ARM_FEATURE_IDIV 1 176*67e74705SXin Li // CHECK-V8A: __ARM_FEATURE_LDREX 0xF 177*67e74705SXin Li // CHECK-V8A: __ARM_FEATURE_QBIT 1 178*67e74705SXin Li // CHECK-V8A: __ARM_FEATURE_SAT 1 179*67e74705SXin Li // CHECK-V8A: __ARM_FEATURE_SIMD32 1 180*67e74705SXin Li // CHECK-V8A: __ARM_FEATURE_UNALIGNED 1 181*67e74705SXin Li 182