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
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
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
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