1 // Test that different values of -mfpu pick correct ARM FPU target-feature(s).
3 // RUN: %clang -target arm-linux-eabi %s -### -o %t.o 2>&1 \
4 // RUN: | FileCheck --check-prefix=CHECK-DEFAULT %s
5 // CHECK-DEFAULT-NOT: "-target-feature" "+soft-float"
6 // CHECK-DEFAULT-DAG: "-target-feature" "+soft-float-abi"
7 // CHECK-DEFAULT-NOT: "-target-feature" "+vfp2"
8 // CHECK-DEFAULT-NOT: "-target-feature" "+vfp3"
9 // CHECK-DEFAULT-NOT: "-target-feature" "+neon"
11 // RUN: not %clang --target=arm-linux-eabi -mfpu=fpa %s -### -o %t.o 2>&1 \
12 // RUN: | FileCheck --check-prefix=CHECK-FPA %s
13 // RUN: not %clang --target=arm-linux-eabi -mfpu=fpe2 %s -### -o %t.o 2>&1 \
14 // RUN: | FileCheck --check-prefix=CHECK-FPA %s
15 // RUN: not %clang --target=arm-linux-eabi -mfpu=fpe3 %s -### -o %t.o 2>&1 \
16 // RUN: | FileCheck --check-prefix=CHECK-FPA %s
17 // RUN: not %clang --target=arm-linux-eabi -mfpu=maverick %s -### -o %t.o 2>&1 \
18 // RUN: | FileCheck --check-prefix=CHECK-FPA %s
19 // CHECK-FPA: error: {{.*}} does not support '-mfpu={{fpa|fpe|fpe2|fpe3|maverick}}'
21 // RUN: %clang -target arm-linux-eabi -mfpu=vfp %s -### -o %t.o 2>&1 \
22 // RUN: | FileCheck --check-prefix=CHECK-VFP %s
23 // RUN: %clang -target arm-linux-eabi -mfpu=vfp %s -mfloat-abi=soft -### -o %t.o 2>&1 \
24 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-2 %s
25 // CHECK-VFP-NOT: "-target-feature" "+soft-float"
26 // CHECK-VFP-DAG: "-target-feature" "+soft-float-abi"
27 // CHECK-VFP-DAG: "-target-feature" "+vfp2"
28 // CHECK-VFP-DAG: "-target-feature" "-vfp3d16sp"
29 // CHECK-VFP-DAG: "-target-feature" "-vfp4d16sp"
30 // CHECK-VFP-DAG: "-target-feature" "-fp-armv8d16sp"
31 // CHECK-VFP-DAG: "-target-feature" "-neon"
32 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "+soft-float-abi"
33 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp3d16sp"
34 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp4d16sp"
35 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-fp-armv8d16sp"
36 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-neon"
37 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-sha2"
38 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-aes"
39 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp2sp"
41 // RUN: %clang -target arm-linux-eabi -mfpu=vfp3 %s -### -o %t.o 2>&1 \
42 // RUN: | FileCheck --check-prefix=CHECK-VFP3 %s
43 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3 %s -### -o %t.o 2>&1 \
44 // RUN: | FileCheck --check-prefix=CHECK-VFP3 %s
45 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
46 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
47 // CHECK-VFP3-NOT: "-target-feature" "+soft-float"
48 // CHECK-VFP3-DAG: "-target-feature" "+soft-float-abi"
49 // CHECK-VFP3-DAG: "-target-feature" "+vfp3"
50 // CHECK-VFP3-DAG: "-target-feature" "-vfp4d16sp"
51 // CHECK-VFP3-DAG: "-target-feature" "-fp-armv8d16sp"
52 // CHECK-VFP3-DAG: "-target-feature" "-neon"
53 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "+soft-float-abi"
54 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp2sp"
55 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp4d16sp"
56 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-fp-armv8d16sp"
57 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-neon"
58 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-sha2"
59 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-aes"
60 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp3d16sp"
62 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-fp16 %s -### -o %t.o 2>&1 \
63 // RUN: | FileCheck --check-prefix=CHECK-VFP3-FP16 %s
64 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
65 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
66 // CHECK-VFP3-FP16-NOT: "-target-feature" "+soft-float"
67 // CHECK-VFP3-FP16-DAG: "-target-feature" "+soft-float-abi"
68 // CHECK-VFP3-FP16-DAG: "-target-feature" "+vfp3"
69 // CHECK-VFP3-FP16-DAG: "-target-feature" "+fp16"
70 // CHECK-VFP3-FP16-DAG: "-target-feature" "-vfp4d16sp"
71 // CHECK-VFP3-FP16-DAG: "-target-feature" "-fp-armv8d16sp"
72 // CHECK-VFP3-FP16-DAG: "-target-feature" "+fp64"
73 // CHECK-VFP3-FP16-DAG: "-target-feature" "+d32"
74 // CHECK-VFP3-FP16-DAG: "-target-feature" "-neon"
75 // CHECK-VFP3-FP16-DAG: "-target-feature" "-sha2"
76 // CHECK-VFP3-FP16-DAG: "-target-feature" "-aes"
78 // RUN: %clang -target arm-linux-eabi -mfpu=vfp3-d16 %s -### -o %t.o 2>&1 \
79 // RUN: | FileCheck --check-prefix=CHECK-VFP3-D16 %s
80 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16 %s -### -o %t.o 2>&1 \
81 // RUN: | FileCheck --check-prefix=CHECK-VFP3-D16 %s
82 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
83 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
84 // CHECK-VFP3-D16-NOT: "-target-feature" "+soft-float"
85 // CHECK-VFP3-D16-DAG: "-target-feature" "+soft-float-abi"
86 // CHECK-VFP3-D16-DAG: "-target-feature" "+vfp3d16"
87 // CHECK-VFP3-D16-DAG: "-target-feature" "-vfp4d16sp"
88 // CHECK-VFP3-D16-DAG: "-target-feature" "-fp-armv8d16sp"
89 // CHECK-VFP3-D16-DAG: "-target-feature" "+fp64"
90 // CHECK-VFP3-D16-DAG: "-target-feature" "-d32"
91 // CHECK-VFP3-D16-DAG: "-target-feature" "-neon"
93 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16-fp16 %s -### -o %t.o 2>&1 \
94 // RUN: | FileCheck --check-prefix=CHECK-VFP3-D16-FP16 %s
95 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
96 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
97 // CHECK-VFP3-D16-FP16-NOT: "-target-feature" "+soft-float"
98 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+soft-float-abi"
99 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+vfp3d16"
100 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+fp16"
101 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-vfp4d16sp"
102 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-fp-armv8d16sp"
103 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+fp64"
104 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-d32"
105 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-neon"
106 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-sha2"
107 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-aes"
109 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd %s -### -o %t.o 2>&1 \
110 // RUN: | FileCheck --check-prefix=CHECK-VFP3XD %s
111 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd -mfloat-abi=soft %s -### -o %t.o 2>&1 \
112 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
113 // CHECK-VFP3XD-NOT: "-target-feature" "+soft-float"
114 // CHECK-VFP3XD-DAG: "-target-feature" "+soft-float-abi"
115 // CHECK-VFP3XD-DAG: "-target-feature" "-fp64"
116 // CHECK-VFP3XD-DAG: "-target-feature" "-d32"
117 // CHECK-VFP3XD-DAG: "-target-feature" "+vfp3d16sp"
118 // CHECK-VFP3XD-DAG: "-target-feature" "-fp16"
119 // CHECK-VFP3XD-DAG: "-target-feature" "-vfp4d16sp"
120 // CHECK-VFP3XD-DAG: "-target-feature" "-fp-armv8d16sp"
121 // CHECK-VFP3XD-DAG: "-target-feature" "-neon"
122 // CHECK-VFP3XD-DAG: "-target-feature" "-sha2"
123 // CHECK-VFP3XD-DAG: "-target-feature" "-aes"
125 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd-fp16 %s -### -o %t.o 2>&1 \
126 // RUN: | FileCheck --check-prefix=CHECK-VFP3XD-FP16 %s
127 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
128 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
129 // CHECK-VFP3XD-FP16-NOT: "-target-feature" "+soft-float"
130 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "+soft-float-abi"
131 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "+vfp3d16sp"
132 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "+fp16"
133 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-vfp4d16sp"
134 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-fp-armv8d16sp"
135 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-fp64"
136 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-d32"
137 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-neon"
138 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-sha2"
139 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-aes"
141 // RUN: %clang -target arm-linux-eabi -mfpu=vfp4 %s -### -o %t.o 2>&1 \
142 // RUN: | FileCheck --check-prefix=CHECK-VFP4 %s
143 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv4 %s -### -o %t.o 2>&1 \
144 // RUN: | FileCheck --check-prefix=CHECK-VFP4 %s
145 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv4 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
146 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s
147 // CHECK-VFP4-NOT: "-target-feature" "+soft-float"
148 // CHECK-VFP4-DAG: "-target-feature" "+soft-float-abi"
149 // CHECK-VFP4-DAG: "-target-feature" "+vfp4"
150 // CHECK-VFP4-DAG: "-target-feature" "-fp-armv8d16sp"
151 // CHECK-VFP4-DAG: "-target-feature" "-neon"
152 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "+soft-float-abi"
153 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp2sp"
154 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp3d16sp"
155 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-fp-armv8d16sp"
156 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-neon"
157 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-sha2"
158 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-aes"
159 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp4d16sp"
161 // RUN: %clang -target arm-linux-eabi -mfpu=vfp4-d16 %s -### -o %t.o 2>&1 \
162 // RUN: | FileCheck --check-prefix=CHECK-VFP4-D16 %s
163 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv4-d16 %s -### -o %t.o 2>&1 \
164 // RUN: | FileCheck --check-prefix=CHECK-VFP4-D16 %s
165 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv4-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
166 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s
167 // CHECK-VFP4-D16-NOT: "-target-feature" "+soft-float"
168 // CHECK-VFP4-D16-DAG: "-target-feature" "+soft-float-abi"
169 // CHECK-VFP4-D16-DAG: "-target-feature" "+vfp4d16"
170 // CHECK-VFP4-D16-DAG: "-target-feature" "-fp-armv8d16sp"
171 // CHECK-VFP4-D16-DAG: "-target-feature" "+fp64"
172 // CHECK-VFP4-D16-DAG: "-target-feature" "-d32"
173 // CHECK-VFP4-D16-DAG: "-target-feature" "-neon"
175 // RUN: %clang -target arm-linux-eabi -mfpu=fp4-sp-d16 %s -### -o %t.o 2>&1 \
176 // RUN: | FileCheck --check-prefix=CHECK-FP4-SP-D16 %s
177 // RUN: %clang -target arm-linux-eabi -mfpu=fpv4-sp-d16 %s -### -o %t.o 2>&1 \
178 // RUN: | FileCheck --check-prefix=CHECK-FP4-SP-D16 %s
179 // RUN: %clang -target arm-linux-eabi -mfpu=fpv4-sp-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
180 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s
181 // CHECK-FP4-SP-D16-NOT: "-target-feature" "+soft-float"
182 // CHECK-FP4-SP-D16-DAG: "-target-feature" "+soft-float-abi"
183 // CHECK-FP4-SP-D16-DAG: "-target-feature" "+vfp4d16sp"
184 // CHECK-FP4-SP-D16-DAG: "-target-feature" "-fp-armv8d16sp"
185 // CHECK-FP4-SP-D16-DAG: "-target-feature" "-fp64"
186 // CHECK-FP4-SP-D16-DAG: "-target-feature" "-d32"
187 // CHECK-FP4-SP-D16-DAG: "-target-feature" "-neon"
189 // RUN: %clang -target arm-linux-eabi -mfpu=fp5-sp-d16 %s -### -o %t.o 2>&1 \
190 // RUN: | FileCheck --check-prefix=CHECK-FP5-SP-D16 %s
191 // RUN: %clang -target arm-linux-eabi -mfpu=fpv5-sp-d16 %s -### -o %t.o 2>&1 \
192 // RUN: | FileCheck --check-prefix=CHECK-FP5-SP-D16 %s
193 // RUN: not %clang --target=arm-linux-eabi -mfpu=fp-armv8-sp-d16 -mfloat-abi=soft %s -### -o %t.o \
194 // RUN: 2>&1 | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
195 // CHECK-FP5-SP-D16-NOT: "-target-feature" "+soft-float"
196 // CHECK-FP5-SP-D16-DAG: "-target-feature" "+soft-float-abi"
197 // CHECK-FP5-SP-D16-DAG: "-target-feature" "+fp-armv8d16sp"
198 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-neon"
199 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-fp64"
200 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-d32"
201 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-sha2"
202 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-aes"
204 // RUN: %clang -target arm-linux-eabi -mfpu=fp5-dp-d16 %s -### -o %t.o 2>&1 \
205 // RUN: | FileCheck --check-prefix=CHECK-FP5-DP-D16 %s
206 // RUN: %clang -target arm-linux-eabi -mfpu=fpv5-dp-d16 %s -### -o %t.o 2>&1 \
207 // RUN: | FileCheck --check-prefix=CHECK-FP5-DP-D16 %s
208 // RUN: %clang -target arm-linux-eabi -mfpu=fpv5-dp-d16 %s -mfloat-abi=soft -### -o %t.o 2>&1 \
209 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-5 %s
210 // CHECK-FP5-DP-D16-NOT: "-target-feature" "+soft-float"
211 // CHECK-FP5-DP-D16-DAG: "-target-feature" "+soft-float-abi"
212 // CHECK-FP5-DP-D16-DAG: "-target-feature" "+fp-armv8d16"
213 // CHECK-FP5-DP-D16-DAG: "-target-feature" "+fp64"
214 // CHECK-FP5-DP-D16-DAG: "-target-feature" "-d32"
215 // CHECK-FP5-DP-D16-DAG: "-target-feature" "-neon"
216 // CHECK-FP5-DP-D16-DAG: "-target-feature" "-sha2"
217 // CHECK-FP5-DP-D16-DAG: "-target-feature" "-aes"
218 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "+soft-float"
219 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "+soft-float-abi"
220 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp2sp"
221 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp3d16sp"
222 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp4d16sp"
223 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-neon"
224 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-sha2"
225 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-aes"
226 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-fp-armv8d16sp"
228 // RUN: %clang -target arm-linux-eabi -mfpu=neon %s -### -o %t.o 2>&1 \
229 // RUN: | FileCheck --check-prefix=CHECK-NEON %s
230 // RUN: %clang -target arm-linux-eabi -mfpu=neon -mfloat-abi=soft %s -### -o %t.o 2>&1 \
231 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s
232 // CHECK-NEON-NOT: "-target-feature" "+soft-float"
233 // CHECK-NEON-DAG: "-target-feature" "+neon"
234 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "+soft-float-abi"
235 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp2sp"
236 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp4d16sp"
237 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-fp-armv8d16sp"
238 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-sha2"
239 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-aes"
240 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp3d16sp"
241 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-neon"
243 // RUN: %clang -target arm-linux-eabi -mfpu=neon-fp16 %s -### -o %t.o 2>&1 \
244 // RUN: | FileCheck --check-prefix=CHECK-NEON-FP16 %s
245 // RUN: %clang -target arm-linux-eabi -mfpu=neon-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
246 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s
247 // CHECK-NEON-FP16-NOT: "-target-feature" "+soft-float"
248 // CHECK-NEON-FP16-DAG: "-target-feature" "+soft-float-abi"
249 // CHECK-NEON-FP16-DAG: "-target-feature" "+vfp3"
250 // CHECK-NEON-FP16-DAG: "-target-feature" "+fp16"
251 // CHECK-NEON-FP16-DAG: "-target-feature" "-vfp4d16sp"
252 // CHECK-NEON-FP16-DAG: "-target-feature" "-fp-armv8d16sp"
253 // CHECK-NEON-FP16-DAG: "-target-feature" "+fp64"
254 // CHECK-NEON-FP16-DAG: "-target-feature" "+d32"
255 // CHECK-NEON-FP16-DAG: "-target-feature" "+neon"
256 // CHECK-NEON-FP16-DAG: "-target-feature" "-sha2"
257 // CHECK-NEON-FP16-DAG: "-target-feature" "-aes"
259 // RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv3 %s -### -o %t.o 2>&1 \
260 // RUN: | FileCheck --check-prefix=CHECK-NEON-VFPV3 %s
261 // RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv3 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
262 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s
263 // CHECK-NEON-VFPV3-NOT: "-target-feature" "+soft-float"
264 // CHECK-NEON-VFPV3-DAG: "-target-feature" "+soft-float-abi"
265 // CHECK-NEON-VFPV3-DAG: "-target-feature" "+vfp3"
266 // CHECK-NEON-VFPV3-DAG: "-target-feature" "+neon"
268 // RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv4 %s -### -o %t.o 2>&1 \
269 // RUN: | FileCheck --check-prefix=CHECK-NEON-VFPV4 %s
270 // RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv4 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
271 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-7 %s
272 // CHECK-NEON-VFPV4-NOT: "-target-feature" "+soft-float"
273 // CHECK-NEON-VFPV4-DAG: "-target-feature" "+soft-float-abi"
274 // CHECK-NEON-VFPV4-DAG: "-target-feature" "+vfp4"
275 // CHECK-NEON-VFPV4-DAG: "-target-feature" "+neon"
276 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "+soft-float-abi"
277 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp2sp"
278 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp3d16sp"
279 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-fp-armv8d16sp"
280 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-sha2"
281 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-aes"
282 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp4d16sp"
283 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-neon"
285 // RUN: %clang -target arm-linux-eabi -msoft-float %s -### -o %t.o 2>&1 \
286 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
287 // RUN: %clang -target armv8 %s -### 2>&1 \
288 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
289 // RUN: %clang -target armv8a -mfpu=neon %s -### -c 2>&1 \
290 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-8 %s
291 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "+soft-float-abi"
292 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp2sp"
293 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp4d16sp"
294 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-fp-armv8d16sp"
295 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-sha2"
296 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-aes"
297 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp3d16sp"
298 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-neon"
300 // RUN: %clang -target armv8 -mfpu=fp-armv8 %s -### 2>&1 \
301 // RUN: | FileCheck --check-prefix=CHECK-ARMV8-SOFT-FLOAT %s
302 // CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "+soft-float"
303 // CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "+soft-float-abi"
304 // NOT-CHECK-ARMV8-SOFT-FLOAT: "-target-feature" "+fp-armv8"
305 // CHECK-ARMV9-SOFT-FLOAT-DAG: "-target-feature" "-neon"
306 // CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "-sha2"
307 // CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "-aes"
309 // RUN: %clang -target armv8-linux-gnueabihf -mfpu=fp-armv8 %s -### 2>&1 \
310 // RUN: | FileCheck --check-prefix=CHECK-FP-ARMV8 %s
311 // CHECK-FP-ARMV8-NOT: "-target-feature" "+soft-float"
312 // CHECK-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi"
313 // CHECK-FP-ARMV8-DAG: "-target-feature" "+fp-armv8"
314 // CHECK-FP-ARMV8-DAG: "-target-feature" "-neon"
315 // CHECK-FP-ARMV8-DAG: "-target-feature" "-sha2"
316 // CHECK-FP-ARMV8-DAG: "-target-feature" "-aes"
318 // RUN: %clang -target armv8-linux-gnueabihf -mfpu=neon-fp-armv8 %s -### 2>&1 \
319 // RUN: | FileCheck --check-prefix=CHECK-NEON-FP-ARMV8 %s
320 // CHECK-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float"
321 // CHECK-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi"
322 // CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "+fp-armv8"
323 // CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "+neon"
324 // CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "-sha2"
325 // CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "-aes"
327 // RUN: %clang -target armv8-linux-gnueabihf -mfpu=crypto-neon-fp-armv8 %s -### 2>&1 \
328 // RUN: | FileCheck --check-prefix=CHECK-CRYPTO-NEON-FP-ARMV8 %s
329 // CHECK-CRYPTO-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float"
330 // CHECK-CRYPTO-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi"
331 // CHECK-CRYPTO-NEON-FP-ARMV8-DAG: "-target-feature" "+fp-armv8"
332 // CHECK-CRYPTO-NEON-FP-ARMV8-DAG: "-target-feature" "+sha2"
333 // CHECK-CRYPTO-NEON-FP-ARMV8-DAG: "-target-feature" "+aes"
335 // RUN: %clang -target armv8-linux-gnueabi -mfpu=none %s -### 2>&1 \
336 // RUN: | FileCheck --check-prefix=CHECK-NO-FP %s
337 // CHECK-NO-FP-NOT: "-target-feature" "+soft-float"
338 // CHECK-NO-FP-DAG: "-target-feature" "+soft-float-abi"
339 // CHECK-NO-FP-DAG: "-target-feature" "-fpregs"
340 // CHECK-NO-FP-DAG: "-target-feature" "-vfp2sp"
341 // CHECK-NO-FP-DAG: "-target-feature" "-vfp3d16sp"
342 // CHECK-NO-FP-DAG: "-target-feature" "-vfp4d16sp"
343 // CHECK-NO-FP-DAG: "-target-feature" "-fp-armv8d16sp"
344 // CHECK-NO-FP-DAG: "-target-feature" "-fp64"
345 // CHECK-NO-FP-DAG: "-target-feature" "-d32"
346 // CHECK-NO-FP-DAG: "-target-feature" "-neon"
347 // CHECK-NO-FP-DAG: "-target-feature" "-sha2"
348 // CHECK-NO-FP-DAG: "-target-feature" "-aes"
350 // RUN: %clang -target arm-linux-gnueabihf %s -### 2>&1 \
351 // RUN: | FileCheck --check-prefix=CHECK-HF %s
352 // RUN: %clang -target arm-linux-musleabihf %s -### 2>&1 \
353 // RUN: | FileCheck --check-prefix=CHECK-HF %s
354 // CHECK-HF-NOT: "-target-feature" "+soft-float"
355 // CHECK-HF-NOT: "-target-feature" "+soft-float-abi"
356 // CHECK-HF-DAG: "-target-cpu" "arm1176jzf-s"
358 // RUN: %clang -target armv7-apple-darwin -x assembler %s -### -c 2>&1 \
359 // RUN: | FileCheck --check-prefix=ASM %s
360 // ASM-NOT: -target-feature
362 // RUN: %clang -target armv8-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \
363 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
364 // RUN: %clang -target armv7-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \
365 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
366 // RUN: %clang -target armv6-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \
367 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
368 // RUN: %clang -target armv5-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \
369 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
370 // RUN: %clang -target armv4-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \
371 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
372 // RUN: %clang -target armv8-linux-gnueabi -msoft-float -mfpu=none %s -### -c 2>&1 \
373 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
374 // RUN: %clang -target armv8-linux-gnueabi -mfloat-abi=soft %s -### -c 2>&1 \
375 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
376 // RUN: %clang -target armv8-linux-gnueabi -msoft-float %s -### -c 2>&1 \
377 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
378 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "+soft-float"
379 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "+soft-float-abi"
380 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp2sp"
381 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp3d16sp"
382 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp4d16sp"
383 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-fp-armv8d16sp"
384 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-neon"
385 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-sha2"
386 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-aes"
387 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-fpregs"
389 // RUN: %clang -target arm-linux-androideabi21 %s -### -c 2>&1 \
390 // RUN: | FileCheck --check-prefix=CHECK-ARM5-ANDROID-FP-DEFAULT %s
391 // CHECK-ARM5-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float"
392 // CHECK-ARM5-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float-abi"
393 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+d32"
394 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp3"
395 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp4"
396 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8"
397 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+neon"
398 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+sha2"
399 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+aes"
401 // RUN: %clang -target armv7-linux-androideabi21 %s -### -c 2>&1 \
402 // RUN: | FileCheck --check-prefix=CHECK-ARM7-ANDROID-FP-DEFAULT %s
403 // CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+soft-float"
404 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float-abi"
405 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+vfp3"
406 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "-vfp4"
407 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "-fp-armv8"
408 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+neon"
409 // CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+sha2"
410 // CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+aes"
412 // RUN: %clang -target armv7-linux-androideabi21 %s -mfpu=vfp3-d16 -### -c 2>&1 \
413 // RUN: | FileCheck --check-prefix=CHECK-ARM7-ANDROID-FP-D16 %s
414 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+soft-float"
415 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "+soft-float-abi"
416 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "-d32"
417 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "+vfp3d16"
418 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+vfp4"
419 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+fp-armv8"
420 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+neon"
421 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+sha2"
422 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+aes"
424 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp+fp.dp -mfloat-abi=soft -### -c 2>&1 \
425 // RUN: | FileCheck --check-prefix=CHECK-SOFTFLOATABI-INHIBITS-MVE %s
426 // CHECK-SOFTFLOATABI-INHIBITS-MVE-NOT: "-target-feature" "+mve"
427 // CHECK-SOFTFLOATABI-INHIBITS-MVE-DAG: "-target-feature" "-mve"
428 // CHECK-SOFTFLOATABI-INHIBITS-MVE-DAG: "-target-feature" "-mve.fp"
430 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp -mfpu=none -### -c 2>&1 \
431 // RUN: | FileCheck --check-prefix=CHECK-MVEFP-FPUNONE %s
432 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp2sp"
433 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp3d16sp"
434 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp4d16sp"
435 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-fp-armv8d16sp"
436 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-fp64"
437 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-d32"
438 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-neon"
439 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-sha2"
440 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-aes"
441 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "+mve"
442 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "+dsp"
443 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-mve.fp"
444 // CHECK-MVEFP-FPUNONE-NOT: "-target-feature" "-fpregs"
446 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp+nomve -mfpu=none -### -c 2>&1 \
447 // RUN: | FileCheck --check-prefix=CHECK-MVEFP-NOMVE-FPUNONE %s
448 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp2sp"
449 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp3d16sp"
450 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp4d16sp"
451 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fp-armv8d16sp"
452 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fp64"
453 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-d32"
454 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-neon"
455 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-sha2"
456 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-aes"
457 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "+dsp"
458 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-mve"
459 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-mve.fp"
460 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fpregs"
462 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve -mfpu=none -### -c 2>&1 \
463 // RUN: | FileCheck --check-prefix=CHECK-MVEI-FPUNONE %s
464 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "-mve.fp"
465 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "+mve"
466 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "+dsp"
467 // CHECK-MVEI-FPUNONE-NOT: "-target-feature" "-fpregs"