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-NOT: #define __ARM_FP 0x |
9 | // CHECK-V8A-NOT: #define __ARM_FEATURE_DOTPROD |
10 | |
11 | // RUN: %clang -target armv8a-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8A-ALLOW-FP-INSTR %s |
12 | // RUN: %clang -target armv8a-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8A-ALLOW-FP-INSTR %s |
13 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARMEL__ 1 |
14 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_ARCH 8 |
15 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_ARCH_8A__ 1 |
16 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FEATURE_CRC32 1 |
17 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 |
18 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 |
19 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FP 0xe |
20 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FP16_ARGS 1 |
21 | // CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FP16_FORMAT_IEEE 1 |
22 | // CHECK-V8A-ALLOW-FP-INSTR-V8A-NOT: #define __ARM_FEATURE_DOTPROD |
23 | |
24 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2-a+nofp16fml+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
25 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2-a+nofp16+fp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
26 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2-a+fp16+nofp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
27 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8-a+fp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
28 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8-a+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
29 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+nofp16fml+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
30 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+nofp16+fp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
31 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+fp16+nofp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
32 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+fp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
33 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s |
34 | // CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1 |
35 | // CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1 |
36 | // CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FP 0xe |
37 | // CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FP16_FORMAT_IEEE 1 |
38 | |
39 | // +fp16fml without neon doesn't make sense as the fp16fml instructions all require SIMD. |
40 | // However, as +fp16fml implies +fp16 there is a set of defines that we would expect. |
41 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8-a+fp16fml -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SCALAR %s |
42 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8-a+fp16 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SCALAR %s |
43 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+fp16fml -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SCALAR %s |
44 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+fp16 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SCALAR %s |
45 | // CHECK-FULLFP16-SCALAR: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1 |
46 | // CHECK-FULLFP16-SCALAR-NOT: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1 |
47 | // CHECK-FULLFP16-SCALAR: #define __ARM_FP 0xe |
48 | // CHECK-FULLFP16-SCALAR: #define __ARM_FP16_FORMAT_IEEE 1 |
49 | |
50 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2-a -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-NOFML-VECTOR-SCALAR %s |
51 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2-a+nofp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-NOFML-VECTOR-SCALAR %s |
52 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2-a+nofp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-NOFML-VECTOR-SCALAR %s |
53 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2-a+fp16fml+nofp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-NOFML-VECTOR-SCALAR %s |
54 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-NOFML-VECTOR-SCALAR %s |
55 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+nofp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-NOFML-VECTOR-SCALAR %s |
56 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+nofp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-NOFML-VECTOR-SCALAR %s |
57 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.4-a+fp16fml+nofp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-NOFML-VECTOR-SCALAR %s |
58 | // CHECK-FULLFP16-NOFML-VECTOR-SCALAR-NOT: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1 |
59 | // CHECK-FULLFP16-NOFML-VECTOR-SCALAR-NOT: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1 |
60 | // CHECK-FULLFP16-NOFML-VECTOR-SCALAR: #define __ARM_FP 0xe |
61 | // CHECK-FULLFP16-NOFML-VECTOR-SCALAR: #define __ARM_FP16_FORMAT_IEEE 1 |
62 | |
63 | // RUN: %clang -target arm -march=armv8-a+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SOFT %s |
64 | // RUN: %clang -target arm -march=armv8-a+fp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SOFT %s |
65 | // RUN: %clang -target arm -march=armv8-a+fp16+fp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SOFT %s |
66 | // RUN: %clang -target arm -march=armv8-a+fp16fml+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SOFT %s |
67 | // RUN: %clang -target arm -march=armv8.4-a+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SOFT %s |
68 | // RUN: %clang -target arm -march=armv8.4-a+fp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SOFT %s |
69 | // RUN: %clang -target arm -march=armv8.4-a+fp16+fp16fml -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SOFT %s |
70 | // RUN: %clang -target arm -march=armv8.4-a+fp16fml+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SOFT %s |
71 | // CHECK-FULLFP16-SOFT-NOT: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC |
72 | // CHECK-FULLFP16-SOFT-NOT: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC |
73 | // CHECK-FULLFP16-SOFT-NOT: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC |
74 | // CHECK-FULLFP16-SOFT-NOT: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC |
75 | |
76 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2a+dotprod -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-DOTPROD %s |
77 | // CHECK-DOTPROD: #define __ARM_FEATURE_DOTPROD 1 |
78 | |
79 | // RUN: %clang -target armv8r-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8R %s |
80 | // CHECK-V8R: #define __ARMEL__ 1 |
81 | // CHECK-V8R: #define __ARM_ARCH 8 |
82 | // CHECK-V8R: #define __ARM_ARCH_8R__ 1 |
83 | // CHECK-V8R: #define __ARM_FEATURE_CRC32 1 |
84 | // CHECK-V8R: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 |
85 | // CHECK-V8R: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 |
86 | // CHECK-V8R-NOT: #define __ARM_FP 0x |
87 | |
88 | // RUN: %clang -target armv8r-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8R-ALLOW-FP-INSTR %s |
89 | // RUN: %clang -target armv8r-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8R-ALLOW-FP-INSTR %s |
90 | // CHECK-V8R-ALLOW-FP-INSTR: #define __ARMEL__ 1 |
91 | // CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_ARCH 8 |
92 | // CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_ARCH_8R__ 1 |
93 | // CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_FEATURE_CRC32 1 |
94 | // CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 |
95 | // CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 |
96 | // CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_FP 0xe |
97 | |
98 | // RUN: %clang -target armv7a-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7 %s |
99 | // CHECK-V7: #define __ARMEL__ 1 |
100 | // CHECK-V7: #define __ARM_ARCH 7 |
101 | // CHECK-V7: #define __ARM_ARCH_7A__ 1 |
102 | // CHECK-V7-NOT: __ARM_FEATURE_CRC32 |
103 | // CHECK-V7-NOT: __ARM_FEATURE_NUMERIC_MAXMIN |
104 | // CHECK-V7-NOT: __ARM_FEATURE_DIRECTED_ROUNDING |
105 | // CHECK-V7-NOT: #define __ARM_FP 0x |
106 | |
107 | // RUN: %clang -target armv7a-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7-ALLOW-FP-INSTR %s |
108 | // RUN: %clang -target armv7a-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7-ALLOW-FP-INSTR %s |
109 | // CHECK-V7-ALLOW-FP-INSTR: #define __ARMEL__ 1 |
110 | // CHECK-V7-ALLOW-FP-INSTR: #define __ARM_ARCH 7 |
111 | // CHECK-V7-ALLOW-FP-INSTR: #define __ARM_ARCH_7A__ 1 |
112 | // CHECK-V7-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_CRC32 |
113 | // CHECK-V7-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_NUMERIC_MAXMIN |
114 | // CHECK-V7-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_DIRECTED_ROUNDING |
115 | // CHECK-V7-ALLOW-FP-INSTR: #define __ARM_FP 0xc |
116 | |
117 | // RUN: %clang -target armv7ve-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7VE %s |
118 | // CHECK-V7VE: #define __ARMEL__ 1 |
119 | // CHECK-V7VE: #define __ARM_ARCH 7 |
120 | // CHECK-V7VE: #define __ARM_ARCH_7VE__ 1 |
121 | // CHECK-V7VE: #define __ARM_ARCH_EXT_IDIV__ 1 |
122 | // CHECK-V7VE-NOT: #define __ARM_FP 0x |
123 | |
124 | // RUN: %clang -target armv7ve-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7VE-DEFAULT-ABI-SOFT %s |
125 | // RUN: %clang -target armv7ve-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7VE-DEFAULT-ABI-SOFT %s |
126 | // CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARMEL__ 1 |
127 | // CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARM_ARCH 7 |
128 | // CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARM_ARCH_7VE__ 1 |
129 | // CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARM_ARCH_EXT_IDIV__ 1 |
130 | // CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARM_FP 0xc |
131 | |
132 | // 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 |
133 | // CHECK-V7S: #define __ARMEL__ 1 |
134 | // CHECK-V7S: #define __ARM_ARCH 7 |
135 | // CHECK-V7S: #define __ARM_ARCH_7S__ 1 |
136 | // CHECK-V7S-NOT: __ARM_FEATURE_CRC32 |
137 | // CHECK-V7S-NOT: __ARM_FEATURE_NUMERIC_MAXMIN |
138 | // CHECK-V7S-NOT: __ARM_FEATURE_DIRECTED_ROUNDING |
139 | // CHECK-V7S: #define __ARM_FP 0xe |
140 | |
141 | // RUN: %clang -target armv8a -mfloat-abi=hard -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-V8-BAREHF %s |
142 | // CHECK-V8-BAREHF: #define __ARMEL__ 1 |
143 | // CHECK-V8-BAREHF: #define __ARM_ARCH 8 |
144 | // CHECK-V8-BAREHF: #define __ARM_ARCH_8A__ 1 |
145 | // CHECK-V8-BAREHF: #define __ARM_FEATURE_CRC32 1 |
146 | // CHECK-V8-BAREHF: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 |
147 | // CHECK-V8-BAREHF: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 |
148 | // CHECK-V8-BAREHP: #define __ARM_FP 0xe |
149 | // CHECK-V8-BAREHF: #define __ARM_NEON__ 1 |
150 | // CHECK-V8-BAREHF: #define __ARM_PCS_VFP 1 |
151 | // CHECK-V8-BAREHF: #define __VFP_FP__ 1 |
152 | |
153 | // 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 |
154 | // CHECK-V8-BAREHF-FP-NOT: __ARM_NEON__ 1 |
155 | // CHECK-V8-BAREHP-FP: #define __ARM_FP 0xe |
156 | // CHECK-V8-BAREHF-FP: #define __VFP_FP__ 1 |
157 | |
158 | // 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 |
159 | // 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 |
160 | // CHECK-V8-BAREHP-NEON-FP: #define __ARM_FP 0xe |
161 | // CHECK-V8-BAREHF-NEON-FP: #define __ARM_NEON__ 1 |
162 | // CHECK-V8-BAREHF-NEON-FP: #define __VFP_FP__ 1 |
163 | |
164 | // RUN: %clang -target armv8a -mnocrc -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-V8-NOCRC %s |
165 | // CHECK-V8-NOCRC-NOT: __ARM_FEATURE_CRC32 1 |
166 | |
167 | // Check that -mhwdiv works properly for armv8/thumbv8 (enabled by default). |
168 | |
169 | // RUN: %clang -target armv8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8 %s |
170 | // RUN: %clang -target armv8 -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8 %s |
171 | // RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8 %s |
172 | // RUN: %clang -target armv8-eabi -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8 %s |
173 | // V8:#define __ARM_ARCH_EXT_IDIV__ 1 |
174 | |
175 | // RUN: %clang -target armv8 -mhwdiv=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV-V8 %s |
176 | // RUN: %clang -target armv8 -mthumb -mhwdiv=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV-V8 %s |
177 | // RUN: %clang -target armv8 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV-V8 %s |
178 | // RUN: %clang -target armv8 -mthumb -mhwdiv=arm -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV-V8 %s |
179 | // NOHWDIV-V8-NOT:#define __ARM_ARCH_EXT_IDIV__ |
180 | |
181 | // RUN: %clang -target armv8a -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s |
182 | // RUN: %clang -target armv8a -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s |
183 | // V8A:#define __ARM_ARCH_EXT_IDIV__ 1 |
184 | // V8A-NOT:#define __ARM_FP 0x |
185 | |
186 | // RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A-ALLOW-FP-INSTR %s |
187 | // RUN: %clang -target armv8a-eabi -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A-ALLOW-FP-INSTR %s |
188 | // RUN: %clang -target armv8a-eabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A-ALLOW-FP-INSTR %s |
189 | // RUN: %clang -target armv8a-eabihf -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A-ALLOW-FP-INSTR %s |
190 | // V8A-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
191 | // V8A-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
192 | |
193 | // RUN: %clang -target armv8m.base-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M_BASELINE %s |
194 | // V8M_BASELINE: #define __ARM_ARCH 8 |
195 | // V8M_BASELINE: #define __ARM_ARCH_8M_BASE__ 1 |
196 | // V8M_BASELINE: #define __ARM_ARCH_EXT_IDIV__ 1 |
197 | // V8M_BASELINE-NOT: __ARM_ARCH_ISA_ARM |
198 | // V8M_BASELINE: #define __ARM_ARCH_ISA_THUMB 1 |
199 | // V8M_BASELINE: #define __ARM_ARCH_PROFILE 'M' |
200 | // V8M_BASELINE-NOT: __ARM_FEATURE_CRC32 |
201 | // V8M_BASELINE-NOT: __ARM_FEATURE_DSP |
202 | // V8M_BASELINE-NOT: __ARM_FP 0x{{.*}} |
203 | // V8M_BASELINE-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 |
204 | |
205 | // RUN: %clang -target armv8m.main-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M_MAINLINE %s |
206 | // V8M_MAINLINE: #define __ARM_ARCH 8 |
207 | // V8M_MAINLINE: #define __ARM_ARCH_8M_MAIN__ 1 |
208 | // V8M_MAINLINE: #define __ARM_ARCH_EXT_IDIV__ 1 |
209 | // V8M_MAINLINE-NOT: __ARM_ARCH_ISA_ARM |
210 | // V8M_MAINLINE: #define __ARM_ARCH_ISA_THUMB 2 |
211 | // V8M_MAINLINE: #define __ARM_ARCH_PROFILE 'M' |
212 | // V8M_MAINLINE-NOT: __ARM_FEATURE_CRC32 |
213 | // V8M_MAINLINE-NOT: __ARM_FEATURE_DSP |
214 | // V8M_MAINLINE-NOT: #define __ARM_FP 0x |
215 | // V8M_MAINLINE: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 |
216 | |
217 | // RUN: %clang -target armv8m.main-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M-MAINLINE-ALLOW-FP-INSTR %s |
218 | // RUN: %clang -target armv8m.main-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M-MAINLINE-ALLOW-FP-INSTR %s |
219 | // V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH 8 |
220 | // V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH_8M_MAIN__ 1 |
221 | // V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH_EXT_IDIV__ 1 |
222 | // V8M-MAINLINE-ALLOW-FP-INSTR-NOT: __ARM_ARCH_ISA_ARM |
223 | // V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH_ISA_THUMB 2 |
224 | // V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH_PROFILE 'M' |
225 | // V8M-MAINLINE-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_CRC32 |
226 | // V8M-MAINLINE-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_DSP |
227 | // V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_FP 0xe |
228 | // V8M-MAINLINE-ALLOW-FP-INSTR: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 |
229 | |
230 | // 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 |
231 | // V8M_MAINLINE_DSP: #define __ARM_ARCH 8 |
232 | // V8M_MAINLINE_DSP: #define __ARM_ARCH_8M_MAIN__ 1 |
233 | // V8M_MAINLINE_DSP: #define __ARM_ARCH_EXT_IDIV__ 1 |
234 | // V8M_MAINLINE_DSP-NOT: __ARM_ARCH_ISA_ARM |
235 | // V8M_MAINLINE_DSP: #define __ARM_ARCH_ISA_THUMB 2 |
236 | // V8M_MAINLINE_DSP: #define __ARM_ARCH_PROFILE 'M' |
237 | // V8M_MAINLINE_DSP-NOT: __ARM_FEATURE_CRC32 |
238 | // V8M_MAINLINE_DSP: #define __ARM_FEATURE_DSP 1 |
239 | // V8M_MAINLINE_DSP-NOT: #define __ARM_FP 0x |
240 | // V8M_MAINLINE_DSP: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 |
241 | |
242 | // RUN: %clang -target arm-none-linux-gnueabi -march=armv8-m.main+dsp -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M-MAINLINE-DSP-ALLOW-FP-INSTR %s |
243 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH 8 |
244 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH_8M_MAIN__ 1 |
245 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH_EXT_IDIV__ 1 |
246 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR-NOT: __ARM_ARCH_ISA_ARM |
247 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH_ISA_THUMB 2 |
248 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH_PROFILE 'M' |
249 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_CRC32 |
250 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_FEATURE_DSP 1 |
251 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_FP 0xe |
252 | // V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 |
253 | |
254 | // RUN: %clang -target arm-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-DEFS %s |
255 | // CHECK-DEFS:#define __ARM_PCS 1 |
256 | // CHECK-DEFS:#define __ARM_SIZEOF_MINIMAL_ENUM 4 |
257 | // CHECK-DEFS:#define __ARM_SIZEOF_WCHAR_T 4 |
258 | |
259 | // RUN: %clang -target arm-none-linux-gnu -fno-math-errno -fno-signed-zeros\ |
260 | // RUN: -fno-trapping-math -fassociative-math -freciprocal-math\ |
261 | // RUN: -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FASTMATH %s |
262 | // RUN: %clang -target arm-none-linux-gnu -ffast-math -x c -E -dM %s -o -\ |
263 | // RUN: | FileCheck -match-full-lines --check-prefix=CHECK-FASTMATH %s |
264 | // CHECK-FASTMATH: #define __ARM_FP_FAST 1 |
265 | |
266 | // RUN: %clang -target arm-none-linux-gnu -fshort-wchar -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-SHORTWCHAR %s |
267 | // CHECK-SHORTWCHAR:#define __ARM_SIZEOF_WCHAR_T 2 |
268 | |
269 | // RUN: %clang -target arm-none-linux-gnu -fshort-enums -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-SHORTENUMS %s |
270 | // CHECK-SHORTENUMS:#define __ARM_SIZEOF_MINIMAL_ENUM 1 |
271 | |
272 | // Test that -mhwdiv has the right effect for a target CPU which has hwdiv enabled by default. |
273 | // RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=HWDIV %s |
274 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=HWDIV %s |
275 | // RUN: %clang -target armv7 -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=HWDIV %s |
276 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=HWDIV %s |
277 | // HWDIV:#define __ARM_ARCH_EXT_IDIV__ 1 |
278 | |
279 | // RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV %s |
280 | // RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV %s |
281 | // RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV %s |
282 | // RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=NOHWDIV %s |
283 | // NOHWDIV-NOT:#define __ARM_ARCH_EXT_IDIV__ |
284 | |
285 | |
286 | // Check that -mfpu works properly for Cortex-A7 (enabled by default). |
287 | // 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 |
288 | // 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 |
289 | // RUN: %clang -target armv7-none-linux-gnueabihf -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A7 %s |
290 | // RUN: %clang -target armv7-none-linux-gnueabihf -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A7 %s |
291 | // DEFAULTFPU-A7:#define __ARM_FP 0xe |
292 | // DEFAULTFPU-A7:#define __ARM_NEON__ 1 |
293 | // DEFAULTFPU-A7:#define __ARM_VFPV4__ 1 |
294 | |
295 | // 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 |
296 | // 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 |
297 | // FPUNONE-A7-NOT:#define __ARM_FP 0x{{.*}} |
298 | // FPUNONE-A7-NOT:#define __ARM_NEON__ 1 |
299 | // FPUNONE-A7-NOT:#define __ARM_VFPV4__ 1 |
300 | |
301 | // 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 |
302 | // 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 |
303 | // NONEON-A7:#define __ARM_FP 0xe |
304 | // NONEON-A7-NOT:#define __ARM_NEON__ 1 |
305 | // NONEON-A7:#define __ARM_VFPV4__ 1 |
306 | |
307 | // Check that -mfpu works properly for Cortex-A5 (enabled by default). |
308 | // 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 |
309 | // 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 |
310 | // DEFAULTFPU-A5:#define __ARM_FP 0xe |
311 | // DEFAULTFPU-A5:#define __ARM_NEON__ 1 |
312 | // DEFAULTFPU-A5:#define __ARM_VFPV4__ 1 |
313 | |
314 | // 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 |
315 | // 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 |
316 | // FPUNONE-A5-NOT:#define __ARM_FP 0x{{.*}} |
317 | // FPUNONE-A5-NOT:#define __ARM_NEON__ 1 |
318 | // FPUNONE-A5-NOT:#define __ARM_VFPV4__ 1 |
319 | |
320 | // 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 |
321 | // 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 |
322 | // NONEON-A5:#define __ARM_FP 0xe |
323 | // NONEON-A5-NOT:#define __ARM_NEON__ 1 |
324 | // NONEON-A5:#define __ARM_VFPV4__ 1 |
325 | |
326 | // FIXME: add check for further predefines |
327 | // Test whether predefines are as expected when targeting ep9312. |
328 | // RUN: %clang -target armv4t -mcpu=ep9312 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A4T %s |
329 | // A4T-NOT:#define __ARM_FEATURE_DSP |
330 | // A4T-NOT:#define __ARM_FP 0x{{.*}} |
331 | |
332 | // Test whether predefines are as expected when targeting arm10tdmi. |
333 | // RUN: %clang -target armv5 -mcpu=arm10tdmi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5T %s |
334 | // A5T-NOT:#define __ARM_FEATURE_DSP |
335 | // A5T-NOT:#define __ARM_FP 0x{{.*}} |
336 | |
337 | // Test whether predefines are as expected when targeting cortex-a5i (soft FP ABI as default). |
338 | // RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5 %s |
339 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5 %s |
340 | // A5:#define __ARM_ARCH 7 |
341 | // A5:#define __ARM_ARCH_7A__ 1 |
342 | // A5-NOT:#define __ARM_ARCH_EXT_IDIV__ |
343 | // A5:#define __ARM_ARCH_PROFILE 'A' |
344 | // A5-NOT:#define __ARM_DWARF_EH__ 1 |
345 | // A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING |
346 | // A5:#define __ARM_FEATURE_DSP 1 |
347 | // A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN |
348 | // A5-NOT:#define __ARM_FP 0x |
349 | |
350 | // Test whether predefines are as expected when targeting cortex-a5 (softfp FP ABI as default). |
351 | // RUN: %clang -target armv7-eabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5-ALLOW-FP-INSTR %s |
352 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5-ALLOW-FP-INSTR %s |
353 | // A5-ALLOW-FP-INSTR:#define __ARM_ARCH 7 |
354 | // A5-ALLOW-FP-INSTR:#define __ARM_ARCH_7A__ 1 |
355 | // A5-ALLOW-FP-INSTR-NOT:#define __ARM_ARCH_EXT_IDIV__ |
356 | // A5-ALLOW-FP-INSTR:#define __ARM_ARCH_PROFILE 'A' |
357 | // A5-ALLOW-FP-INSTR-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING |
358 | // A5-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
359 | // A5-ALLOW-FP-INSTR-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN |
360 | // A5-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
361 | |
362 | // Test whether predefines are as expected when targeting cortex-a7 (soft FP ABI as default). |
363 | // RUN: %clang -target armv7k -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7 %s |
364 | // RUN: %clang -target armv7k -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7 %s |
365 | // A7:#define __ARM_ARCH 7 |
366 | // A7:#define __ARM_ARCH_EXT_IDIV__ 1 |
367 | // A7:#define __ARM_ARCH_PROFILE 'A' |
368 | // A7-NOT:#define __ARM_DWARF_EH__ 1 |
369 | // A7:#define __ARM_FEATURE_DSP 1 |
370 | // A7-NOT:#define __ARM_FP 0x |
371 | |
372 | // Test whether predefines are as expected when targeting cortex-a7 (softfp FP ABI as default). |
373 | // RUN: %clang -target armv7k-eabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7-ALLOW-FP-INSTR %s |
374 | // RUN: %clang -target armv7k-eabi -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7-ALLOW-FP-INSTR %s |
375 | // A7-ALLOW-FP-INSTR:#define __ARM_ARCH 7 |
376 | // A7-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
377 | // A7-ALLOW-FP-INSTR:#define __ARM_ARCH_PROFILE 'A' |
378 | // A7-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
379 | // A7-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
380 | |
381 | // Test whether predefines are as expected when targeting cortex-a7. |
382 | // RUN: %clang -target x86_64-apple-darwin -arch armv7k -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV7K %s |
383 | // ARMV7K:#define __ARM_ARCH 7 |
384 | // ARMV7K:#define __ARM_ARCH_EXT_IDIV__ 1 |
385 | // ARMV7K:#define __ARM_ARCH_PROFILE 'A' |
386 | // ARMV7K:#define __ARM_DWARF_EH__ 1 |
387 | // ARMV7K:#define __ARM_FEATURE_DSP 1 |
388 | // ARMV7K:#define __ARM_FP 0xe |
389 | // ARMV7K:#define __ARM_PCS_VFP 1 |
390 | |
391 | |
392 | // Test whether predefines are as expected when targeting cortex-a8 (soft FP ABI as default). |
393 | // RUN: %clang -target armv7 -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8 %s |
394 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8 %s |
395 | // A8-NOT:#define __ARM_ARCH_EXT_IDIV__ |
396 | // A8:#define __ARM_FEATURE_DSP 1 |
397 | // A8-NOT:#define __ARM_FP 0x |
398 | |
399 | // Test whether predefines are as expected when targeting cortex-a8 (softfp FP ABI as default). |
400 | // RUN: %clang -target armv7-eabi -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8-ALLOW-FP-INSTR %s |
401 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8-ALLOW-FP-INSTR %s |
402 | // A8-ALLOW-FP-INSTR-NOT:#define __ARM_ARCH_EXT_IDIV__ |
403 | // A8-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
404 | // A8-ALLOW-FP-INSTR:#define __ARM_FP 0xc |
405 | |
406 | // Test whether predefines are as expected when targeting cortex-a9 (soft FP as default). |
407 | // RUN: %clang -target armv7 -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9 %s |
408 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9 %s |
409 | // A9-NOT:#define __ARM_ARCH_EXT_IDIV__ |
410 | // A9:#define __ARM_FEATURE_DSP 1 |
411 | // A9-NOT:#define __ARM_FP 0x |
412 | |
413 | // Test whether predefines are as expected when targeting cortex-a9 (softfp FP as default). |
414 | // RUN: %clang -target armv7-eabi -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9-ALLOW-FP-INSTR %s |
415 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9-ALLOW-FP-INSTR %s |
416 | // A9-ALLOW-FP-INSTR-NOT:#define __ARM_ARCH_EXT_IDIV__ |
417 | // A9-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
418 | // A9-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
419 | |
420 | |
421 | // Check that -mfpu works properly for Cortex-A12 (enabled by default). |
422 | // 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 |
423 | // 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 |
424 | // DEFAULTFPU-A12:#define __ARM_FP 0xe |
425 | // DEFAULTFPU-A12:#define __ARM_NEON__ 1 |
426 | // DEFAULTFPU-A12:#define __ARM_VFPV4__ 1 |
427 | |
428 | // 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 |
429 | // 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 |
430 | // FPUNONE-A12-NOT:#define __ARM_FP 0x{{.*}} |
431 | // FPUNONE-A12-NOT:#define __ARM_NEON__ 1 |
432 | // FPUNONE-A12-NOT:#define __ARM_VFPV4__ 1 |
433 | |
434 | // Test whether predefines are as expected when targeting cortex-a12 (soft FP ABI as default). |
435 | // RUN: %clang -target armv7 -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12 %s |
436 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12 %s |
437 | // A12:#define __ARM_ARCH 7 |
438 | // A12:#define __ARM_ARCH_7A__ 1 |
439 | // A12:#define __ARM_ARCH_EXT_IDIV__ 1 |
440 | // A12:#define __ARM_ARCH_PROFILE 'A' |
441 | // A12:#define __ARM_FEATURE_DSP 1 |
442 | // A12-NOT:#define __ARM_FP 0x |
443 | |
444 | // Test whether predefines are as expected when targeting cortex-a12 (soft FP ABI as default). |
445 | // RUN: %clang -target armv7-eabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12-ALLOW-FP-INSTR %s |
446 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12-ALLOW-FP-INSTR %s |
447 | // A12-ALLOW-FP-INSTR:#define __ARM_ARCH 7 |
448 | // A12-ALLOW-FP-INSTR:#define __ARM_ARCH_7A__ 1 |
449 | // A12-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
450 | // A12-ALLOW-FP-INSTR:#define __ARM_ARCH_PROFILE 'A' |
451 | // A12-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
452 | // A12-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
453 | |
454 | // Test whether predefines are as expected when targeting cortex-a15 (soft FP ABI as default). |
455 | // RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15 %s |
456 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15 %s |
457 | // A15:#define __ARM_ARCH_EXT_IDIV__ 1 |
458 | // A15:#define __ARM_FEATURE_DSP 1 |
459 | // A15-NOT:#define __ARM_FP 0x |
460 | |
461 | // Test whether predefines are as expected when targeting cortex-a15 (softfp ABI as default). |
462 | // RUN: %clang -target armv7-eabi -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15-ALLOW-FP-INSTR %s |
463 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15-ALLOW-FP-INSTR %s |
464 | // A15-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
465 | // A15-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
466 | // A15-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
467 | |
468 | // Check that -mfpu works properly for Cortex-A17 (enabled by default). |
469 | // 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 |
470 | // 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 |
471 | // DEFAULTFPU-A17:#define __ARM_FP 0xe |
472 | // DEFAULTFPU-A17:#define __ARM_NEON__ 1 |
473 | // DEFAULTFPU-A17:#define __ARM_VFPV4__ 1 |
474 | |
475 | // 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 |
476 | // 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 |
477 | // FPUNONE-A17-NOT:#define __ARM_FP 0x{{.*}} |
478 | // FPUNONE-A17-NOT:#define __ARM_NEON__ 1 |
479 | // FPUNONE-A17-NOT:#define __ARM_VFPV4__ 1 |
480 | |
481 | // Test whether predefines are as expected when targeting cortex-a17 (soft FP ABI as default). |
482 | // RUN: %clang -target armv7 -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17 %s |
483 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17 %s |
484 | // A17:#define __ARM_ARCH 7 |
485 | // A17:#define __ARM_ARCH_7A__ 1 |
486 | // A17:#define __ARM_ARCH_EXT_IDIV__ 1 |
487 | // A17:#define __ARM_ARCH_PROFILE 'A' |
488 | // A17:#define __ARM_FEATURE_DSP 1 |
489 | // A17-NOT:#define __ARM_FP 0x |
490 | |
491 | // Test whether predefines are as expected when targeting cortex-a17 (softfp FP ABI as default). |
492 | // RUN: %clang -target armv7-eabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17-ALLOW-FP-INSTR %s |
493 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17-ALLOW-FP-INSTR %s |
494 | // A17-ALLOW-FP-INSTR:#define __ARM_ARCH 7 |
495 | // A17-ALLOW-FP-INSTR:#define __ARM_ARCH_7A__ 1 |
496 | // A17-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
497 | // A17-ALLOW-FP-INSTR:#define __ARM_ARCH_PROFILE 'A' |
498 | // A17-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
499 | // A17-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
500 | |
501 | // Test whether predefines are as expected when targeting swift (soft FP ABI as default). |
502 | // RUN: %clang -target armv7s -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT %s |
503 | // RUN: %clang -target armv7s -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT %s |
504 | // SWIFT:#define __ARM_ARCH_EXT_IDIV__ 1 |
505 | // SWIFT:#define __ARM_FEATURE_DSP 1 |
506 | // SWIFT-NOT:#define __ARM_FP 0xxE |
507 | |
508 | // Test whether predefines are as expected when targeting swift (softfp FP ABI as default). |
509 | // RUN: %clang -target armv7s-eabi -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT-ALLOW-FP-INSTR %s |
510 | // RUN: %clang -target armv7s-eabi -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT-ALLOW-FP-INSTR %s |
511 | // SWIFT-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
512 | // SWIFT-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
513 | // SWIFT-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
514 | |
515 | // Test whether predefines are as expected when targeting ARMv8-A Cortex implementations (soft FP ABI as default) |
516 | // RUN: %clang -target armv8 -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
517 | // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
518 | // RUN: %clang -target armv8 -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
519 | // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
520 | // RUN: %clang -target armv8 -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
521 | // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
522 | // RUN: %clang -target armv8 -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
523 | // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
524 | // RUN: %clang -target armv8 -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
525 | // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
526 | // RUN: %clang -target armv8 -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
527 | // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
528 | // |
529 | // RUN: %clang -target armv8 -mcpu=exynos-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
530 | // RUN: %clang -target armv8 -mthumb -mcpu=exynos-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
531 | // RUN: %clang -target armv8 -mcpu=exynos-m2 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
532 | // RUN: %clang -target armv8 -mthumb -mcpu=exynos-m2 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
533 | // RUN: %clang -target armv8 -mcpu=exynos-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
534 | // RUN: %clang -target armv8 -mthumb -mcpu=exynos-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
535 | // RUN: %clang -target armv8 -mcpu=exynos-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
536 | // RUN: %clang -target armv8 -mthumb -mcpu=exynos-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
537 | // RUN: %clang -target armv8 -mcpu=exynos-m5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
538 | // RUN: %clang -target armv8 -mthumb -mcpu=exynos-m5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s |
539 | // ARMV8:#define __ARM_ARCH_EXT_IDIV__ 1 |
540 | // ARMV8:#define __ARM_FEATURE_DSP 1 |
541 | // ARMV8-NOT:#define __ARM_FP 0x |
542 | |
543 | // Test whether predefines are as expected when targeting ARMv8-A Cortex implementations (softfp FP ABI as default) |
544 | // RUN: %clang -target armv8-eabi -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
545 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
546 | // RUN: %clang -target armv8-eabi -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
547 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
548 | // RUN: %clang -target armv8-eabi -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
549 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
550 | // RUN: %clang -target armv8-eabi -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
551 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
552 | // RUN: %clang -target armv8-eabi -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
553 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
554 | // RUN: %clang -target armv8-eabi -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
555 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
556 | // |
557 | // RUN: %clang -target armv8-eabi -mcpu=exynos-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
558 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
559 | // RUN: %clang -target armv8-eabi -mcpu=exynos-m2 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
560 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m2 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
561 | // RUN: %clang -target armv8-eabi -mcpu=exynos-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
562 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
563 | // RUN: %clang -target armv8-eabi -mcpu=exynos-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
564 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
565 | // RUN: %clang -target armv8-eabi -mcpu=exynos-m5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
566 | // RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s |
567 | // ARMV8-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
568 | // ARMV8-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
569 | // ARMV8-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
570 | |
571 | // Test whether predefines are as expected when targeting cortex-r4. |
572 | // RUN: %clang -target armv7 -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4-ARM %s |
573 | // R4-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ |
574 | // R4-ARM:#define __ARM_FEATURE_DSP 1 |
575 | // R4-ARM-NOT:#define __ARM_FP 0x{{.*}} |
576 | |
577 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4-THUMB %s |
578 | // R4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 |
579 | // R4-THUMB:#define __ARM_FEATURE_DSP 1 |
580 | // R4-THUMB-NOT:#define __ARM_FP 0x{{.*}} |
581 | |
582 | // Test whether predefines are as expected when targeting cortex-r4f (soft FP ABI as default). |
583 | // RUN: %clang -target armv7 -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-ARM %s |
584 | // R4F-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ |
585 | // R4F-ARM:#define __ARM_FEATURE_DSP 1 |
586 | // R4F-ARM-NOT:#define __ARM_FP 0x |
587 | |
588 | // Test whether predefines are as expected when targeting cortex-r4f (softfp FP ABI as default). |
589 | // RUN: %clang -target armv7-eabi -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-ARM-ALLOW-FP-INSTR %s |
590 | // R4F-ARM-ALLOW-FP-INSTR-NOT:#define __ARM_ARCH_EXT_IDIV__ |
591 | // R4F-ARM-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
592 | // R4F-ARM-ALLOW-FP-INSTR:#define __ARM_FP 0xc |
593 | |
594 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-THUMB %s |
595 | // R4F-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 |
596 | // R4F-THUMB:#define __ARM_FEATURE_DSP 1 |
597 | // R4F-THUMB-NOT:#define __ARM_FP 0x |
598 | |
599 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-THUMB-ALLOW-FP-INSTR %s |
600 | // R4F-THUMB-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
601 | // R4F-THUMB-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
602 | // R4F-THUMB-ALLOW-FP-INSTR:#define __ARM_FP 0xc |
603 | |
604 | // Test whether predefines are as expected when targeting cortex-r5 (soft FP ABI as default). |
605 | // RUN: %clang -target armv7 -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5 %s |
606 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5 %s |
607 | // R5:#define __ARM_ARCH_EXT_IDIV__ 1 |
608 | // R5:#define __ARM_FEATURE_DSP 1 |
609 | // R5-NOT:#define __ARM_FP 0x |
610 | |
611 | // Test whether predefines are as expected when targeting cortex-r5 (softfp FP ABI as default). |
612 | // RUN: %clang -target armv7-eabi -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5-ALLOW-FP-INSTR %s |
613 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5-ALLOW-FP-INSTR %s |
614 | // R5-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
615 | // R5-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
616 | // R5-ALLOW-FP-INSTR:#define __ARM_FP 0xc |
617 | |
618 | // Test whether predefines are as expected when targeting cortex-r7 and cortex-r8 (soft FP ABI as default). |
619 | // RUN: %clang -target armv7 -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s |
620 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s |
621 | // RUN: %clang -target armv7 -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s |
622 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s |
623 | // R7-R8:#define __ARM_ARCH_EXT_IDIV__ 1 |
624 | // R7-R8:#define __ARM_FEATURE_DSP 1 |
625 | // R7-R8-NOT:#define __ARM_FP 0x |
626 | |
627 | // Test whether predefines are as expected when targeting cortex-r7 and cortex-r8 (softfp FP ABI as default). |
628 | // RUN: %clang -target armv7-eabi -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8-ALLOW-FP-INSTR %s |
629 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8-ALLOW-FP-INSTR %s |
630 | // RUN: %clang -target armv7-eabi -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8-ALLOW-FP-INSTR %s |
631 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8-ALLOW-FP-INSTR %s |
632 | // R7-R8-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
633 | // R7-R8-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
634 | // R7-R8-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
635 | |
636 | // Test whether predefines are as expected when targeting cortex-m0. |
637 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M0-THUMB %s |
638 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0plus -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M0-THUMB %s |
639 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M0-THUMB %s |
640 | // RUN: %clang -target armv7 -mthumb -mcpu=sc000 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M0-THUMB %s |
641 | // M0-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__ |
642 | // M0-THUMB-NOT:#define __ARM_FEATURE_DSP |
643 | // M0-THUMB-NOT:#define __ARM_FP 0x{{.*}} |
644 | |
645 | // Test whether predefines are as expected when targeting cortex-m3. |
646 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M3-THUMB %s |
647 | // RUN: %clang -target armv7 -mthumb -mcpu=sc300 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M3-THUMB %s |
648 | // M3-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 |
649 | // M3-THUMB-NOT:#define __ARM_FEATURE_DSP |
650 | // M3-THUMB-NOT:#define __ARM_FP 0x{{.*}} |
651 | |
652 | // Test whether predefines are as expected when targeting cortex-m4 (soft FP ABI as default). |
653 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M4-THUMB %s |
654 | // M4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 |
655 | // M4-THUMB:#define __ARM_FEATURE_DSP 1 |
656 | // M4-THUMB-NOT:#define __ARM_FP 0x |
657 | |
658 | // Test whether predefines are as expected when targeting cortex-m4 (softfp ABI as default). |
659 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M4-THUMB-ALLOW-FP-INSTR %s |
660 | // M4-THUMB-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
661 | // M4-THUMB-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
662 | // M4-THUMB-ALLOW-FP-INSTR:#define __ARM_FP 0x6 |
663 | |
664 | // Test whether predefines are as expected when targeting cortex-m7 (soft FP ABI as default). |
665 | // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M7-THUMB %s |
666 | // M7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 |
667 | // M7-THUMB:#define __ARM_FEATURE_DSP 1 |
668 | // M7-THUMB-NOT:#define __ARM_FP 0x |
669 | // M7-THUMB-NOT:#define __ARM_FPV5__ |
670 | |
671 | // Test whether predefines are as expected when targeting cortex-m7 (softfp FP ABI as default). |
672 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M7-THUMB-ALLOW-FP-INSTR %s |
673 | // M7-THUMB-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
674 | // M7-THUMB-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
675 | // M7-THUMB-ALLOW-FP-INSTR:#define __ARM_FP 0xe |
676 | // M7-THUMB-ALLOW-FP-INSTR:#define __ARM_FPV5__ 1 |
677 | |
678 | // Test whether predefines are as expected when targeting v8m cores |
679 | // RUN: %clang -target arm -mcpu=cortex-m23 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M23 %s |
680 | // M23: #define __ARM_ARCH 8 |
681 | // M23: #define __ARM_ARCH_8M_BASE__ 1 |
682 | // M23: #define __ARM_ARCH_EXT_IDIV__ 1 |
683 | // M23-NOT: __ARM_ARCH_ISA_ARM |
684 | // M23: #define __ARM_ARCH_ISA_THUMB 1 |
685 | // M23: #define __ARM_ARCH_PROFILE 'M' |
686 | // M23-NOT: __ARM_FEATURE_CRC32 |
687 | // M23-NOT: __ARM_FEATURE_DSP |
688 | // M23-NOT: __ARM_FP 0x{{.*}} |
689 | // M23-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 |
690 | |
691 | // Test whether predefines are as expected when targeting m33 (soft FP ABI as default). |
692 | // RUN: %clang -target arm -mcpu=cortex-m33 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M33 %s |
693 | // M33: #define __ARM_ARCH 8 |
694 | // M33: #define __ARM_ARCH_8M_MAIN__ 1 |
695 | // M33: #define __ARM_ARCH_EXT_IDIV__ 1 |
696 | // M33-NOT: __ARM_ARCH_ISA_ARM |
697 | // M33: #define __ARM_ARCH_ISA_THUMB 2 |
698 | // M33: #define __ARM_ARCH_PROFILE 'M' |
699 | // M33-NOT: __ARM_FEATURE_CRC32 |
700 | // M33: #define __ARM_FEATURE_DSP 1 |
701 | // M33-NOT: #define __ARM_FP 0x |
702 | // M33: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 |
703 | |
704 | // Test whether predefines are as expected when targeting m33 (softfp FP ABI as default). |
705 | // RUN: %clang -target arm-eabi -mcpu=cortex-m33 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M33-ALLOW-FP-INSTR %s |
706 | // M33-ALLOW-FP-INSTR: #define __ARM_ARCH 8 |
707 | // M33-ALLOW-FP-INSTR: #define __ARM_ARCH_8M_MAIN__ 1 |
708 | // M33-ALLOW-FP-INSTR: #define __ARM_ARCH_EXT_IDIV__ 1 |
709 | // M33-ALLOW-FP-INSTR-NOT: __ARM_ARCH_ISA_ARM |
710 | // M33-ALLOW-FP-INSTR: #define __ARM_ARCH_ISA_THUMB 2 |
711 | // M33-ALLOW-FP-INSTR: #define __ARM_ARCH_PROFILE 'M' |
712 | // M33-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_CRC32 |
713 | // M33-ALLOW-FP-INSTR: #define __ARM_FEATURE_DSP 1 |
714 | // M33-ALLOW-FP-INSTR: #define __ARM_FP 0x6 |
715 | // M33-ALLOW-FP-INSTR: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 |
716 | |
717 | // Test whether predefines are as expected when targeting krait (soft FP as default). |
718 | // RUN: %clang -target armv7 -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT %s |
719 | // RUN: %clang -target armv7 -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT %s |
720 | // KRAIT:#define __ARM_ARCH_EXT_IDIV__ 1 |
721 | // KRAIT:#define __ARM_FEATURE_DSP 1 |
722 | // KRAIT-NOT:#define __ARM_VFPV4__ |
723 | |
724 | // Test whether predefines are as expected when targeting krait (softfp FP as default). |
725 | // RUN: %clang -target armv7-eabi -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT-ALLOW-FP-INSTR %s |
726 | // RUN: %clang -target armv7-eabi -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT-ALLOW-FP-INSTR %s |
727 | // KRAIT-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 |
728 | // KRAIT-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 |
729 | // KRAIT-ALLOW-FP-INSTR:#define __ARM_VFPV4__ 1 |
730 | |
731 | // RUN: %clang -target armv8.1a-none-none-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V81A %s |
732 | // CHECK-V81A: #define __ARM_ARCH 8 |
733 | // CHECK-V81A: #define __ARM_ARCH_8_1A__ 1 |
734 | // CHECK-V81A: #define __ARM_ARCH_PROFILE 'A' |
735 | // CHECK-V81A: #define __ARM_FEATURE_QRDMX 1 |
736 | // CHECK-V81A: #define __ARM_FP 0xe |
737 | |
738 | // RUN: %clang -target armv8.2a-none-none-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V82A %s |
739 | // CHECK-V82A: #define __ARM_ARCH 8 |
740 | // CHECK-V82A: #define __ARM_ARCH_8_2A__ 1 |
741 | // CHECK-V82A: #define __ARM_ARCH_PROFILE 'A' |
742 | // CHECK-V82A: #define __ARM_FEATURE_QRDMX 1 |
743 | // CHECK-V82A: #define __ARM_FP 0xe |
744 | |
745 | // RUN: %clang -target armv8.3a-none-none-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V83A %s |
746 | // CHECK-V83A: #define __ARM_ARCH 8 |
747 | // CHECK-V83A: #define __ARM_ARCH_8_3A__ 1 |
748 | // CHECK-V83A: #define __ARM_ARCH_PROFILE 'A' |
749 | |
750 | // RUN: %clang -target armv8.4a-none-none-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V84A %s |
751 | // CHECK-V84A: #define __ARM_ARCH 8 |
752 | // CHECK-V84A: #define __ARM_ARCH_8_4A__ 1 |
753 | // CHECK-V84A: #define __ARM_ARCH_PROFILE 'A' |
754 | |
755 | // RUN: %clang -target armv8.5a-none-none-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V85A %s |
756 | // CHECK-V85A: #define __ARM_ARCH 8 |
757 | // CHECK-V85A: #define __ARM_ARCH_8_5A__ 1 |
758 | // CHECK-V85A: #define __ARM_ARCH_PROFILE 'A' |
759 | |