215 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver4 -instruction-tables < %s | FileCheck %s3 4vpermb %xmm16, %xmm17, %xmm195vpermb (%rax), %xmm17, %xmm196vpermb %xmm16, %xmm17, %xmm19 {k1}7vpermb (%rax), %xmm17, %xmm19 {k1}8vpermb %xmm16, %xmm17, %xmm19 {k1}{z}9vpermb (%rax), %xmm17, %xmm19 {k1}{z}10 11vpermb %ymm16, %ymm17, %ymm1912vpermb (%rax), %ymm17, %ymm1913vpermb %ymm16, %ymm17, %ymm19 {k1}14vpermb (%rax), %ymm17, %ymm19 {k1}15vpermb %ymm16, %ymm17, %ymm19 {k1}{z}16vpermb (%rax), %ymm17, %ymm19 {k1}{z}17 18vpermi2b %xmm16, %xmm17, %xmm1919vpermi2b (%rax), %xmm17, %xmm1920vpermi2b %xmm16, %xmm17, %xmm19 {k1}21vpermi2b (%rax), %xmm17, %xmm19 {k1}22vpermi2b %xmm16, %xmm17, %xmm19 {k1}{z}23vpermi2b (%rax), %xmm17, %xmm19 {k1}{z}24 25vpermi2b %ymm16, %ymm17, %ymm1926vpermi2b (%rax), %ymm17, %ymm1927vpermi2b %ymm16, %ymm17, %ymm19 {k1}28vpermi2b (%rax), %ymm17, %ymm19 {k1}29vpermi2b %ymm16, %ymm17, %ymm19 {k1}{z}30vpermi2b (%rax), %ymm17, %ymm19 {k1}{z}31 32vpermt2b %xmm16, %xmm17, %xmm1933vpermt2b (%rax), %xmm17, %xmm1934vpermt2b %xmm16, %xmm17, %xmm19 {k1}35vpermt2b (%rax), %xmm17, %xmm19 {k1}36vpermt2b %xmm16, %xmm17, %xmm19 {k1}{z}37vpermt2b (%rax), %xmm17, %xmm19 {k1}{z}38 39vpermt2b %ymm16, %ymm17, %ymm1940vpermt2b (%rax), %ymm17, %ymm1941vpermt2b %ymm16, %ymm17, %ymm19 {k1}42vpermt2b (%rax), %ymm17, %ymm19 {k1}43vpermt2b %ymm16, %ymm17, %ymm19 {k1}{z}44vpermt2b (%rax), %ymm17, %ymm19 {k1}{z}45 46vpmultishiftqb %xmm16, %xmm17, %xmm1947vpmultishiftqb (%rax), %xmm17, %xmm1948vpmultishiftqb (%rax){1to2}, %xmm17, %xmm1949vpmultishiftqb %xmm16, %xmm17, %xmm19 {k1}50vpmultishiftqb (%rax), %xmm17, %xmm19 {k1}51vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {k1}52vpmultishiftqb %xmm16, %xmm17, %xmm19 {k1}{z}53vpmultishiftqb (%rax), %xmm17, %xmm19 {k1}{z}54vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {k1}{z}55 56vpmultishiftqb %ymm16, %ymm17, %ymm1957vpmultishiftqb (%rax), %ymm17, %ymm1958vpmultishiftqb (%rax){1to4}, %ymm17, %ymm1959vpmultishiftqb %ymm16, %ymm17, %ymm19 {k1}60vpmultishiftqb (%rax), %ymm17, %ymm19 {k1}61vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {k1}62vpmultishiftqb %ymm16, %ymm17, %ymm19 {k1}{z}63vpmultishiftqb (%rax), %ymm17, %ymm19 {k1}{z}64vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {k1}{z}65 66# CHECK: Instruction Info:67# CHECK-NEXT: [1]: #uOps68# CHECK-NEXT: [2]: Latency69# CHECK-NEXT: [3]: RThroughput70# CHECK-NEXT: [4]: MayLoad71# CHECK-NEXT: [5]: MayStore72# CHECK-NEXT: [6]: HasSideEffects (U)73 74# CHECK: [1] [2] [3] [4] [5] [6] Instructions:75# CHECK-NEXT: 1 2 1.00 vpermb %xmm16, %xmm17, %xmm1976# CHECK-NEXT: 2 8 0.50 * vpermb (%rax), %xmm17, %xmm1977# CHECK-NEXT: 1 2 1.00 vpermb %xmm16, %xmm17, %xmm19 {%k1}78# CHECK-NEXT: 2 8 0.50 * vpermb (%rax), %xmm17, %xmm19 {%k1}79# CHECK-NEXT: 1 2 1.00 vpermb %xmm16, %xmm17, %xmm19 {%k1} {z}80# CHECK-NEXT: 2 8 0.50 * vpermb (%rax), %xmm17, %xmm19 {%k1} {z}81# CHECK-NEXT: 1 4 1.00 vpermb %ymm16, %ymm17, %ymm1982# CHECK-NEXT: 2 8 0.50 * vpermb (%rax), %ymm17, %ymm1983# CHECK-NEXT: 1 4 1.00 vpermb %ymm16, %ymm17, %ymm19 {%k1}84# CHECK-NEXT: 2 8 0.50 * vpermb (%rax), %ymm17, %ymm19 {%k1}85# CHECK-NEXT: 1 4 1.00 vpermb %ymm16, %ymm17, %ymm19 {%k1} {z}86# CHECK-NEXT: 2 8 0.50 * vpermb (%rax), %ymm17, %ymm19 {%k1} {z}87# CHECK-NEXT: 1 3 1.00 vpermi2b %xmm16, %xmm17, %xmm1988# CHECK-NEXT: 2 8 0.50 * vpermi2b (%rax), %xmm17, %xmm1989# CHECK-NEXT: 1 3 1.00 vpermi2b %xmm16, %xmm17, %xmm19 {%k1}90# CHECK-NEXT: 2 8 0.50 * vpermi2b (%rax), %xmm17, %xmm19 {%k1}91# CHECK-NEXT: 1 3 1.00 vpermi2b %xmm16, %xmm17, %xmm19 {%k1} {z}92# CHECK-NEXT: 2 8 0.50 * vpermi2b (%rax), %xmm17, %xmm19 {%k1} {z}93# CHECK-NEXT: 1 4 1.00 vpermi2b %ymm16, %ymm17, %ymm1994# CHECK-NEXT: 2 8 0.50 * vpermi2b (%rax), %ymm17, %ymm1995# CHECK-NEXT: 1 4 1.00 vpermi2b %ymm16, %ymm17, %ymm19 {%k1}96# CHECK-NEXT: 2 8 0.50 * vpermi2b (%rax), %ymm17, %ymm19 {%k1}97# CHECK-NEXT: 1 4 1.00 vpermi2b %ymm16, %ymm17, %ymm19 {%k1} {z}98# CHECK-NEXT: 2 8 0.50 * vpermi2b (%rax), %ymm17, %ymm19 {%k1} {z}99# CHECK-NEXT: 1 3 1.00 vpermt2b %xmm16, %xmm17, %xmm19100# CHECK-NEXT: 2 8 0.50 * vpermt2b (%rax), %xmm17, %xmm19101# CHECK-NEXT: 1 3 1.00 vpermt2b %xmm16, %xmm17, %xmm19 {%k1}102# CHECK-NEXT: 2 8 0.50 * vpermt2b (%rax), %xmm17, %xmm19 {%k1}103# CHECK-NEXT: 1 3 1.00 vpermt2b %xmm16, %xmm17, %xmm19 {%k1} {z}104# CHECK-NEXT: 2 8 0.50 * vpermt2b (%rax), %xmm17, %xmm19 {%k1} {z}105# CHECK-NEXT: 1 4 1.00 vpermt2b %ymm16, %ymm17, %ymm19106# CHECK-NEXT: 2 8 0.50 * vpermt2b (%rax), %ymm17, %ymm19107# CHECK-NEXT: 1 4 1.00 vpermt2b %ymm16, %ymm17, %ymm19 {%k1}108# CHECK-NEXT: 2 8 0.50 * vpermt2b (%rax), %ymm17, %ymm19 {%k1}109# CHECK-NEXT: 1 4 1.00 vpermt2b %ymm16, %ymm17, %ymm19 {%k1} {z}110# CHECK-NEXT: 2 8 0.50 * vpermt2b (%rax), %ymm17, %ymm19 {%k1} {z}111# CHECK-NEXT: 1 1 0.25 vpmultishiftqb %xmm16, %xmm17, %xmm19112# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax), %xmm17, %xmm19113# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19114# CHECK-NEXT: 1 1 0.25 vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1}115# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1}116# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1}117# CHECK-NEXT: 1 1 0.25 vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1} {z}118# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1} {z}119# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}120# CHECK-NEXT: 1 1 0.25 vpmultishiftqb %ymm16, %ymm17, %ymm19121# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax), %ymm17, %ymm19122# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19123# CHECK-NEXT: 1 1 0.25 vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1}124# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1}125# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1}126# CHECK-NEXT: 1 1 0.25 vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1} {z}127# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1} {z}128# CHECK-NEXT: 1 8 0.50 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}129 130# CHECK: Resources:131# CHECK-NEXT: [0] - Zn4AGU0132# CHECK-NEXT: [1] - Zn4AGU1133# CHECK-NEXT: [2] - Zn4AGU2134# CHECK-NEXT: [3] - Zn4ALU0135# CHECK-NEXT: [4] - Zn4ALU1136# CHECK-NEXT: [5] - Zn4ALU2137# CHECK-NEXT: [6] - Zn4ALU3138# CHECK-NEXT: [7] - Zn4BRU1139# CHECK-NEXT: [8] - Zn4FP0140# CHECK-NEXT: [9] - Zn4FP1141# CHECK-NEXT: [10] - Zn4FP2142# CHECK-NEXT: [11] - Zn4FP3143# CHECK-NEXT: [12.0] - Zn4FP45144# CHECK-NEXT: [12.1] - Zn4FP45145# CHECK-NEXT: [13] - Zn4FPSt146# CHECK-NEXT: [14.0] - Zn4LSU147# CHECK-NEXT: [14.1] - Zn4LSU148# CHECK-NEXT: [14.2] - Zn4LSU149# CHECK-NEXT: [15.0] - Zn4Load150# CHECK-NEXT: [15.1] - Zn4Load151# CHECK-NEXT: [15.2] - Zn4Load152# CHECK-NEXT: [16.0] - Zn4Store153# CHECK-NEXT: [16.1] - Zn4Store154 155# CHECK: Resource pressure per iteration:156# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1]157# CHECK-NEXT: - - - - - - - - 4.50 31.50 31.50 4.50 15.00 15.00 - 10.00 10.00 10.00 10.00 10.00 10.00 - -158 159# CHECK: Resource pressure by instruction:160# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] Instructions:161# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermb %xmm16, %xmm17, %xmm19162# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermb (%rax), %xmm17, %xmm19163# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermb %xmm16, %xmm17, %xmm19 {%k1}164# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermb (%rax), %xmm17, %xmm19 {%k1}165# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermb %xmm16, %xmm17, %xmm19 {%k1} {z}166# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermb (%rax), %xmm17, %xmm19 {%k1} {z}167# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermb %ymm16, %ymm17, %ymm19168# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermb (%rax), %ymm17, %ymm19169# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermb %ymm16, %ymm17, %ymm19 {%k1}170# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermb (%rax), %ymm17, %ymm19 {%k1}171# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermb %ymm16, %ymm17, %ymm19 {%k1} {z}172# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermb (%rax), %ymm17, %ymm19 {%k1} {z}173# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermi2b %xmm16, %xmm17, %xmm19174# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermi2b (%rax), %xmm17, %xmm19175# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermi2b %xmm16, %xmm17, %xmm19 {%k1}176# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermi2b (%rax), %xmm17, %xmm19 {%k1}177# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermi2b %xmm16, %xmm17, %xmm19 {%k1} {z}178# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermi2b (%rax), %xmm17, %xmm19 {%k1} {z}179# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermi2b %ymm16, %ymm17, %ymm19180# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermi2b (%rax), %ymm17, %ymm19181# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermi2b %ymm16, %ymm17, %ymm19 {%k1}182# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermi2b (%rax), %ymm17, %ymm19 {%k1}183# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermi2b %ymm16, %ymm17, %ymm19 {%k1} {z}184# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermi2b (%rax), %ymm17, %ymm19 {%k1} {z}185# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermt2b %xmm16, %xmm17, %xmm19186# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermt2b (%rax), %xmm17, %xmm19187# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermt2b %xmm16, %xmm17, %xmm19 {%k1}188# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermt2b (%rax), %xmm17, %xmm19 {%k1}189# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermt2b %xmm16, %xmm17, %xmm19 {%k1} {z}190# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermt2b (%rax), %xmm17, %xmm19 {%k1} {z}191# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermt2b %ymm16, %ymm17, %ymm19192# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermt2b (%rax), %ymm17, %ymm19193# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermt2b %ymm16, %ymm17, %ymm19 {%k1}194# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermt2b (%rax), %ymm17, %ymm19 {%k1}195# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpermt2b %ymm16, %ymm17, %ymm19 {%k1} {z}196# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpermt2b (%rax), %ymm17, %ymm19 {%k1} {z}197# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpmultishiftqb %xmm16, %xmm17, %xmm19198# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax), %xmm17, %xmm19199# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19200# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1}201# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1}202# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1}203# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1} {z}204# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1} {z}205# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}206# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpmultishiftqb %ymm16, %ymm17, %ymm19207# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax), %ymm17, %ymm19208# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19209# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1}210# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1}211# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1}212# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1} {z}213# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1} {z}214# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}215