1 # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
16 cmpps $
0, %xmm0
, %xmm2
17 cmpps $
0, (%rax
), %xmm2
19 cmpss $
0, %xmm0
, %xmm2
20 cmpss $
0, (%rax
), %xmm2
26 cvtpi2ps
(%rax
), %xmm2
33 cvtsi2ss
(%rax
), %xmm2
34 cvtsi2ss
(%rax
), %xmm2
42 cvttps2pi
(%rax
), %mm2
46 cvttss2si
(%rax
), %ecx
47 cvttss2si
(%rax
), %rcx
112 pextrw $
1, %mm0
, %rcx
114 pinsrw $
1, %rax
, %mm2
115 pinsrw $
1, (%rax
), %mm2
142 pshufw $
1, %mm0
, %mm2
143 pshufw $
1, (%rax
), %mm2
152 rsqrtps
(%rax
), %xmm2
155 rsqrtss
(%rax
), %xmm2
159 shufps $
1, %xmm0
, %xmm2
160 shufps $
1, (%rax
), %xmm2
177 ucomiss
(%rax
), %xmm1
179 unpckhps
%xmm0
, %xmm2
180 unpckhps
(%rax
), %xmm2
182 unpcklps
%xmm0
, %xmm2
183 unpcklps
(%rax
), %xmm2
188 # CHECK: Instruction Info:
189 # CHECK-NEXT: [1]: #uOps
190 # CHECK-NEXT: [2]: Latency
191 # CHECK-NEXT: [3]: RThroughput
192 # CHECK-NEXT: [4]: MayLoad
193 # CHECK-NEXT: [5]: MayStore
194 # CHECK-NEXT: [6]: HasSideEffects (U)
196 # CHECK: [1] [2] [3] [4] [5] [6] Instructions:
197 # CHECK-NEXT: 1 5 5.00 addps %xmm0, %xmm2
198 # CHECK-NEXT: 1 5 5.00 * addps (%rax), %xmm2
199 # CHECK-NEXT: 1 5 5.00 addss %xmm0, %xmm2
200 # CHECK-NEXT: 1 5 5.00 * addss (%rax), %xmm2
201 # CHECK-NEXT: 1 1 0.50 andnps %xmm0, %xmm2
202 # CHECK-NEXT: 1 1 1.00 * andnps (%rax), %xmm2
203 # CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
204 # CHECK-NEXT: 1 1 1.00 * andps (%rax), %xmm2
205 # CHECK-NEXT: 1 5 5.00 cmpeqps %xmm0, %xmm2
206 # CHECK-NEXT: 1 5 5.00 * cmpeqps (%rax), %xmm2
207 # CHECK-NEXT: 1 5 5.00 cmpeqss %xmm0, %xmm2
208 # CHECK-NEXT: 1 5 5.00 * cmpeqss (%rax), %xmm2
209 # CHECK-NEXT: 1 9 4.50 comiss %xmm0, %xmm1
210 # CHECK-NEXT: 1 10 5.00 * comiss (%rax), %xmm1
211 # CHECK-NEXT: 1 5 5.00 cvtpi2ps %mm0, %xmm2
212 # CHECK-NEXT: 1 5 5.00 * cvtpi2ps (%rax), %xmm2
213 # CHECK-NEXT: 1 5 5.00 cvtps2pi %xmm0, %mm2
214 # CHECK-NEXT: 1 5 5.00 * cvtps2pi (%rax), %mm2
215 # CHECK-NEXT: 1 6 3.00 cvtsi2ss %ecx, %xmm2
216 # CHECK-NEXT: 1 6 3.00 cvtsi2ss %rcx, %xmm2
217 # CHECK-NEXT: 1 7 3.50 * cvtsi2ssl (%rax), %xmm2
218 # CHECK-NEXT: 1 7 3.50 * cvtsi2ssl (%rax), %xmm2
219 # CHECK-NEXT: 1 8 4.00 cvtss2si %xmm0, %ecx
220 # CHECK-NEXT: 1 9 4.50 cvtss2si %xmm0, %rcx
221 # CHECK-NEXT: 1 9 4.50 * cvtss2si (%rax), %ecx
222 # CHECK-NEXT: 1 10 5.00 * cvtss2si (%rax), %rcx
223 # CHECK-NEXT: 1 5 5.00 cvttps2pi %xmm0, %mm2
224 # CHECK-NEXT: 1 5 5.00 * cvttps2pi (%rax), %mm2
225 # CHECK-NEXT: 1 8 4.00 cvttss2si %xmm0, %ecx
226 # CHECK-NEXT: 1 9 4.50 cvttss2si %xmm0, %rcx
227 # CHECK-NEXT: 1 9 4.50 * cvttss2si (%rax), %ecx
228 # CHECK-NEXT: 1 10 5.00 * cvttss2si (%rax), %rcx
229 # CHECK-NEXT: 1 70 35.00 divps %xmm0, %xmm2
230 # CHECK-NEXT: 1 70 35.00 * divps (%rax), %xmm2
231 # CHECK-NEXT: 1 34 17.00 divss %xmm0, %xmm2
232 # CHECK-NEXT: 1 34 17.00 * divss (%rax), %xmm2
233 # CHECK-NEXT: 1 5 2.50 * U ldmxcsr (%rax)
234 # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1
235 # CHECK-NEXT: 1 5 5.00 maxps %xmm0, %xmm2
236 # CHECK-NEXT: 1 5 5.00 * maxps (%rax), %xmm2
237 # CHECK-NEXT: 1 5 5.00 maxss %xmm0, %xmm2
238 # CHECK-NEXT: 1 5 5.00 * maxss (%rax), %xmm2
239 # CHECK-NEXT: 1 5 5.00 minps %xmm0, %xmm2
240 # CHECK-NEXT: 1 5 5.00 * minps (%rax), %xmm2
241 # CHECK-NEXT: 1 5 5.00 minss %xmm0, %xmm2
242 # CHECK-NEXT: 1 5 5.00 * minss (%rax), %xmm2
243 # CHECK-NEXT: 1 1 0.50 movaps %xmm0, %xmm2
244 # CHECK-NEXT: 1 1 1.00 * movaps %xmm0, (%rax)
245 # CHECK-NEXT: 1 1 1.00 * movaps (%rax), %xmm2
246 # CHECK-NEXT: 1 1 1.00 movhlps %xmm0, %xmm2
247 # CHECK-NEXT: 1 1 1.00 movlhps %xmm0, %xmm2
248 # CHECK-NEXT: 1 1 1.00 * movhps %xmm0, (%rax)
249 # CHECK-NEXT: 1 1 1.00 * movhps (%rax), %xmm2
250 # CHECK-NEXT: 1 1 1.00 * movlps %xmm0, (%rax)
251 # CHECK-NEXT: 1 1 1.00 * movlps (%rax), %xmm2
252 # CHECK-NEXT: 1 3 3.00 movmskps %xmm0, %ecx
253 # CHECK-NEXT: 1 1 1.00 * movntps %xmm0, (%rax)
254 # CHECK-NEXT: 1 1 1.00 * * U movntq %mm0, (%rax)
255 # CHECK-NEXT: 1 1 0.50 movss %xmm0, %xmm2
256 # CHECK-NEXT: 1 1 1.00 * movss %xmm0, (%rax)
257 # CHECK-NEXT: 1 1 1.00 * movss (%rax), %xmm2
258 # CHECK-NEXT: 1 1 0.50 movups %xmm0, %xmm2
259 # CHECK-NEXT: 1 2 1.00 * movups %xmm0, (%rax)
260 # CHECK-NEXT: 1 3 1.50 * movups (%rax), %xmm2
261 # CHECK-NEXT: 1 5 5.00 mulps %xmm0, %xmm2
262 # CHECK-NEXT: 1 5 5.00 * mulps (%rax), %xmm2
263 # CHECK-NEXT: 1 4 4.00 mulss %xmm0, %xmm2
264 # CHECK-NEXT: 1 4 4.00 * mulss (%rax), %xmm2
265 # CHECK-NEXT: 1 1 0.50 orps %xmm0, %xmm2
266 # CHECK-NEXT: 1 1 1.00 * orps (%rax), %xmm2
267 # CHECK-NEXT: 1 1 0.50 pavgb %mm0, %mm2
268 # CHECK-NEXT: 1 1 1.00 * pavgb (%rax), %mm2
269 # CHECK-NEXT: 1 1 0.50 pavgw %mm0, %mm2
270 # CHECK-NEXT: 1 1 1.00 * pavgw (%rax), %mm2
271 # CHECK-NEXT: 1 4 2.00 pextrw $1, %mm0, %ecx
272 # CHECK-NEXT: 1 1 1.00 pinsrw $1, %eax, %mm2
273 # CHECK-NEXT: 1 1 1.00 * pinsrw $1, (%rax), %mm2
274 # CHECK-NEXT: 1 1 0.50 pmaxsw %mm0, %mm2
275 # CHECK-NEXT: 1 1 1.00 * pmaxsw (%rax), %mm2
276 # CHECK-NEXT: 1 1 0.50 pmaxub %mm0, %mm2
277 # CHECK-NEXT: 1 1 1.00 * pmaxub (%rax), %mm2
278 # CHECK-NEXT: 1 1 0.50 pminsw %mm0, %mm2
279 # CHECK-NEXT: 1 1 1.00 * pminsw (%rax), %mm2
280 # CHECK-NEXT: 1 1 0.50 pminub %mm0, %mm2
281 # CHECK-NEXT: 1 1 1.00 * pminub (%rax), %mm2
282 # CHECK-NEXT: 1 3 3.00 pmovmskb %mm0, %ecx
283 # CHECK-NEXT: 1 4 4.00 pmulhuw %mm0, %mm2
284 # CHECK-NEXT: 1 4 4.00 * pmulhuw (%rax), %mm2
285 # CHECK-NEXT: 1 1 1.00 * * prefetcht0 (%rax)
286 # CHECK-NEXT: 1 1 1.00 * * prefetcht1 (%rax)
287 # CHECK-NEXT: 1 1 1.00 * * prefetcht2 (%rax)
288 # CHECK-NEXT: 1 1 1.00 * * prefetchnta (%rax)
289 # CHECK-NEXT: 1 4 2.00 psadbw %mm0, %mm2
290 # CHECK-NEXT: 1 4 2.00 * psadbw (%rax), %mm2
291 # CHECK-NEXT: 1 1 1.00 pshufw $1, %mm0, %mm2
292 # CHECK-NEXT: 1 1 1.00 * pshufw $1, (%rax), %mm2
293 # CHECK-NEXT: 1 9 4.50 rcpps %xmm0, %xmm2
294 # CHECK-NEXT: 1 10 5.00 * rcpps (%rax), %xmm2
295 # CHECK-NEXT: 1 4 4.00 rcpss %xmm0, %xmm2
296 # CHECK-NEXT: 1 4 4.00 * rcpss (%rax), %xmm2
297 # CHECK-NEXT: 1 9 4.50 rsqrtps %xmm0, %xmm2
298 # CHECK-NEXT: 1 10 5.00 * rsqrtps (%rax), %xmm2
299 # CHECK-NEXT: 1 4 4.00 rsqrtss %xmm0, %xmm2
300 # CHECK-NEXT: 1 4 4.00 * rsqrtss (%rax), %xmm2
301 # CHECK-NEXT: 1 1 1.00 * * U sfence
302 # CHECK-NEXT: 1 1 1.00 shufps $1, %xmm0, %xmm2
303 # CHECK-NEXT: 1 1 1.00 * shufps $1, (%rax), %xmm2
304 # CHECK-NEXT: 1 70 35.00 sqrtps %xmm0, %xmm2
305 # CHECK-NEXT: 1 70 35.00 * sqrtps (%rax), %xmm2
306 # CHECK-NEXT: 1 34 17.00 sqrtss %xmm0, %xmm2
307 # CHECK-NEXT: 1 34 17.00 * sqrtss (%rax), %xmm2
308 # CHECK-NEXT: 1 15 7.50 * U stmxcsr (%rax)
309 # CHECK-NEXT: 1 5 5.00 subps %xmm0, %xmm2
310 # CHECK-NEXT: 1 5 5.00 * subps (%rax), %xmm2
311 # CHECK-NEXT: 1 5 5.00 subss %xmm0, %xmm2
312 # CHECK-NEXT: 1 5 5.00 * subss (%rax), %xmm2
313 # CHECK-NEXT: 1 9 4.50 ucomiss %xmm0, %xmm1
314 # CHECK-NEXT: 1 10 5.00 * ucomiss (%rax), %xmm1
315 # CHECK-NEXT: 1 1 1.00 unpckhps %xmm0, %xmm2
316 # CHECK-NEXT: 1 1 1.00 * unpckhps (%rax), %xmm2
317 # CHECK-NEXT: 1 1 1.00 unpcklps %xmm0, %xmm2
318 # CHECK-NEXT: 1 1 1.00 * unpcklps (%rax), %xmm2
319 # CHECK-NEXT: 1 1 0.50 xorps %xmm0, %xmm2
320 # CHECK-NEXT: 1 1 1.00 * xorps (%rax), %xmm2
323 # CHECK-NEXT: [0] - AtomPort0
324 # CHECK-NEXT: [1] - AtomPort1
326 # CHECK: Resource pressure per iteration:
327 # CHECK-NEXT: [0] [1]
328 # CHECK-NEXT: 516.00 350.00
330 # CHECK: Resource pressure by instruction:
331 # CHECK-NEXT: [0] [1] Instructions:
332 # CHECK-NEXT: 5.00 - addps %xmm0, %xmm2
333 # CHECK-NEXT: 5.00 - addps (%rax), %xmm2
334 # CHECK-NEXT: 5.00 - addss %xmm0, %xmm2
335 # CHECK-NEXT: 5.00 - addss (%rax), %xmm2
336 # CHECK-NEXT: 0.50 0.50 andnps %xmm0, %xmm2
337 # CHECK-NEXT: 1.00 - andnps (%rax), %xmm2
338 # CHECK-NEXT: 0.50 0.50 andps %xmm0, %xmm2
339 # CHECK-NEXT: 1.00 - andps (%rax), %xmm2
340 # CHECK-NEXT: 5.00 - cmpeqps %xmm0, %xmm2
341 # CHECK-NEXT: 5.00 - cmpeqps (%rax), %xmm2
342 # CHECK-NEXT: 5.00 - cmpeqss %xmm0, %xmm2
343 # CHECK-NEXT: 5.00 - cmpeqss (%rax), %xmm2
344 # CHECK-NEXT: 4.50 4.50 comiss %xmm0, %xmm1
345 # CHECK-NEXT: 5.00 5.00 comiss (%rax), %xmm1
346 # CHECK-NEXT: - 5.00 cvtpi2ps %mm0, %xmm2
347 # CHECK-NEXT: - 5.00 cvtpi2ps (%rax), %xmm2
348 # CHECK-NEXT: - 5.00 cvtps2pi %xmm0, %mm2
349 # CHECK-NEXT: 5.00 5.00 cvtps2pi (%rax), %mm2
350 # CHECK-NEXT: 3.00 3.00 cvtsi2ss %ecx, %xmm2
351 # CHECK-NEXT: 3.00 3.00 cvtsi2ss %rcx, %xmm2
352 # CHECK-NEXT: 3.50 3.50 cvtsi2ssl (%rax), %xmm2
353 # CHECK-NEXT: 3.50 3.50 cvtsi2ssl (%rax), %xmm2
354 # CHECK-NEXT: 4.00 4.00 cvtss2si %xmm0, %ecx
355 # CHECK-NEXT: 4.50 4.50 cvtss2si %xmm0, %rcx
356 # CHECK-NEXT: 4.50 4.50 cvtss2si (%rax), %ecx
357 # CHECK-NEXT: 5.00 5.00 cvtss2si (%rax), %rcx
358 # CHECK-NEXT: - 5.00 cvttps2pi %xmm0, %mm2
359 # CHECK-NEXT: 5.00 5.00 cvttps2pi (%rax), %mm2
360 # CHECK-NEXT: 4.00 4.00 cvttss2si %xmm0, %ecx
361 # CHECK-NEXT: 4.50 4.50 cvttss2si %xmm0, %rcx
362 # CHECK-NEXT: 4.50 4.50 cvttss2si (%rax), %ecx
363 # CHECK-NEXT: 5.00 5.00 cvttss2si (%rax), %rcx
364 # CHECK-NEXT: 35.00 35.00 divps %xmm0, %xmm2
365 # CHECK-NEXT: 35.00 35.00 divps (%rax), %xmm2
366 # CHECK-NEXT: 17.00 17.00 divss %xmm0, %xmm2
367 # CHECK-NEXT: 17.00 17.00 divss (%rax), %xmm2
368 # CHECK-NEXT: 2.50 2.50 ldmxcsr (%rax)
369 # CHECK-NEXT: 1.00 - maskmovq %mm0, %mm1
370 # CHECK-NEXT: 5.00 - maxps %xmm0, %xmm2
371 # CHECK-NEXT: 5.00 - maxps (%rax), %xmm2
372 # CHECK-NEXT: 5.00 - maxss %xmm0, %xmm2
373 # CHECK-NEXT: 5.00 - maxss (%rax), %xmm2
374 # CHECK-NEXT: 5.00 - minps %xmm0, %xmm2
375 # CHECK-NEXT: 5.00 - minps (%rax), %xmm2
376 # CHECK-NEXT: 5.00 - minss %xmm0, %xmm2
377 # CHECK-NEXT: 5.00 - minss (%rax), %xmm2
378 # CHECK-NEXT: 0.50 0.50 movaps %xmm0, %xmm2
379 # CHECK-NEXT: 1.00 - movaps %xmm0, (%rax)
380 # CHECK-NEXT: 1.00 - movaps (%rax), %xmm2
381 # CHECK-NEXT: 1.00 - movhlps %xmm0, %xmm2
382 # CHECK-NEXT: 1.00 - movlhps %xmm0, %xmm2
383 # CHECK-NEXT: 1.00 - movhps %xmm0, (%rax)
384 # CHECK-NEXT: 1.00 - movhps (%rax), %xmm2
385 # CHECK-NEXT: 1.00 - movlps %xmm0, (%rax)
386 # CHECK-NEXT: 1.00 - movlps (%rax), %xmm2
387 # CHECK-NEXT: 3.00 - movmskps %xmm0, %ecx
388 # CHECK-NEXT: 1.00 - movntps %xmm0, (%rax)
389 # CHECK-NEXT: 1.00 - movntq %mm0, (%rax)
390 # CHECK-NEXT: 0.50 0.50 movss %xmm0, %xmm2
391 # CHECK-NEXT: 1.00 - movss %xmm0, (%rax)
392 # CHECK-NEXT: 1.00 - movss (%rax), %xmm2
393 # CHECK-NEXT: 0.50 0.50 movups %xmm0, %xmm2
394 # CHECK-NEXT: 1.00 1.00 movups %xmm0, (%rax)
395 # CHECK-NEXT: 1.50 1.50 movups (%rax), %xmm2
396 # CHECK-NEXT: 5.00 - mulps %xmm0, %xmm2
397 # CHECK-NEXT: 5.00 - mulps (%rax), %xmm2
398 # CHECK-NEXT: 4.00 - mulss %xmm0, %xmm2
399 # CHECK-NEXT: 4.00 - mulss (%rax), %xmm2
400 # CHECK-NEXT: 0.50 0.50 orps %xmm0, %xmm2
401 # CHECK-NEXT: 1.00 - orps (%rax), %xmm2
402 # CHECK-NEXT: 0.50 0.50 pavgb %mm0, %mm2
403 # CHECK-NEXT: 1.00 - pavgb (%rax), %mm2
404 # CHECK-NEXT: 0.50 0.50 pavgw %mm0, %mm2
405 # CHECK-NEXT: 1.00 - pavgw (%rax), %mm2
406 # CHECK-NEXT: 2.00 2.00 pextrw $1, %mm0, %ecx
407 # CHECK-NEXT: 1.00 - pinsrw $1, %eax, %mm2
408 # CHECK-NEXT: 1.00 - pinsrw $1, (%rax), %mm2
409 # CHECK-NEXT: 0.50 0.50 pmaxsw %mm0, %mm2
410 # CHECK-NEXT: 1.00 - pmaxsw (%rax), %mm2
411 # CHECK-NEXT: 0.50 0.50 pmaxub %mm0, %mm2
412 # CHECK-NEXT: 1.00 - pmaxub (%rax), %mm2
413 # CHECK-NEXT: 0.50 0.50 pminsw %mm0, %mm2
414 # CHECK-NEXT: 1.00 - pminsw (%rax), %mm2
415 # CHECK-NEXT: 0.50 0.50 pminub %mm0, %mm2
416 # CHECK-NEXT: 1.00 - pminub (%rax), %mm2
417 # CHECK-NEXT: 3.00 - pmovmskb %mm0, %ecx
418 # CHECK-NEXT: 4.00 - pmulhuw %mm0, %mm2
419 # CHECK-NEXT: 4.00 - pmulhuw (%rax), %mm2
420 # CHECK-NEXT: 1.00 - prefetcht0 (%rax)
421 # CHECK-NEXT: 1.00 - prefetcht1 (%rax)
422 # CHECK-NEXT: 1.00 - prefetcht2 (%rax)
423 # CHECK-NEXT: 1.00 - prefetchnta (%rax)
424 # CHECK-NEXT: 2.00 2.00 psadbw %mm0, %mm2
425 # CHECK-NEXT: 2.00 2.00 psadbw (%rax), %mm2
426 # CHECK-NEXT: 1.00 - pshufw $1, %mm0, %mm2
427 # CHECK-NEXT: 1.00 - pshufw $1, (%rax), %mm2
428 # CHECK-NEXT: 4.50 4.50 rcpps %xmm0, %xmm2
429 # CHECK-NEXT: 5.00 5.00 rcpps (%rax), %xmm2
430 # CHECK-NEXT: 4.00 - rcpss %xmm0, %xmm2
431 # CHECK-NEXT: 4.00 - rcpss (%rax), %xmm2
432 # CHECK-NEXT: 4.50 4.50 rsqrtps %xmm0, %xmm2
433 # CHECK-NEXT: 5.00 5.00 rsqrtps (%rax), %xmm2
434 # CHECK-NEXT: 4.00 - rsqrtss %xmm0, %xmm2
435 # CHECK-NEXT: 4.00 - rsqrtss (%rax), %xmm2
436 # CHECK-NEXT: 1.00 - sfence
437 # CHECK-NEXT: 1.00 - shufps $1, %xmm0, %xmm2
438 # CHECK-NEXT: 1.00 - shufps $1, (%rax), %xmm2
439 # CHECK-NEXT: 35.00 35.00 sqrtps %xmm0, %xmm2
440 # CHECK-NEXT: 35.00 35.00 sqrtps (%rax), %xmm2
441 # CHECK-NEXT: 17.00 17.00 sqrtss %xmm0, %xmm2
442 # CHECK-NEXT: 17.00 17.00 sqrtss (%rax), %xmm2
443 # CHECK-NEXT: 7.50 7.50 stmxcsr (%rax)
444 # CHECK-NEXT: 5.00 - subps %xmm0, %xmm2
445 # CHECK-NEXT: 5.00 - subps (%rax), %xmm2
446 # CHECK-NEXT: 5.00 - subss %xmm0, %xmm2
447 # CHECK-NEXT: 5.00 - subss (%rax), %xmm2
448 # CHECK-NEXT: 4.50 4.50 ucomiss %xmm0, %xmm1
449 # CHECK-NEXT: 5.00 5.00 ucomiss (%rax), %xmm1
450 # CHECK-NEXT: 1.00 - unpckhps %xmm0, %xmm2
451 # CHECK-NEXT: 1.00 - unpckhps (%rax), %xmm2
452 # CHECK-NEXT: 1.00 - unpcklps %xmm0, %xmm2
453 # CHECK-NEXT: 1.00 - unpcklps (%rax), %xmm2
454 # CHECK-NEXT: 0.50 0.50 xorps %xmm0, %xmm2
455 # CHECK-NEXT: 1.00 - xorps (%rax), %xmm2