xref: /llvm-project/llvm/test/tools/llvm-mca/ARM/m55-fp.s (revision d8ba9e505ac3a57211fade270532519adde374c2)
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=thumbv8.1-m.main-none-none-eabi -mcpu=cortex-m55 -instruction-tables < %s | FileCheck %s
3
4vabs.f16 s0, s2
5vabs.f32 s0, s2
6vabs.f64 d0, d2
7vadd.f16 s0, s2, s1
8vadd.f32 s0, s2, s1
9vadd.f64 d0, d2, d1
10vcmp.f16 s1, s2
11vcmp.f32 s1, s2
12vcmp.f64 d1, d2
13vcmp.f16 s1, #0.0
14vcmp.f32 s1, #0.0
15vcmp.f64 d1, #0.0
16vcmpe.f16 s1, s2
17vcmpe.f32 s1, s2
18vcmpe.f64 d1, d2
19vcmpe.f16 s1, #0.0
20vcmpe.f32 s1, #0.0
21vcmpe.f64 d1, #0.0
22vcvt.f32.f64 s1, d2
23vcvt.f64.f32 d1, s1
24vcvt.f16.u16 s1, s2, #8
25vcvt.f16.s16 s1, s2, #8
26vcvt.f16.u32 s1, s2, #8
27vcvt.f16.s32 s1, s2, #8
28vcvt.u16.f16 s1, s2, #8
29vcvt.s16.f16 s1, s2, #8
30vcvt.u32.f16 s1, s2, #8
31vcvt.s32.f16 s1, s2, #8
32vcvt.f32.u16 s1, s2, #8
33vcvt.f32.s16 s1, s2, #8
34vcvt.f32.u32 s1, s2, #8
35vcvt.f32.s32 s1, s2, #8
36vcvt.u16.f32 s1, s2, #8
37vcvt.s16.f32 s1, s2, #8
38vcvt.u32.f32 s1, s2, #8
39vcvt.s32.f32 s1, s2, #8
40vcvt.f64.u16 d1, d2, #8
41vcvt.f64.s16 d1, d2, #8
42vcvt.f64.u32 d1, d2, #8
43vcvt.f64.s32 d1, d2, #8
44vcvt.u16.f64 d1, d2, #8
45vcvt.s16.f64 d1, d2, #8
46vcvt.u32.f64 d1, d2, #8
47vcvt.s32.f64 d1, d2, #8
48vcvt.u32.f16 s1, s2
49vcvt.s32.f16 s1, s2
50vcvt.u32.f32 s1, s2
51vcvt.s32.f32 s1, s2
52vcvt.u32.f64 s1, d2
53vcvt.s32.f64 s1, d2
54vcvt.f16.u32 s1, s2
55vcvt.f16.s32 s1, s2
56vcvt.f32.u32 s1, s2
57vcvt.f32.s32 s1, s2
58vcvt.f64.u32 d1, s2
59vcvt.f64.s32 d1, s2
60vcvta.u32.f16 s1, s2
61vcvta.s32.f16 s1, s2
62vcvta.u32.f32 s1, s2
63vcvta.s32.f32 s1, s2
64vcvta.u32.f64 s1, d2
65vcvta.s32.f64 s1, d2
66vcvtm.u32.f16 s1, s2
67vcvtm.s32.f16 s1, s2
68vcvtm.u32.f32 s1, s2
69vcvtm.s32.f32 s1, s2
70vcvtm.u32.f64 s1, d2
71vcvtm.s32.f64 s1, d2
72vcvtn.u32.f16 s1, s2
73vcvtn.s32.f16 s1, s2
74vcvtn.u32.f32 s1, s2
75vcvtn.s32.f32 s1, s2
76vcvtn.u32.f64 s1, d2
77vcvtn.s32.f64 s1, d2
78vcvtp.u32.f16 s1, s2
79vcvtp.s32.f16 s1, s2
80vcvtp.u32.f32 s1, s2
81vcvtp.s32.f32 s1, s2
82vcvtp.u32.f64 s1, d2
83vcvtp.s32.f64 s1, d2
84vcvtb.f16.f32 s1, s2
85vcvtb.f16.f64 s1, d2
86vcvtb.f32.f16 s1, s2
87vcvtb.f64.f16 d1, s2
88vcvtr.u32.f16 s1, s2
89vcvtr.s32.f16 s1, s2
90vcvtr.u32.f32 s1, s2
91vcvtr.s32.f32 s1, s2
92vcvtr.u32.f64 s1, d2
93vcvtr.s32.f64 s1, d2
94vcvtt.f16.f32 s1, s2
95vcvtt.f16.f64 s1, d2
96vcvtt.f32.f16 s1, s2
97vcvtt.f64.f16 d1, s2
98vdiv.f16 s0, s2, s1
99vdiv.f32 s0, s2, s1
100vdiv.f64 d0, d2, d1
101vfma.f16 s0, s2, s1
102vfma.f32 s0, s2, s1
103vfma.f64 d0, d2, d1
104vfms.f16 s0, s2, s1
105vfms.f32 s0, s2, s1
106vfms.f64 d0, d2, d1
107vfnma.f16 s0, s2, s1
108vfnma.f32 s0, s2, s1
109vfnma.f64 d0, d2, d1
110vfnms.f16 s0, s2, s1
111vfnms.f32 s0, s2, s1
112vfnms.f64 d0, d2, d1
113vins.f16 s0, s1
114vmaxnm.f16 s0, s2, s1
115vmaxnm.f32 s0, s2, s1
116vmaxnm.f64 d0, d2, d1
117vminnm.f16 s0, s2, s1
118vminnm.f32 s0, s2, s1
119vminnm.f64 d0, d2, d1
120vmla.f16 s0, s2, s1
121vmla.f32 s0, s2, s1
122vmla.f64 d0, d2, d1
123vmls.f16 s0, s2, s1
124vmls.f32 s0, s2, s1
125vmls.f64 d0, d2, d1
126vmov.f16 s0, r1
127vmov.f16 r0, s1
128vmov.f32 s0, r1
129vmov.f32 r0, s1
130vmov.f64 d0, r1, r2
131vmov.f64 r0, r1, d1
132vmov s0, s1, r0, r1
133vmov r0, r1, s0, s1
134vmov.f16 s0, #1.0
135vmov.f32 s0, #1.0
136vmov.f64 d0, #1.0
137vmov.f32 s0, s1
138vmov.f64 d0, d1
139vmovx.f16 s0, s1
140vmul.f16 s0, s2, s1
141vmul.f32 s0, s2, s1
142vmul.f64 d0, d2, d1
143vneg.f16 s0, s2
144vneg.f32 s0, s2
145vneg.f64 d0, d2
146vnmla.f16 s0, s2, s1
147vnmla.f32 s0, s2, s1
148vnmla.f64 d0, d2, d1
149vnmls.f16 s0, s2, s1
150vnmls.f32 s0, s2, s1
151vnmls.f64 d0, d2, d1
152vnmul.f16 s0, s2, s1
153vnmul.f32 s0, s2, s1
154vnmul.f64 d0, d2, d1
155vrinta.f16 s0, s2
156vrinta.f32.f32 s0, s2
157vrinta.f64.f64 d0, d2
158vrintm.f16 s0, s2
159vrintm.f32.f32 s0, s2
160vrintm.f64.f64 d0, d2
161vrintn.f16 s0, s2
162vrintn.f32.f32 s0, s2
163vrintn.f64.f64 d0, d2
164vrintp.f16 s0, s2
165vrintp.f32.f32 s0, s2
166vrintp.f64.f64 d0, d2
167vrintr.f16.f16 s0, s2
168vrintr.f32.f32 s0, s2
169vrintr.f64.f64 d0, d2
170vrintz.f16.f16 s0, s2
171vrintz.f32.f32 s0, s2
172vrintz.f64.f64 d0, d2
173vrintx.f16.f16 s0, s2
174vrintx.f32.f32 s0, s2
175vrintx.f64.f64 d0, d2
176vseleq.f16 s0, s2, s1
177vseleq.f32 s0, s2, s1
178vseleq.f64 d0, d2, d1
179vsqrt.f16 s0, s2
180vsqrt.f32 s0, s2
181vsqrt.f64 d0, d2
182vsub.f16 s0, s2, s1
183vsub.f32 s0, s2, s1
184vsub.f64 d0, d2, d1
185
186#vldr pc
187#vldr [rn + value]
188#vstr pc
189#vstr [rn + value]
190
191# CHECK:      Instruction Info:
192# CHECK-NEXT: [1]: #uOps
193# CHECK-NEXT: [2]: Latency
194# CHECK-NEXT: [3]: RThroughput
195# CHECK-NEXT: [4]: MayLoad
196# CHECK-NEXT: [5]: MayStore
197# CHECK-NEXT: [6]: HasSideEffects (U)
198
199# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
200# CHECK-NEXT:  1      2     1.00                        vabs.f16	s0, s2
201# CHECK-NEXT:  1      2     1.00                        vabs.f32	s0, s2
202# CHECK-NEXT:  1      2     1.00                        vabs.f64	d0, d2
203# CHECK-NEXT:  1      2     1.00                        vadd.f16	s0, s2, s1
204# CHECK-NEXT:  1      2     1.00                        vadd.f32	s0, s2, s1
205# CHECK-NEXT:  1      15    1.00                        vadd.f64	d0, d2, d1
206# CHECK-NEXT:  1      1     1.00                        vcmp.f16	s1, s2
207# CHECK-NEXT:  1      1     1.00                        vcmp.f32	s1, s2
208# CHECK-NEXT:  1      1     1.00                        vcmp.f64	d1, d2
209# CHECK-NEXT:  1      1     1.00                        vcmp.f16	s1, #0
210# CHECK-NEXT:  1      1     1.00                        vcmp.f32	s1, #0
211# CHECK-NEXT:  1      1     1.00                        vcmp.f64	d1, #0
212# CHECK-NEXT:  1      1     1.00                        vcmpe.f16	s1, s2
213# CHECK-NEXT:  1      1     1.00                        vcmpe.f32	s1, s2
214# CHECK-NEXT:  1      1     1.00                        vcmpe.f64	d1, d2
215# CHECK-NEXT:  1      1     1.00                        vcmpe.f16	s1, #0
216# CHECK-NEXT:  1      1     1.00                        vcmpe.f32	s1, #0
217# CHECK-NEXT:  1      1     1.00                        vcmpe.f64	d1, #0
218# CHECK-NEXT:  1      2     1.00                        vcvt.f32.f64	s1, d2
219# CHECK-NEXT:  1      2     1.00                        vcvt.f64.f32	d1, s1
220# CHECK-NEXT:  1      2     1.00                        vcvt.f16.u16	s1, s1, #8
221# CHECK-NEXT:  1      2     1.00                        vcvt.f16.s16	s1, s1, #8
222# CHECK-NEXT:  1      2     1.00                        vcvt.f16.u32	s1, s1, #8
223# CHECK-NEXT:  1      2     1.00                        vcvt.f16.s32	s1, s1, #8
224# CHECK-NEXT:  1      2     1.00                        vcvt.u16.f16	s1, s1, #8
225# CHECK-NEXT:  1      2     1.00                        vcvt.s16.f16	s1, s1, #8
226# CHECK-NEXT:  1      2     1.00                        vcvt.u32.f16	s1, s1, #8
227# CHECK-NEXT:  1      2     1.00                        vcvt.s32.f16	s1, s1, #8
228# CHECK-NEXT:  1      2     1.00                        vcvt.f32.u16	s1, s1, #8
229# CHECK-NEXT:  1      2     1.00                        vcvt.f32.s16	s1, s1, #8
230# CHECK-NEXT:  1      2     1.00                        vcvt.f32.u32	s1, s1, #8
231# CHECK-NEXT:  1      2     1.00                        vcvt.f32.s32	s1, s1, #8
232# CHECK-NEXT:  1      2     1.00                        vcvt.u16.f32	s1, s1, #8
233# CHECK-NEXT:  1      2     1.00                        vcvt.s16.f32	s1, s1, #8
234# CHECK-NEXT:  1      2     1.00                        vcvt.u32.f32	s1, s1, #8
235# CHECK-NEXT:  1      2     1.00                        vcvt.s32.f32	s1, s1, #8
236# CHECK-NEXT:  1      2     1.00                        vcvt.f64.u16	d1, d1, #8
237# CHECK-NEXT:  1      2     1.00                        vcvt.f64.s16	d1, d1, #8
238# CHECK-NEXT:  1      2     1.00                        vcvt.f64.u32	d1, d1, #8
239# CHECK-NEXT:  1      2     1.00                        vcvt.f64.s32	d1, d1, #8
240# CHECK-NEXT:  1      2     1.00                        vcvt.u16.f64	d1, d1, #8
241# CHECK-NEXT:  1      2     1.00                        vcvt.s16.f64	d1, d1, #8
242# CHECK-NEXT:  1      2     1.00                        vcvt.u32.f64	d1, d1, #8
243# CHECK-NEXT:  1      2     1.00                        vcvt.s32.f64	d1, d1, #8
244# CHECK-NEXT:  1      2     1.00                        vcvt.u32.f16	s1, s2
245# CHECK-NEXT:  1      2     1.00                        vcvt.s32.f16	s1, s2
246# CHECK-NEXT:  1      2     1.00                        vcvt.u32.f32	s1, s2
247# CHECK-NEXT:  1      2     1.00                        vcvt.s32.f32	s1, s2
248# CHECK-NEXT:  1      2     1.00                        vcvt.u32.f64	s1, d2
249# CHECK-NEXT:  1      2     1.00                        vcvt.s32.f64	s1, d2
250# CHECK-NEXT:  1      2     1.00                        vcvt.f16.u32	s1, s2
251# CHECK-NEXT:  1      2     1.00                        vcvt.f16.s32	s1, s2
252# CHECK-NEXT:  1      2     1.00                        vcvt.f32.u32	s1, s2
253# CHECK-NEXT:  1      2     1.00                        vcvt.f32.s32	s1, s2
254# CHECK-NEXT:  1      2     1.00                        vcvt.f64.u32	d1, s2
255# CHECK-NEXT:  1      2     1.00                        vcvt.f64.s32	d1, s2
256# CHECK-NEXT:  1      2     1.00                        vcvta.u32.f16	s1, s2
257# CHECK-NEXT:  1      2     1.00                        vcvta.s32.f16	s1, s2
258# CHECK-NEXT:  1      2     1.00                        vcvta.u32.f32	s1, s2
259# CHECK-NEXT:  1      2     1.00                        vcvta.s32.f32	s1, s2
260# CHECK-NEXT:  1      2     1.00                        vcvta.u32.f64	s1, d2
261# CHECK-NEXT:  1      2     1.00                        vcvta.s32.f64	s1, d2
262# CHECK-NEXT:  1      2     1.00                        vcvtm.u32.f16	s1, s2
263# CHECK-NEXT:  1      2     1.00                        vcvtm.s32.f16	s1, s2
264# CHECK-NEXT:  1      2     1.00                        vcvtm.u32.f32	s1, s2
265# CHECK-NEXT:  1      2     1.00                        vcvtm.s32.f32	s1, s2
266# CHECK-NEXT:  1      2     1.00                        vcvtm.u32.f64	s1, d2
267# CHECK-NEXT:  1      2     1.00                        vcvtm.s32.f64	s1, d2
268# CHECK-NEXT:  1      2     1.00                        vcvtn.u32.f16	s1, s2
269# CHECK-NEXT:  1      2     1.00                        vcvtn.s32.f16	s1, s2
270# CHECK-NEXT:  1      2     1.00                        vcvtn.u32.f32	s1, s2
271# CHECK-NEXT:  1      2     1.00                        vcvtn.s32.f32	s1, s2
272# CHECK-NEXT:  1      2     1.00                        vcvtn.u32.f64	s1, d2
273# CHECK-NEXT:  1      2     1.00                        vcvtn.s32.f64	s1, d2
274# CHECK-NEXT:  1      2     1.00                        vcvtp.u32.f16	s1, s2
275# CHECK-NEXT:  1      2     1.00                        vcvtp.s32.f16	s1, s2
276# CHECK-NEXT:  1      2     1.00                        vcvtp.u32.f32	s1, s2
277# CHECK-NEXT:  1      2     1.00                        vcvtp.s32.f32	s1, s2
278# CHECK-NEXT:  1      2     1.00                        vcvtp.u32.f64	s1, d2
279# CHECK-NEXT:  1      2     1.00                        vcvtp.s32.f64	s1, d2
280# CHECK-NEXT:  1      2     1.00                        vcvtb.f16.f32	s1, s2
281# CHECK-NEXT:  1      2     1.00                        vcvtb.f16.f64	s1, d2
282# CHECK-NEXT:  1      2     1.00                        vcvtb.f32.f16	s1, s2
283# CHECK-NEXT:  1      2     1.00                        vcvtb.f64.f16	d1, s2
284# CHECK-NEXT:  1      2     1.00                        vcvtr.u32.f16	s1, s2
285# CHECK-NEXT:  1      2     1.00                        vcvtr.s32.f16	s1, s2
286# CHECK-NEXT:  1      2     1.00                        vcvtr.u32.f32	s1, s2
287# CHECK-NEXT:  1      2     1.00                        vcvtr.s32.f32	s1, s2
288# CHECK-NEXT:  1      2     1.00                        vcvtr.u32.f64	s1, d2
289# CHECK-NEXT:  1      2     1.00                        vcvtr.s32.f64	s1, d2
290# CHECK-NEXT:  1      2     1.00                        vcvtt.f16.f32	s1, s2
291# CHECK-NEXT:  1      2     1.00                        vcvtt.f16.f64	s1, d2
292# CHECK-NEXT:  1      2     1.00                        vcvtt.f32.f16	s1, s2
293# CHECK-NEXT:  1      2     1.00                        vcvtt.f64.f16	d1, s2
294# CHECK-NEXT:  1      9     1.00                        vdiv.f16	s0, s2, s1
295# CHECK-NEXT:  1      16    1.00                        vdiv.f32	s0, s2, s1
296# CHECK-NEXT:  1      30    1.00                        vdiv.f64	d0, d2, d1
297# CHECK-NEXT:  1      2     1.00                        vfma.f16	s0, s2, s1
298# CHECK-NEXT:  1      2     1.00                        vfma.f32	s0, s2, s1
299# CHECK-NEXT:  1      24    1.00                        vfma.f64	d0, d2, d1
300# CHECK-NEXT:  1      2     1.00                        vfms.f16	s0, s2, s1
301# CHECK-NEXT:  1      2     1.00                        vfms.f32	s0, s2, s1
302# CHECK-NEXT:  1      24    1.00                        vfms.f64	d0, d2, d1
303# CHECK-NEXT:  1      2     1.00                        vfnma.f16	s0, s2, s1
304# CHECK-NEXT:  1      2     1.00                        vfnma.f32	s0, s2, s1
305# CHECK-NEXT:  1      24    1.00                        vfnma.f64	d0, d2, d1
306# CHECK-NEXT:  1      2     1.00                        vfnms.f16	s0, s2, s1
307# CHECK-NEXT:  1      2     1.00                        vfnms.f32	s0, s2, s1
308# CHECK-NEXT:  1      24    1.00                        vfnms.f64	d0, d2, d1
309# CHECK-NEXT:  1      2     1.00                        vins.f16	s0, s1
310# CHECK-NEXT:  1      2     1.00                        vmaxnm.f16	s0, s2, s1
311# CHECK-NEXT:  1      2     1.00                        vmaxnm.f32	s0, s2, s1
312# CHECK-NEXT:  1      2     1.00                        vmaxnm.f64	d0, d2, d1
313# CHECK-NEXT:  1      2     1.00                        vminnm.f16	s0, s2, s1
314# CHECK-NEXT:  1      2     1.00                        vminnm.f32	s0, s2, s1
315# CHECK-NEXT:  1      2     1.00                        vminnm.f64	d0, d2, d1
316# CHECK-NEXT:  1      4     1.00                        vmla.f16	s0, s2, s1
317# CHECK-NEXT:  1      4     1.00                        vmla.f32	s0, s2, s1
318# CHECK-NEXT:  1      36    1.00                        vmla.f64	d0, d2, d1
319# CHECK-NEXT:  1      4     1.00                        vmls.f16	s0, s2, s1
320# CHECK-NEXT:  1      4     1.00                        vmls.f32	s0, s2, s1
321# CHECK-NEXT:  1      36    1.00                        vmls.f64	d0, d2, d1
322# CHECK-NEXT:  1      2     1.00                        vmov.f16	s0, r1
323# CHECK-NEXT:  1      1     1.00                        vmov.f16	r0, s1
324# CHECK-NEXT:  1      2     1.00                        vmov	s0, r1
325# CHECK-NEXT:  1      1     1.00                        vmov	r0, s1
326# CHECK-NEXT:  1      2     1.00                        vmov	d0, r1, r2
327# CHECK-NEXT:  1      1     1.00                        vmov	r0, r1, d1
328# CHECK-NEXT:  1      2     1.00                        vmov	s0, s1, r0, r1
329# CHECK-NEXT:  1      1     1.00                        vmov	r0, r1, s0, s1
330# CHECK-NEXT:  1      1     1.00                        vmov.f16	s0, #1.000000e+00
331# CHECK-NEXT:  1      1     1.00                        vmov.f32	s0, #1.000000e+00
332# CHECK-NEXT:  1      1     1.00                        vmov.f64	d0, #1.000000e+00
333# CHECK-NEXT:  1      1     1.00                        vmov.f32	s0, s1
334# CHECK-NEXT:  1      1     1.00                        vmov.f64	d0, d1
335# CHECK-NEXT:  1      2     1.00                        vmovx.f16	s0, s1
336# CHECK-NEXT:  1      2     1.00                        vmul.f16	s0, s2, s1
337# CHECK-NEXT:  1      2     1.00                        vmul.f32	s0, s2, s1
338# CHECK-NEXT:  1      21    1.00                        vmul.f64	d0, d2, d1
339# CHECK-NEXT:  1      2     1.00                        vneg.f16	s0, s2
340# CHECK-NEXT:  1      2     1.00                        vneg.f32	s0, s2
341# CHECK-NEXT:  1      2     1.00                        vneg.f64	d0, d2
342# CHECK-NEXT:  1      4     1.00                        vnmla.f16	s0, s2, s1
343# CHECK-NEXT:  1      4     1.00                        vnmla.f32	s0, s2, s1
344# CHECK-NEXT:  1      36    1.00                        vnmla.f64	d0, d2, d1
345# CHECK-NEXT:  1      4     1.00                        vnmls.f16	s0, s2, s1
346# CHECK-NEXT:  1      4     1.00                        vnmls.f32	s0, s2, s1
347# CHECK-NEXT:  1      36    1.00                        vnmls.f64	d0, d2, d1
348# CHECK-NEXT:  1      2     1.00                        vnmul.f16	s0, s2, s1
349# CHECK-NEXT:  1      2     1.00                        vnmul.f32	s0, s2, s1
350# CHECK-NEXT:  1      21    1.00                        vnmul.f64	d0, d2, d1
351# CHECK-NEXT:  1      2     1.00                        vrinta.f16	s0, s2
352# CHECK-NEXT:  1      2     1.00                        vrinta.f32	s0, s2
353# CHECK-NEXT:  1      2     1.00                        vrinta.f64	d0, d2
354# CHECK-NEXT:  1      2     1.00                        vrintm.f16	s0, s2
355# CHECK-NEXT:  1      2     1.00                        vrintm.f32	s0, s2
356# CHECK-NEXT:  1      2     1.00                        vrintm.f64	d0, d2
357# CHECK-NEXT:  1      2     1.00                        vrintn.f16	s0, s2
358# CHECK-NEXT:  1      2     1.00                        vrintn.f32	s0, s2
359# CHECK-NEXT:  1      2     1.00                        vrintn.f64	d0, d2
360# CHECK-NEXT:  1      2     1.00                        vrintp.f16	s0, s2
361# CHECK-NEXT:  1      2     1.00                        vrintp.f32	s0, s2
362# CHECK-NEXT:  1      2     1.00                        vrintp.f64	d0, d2
363# CHECK-NEXT:  1      2     1.00                        vrintr.f16	s0, s2
364# CHECK-NEXT:  1      2     1.00                        vrintr.f32	s0, s2
365# CHECK-NEXT:  1      2     1.00                        vrintr.f64	d0, d2
366# CHECK-NEXT:  1      2     1.00                        vrintz.f16	s0, s2
367# CHECK-NEXT:  1      2     1.00                        vrintz.f32	s0, s2
368# CHECK-NEXT:  1      2     1.00                        vrintz.f64	d0, d2
369# CHECK-NEXT:  1      2     1.00                        vrintx.f16	s0, s2
370# CHECK-NEXT:  1      2     1.00                        vrintx.f32	s0, s2
371# CHECK-NEXT:  1      2     1.00                        vrintx.f64	d0, d2
372# CHECK-NEXT:  1      2     1.00                        vseleq.f16	s0, s2, s1
373# CHECK-NEXT:  1      2     1.00                        vseleq.f32	s0, s2, s1
374# CHECK-NEXT:  1      2     1.00                        vseleq.f64	d0, d2, d1
375# CHECK-NEXT:  1      9     1.00                        vsqrt.f16	s0, s2
376# CHECK-NEXT:  1      16    1.00                        vsqrt.f32	s0, s2
377# CHECK-NEXT:  1      30    1.00                        vsqrt.f64	d0, d2
378# CHECK-NEXT:  1      2     1.00                        vsub.f16	s0, s2, s1
379# CHECK-NEXT:  1      2     1.00                        vsub.f32	s0, s2, s1
380# CHECK-NEXT:  1      15    1.00                        vsub.f64	d0, d2, d1
381
382# CHECK:      Resources:
383# CHECK-NEXT: [0]   - M55UnitALU
384# CHECK-NEXT: [1]   - M55UnitLoadStore
385# CHECK-NEXT: [2]   - M55UnitVecALU
386# CHECK-NEXT: [3]   - M55UnitVecFPALU
387# CHECK-NEXT: [4]   - M55UnitVecSys
388
389# CHECK:      Resource pressure per iteration:
390# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]
391# CHECK-NEXT:  -      -      -     181.00  -
392
393# CHECK:      Resource pressure by instruction:
394# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    Instructions:
395# CHECK-NEXT:  -      -      -     1.00    -     vabs.f16	s0, s2
396# CHECK-NEXT:  -      -      -     1.00    -     vabs.f32	s0, s2
397# CHECK-NEXT:  -      -      -     1.00    -     vabs.f64	d0, d2
398# CHECK-NEXT:  -      -      -     1.00    -     vadd.f16	s0, s2, s1
399# CHECK-NEXT:  -      -      -     1.00    -     vadd.f32	s0, s2, s1
400# CHECK-NEXT:  -      -      -     1.00    -     vadd.f64	d0, d2, d1
401# CHECK-NEXT:  -      -      -     1.00    -     vcmp.f16	s1, s2
402# CHECK-NEXT:  -      -      -     1.00    -     vcmp.f32	s1, s2
403# CHECK-NEXT:  -      -      -     1.00    -     vcmp.f64	d1, d2
404# CHECK-NEXT:  -      -      -     1.00    -     vcmp.f16	s1, #0
405# CHECK-NEXT:  -      -      -     1.00    -     vcmp.f32	s1, #0
406# CHECK-NEXT:  -      -      -     1.00    -     vcmp.f64	d1, #0
407# CHECK-NEXT:  -      -      -     1.00    -     vcmpe.f16	s1, s2
408# CHECK-NEXT:  -      -      -     1.00    -     vcmpe.f32	s1, s2
409# CHECK-NEXT:  -      -      -     1.00    -     vcmpe.f64	d1, d2
410# CHECK-NEXT:  -      -      -     1.00    -     vcmpe.f16	s1, #0
411# CHECK-NEXT:  -      -      -     1.00    -     vcmpe.f32	s1, #0
412# CHECK-NEXT:  -      -      -     1.00    -     vcmpe.f64	d1, #0
413# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f32.f64	s1, d2
414# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f64.f32	d1, s1
415# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f16.u16	s1, s1, #8
416# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f16.s16	s1, s1, #8
417# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f16.u32	s1, s1, #8
418# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f16.s32	s1, s1, #8
419# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u16.f16	s1, s1, #8
420# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s16.f16	s1, s1, #8
421# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u32.f16	s1, s1, #8
422# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s32.f16	s1, s1, #8
423# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f32.u16	s1, s1, #8
424# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f32.s16	s1, s1, #8
425# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f32.u32	s1, s1, #8
426# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f32.s32	s1, s1, #8
427# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u16.f32	s1, s1, #8
428# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s16.f32	s1, s1, #8
429# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u32.f32	s1, s1, #8
430# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s32.f32	s1, s1, #8
431# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f64.u16	d1, d1, #8
432# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f64.s16	d1, d1, #8
433# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f64.u32	d1, d1, #8
434# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f64.s32	d1, d1, #8
435# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u16.f64	d1, d1, #8
436# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s16.f64	d1, d1, #8
437# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u32.f64	d1, d1, #8
438# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s32.f64	d1, d1, #8
439# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u32.f16	s1, s2
440# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s32.f16	s1, s2
441# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u32.f32	s1, s2
442# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s32.f32	s1, s2
443# CHECK-NEXT:  -      -      -     1.00    -     vcvt.u32.f64	s1, d2
444# CHECK-NEXT:  -      -      -     1.00    -     vcvt.s32.f64	s1, d2
445# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f16.u32	s1, s2
446# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f16.s32	s1, s2
447# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f32.u32	s1, s2
448# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f32.s32	s1, s2
449# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f64.u32	d1, s2
450# CHECK-NEXT:  -      -      -     1.00    -     vcvt.f64.s32	d1, s2
451# CHECK-NEXT:  -      -      -     1.00    -     vcvta.u32.f16	s1, s2
452# CHECK-NEXT:  -      -      -     1.00    -     vcvta.s32.f16	s1, s2
453# CHECK-NEXT:  -      -      -     1.00    -     vcvta.u32.f32	s1, s2
454# CHECK-NEXT:  -      -      -     1.00    -     vcvta.s32.f32	s1, s2
455# CHECK-NEXT:  -      -      -     1.00    -     vcvta.u32.f64	s1, d2
456# CHECK-NEXT:  -      -      -     1.00    -     vcvta.s32.f64	s1, d2
457# CHECK-NEXT:  -      -      -     1.00    -     vcvtm.u32.f16	s1, s2
458# CHECK-NEXT:  -      -      -     1.00    -     vcvtm.s32.f16	s1, s2
459# CHECK-NEXT:  -      -      -     1.00    -     vcvtm.u32.f32	s1, s2
460# CHECK-NEXT:  -      -      -     1.00    -     vcvtm.s32.f32	s1, s2
461# CHECK-NEXT:  -      -      -     1.00    -     vcvtm.u32.f64	s1, d2
462# CHECK-NEXT:  -      -      -     1.00    -     vcvtm.s32.f64	s1, d2
463# CHECK-NEXT:  -      -      -     1.00    -     vcvtn.u32.f16	s1, s2
464# CHECK-NEXT:  -      -      -     1.00    -     vcvtn.s32.f16	s1, s2
465# CHECK-NEXT:  -      -      -     1.00    -     vcvtn.u32.f32	s1, s2
466# CHECK-NEXT:  -      -      -     1.00    -     vcvtn.s32.f32	s1, s2
467# CHECK-NEXT:  -      -      -     1.00    -     vcvtn.u32.f64	s1, d2
468# CHECK-NEXT:  -      -      -     1.00    -     vcvtn.s32.f64	s1, d2
469# CHECK-NEXT:  -      -      -     1.00    -     vcvtp.u32.f16	s1, s2
470# CHECK-NEXT:  -      -      -     1.00    -     vcvtp.s32.f16	s1, s2
471# CHECK-NEXT:  -      -      -     1.00    -     vcvtp.u32.f32	s1, s2
472# CHECK-NEXT:  -      -      -     1.00    -     vcvtp.s32.f32	s1, s2
473# CHECK-NEXT:  -      -      -     1.00    -     vcvtp.u32.f64	s1, d2
474# CHECK-NEXT:  -      -      -     1.00    -     vcvtp.s32.f64	s1, d2
475# CHECK-NEXT:  -      -      -     1.00    -     vcvtb.f16.f32	s1, s2
476# CHECK-NEXT:  -      -      -     1.00    -     vcvtb.f16.f64	s1, d2
477# CHECK-NEXT:  -      -      -     1.00    -     vcvtb.f32.f16	s1, s2
478# CHECK-NEXT:  -      -      -     1.00    -     vcvtb.f64.f16	d1, s2
479# CHECK-NEXT:  -      -      -     1.00    -     vcvtr.u32.f16	s1, s2
480# CHECK-NEXT:  -      -      -     1.00    -     vcvtr.s32.f16	s1, s2
481# CHECK-NEXT:  -      -      -     1.00    -     vcvtr.u32.f32	s1, s2
482# CHECK-NEXT:  -      -      -     1.00    -     vcvtr.s32.f32	s1, s2
483# CHECK-NEXT:  -      -      -     1.00    -     vcvtr.u32.f64	s1, d2
484# CHECK-NEXT:  -      -      -     1.00    -     vcvtr.s32.f64	s1, d2
485# CHECK-NEXT:  -      -      -     1.00    -     vcvtt.f16.f32	s1, s2
486# CHECK-NEXT:  -      -      -     1.00    -     vcvtt.f16.f64	s1, d2
487# CHECK-NEXT:  -      -      -     1.00    -     vcvtt.f32.f16	s1, s2
488# CHECK-NEXT:  -      -      -     1.00    -     vcvtt.f64.f16	d1, s2
489# CHECK-NEXT:  -      -      -     1.00    -     vdiv.f16	s0, s2, s1
490# CHECK-NEXT:  -      -      -     1.00    -     vdiv.f32	s0, s2, s1
491# CHECK-NEXT:  -      -      -     1.00    -     vdiv.f64	d0, d2, d1
492# CHECK-NEXT:  -      -      -     1.00    -     vfma.f16	s0, s2, s1
493# CHECK-NEXT:  -      -      -     1.00    -     vfma.f32	s0, s2, s1
494# CHECK-NEXT:  -      -      -     1.00    -     vfma.f64	d0, d2, d1
495# CHECK-NEXT:  -      -      -     1.00    -     vfms.f16	s0, s2, s1
496# CHECK-NEXT:  -      -      -     1.00    -     vfms.f32	s0, s2, s1
497# CHECK-NEXT:  -      -      -     1.00    -     vfms.f64	d0, d2, d1
498# CHECK-NEXT:  -      -      -     1.00    -     vfnma.f16	s0, s2, s1
499# CHECK-NEXT:  -      -      -     1.00    -     vfnma.f32	s0, s2, s1
500# CHECK-NEXT:  -      -      -     1.00    -     vfnma.f64	d0, d2, d1
501# CHECK-NEXT:  -      -      -     1.00    -     vfnms.f16	s0, s2, s1
502# CHECK-NEXT:  -      -      -     1.00    -     vfnms.f32	s0, s2, s1
503# CHECK-NEXT:  -      -      -     1.00    -     vfnms.f64	d0, d2, d1
504# CHECK-NEXT:  -      -      -     1.00    -     vins.f16	s0, s1
505# CHECK-NEXT:  -      -      -     1.00    -     vmaxnm.f16	s0, s2, s1
506# CHECK-NEXT:  -      -      -     1.00    -     vmaxnm.f32	s0, s2, s1
507# CHECK-NEXT:  -      -      -     1.00    -     vmaxnm.f64	d0, d2, d1
508# CHECK-NEXT:  -      -      -     1.00    -     vminnm.f16	s0, s2, s1
509# CHECK-NEXT:  -      -      -     1.00    -     vminnm.f32	s0, s2, s1
510# CHECK-NEXT:  -      -      -     1.00    -     vminnm.f64	d0, d2, d1
511# CHECK-NEXT:  -      -      -     1.00    -     vmla.f16	s0, s2, s1
512# CHECK-NEXT:  -      -      -     1.00    -     vmla.f32	s0, s2, s1
513# CHECK-NEXT:  -      -      -     1.00    -     vmla.f64	d0, d2, d1
514# CHECK-NEXT:  -      -      -     1.00    -     vmls.f16	s0, s2, s1
515# CHECK-NEXT:  -      -      -     1.00    -     vmls.f32	s0, s2, s1
516# CHECK-NEXT:  -      -      -     1.00    -     vmls.f64	d0, d2, d1
517# CHECK-NEXT:  -      -      -     1.00    -     vmov.f16	s0, r1
518# CHECK-NEXT:  -      -      -     1.00    -     vmov.f16	r0, s1
519# CHECK-NEXT:  -      -      -     1.00    -     vmov	s0, r1
520# CHECK-NEXT:  -      -      -     1.00    -     vmov	r0, s1
521# CHECK-NEXT:  -      -      -     1.00    -     vmov	d0, r1, r2
522# CHECK-NEXT:  -      -      -     1.00    -     vmov	r0, r1, d1
523# CHECK-NEXT:  -      -      -     1.00    -     vmov	s0, s1, r0, r1
524# CHECK-NEXT:  -      -      -     1.00    -     vmov	r0, r1, s0, s1
525# CHECK-NEXT:  -      -      -     1.00    -     vmov.f16	s0, #1.000000e+00
526# CHECK-NEXT:  -      -      -     1.00    -     vmov.f32	s0, #1.000000e+00
527# CHECK-NEXT:  -      -      -     1.00    -     vmov.f64	d0, #1.000000e+00
528# CHECK-NEXT:  -      -      -     1.00    -     vmov.f32	s0, s1
529# CHECK-NEXT:  -      -      -     1.00    -     vmov.f64	d0, d1
530# CHECK-NEXT:  -      -      -     1.00    -     vmovx.f16	s0, s1
531# CHECK-NEXT:  -      -      -     1.00    -     vmul.f16	s0, s2, s1
532# CHECK-NEXT:  -      -      -     1.00    -     vmul.f32	s0, s2, s1
533# CHECK-NEXT:  -      -      -     1.00    -     vmul.f64	d0, d2, d1
534# CHECK-NEXT:  -      -      -     1.00    -     vneg.f16	s0, s2
535# CHECK-NEXT:  -      -      -     1.00    -     vneg.f32	s0, s2
536# CHECK-NEXT:  -      -      -     1.00    -     vneg.f64	d0, d2
537# CHECK-NEXT:  -      -      -     1.00    -     vnmla.f16	s0, s2, s1
538# CHECK-NEXT:  -      -      -     1.00    -     vnmla.f32	s0, s2, s1
539# CHECK-NEXT:  -      -      -     1.00    -     vnmla.f64	d0, d2, d1
540# CHECK-NEXT:  -      -      -     1.00    -     vnmls.f16	s0, s2, s1
541# CHECK-NEXT:  -      -      -     1.00    -     vnmls.f32	s0, s2, s1
542# CHECK-NEXT:  -      -      -     1.00    -     vnmls.f64	d0, d2, d1
543# CHECK-NEXT:  -      -      -     1.00    -     vnmul.f16	s0, s2, s1
544# CHECK-NEXT:  -      -      -     1.00    -     vnmul.f32	s0, s2, s1
545# CHECK-NEXT:  -      -      -     1.00    -     vnmul.f64	d0, d2, d1
546# CHECK-NEXT:  -      -      -     1.00    -     vrinta.f16	s0, s2
547# CHECK-NEXT:  -      -      -     1.00    -     vrinta.f32	s0, s2
548# CHECK-NEXT:  -      -      -     1.00    -     vrinta.f64	d0, d2
549# CHECK-NEXT:  -      -      -     1.00    -     vrintm.f16	s0, s2
550# CHECK-NEXT:  -      -      -     1.00    -     vrintm.f32	s0, s2
551# CHECK-NEXT:  -      -      -     1.00    -     vrintm.f64	d0, d2
552# CHECK-NEXT:  -      -      -     1.00    -     vrintn.f16	s0, s2
553# CHECK-NEXT:  -      -      -     1.00    -     vrintn.f32	s0, s2
554# CHECK-NEXT:  -      -      -     1.00    -     vrintn.f64	d0, d2
555# CHECK-NEXT:  -      -      -     1.00    -     vrintp.f16	s0, s2
556# CHECK-NEXT:  -      -      -     1.00    -     vrintp.f32	s0, s2
557# CHECK-NEXT:  -      -      -     1.00    -     vrintp.f64	d0, d2
558# CHECK-NEXT:  -      -      -     1.00    -     vrintr.f16	s0, s2
559# CHECK-NEXT:  -      -      -     1.00    -     vrintr.f32	s0, s2
560# CHECK-NEXT:  -      -      -     1.00    -     vrintr.f64	d0, d2
561# CHECK-NEXT:  -      -      -     1.00    -     vrintz.f16	s0, s2
562# CHECK-NEXT:  -      -      -     1.00    -     vrintz.f32	s0, s2
563# CHECK-NEXT:  -      -      -     1.00    -     vrintz.f64	d0, d2
564# CHECK-NEXT:  -      -      -     1.00    -     vrintx.f16	s0, s2
565# CHECK-NEXT:  -      -      -     1.00    -     vrintx.f32	s0, s2
566# CHECK-NEXT:  -      -      -     1.00    -     vrintx.f64	d0, d2
567# CHECK-NEXT:  -      -      -     1.00    -     vseleq.f16	s0, s2, s1
568# CHECK-NEXT:  -      -      -     1.00    -     vseleq.f32	s0, s2, s1
569# CHECK-NEXT:  -      -      -     1.00    -     vseleq.f64	d0, d2, d1
570# CHECK-NEXT:  -      -      -     1.00    -     vsqrt.f16	s0, s2
571# CHECK-NEXT:  -      -      -     1.00    -     vsqrt.f32	s0, s2
572# CHECK-NEXT:  -      -      -     1.00    -     vsqrt.f64	d0, d2
573# CHECK-NEXT:  -      -      -     1.00    -     vsub.f16	s0, s2, s1
574# CHECK-NEXT:  -      -      -     1.00    -     vsub.f32	s0, s2, s1
575# CHECK-NEXT:  -      -      -     1.00    -     vsub.f64	d0, d2, d1
576