xref: /llvm-project/llvm/test/MC/AArch64/no-fp-errors.s (revision 54c29e01c2bf6980bf999496e221f214e521d3ff)
1// RUN: not llvm-mc -triple aarch64-none-eabi -mattr=-fp-armv8 < %s 2>&1 | FileCheck %s --implicit-check-not error
2
3  ldr      s0, [x0]
4// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
5  str      q0, [x0]
6// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
7
8  fmov     d0, xzr
9// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
10
11  ldnp     s0, s1, [x0, #16]
12// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
13  ldnp     d0, d1, [x0, #16]
14// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
15  ldnp     q0, q1, [x0, #16]
16// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
17
18  ldp       s0, s1, [x0, #16]
19// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
20  ldp       d0, d1, [x0, #16]
21// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
22  ldp       q0, q1, [x0, #16]
23// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
24
25  ldp    s0, s1, [x0], #16
26// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
27  ldp    d0, d1, [x0], #16
28// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
29  ldp    q0, q1, [x0], #16
30// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
31
32  ldp       s0, s1, [x0, #16]!
33// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
34  ldp       d0, d1, [x0, #16]!
35// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
36  ldp       q0, q1, [x0, #16]!
37// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
38
39
40  ldr    b0, [x0], #16
41// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
42  ldr    h0, [x0], #16
43// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
44  ldr    s0, [x0], #16
45// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
46  ldr    d0, [x0], #16
47// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
48  ldr    q0, [x0], #16
49// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
50
51  ldr     b0, [x0, #16]!
52// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
53  ldr     h0, [x0, #16]!
54// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
55  ldr     s0, [x0, #16]!
56// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
57  ldr     d0, [x0, #16]!
58// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
59  ldr     q0, [x0, #16]!
60// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
61
62  ldr     b0, [x0, x1]
63// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
64  ldr     h0, [x0, x1]
65// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
66  ldr     s0, [x0, x1]
67// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
68  ldr     d0, [x0, x1]
69// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
70  ldr     q0, [x0, x1]
71// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
72
73  ldr     b0, [x0, w1, sxtw]
74// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
75  ldr     h0, [x0, w1, sxtw]
76// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
77  ldr     s0, [x0, w1, sxtw]
78// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
79  ldr     d0, [x0, w1, sxtw]
80// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
81  ldr     q0, [x0, w1, sxtw]
82// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
83
84  ldr      b0, [x0, #16]
85// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
86  ldr      h0, [x0, #16]
87// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
88  ldr      s0, [x0, #16]
89// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
90  ldr      d0, [x0, #16]
91// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
92  ldr      q0, [x0, #16]
93// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
94
95label:
96  ldr       s0, label
97// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
98  ldr       d0, label
99// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
100  ldr       q0, label
101// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
102
103  stnp     s0, s1, [x0, #16]
104// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
105  stnp     d0, d1, [x0, #16]
106// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
107  stnp     q0, q1, [x0, #16]
108// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
109
110  stp       s0, s1, [x0, #16]
111// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
112  stp       d0, d1, [x0, #16]
113// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
114  stp       q0, q1, [x0, #16]
115// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
116
117  stp    s0, s1, [x0], #16
118// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
119  stp    d0, d1, [x0], #16
120// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
121  stp    q0, q1, [x0], #16
122// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
123
124  stp     s0, s1, [x0, #16]!
125// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
126  stp     d0, d1, [x0, #16]!
127// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
128  stp     q0, q1, [x0, #16]!
129// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
130
131  str    b0, [x0], #16
132// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
133  str    h0, [x0], #16
134// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
135  str    s0, [x0], #16
136// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
137  str    d0, [x0], #16
138// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
139  str    q0, [x0], #16
140// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
141
142  str     b0, [x0, #16]!
143// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
144  str     h0, [x0, #16]!
145// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
146  str     s0, [x0, #16]!
147// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
148  str     d0, [x0, #16]!
149// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
150  str     q0, [x0, #16]!
151// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
152
153  str     b0, [x0, #16]
154// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
155  str     h0, [x0, #16]
156// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
157  str     s0, [x0, #16]
158// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
159  str     d0, [x0, #16]
160// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
161  str     q0, [x0, #16]
162// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
163
164  str     b0, [x0, x1]
165// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
166  str     h0, [x0, x1]
167// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
168  str     s0, [x0, x1]
169// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
170  str     d0, [x0, x1]
171// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
172  str     q0, [x0, x1]
173// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
174
175  str     b0, [x0, w1, sxtw]
176// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
177  str     h0, [x0, w1, sxtw]
178// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
179  str     s0, [x0, w1, sxtw]
180// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
181  str     d0, [x0, w1, sxtw]
182// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
183  str     q0, [x0, w1, sxtw]
184// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
185
186  mrs x0, FPCR
187// CHECK: [[@LINE-1]]:11: error: expected readable system register
188  mrs x0, FPSR
189// CHECK: [[@LINE-1]]:11: error: expected readable system register
190  msr FPCR, x0
191// CHECK: [[@LINE-1]]:7: error: expected writable system register or pstate
192  msr FPSR, x0
193// CHECK: [[@LINE-1]]:7: error: expected writable system register or pstate
194
195  ldr s0, [x0, #1]
196// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
197  str q0, [x0, #1]
198// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
199
200  fmov s0, #0.0
201// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
202  fmov d0, #0.0
203// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
204
205  mvn v0.8b, v1.8b
206// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
207  mvn v0.16b, v1.16b
208// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
209
210  mov v0.16b, v1.16b
211// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
212  mov v0.8h, v1.8h
213// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
214  mov v0.4s, v1.4s
215// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
216  mov v0.2d, v1.2d
217// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
218
219  mov v0.8b, v1.8b
220// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
221  mov v0.4h, v1.4h
222// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
223  mov v0.2s, v1.2s
224// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
225  mov v0.1d, v1.1d
226// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
227
228  faclt v0.4h, v1.4h, v2.4h
229// CHECK: [[@LINE-1]]:3: error: instruction requires: fullfp16 neon
230  faclt v0.8h, v1.8h, v2.8h
231// CHECK: [[@LINE-1]]:3: error: instruction requires: fullfp16 neon
232  faclt v0.2s, v1.2s, v2.2s
233// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
234  faclt v0.4s, v1.4s, v2.4s
235// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
236  faclt v0.2d, v1.2d, v2.2d
237// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
238
239  cmls d0, d1, d2
240// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
241  cmle d0, d1, d2
242// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
243  cmlo d0, d1, d2
244// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
245  cmlt d0, d1, d2
246// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
247
248  fcmle s0, s1, s2
249// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
250  fcmle d0, d1, d2
251// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
252  fcmlt s0, s1, s2
253// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
254  fcmlt d0, d1, d2
255// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
256  facle s0, s1, s2
257// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
258  facle d0, d1, d2
259// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
260  faclt s0, s1, s2
261// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
262  faclt d0, d1, d2
263// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
264
265  bic v0.4h, #42
266// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
267  bic v0.8h, #42
268// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
269  bic v0.2s, #42
270// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
271  bic v0.4s, #42
272// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
273
274  bic.4h v0, #42
275// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
276  bic.8h v0, #42
277// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
278  bic.2s v0, #42
279// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
280  bic.4s v0, #42
281// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
282
283  orr v0.4h, #42
284// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
285  orr v0.8h, #42
286// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
287  orr v0.2s, #42
288// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
289  orr v0.4s, #42
290// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
291
292  orr.4h v0, #42
293// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
294  orr.8h v0, #42
295// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
296  orr.2s v0, #42
297// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
298  orr.4s v0, #42
299// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
300
301  movi v0.4h, #42
302// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
303  movi v0.8h, #42
304// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
305  movi v0.2s, #42
306// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
307  movi v0.4s, #42
308// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
309
310  movi.4h v0, #42
311// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
312  movi.8h v0, #42
313// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
314  movi.2s v0, #42
315// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
316  movi.4s v0, #42
317// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
318
319  mvni v0.4h, #42
320// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
321  mvni v0.8h, #42
322// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
323  mvni v0.2s, #42
324// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
325  mvni v0.4s, #42
326// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
327
328  mvni.4h v0, #42
329// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
330  mvni.8h v0, #42
331// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
332  mvni.2s v0, #42
333// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
334  mvni.4s v0, #42
335// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
336
337  sxtl.8h v0, v1
338// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
339  sxtl.4s v0, v1
340// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
341  sxtl.2d v0, v1
342// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
343
344  sxtl2.8h v0, v1
345// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
346  sxtl2.4s v0, v1
347// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
348  sxtl2.2d v0, v1
349// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
350
351  uxtl.8h v0, v1
352// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
353  uxtl.4s v0, v1
354// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
355  uxtl.2d v0, v1
356// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
357
358  uxtl2.8h v0, v1
359// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
360  uxtl2.4s v0, v1
361// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
362  uxtl2.2d v0, v1
363// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
364