Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / llvm-mca / ARM / m55-mve-fp.s
blobbcbd3c97f2162e19637d59351ba2c7f38ae48d23
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
4 vabd.f16 q0, q2, q1
5 vabd.f32 q0, q2, q1
6 vabs.f16 q0, q2
7 vabs.f32 q0, q2
8 vadd.f16 q0, q2, q1
9 vadd.f32 q0, q2, q1
10 vadd.f16 q0, q2, r0
11 vadd.f32 q0, q2, r0
12 vcadd.f16 q0, q2, q1, #90
13 vcadd.f32 q0, q2, q1, #90
14 vcmla.f16 q0, q2, q1, #90
15 vcmla.f32 q0, q2, q1, #90
16 vcmul.f16 q0, q2, q1, #90
17 vcmul.f32 q0, q2, q1, #90
18 vcvt.f16.s16 q0, q1, #4
19 vcvt.f16.u16 q0, q1, #4
20 vcvt.s16.f16 q0, q1, #4
21 vcvt.u16.f16 q0, q1, #4
22 vcvt.f32.s32 q0, q1, #4
23 vcvt.f32.u32 q0, q1, #4
24 vcvt.s32.f32 q0, q1, #4
25 vcvt.u32.f32 q0, q1, #4
26 vcvt.f16.s16 q0, q1
27 vcvt.f32.s32 q0, q1
28 vcvt.f16.u16 q0, q1
29 vcvt.f32.u32 q0, q1
30 vcvt.s16.f16 q0, q1
31 vcvt.s32.f32 q0, q1
32 vcvt.u16.f16 q0, q1
33 vcvt.u32.f32 q0, q1
34 vcvtb.f16.f32 q0, q1
35 vcvtb.f32.f16 q0, q1
36 vcvtt.f16.f32 q0, q1
37 vcvtt.f32.f16 q0, q1
38 vcvta.s16.f16 q0, q1
39 vcvta.s32.f32 q0, q1
40 vcvta.u16.f16 q0, q1
41 vcvta.u32.f32 q0, q1
42 vcvtm.s16.f16 q0, q1
43 vcvtm.s32.f32 q0, q1
44 vcvtm.u16.f16 q0, q1
45 vcvtm.u32.f32 q0, q1
46 vcvtn.s16.f16 q0, q1
47 vcvtn.s32.f32 q0, q1
48 vcvtn.u16.f16 q0, q1
49 vcvtn.u32.f32 q0, q1
50 vcvtp.s16.f16 q0, q1
51 vcvtp.s32.f32 q0, q1
52 vcvtp.u16.f16 q0, q1
53 vcvtp.u32.f32 q0, q1
54 vfma.f16 q0, q2, r0
55 vfma.f32 q0, q2, r0
56 vfma.f16 q0, q2, q1
57 vfma.f32 q0, q2, q1
58 vfms.f16 q0, q2, q1
59 vfms.f32 q0, q2, q1
60 vfmas.f16 q0, q2, r0
61 vfmas.f32 q0, q2, r0
62 vmaxnm.f16 q0, q2, q1
63 vmaxnm.f32 q0, q2, q1
64 vmaxnma.f16 q0, q2
65 vmaxnma.f32 q0, q2
66 vmaxnmv.f16 r0, q2
67 vmaxnmv.f32 r0, q2
68 vmaxnmav.f16 r0, q2
69 vmaxnmav.f32 r0, q2
70 vminnm.f16 q0, q2, q1
71 vminnm.f32 q0, q2, q1
72 vminnma.f16 q0, q2
73 vminnma.f32 q0, q2
74 vminnmv.f16 r0, q2
75 vminnmv.f32 r0, q2
76 vminnmav.f16 r0, q2
77 vminnmav.f32 r0, q2
78 vmul.f16 q0, q2, q1
79 vmul.f32 q0, q2, q1
80 vmul.f16 q0, q2, r0
81 vmul.f32 q0, q2, r0
82 vneg.f16 q0, q2
83 vneg.f32 q0, q2
84 vrinta.f16 q0, q2
85 vrinta.f32 q0, q2
86 vrintm.f16 q0, q2
87 vrintm.f32 q0, q2
88 vrintn.f16 q0, q2
89 vrintn.f32 q0, q2
90 vrintp.f16 q0, q2
91 vrintp.f32 q0, q2
92 vrintx.f16 q0, q2
93 vrintx.f32 q0, q2
94 vrintz.f16 q0, q2
95 vrintz.f32 q0, q2
96 vsub.f16 q0, q2, q1
97 vsub.f32 q0, q2, q1
98 vsub.f16 q0, q2, r0
99 vsub.f32 q0, q2, r0
101 # CHECK: Instruction Info:
102 # CHECK-NEXT: [1]: #uOps
103 # CHECK-NEXT: [2]: Latency
104 # CHECK-NEXT: [3]: RThroughput
105 # CHECK-NEXT: [4]: MayLoad
106 # CHECK-NEXT: [5]: MayStore
107 # CHECK-NEXT: [6]: HasSideEffects (U)
109 # CHECK: [1] [2] [3] [4] [5] [6] Instructions:
110 # CHECK-NEXT: 1 1 2.00 vabd.f16 q0, q2, q1
111 # CHECK-NEXT: 1 1 2.00 vabd.f32 q0, q2, q1
112 # CHECK-NEXT: 1 1 2.00 vabs.f16 q0, q2
113 # CHECK-NEXT: 1 1 2.00 vabs.f32 q0, q2
114 # CHECK-NEXT: 1 1 2.00 vadd.f16 q0, q2, q1
115 # CHECK-NEXT: 1 1 2.00 vadd.f32 q0, q2, q1
116 # CHECK-NEXT: 1 2 2.00 vadd.f16 q0, q2, r0
117 # CHECK-NEXT: 1 2 2.00 vadd.f32 q0, q2, r0
118 # CHECK-NEXT: 1 1 2.00 vcadd.f16 q0, q2, q1, #90
119 # CHECK-NEXT: 1 1 2.00 vcadd.f32 q0, q2, q1, #90
120 # CHECK-NEXT: 1 2 2.00 vcmla.f16 q0, q2, q1, #90
121 # CHECK-NEXT: 1 2 2.00 vcmla.f32 q0, q2, q1, #90
122 # CHECK-NEXT: 1 2 2.00 vcmul.f16 q0, q2, q1, #90
123 # CHECK-NEXT: 1 2 2.00 vcmul.f32 q0, q2, q1, #90
124 # CHECK-NEXT: 1 2 2.00 vcvt.f16.s16 q0, q1, #4
125 # CHECK-NEXT: 1 2 2.00 vcvt.f16.u16 q0, q1, #4
126 # CHECK-NEXT: 1 2 2.00 vcvt.s16.f16 q0, q1, #4
127 # CHECK-NEXT: 1 2 2.00 vcvt.u16.f16 q0, q1, #4
128 # CHECK-NEXT: 1 2 2.00 vcvt.f32.s32 q0, q1, #4
129 # CHECK-NEXT: 1 2 2.00 vcvt.f32.u32 q0, q1, #4
130 # CHECK-NEXT: 1 2 2.00 vcvt.s32.f32 q0, q1, #4
131 # CHECK-NEXT: 1 2 2.00 vcvt.u32.f32 q0, q1, #4
132 # CHECK-NEXT: 1 2 2.00 vcvt.f16.s16 q0, q1
133 # CHECK-NEXT: 1 2 2.00 vcvt.f32.s32 q0, q1
134 # CHECK-NEXT: 1 2 2.00 vcvt.f16.u16 q0, q1
135 # CHECK-NEXT: 1 2 2.00 vcvt.f32.u32 q0, q1
136 # CHECK-NEXT: 1 2 2.00 vcvt.s16.f16 q0, q1
137 # CHECK-NEXT: 1 2 2.00 vcvt.s32.f32 q0, q1
138 # CHECK-NEXT: 1 2 2.00 vcvt.u16.f16 q0, q1
139 # CHECK-NEXT: 1 2 2.00 vcvt.u32.f32 q0, q1
140 # CHECK-NEXT: 1 3 2.00 vcvtb.f16.f32 q0, q1
141 # CHECK-NEXT: 1 2 2.00 vcvtb.f32.f16 q0, q1
142 # CHECK-NEXT: 1 3 2.00 vcvtt.f16.f32 q0, q1
143 # CHECK-NEXT: 1 2 2.00 vcvtt.f32.f16 q0, q1
144 # CHECK-NEXT: 1 2 2.00 vcvta.s16.f16 q0, q1
145 # CHECK-NEXT: 1 2 2.00 vcvta.s32.f32 q0, q1
146 # CHECK-NEXT: 1 2 2.00 vcvta.u16.f16 q0, q1
147 # CHECK-NEXT: 1 2 2.00 vcvta.u32.f32 q0, q1
148 # CHECK-NEXT: 1 2 2.00 vcvtm.s16.f16 q0, q1
149 # CHECK-NEXT: 1 2 2.00 vcvtm.s32.f32 q0, q1
150 # CHECK-NEXT: 1 2 2.00 vcvtm.u16.f16 q0, q1
151 # CHECK-NEXT: 1 2 2.00 vcvtm.u32.f32 q0, q1
152 # CHECK-NEXT: 1 2 2.00 vcvtn.s16.f16 q0, q1
153 # CHECK-NEXT: 1 2 2.00 vcvtn.s32.f32 q0, q1
154 # CHECK-NEXT: 1 2 2.00 vcvtn.u16.f16 q0, q1
155 # CHECK-NEXT: 1 2 2.00 vcvtn.u32.f32 q0, q1
156 # CHECK-NEXT: 1 2 2.00 vcvtp.s16.f16 q0, q1
157 # CHECK-NEXT: 1 2 2.00 vcvtp.s32.f32 q0, q1
158 # CHECK-NEXT: 1 2 2.00 vcvtp.u16.f16 q0, q1
159 # CHECK-NEXT: 1 2 2.00 vcvtp.u32.f32 q0, q1
160 # CHECK-NEXT: 1 2 2.00 vfma.f16 q0, q2, r0
161 # CHECK-NEXT: 1 2 2.00 vfma.f32 q0, q2, r0
162 # CHECK-NEXT: 1 2 2.00 vfma.f16 q0, q2, q1
163 # CHECK-NEXT: 1 2 2.00 vfma.f32 q0, q2, q1
164 # CHECK-NEXT: 1 2 2.00 vfms.f16 q0, q2, q1
165 # CHECK-NEXT: 1 2 2.00 vfms.f32 q0, q2, q1
166 # CHECK-NEXT: 1 2 2.00 vfmas.f16 q0, q2, r0
167 # CHECK-NEXT: 1 2 2.00 vfmas.f32 q0, q2, r0
168 # CHECK-NEXT: 1 1 2.00 vmaxnm.f16 q0, q2, q1
169 # CHECK-NEXT: 1 1 2.00 vmaxnm.f32 q0, q2, q1
170 # CHECK-NEXT: 1 1 2.00 vmaxnma.f16 q0, q2
171 # CHECK-NEXT: 1 1 2.00 vmaxnma.f32 q0, q2
172 # CHECK-NEXT: 1 1 2.00 vmaxnmv.f16 r0, q2
173 # CHECK-NEXT: 1 1 2.00 vmaxnmv.f32 r0, q2
174 # CHECK-NEXT: 1 1 2.00 vmaxnmav.f16 r0, q2
175 # CHECK-NEXT: 1 1 2.00 vmaxnmav.f32 r0, q2
176 # CHECK-NEXT: 1 1 2.00 vminnm.f16 q0, q2, q1
177 # CHECK-NEXT: 1 1 2.00 vminnm.f32 q0, q2, q1
178 # CHECK-NEXT: 1 1 2.00 vminnma.f16 q0, q2
179 # CHECK-NEXT: 1 1 2.00 vminnma.f32 q0, q2
180 # CHECK-NEXT: 1 1 2.00 vminnmv.f16 r0, q2
181 # CHECK-NEXT: 1 1 2.00 vminnmv.f32 r0, q2
182 # CHECK-NEXT: 1 1 2.00 vminnmav.f16 r0, q2
183 # CHECK-NEXT: 1 1 2.00 vminnmav.f32 r0, q2
184 # CHECK-NEXT: 1 2 2.00 vmul.f16 q0, q2, q1
185 # CHECK-NEXT: 1 2 2.00 vmul.f32 q0, q2, q1
186 # CHECK-NEXT: 1 2 2.00 vmul.f16 q0, q2, r0
187 # CHECK-NEXT: 1 2 2.00 vmul.f32 q0, q2, r0
188 # CHECK-NEXT: 1 1 2.00 vneg.f16 q0, q2
189 # CHECK-NEXT: 1 1 2.00 vneg.f32 q0, q2
190 # CHECK-NEXT: 1 2 2.00 vrinta.f16 q0, q2
191 # CHECK-NEXT: 1 2 2.00 vrinta.f32 q0, q2
192 # CHECK-NEXT: 1 2 2.00 vrintm.f16 q0, q2
193 # CHECK-NEXT: 1 2 2.00 vrintm.f32 q0, q2
194 # CHECK-NEXT: 1 2 2.00 vrintn.f16 q0, q2
195 # CHECK-NEXT: 1 2 2.00 vrintn.f32 q0, q2
196 # CHECK-NEXT: 1 2 2.00 vrintp.f16 q0, q2
197 # CHECK-NEXT: 1 2 2.00 vrintp.f32 q0, q2
198 # CHECK-NEXT: 1 2 2.00 vrintx.f16 q0, q2
199 # CHECK-NEXT: 1 2 2.00 vrintx.f32 q0, q2
200 # CHECK-NEXT: 1 2 2.00 vrintz.f16 q0, q2
201 # CHECK-NEXT: 1 2 2.00 vrintz.f32 q0, q2
202 # CHECK-NEXT: 1 1 2.00 vsub.f16 q0, q2, q1
203 # CHECK-NEXT: 1 1 2.00 vsub.f32 q0, q2, q1
204 # CHECK-NEXT: 1 2 2.00 vsub.f16 q0, q2, r0
205 # CHECK-NEXT: 1 2 2.00 vsub.f32 q0, q2, r0
207 # CHECK: Resources:
208 # CHECK-NEXT: [0] - M55UnitALU
209 # CHECK-NEXT: [1] - M55UnitLoadStore
210 # CHECK-NEXT: [2] - M55UnitVecALU
211 # CHECK-NEXT: [3] - M55UnitVecFPALU
212 # CHECK-NEXT: [4] - M55UnitVecSys
214 # CHECK: Resource pressure per iteration:
215 # CHECK-NEXT: [0] [1] [2] [3] [4]
216 # CHECK-NEXT: - - - 192.00 -
218 # CHECK: Resource pressure by instruction:
219 # CHECK-NEXT: [0] [1] [2] [3] [4] Instructions:
220 # CHECK-NEXT: - - - 2.00 - vabd.f16 q0, q2, q1
221 # CHECK-NEXT: - - - 2.00 - vabd.f32 q0, q2, q1
222 # CHECK-NEXT: - - - 2.00 - vabs.f16 q0, q2
223 # CHECK-NEXT: - - - 2.00 - vabs.f32 q0, q2
224 # CHECK-NEXT: - - - 2.00 - vadd.f16 q0, q2, q1
225 # CHECK-NEXT: - - - 2.00 - vadd.f32 q0, q2, q1
226 # CHECK-NEXT: - - - 2.00 - vadd.f16 q0, q2, r0
227 # CHECK-NEXT: - - - 2.00 - vadd.f32 q0, q2, r0
228 # CHECK-NEXT: - - - 2.00 - vcadd.f16 q0, q2, q1, #90
229 # CHECK-NEXT: - - - 2.00 - vcadd.f32 q0, q2, q1, #90
230 # CHECK-NEXT: - - - 2.00 - vcmla.f16 q0, q2, q1, #90
231 # CHECK-NEXT: - - - 2.00 - vcmla.f32 q0, q2, q1, #90
232 # CHECK-NEXT: - - - 2.00 - vcmul.f16 q0, q2, q1, #90
233 # CHECK-NEXT: - - - 2.00 - vcmul.f32 q0, q2, q1, #90
234 # CHECK-NEXT: - - - 2.00 - vcvt.f16.s16 q0, q1, #4
235 # CHECK-NEXT: - - - 2.00 - vcvt.f16.u16 q0, q1, #4
236 # CHECK-NEXT: - - - 2.00 - vcvt.s16.f16 q0, q1, #4
237 # CHECK-NEXT: - - - 2.00 - vcvt.u16.f16 q0, q1, #4
238 # CHECK-NEXT: - - - 2.00 - vcvt.f32.s32 q0, q1, #4
239 # CHECK-NEXT: - - - 2.00 - vcvt.f32.u32 q0, q1, #4
240 # CHECK-NEXT: - - - 2.00 - vcvt.s32.f32 q0, q1, #4
241 # CHECK-NEXT: - - - 2.00 - vcvt.u32.f32 q0, q1, #4
242 # CHECK-NEXT: - - - 2.00 - vcvt.f16.s16 q0, q1
243 # CHECK-NEXT: - - - 2.00 - vcvt.f32.s32 q0, q1
244 # CHECK-NEXT: - - - 2.00 - vcvt.f16.u16 q0, q1
245 # CHECK-NEXT: - - - 2.00 - vcvt.f32.u32 q0, q1
246 # CHECK-NEXT: - - - 2.00 - vcvt.s16.f16 q0, q1
247 # CHECK-NEXT: - - - 2.00 - vcvt.s32.f32 q0, q1
248 # CHECK-NEXT: - - - 2.00 - vcvt.u16.f16 q0, q1
249 # CHECK-NEXT: - - - 2.00 - vcvt.u32.f32 q0, q1
250 # CHECK-NEXT: - - - 2.00 - vcvtb.f16.f32 q0, q1
251 # CHECK-NEXT: - - - 2.00 - vcvtb.f32.f16 q0, q1
252 # CHECK-NEXT: - - - 2.00 - vcvtt.f16.f32 q0, q1
253 # CHECK-NEXT: - - - 2.00 - vcvtt.f32.f16 q0, q1
254 # CHECK-NEXT: - - - 2.00 - vcvta.s16.f16 q0, q1
255 # CHECK-NEXT: - - - 2.00 - vcvta.s32.f32 q0, q1
256 # CHECK-NEXT: - - - 2.00 - vcvta.u16.f16 q0, q1
257 # CHECK-NEXT: - - - 2.00 - vcvta.u32.f32 q0, q1
258 # CHECK-NEXT: - - - 2.00 - vcvtm.s16.f16 q0, q1
259 # CHECK-NEXT: - - - 2.00 - vcvtm.s32.f32 q0, q1
260 # CHECK-NEXT: - - - 2.00 - vcvtm.u16.f16 q0, q1
261 # CHECK-NEXT: - - - 2.00 - vcvtm.u32.f32 q0, q1
262 # CHECK-NEXT: - - - 2.00 - vcvtn.s16.f16 q0, q1
263 # CHECK-NEXT: - - - 2.00 - vcvtn.s32.f32 q0, q1
264 # CHECK-NEXT: - - - 2.00 - vcvtn.u16.f16 q0, q1
265 # CHECK-NEXT: - - - 2.00 - vcvtn.u32.f32 q0, q1
266 # CHECK-NEXT: - - - 2.00 - vcvtp.s16.f16 q0, q1
267 # CHECK-NEXT: - - - 2.00 - vcvtp.s32.f32 q0, q1
268 # CHECK-NEXT: - - - 2.00 - vcvtp.u16.f16 q0, q1
269 # CHECK-NEXT: - - - 2.00 - vcvtp.u32.f32 q0, q1
270 # CHECK-NEXT: - - - 2.00 - vfma.f16 q0, q2, r0
271 # CHECK-NEXT: - - - 2.00 - vfma.f32 q0, q2, r0
272 # CHECK-NEXT: - - - 2.00 - vfma.f16 q0, q2, q1
273 # CHECK-NEXT: - - - 2.00 - vfma.f32 q0, q2, q1
274 # CHECK-NEXT: - - - 2.00 - vfms.f16 q0, q2, q1
275 # CHECK-NEXT: - - - 2.00 - vfms.f32 q0, q2, q1
276 # CHECK-NEXT: - - - 2.00 - vfmas.f16 q0, q2, r0
277 # CHECK-NEXT: - - - 2.00 - vfmas.f32 q0, q2, r0
278 # CHECK-NEXT: - - - 2.00 - vmaxnm.f16 q0, q2, q1
279 # CHECK-NEXT: - - - 2.00 - vmaxnm.f32 q0, q2, q1
280 # CHECK-NEXT: - - - 2.00 - vmaxnma.f16 q0, q2
281 # CHECK-NEXT: - - - 2.00 - vmaxnma.f32 q0, q2
282 # CHECK-NEXT: - - - 2.00 - vmaxnmv.f16 r0, q2
283 # CHECK-NEXT: - - - 2.00 - vmaxnmv.f32 r0, q2
284 # CHECK-NEXT: - - - 2.00 - vmaxnmav.f16 r0, q2
285 # CHECK-NEXT: - - - 2.00 - vmaxnmav.f32 r0, q2
286 # CHECK-NEXT: - - - 2.00 - vminnm.f16 q0, q2, q1
287 # CHECK-NEXT: - - - 2.00 - vminnm.f32 q0, q2, q1
288 # CHECK-NEXT: - - - 2.00 - vminnma.f16 q0, q2
289 # CHECK-NEXT: - - - 2.00 - vminnma.f32 q0, q2
290 # CHECK-NEXT: - - - 2.00 - vminnmv.f16 r0, q2
291 # CHECK-NEXT: - - - 2.00 - vminnmv.f32 r0, q2
292 # CHECK-NEXT: - - - 2.00 - vminnmav.f16 r0, q2
293 # CHECK-NEXT: - - - 2.00 - vminnmav.f32 r0, q2
294 # CHECK-NEXT: - - - 2.00 - vmul.f16 q0, q2, q1
295 # CHECK-NEXT: - - - 2.00 - vmul.f32 q0, q2, q1
296 # CHECK-NEXT: - - - 2.00 - vmul.f16 q0, q2, r0
297 # CHECK-NEXT: - - - 2.00 - vmul.f32 q0, q2, r0
298 # CHECK-NEXT: - - - 2.00 - vneg.f16 q0, q2
299 # CHECK-NEXT: - - - 2.00 - vneg.f32 q0, q2
300 # CHECK-NEXT: - - - 2.00 - vrinta.f16 q0, q2
301 # CHECK-NEXT: - - - 2.00 - vrinta.f32 q0, q2
302 # CHECK-NEXT: - - - 2.00 - vrintm.f16 q0, q2
303 # CHECK-NEXT: - - - 2.00 - vrintm.f32 q0, q2
304 # CHECK-NEXT: - - - 2.00 - vrintn.f16 q0, q2
305 # CHECK-NEXT: - - - 2.00 - vrintn.f32 q0, q2
306 # CHECK-NEXT: - - - 2.00 - vrintp.f16 q0, q2
307 # CHECK-NEXT: - - - 2.00 - vrintp.f32 q0, q2
308 # CHECK-NEXT: - - - 2.00 - vrintx.f16 q0, q2
309 # CHECK-NEXT: - - - 2.00 - vrintx.f32 q0, q2
310 # CHECK-NEXT: - - - 2.00 - vrintz.f16 q0, q2
311 # CHECK-NEXT: - - - 2.00 - vrintz.f32 q0, q2
312 # CHECK-NEXT: - - - 2.00 - vsub.f16 q0, q2, q1
313 # CHECK-NEXT: - - - 2.00 - vsub.f32 q0, q2, q1
314 # CHECK-NEXT: - - - 2.00 - vsub.f16 q0, q2, r0
315 # CHECK-NEXT: - - - 2.00 - vsub.f32 q0, q2, r0