xref: /llvm-project/clang/test/Driver/arm-mfpu.c (revision 2b67eceeef6e04ae5a4093bec9a0f0b048c70958)
1 // Test that different values of -mfpu pick correct ARM FPU target-feature(s).
2 
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"
10 
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}}'
20 
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"
40 
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"
61 
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"
77 
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"
92 
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"
108 
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"
124 
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"
140 
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"
160 
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"
174 
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"
188 
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"
203 
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"
227 
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"
242 
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"
258 
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"
267 
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"
284 
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"
299 
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"
308 
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"
317 
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"
326 
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"
334 
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"
349 
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"
357 
358 // RUN: %clang -target armv7-apple-darwin -x assembler %s -### -c 2>&1 \
359 // RUN:   | FileCheck --check-prefix=ASM-NEON %s
360 // RUN: %clang -target armv7-windows -x assembler %s -### -c 2>&1 \
361 // RUN:   | FileCheck --check-prefix=ASM-NEON %s
362 // ASM-NEON: "-target-feature" "+neon"
363 
364 // RUN: %clang -target armv8-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 armv7-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 armv6-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 armv5-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 armv4-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \
373 // RUN:   | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
374 // RUN: %clang -target armv8-linux-gnueabi -msoft-float -mfpu=none %s -### -c 2>&1 \
375 // RUN:   | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
376 // RUN: %clang -target armv8-linux-gnueabi -mfloat-abi=soft %s -### -c 2>&1 \
377 // RUN:   | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
378 // RUN: %clang -target armv8-linux-gnueabi -msoft-float %s -### -c 2>&1 \
379 // RUN:   | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
380 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "+soft-float"
381 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "+soft-float-abi"
382 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp2sp"
383 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp3d16sp"
384 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp4d16sp"
385 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-fp-armv8d16sp"
386 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-neon"
387 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-sha2"
388 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-aes"
389 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-fpregs"
390 
391 // RUN: %clang -target armv7-linux-androideabi21 %s -### -c 2>&1 \
392 // RUN:   | FileCheck --check-prefix=CHECK-ARM7-ANDROID-FP-DEFAULT %s
393 // CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+soft-float"
394 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float-abi"
395 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+vfp3"
396 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "-vfp4"
397 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "-fp-armv8"
398 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+neon"
399 // CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+sha2"
400 // CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+aes"
401 
402 // RUN: %clang -target armv8-linux-androideabi21 %s -### -c 2>&1 \
403 // RUN:   | FileCheck --check-prefix=CHECK-ARM8-ANDROID-FP-DEFAULT %s
404 // CHECK-ARM8-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float-abi"
405 // CHECK-ARM8-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+vfp3"
406 // CHECK-ARM8-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+vfp4"
407 // CHECK-ARM8-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+fp-armv8"
408 // CHECK-ARM8-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+aes"
409 // CHECK-ARM8-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+sha2"
410 // CHECK-ARM8-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+neon"
411 
412 // RUN: %clang -target armv8-linux-android %s -### -c 2>&1 \
413 // RUN:   | FileCheck --check-prefix=CHECK-ARM8-ANDROID-DEFAULT %s
414 // CHECK-ARM8-ANDROID-DEFAULT-DAG: "-target-feature" "+vfp3"
415 // CHECK-ARM8-ANDROID-DEFAULT-DAG: "-target-feature" "+vfp4"
416 // CHECK-ARM8-ANDROID-DEFAULT-DAG: "-target-feature" "+fp-armv8"
417 // CHECK-ARM8-ANDROID-DEFAULT-DAG: "-target-feature" "+aes"
418 // CHECK-ARM8-ANDROID-DEFAULT-DAG: "-target-feature" "+sha2"
419 // CHECK-ARM8-ANDROID-DEFAULT-NOT: "-target-feature" "+neon"
420 
421 // RUN: %clang -target armv7-linux-androideabi21 %s -mfpu=vfp3-d16 -### -c 2>&1 \
422 // RUN:   | FileCheck --check-prefix=CHECK-ARM7-ANDROID-FP-D16 %s
423 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+soft-float"
424 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "+soft-float-abi"
425 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "-d32"
426 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "+vfp3d16"
427 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+vfp4"
428 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+fp-armv8"
429 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+neon"
430 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+sha2"
431 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+aes"
432 
433 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp+fp.dp -mfloat-abi=soft -### -c 2>&1 \
434 // RUN:   | FileCheck --check-prefix=CHECK-SOFTFLOATABI-INHIBITS-MVE %s
435 // CHECK-SOFTFLOATABI-INHIBITS-MVE-NOT: "-target-feature" "+mve"
436 // CHECK-SOFTFLOATABI-INHIBITS-MVE-DAG: "-target-feature" "-mve"
437 // CHECK-SOFTFLOATABI-INHIBITS-MVE-DAG: "-target-feature" "-mve.fp"
438 
439 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp -mfpu=none -### -c 2>&1 \
440 // RUN:   | FileCheck --check-prefix=CHECK-MVEFP-FPUNONE %s
441 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp2sp"
442 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp3d16sp"
443 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp4d16sp"
444 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-fp-armv8d16sp"
445 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-fp64"
446 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-d32"
447 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-neon"
448 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-sha2"
449 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-aes"
450 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "+mve"
451 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "+dsp"
452 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-mve.fp"
453 // CHECK-MVEFP-FPUNONE-NOT: "-target-feature" "-fpregs"
454 
455 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp+nomve -mfpu=none -### -c 2>&1 \
456 // RUN:   | FileCheck --check-prefix=CHECK-MVEFP-NOMVE-FPUNONE %s
457 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp2sp"
458 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp3d16sp"
459 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp4d16sp"
460 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fp-armv8d16sp"
461 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fp64"
462 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-d32"
463 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-neon"
464 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-sha2"
465 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-aes"
466 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "+dsp"
467 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-mve"
468 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-mve.fp"
469 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fpregs"
470 
471 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve -mfpu=none -### -c 2>&1 \
472 // RUN:   | FileCheck --check-prefix=CHECK-MVEI-FPUNONE %s
473 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "-mve.fp"
474 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "+mve"
475 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "+dsp"
476 // CHECK-MVEI-FPUNONE-NOT: "-target-feature" "-fpregs"
477