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