270 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=skylake-avx512 -instruction-tables < %s | FileCheck %s3 4vpbroadcastmb2q %k0, %xmm165vpbroadcastmb2q %k0, %ymm166 7vpbroadcastmw2d %k0, %xmm168vpbroadcastmw2d %k0, %ymm169 10vpconflictd %xmm16, %xmm1911vpconflictd (%rax), %xmm1912vpconflictd (%rax){1to4}, %xmm1913vpconflictd %xmm16, %xmm19 {k1}14vpconflictd (%rax), %xmm19 {k1}15vpconflictd (%rax){1to4}, %xmm19 {k1}16vpconflictd %xmm16, %xmm19 {z}{k1}17vpconflictd (%rax), %xmm19 {z}{k1}18vpconflictd (%rax){1to4}, %xmm19 {z}{k1}19 20vpconflictd %ymm16, %ymm1921vpconflictd (%rax), %ymm1922vpconflictd (%rax){1to8}, %ymm1923vpconflictd %ymm16, %ymm19 {k1}24vpconflictd (%rax), %ymm19 {k1}25vpconflictd (%rax){1to8}, %ymm19 {k1}26vpconflictd %ymm16, %ymm19 {z}{k1}27vpconflictd (%rax), %ymm19 {z}{k1}28vpconflictd (%rax){1to8}, %ymm19 {z}{k1}29 30vpconflictq %xmm16, %xmm1931vpconflictq (%rax), %xmm1932vpconflictq (%rax){1to2}, %xmm1933vpconflictq %xmm16, %xmm19 {k1}34vpconflictq (%rax), %xmm19 {k1}35vpconflictq (%rax){1to2}, %xmm19 {k1}36vpconflictq %xmm16, %xmm19 {z}{k1}37vpconflictq (%rax), %xmm19 {z}{k1}38vpconflictq (%rax){1to2}, %xmm19 {z}{k1}39 40vpconflictq %ymm16, %ymm1941vpconflictq (%rax), %ymm1942vpconflictq (%rax){1to4}, %ymm1943vpconflictq %ymm16, %ymm19 {k1}44vpconflictq (%rax), %ymm19 {k1}45vpconflictq (%rax){1to4}, %ymm19 {k1}46vpconflictq %ymm16, %ymm19 {z}{k1}47vpconflictq (%rax), %ymm19 {z}{k1}48vpconflictq (%rax){1to4}, %ymm19 {z}{k1}49 50vplzcntd %xmm16, %xmm1951vplzcntd (%rax), %xmm1952vplzcntd (%rax){1to4}, %xmm1953vplzcntd %xmm16, %xmm19 {k1}54vplzcntd (%rax), %xmm19 {k1}55vplzcntd (%rax){1to4}, %xmm19 {k1}56vplzcntd %xmm16, %xmm19 {z}{k1}57vplzcntd (%rax), %xmm19 {z}{k1}58vplzcntd (%rax){1to4}, %xmm19 {z}{k1}59 60vplzcntd %ymm16, %ymm1961vplzcntd (%rax), %ymm1962vplzcntd (%rax){1to8}, %ymm1963vplzcntd %ymm16, %ymm19 {k1}64vplzcntd (%rax), %ymm19 {k1}65vplzcntd (%rax){1to8}, %ymm19 {k1}66vplzcntd %ymm16, %ymm19 {z}{k1}67vplzcntd (%rax), %ymm19 {z}{k1}68vplzcntd (%rax){1to8}, %ymm19 {z}{k1}69 70vplzcntq %xmm16, %xmm1971vplzcntq (%rax), %xmm1972vplzcntq (%rax){1to2}, %xmm1973vplzcntq %xmm16, %xmm19 {k1}74vplzcntq (%rax), %xmm19 {k1}75vplzcntq (%rax){1to2}, %xmm19 {k1}76vplzcntq %xmm16, %xmm19 {z}{k1}77vplzcntq (%rax), %xmm19 {z}{k1}78vplzcntq (%rax){1to2}, %xmm19 {z}{k1}79 80vplzcntq %ymm16, %ymm1981vplzcntq (%rax), %ymm1982vplzcntq (%rax){1to4}, %ymm1983vplzcntq %ymm16, %ymm19 {k1}84vplzcntq (%rax), %ymm19 {k1}85vplzcntq (%rax){1to4}, %ymm19 {k1}86vplzcntq %ymm16, %ymm19 {z}{k1}87vplzcntq (%rax), %ymm19 {z}{k1}88vplzcntq (%rax){1to4}, %ymm19 {z}{k1}89 90# CHECK: Instruction Info:91# CHECK-NEXT: [1]: #uOps92# CHECK-NEXT: [2]: Latency93# CHECK-NEXT: [3]: RThroughput94# CHECK-NEXT: [4]: MayLoad95# CHECK-NEXT: [5]: MayStore96# CHECK-NEXT: [6]: HasSideEffects (U)97 98# CHECK: [1] [2] [3] [4] [5] [6] Instructions:99# CHECK-NEXT: 1 1 1.00 vpbroadcastmb2q %k0, %xmm16100# CHECK-NEXT: 1 1 1.00 vpbroadcastmb2q %k0, %ymm16101# CHECK-NEXT: 1 1 1.00 vpbroadcastmw2d %k0, %xmm16102# CHECK-NEXT: 1 1 1.00 vpbroadcastmw2d %k0, %ymm16103# CHECK-NEXT: 14 22 5.00 vpconflictd %xmm16, %xmm19104# CHECK-NEXT: 8 15 2.33 * vpconflictd (%rax), %xmm19105# CHECK-NEXT: 8 15 2.33 * vpconflictd (%rax){1to4}, %xmm19106# CHECK-NEXT: 14 22 5.00 vpconflictd %xmm16, %xmm19 {%k1}107# CHECK-NEXT: 8 15 2.33 * vpconflictd (%rax), %xmm19 {%k1}108# CHECK-NEXT: 8 15 2.33 * vpconflictd (%rax){1to4}, %xmm19 {%k1}109# CHECK-NEXT: 14 22 5.00 vpconflictd %xmm16, %xmm19 {%k1} {z}110# CHECK-NEXT: 8 15 2.33 * vpconflictd (%rax), %xmm19 {%k1} {z}111# CHECK-NEXT: 8 15 2.33 * vpconflictd (%rax){1to4}, %xmm19 {%k1} {z}112# CHECK-NEXT: 21 37 9.00 vpconflictd %ymm16, %ymm19113# CHECK-NEXT: 22 44 9.00 * vpconflictd (%rax), %ymm19114# CHECK-NEXT: 22 44 9.00 * vpconflictd (%rax){1to8}, %ymm19115# CHECK-NEXT: 21 37 9.00 vpconflictd %ymm16, %ymm19 {%k1}116# CHECK-NEXT: 22 44 9.00 * vpconflictd (%rax), %ymm19 {%k1}117# CHECK-NEXT: 22 44 9.00 * vpconflictd (%rax){1to8}, %ymm19 {%k1}118# CHECK-NEXT: 21 37 9.00 vpconflictd %ymm16, %ymm19 {%k1} {z}119# CHECK-NEXT: 22 44 9.00 * vpconflictd (%rax), %ymm19 {%k1} {z}120# CHECK-NEXT: 22 44 9.00 * vpconflictd (%rax){1to8}, %ymm19 {%k1} {z}121# CHECK-NEXT: 3 5 2.00 vpconflictq %xmm16, %xmm19122# CHECK-NEXT: 4 11 2.00 * vpconflictq (%rax), %xmm19123# CHECK-NEXT: 4 11 2.00 * vpconflictq (%rax){1to2}, %xmm19124# CHECK-NEXT: 3 5 2.00 vpconflictq %xmm16, %xmm19 {%k1}125# CHECK-NEXT: 4 11 2.00 * vpconflictq (%rax), %xmm19 {%k1}126# CHECK-NEXT: 4 11 2.00 * vpconflictq (%rax){1to2}, %xmm19 {%k1}127# CHECK-NEXT: 3 5 2.00 vpconflictq %xmm16, %xmm19 {%k1} {z}128# CHECK-NEXT: 4 11 2.00 * vpconflictq (%rax), %xmm19 {%k1} {z}129# CHECK-NEXT: 4 11 2.00 * vpconflictq (%rax){1to2}, %xmm19 {%k1} {z}130# CHECK-NEXT: 14 22 5.00 vpconflictq %ymm16, %ymm19131# CHECK-NEXT: 15 29 5.00 * vpconflictq (%rax), %ymm19132# CHECK-NEXT: 15 29 5.00 * vpconflictq (%rax){1to4}, %ymm19133# CHECK-NEXT: 14 22 5.00 vpconflictq %ymm16, %ymm19 {%k1}134# CHECK-NEXT: 15 29 5.00 * vpconflictq (%rax), %ymm19 {%k1}135# CHECK-NEXT: 15 29 5.00 * vpconflictq (%rax){1to4}, %ymm19 {%k1}136# CHECK-NEXT: 14 22 5.00 vpconflictq %ymm16, %ymm19 {%k1} {z}137# CHECK-NEXT: 15 29 5.00 * vpconflictq (%rax), %ymm19 {%k1} {z}138# CHECK-NEXT: 15 29 5.00 * vpconflictq (%rax){1to4}, %ymm19 {%k1} {z}139# CHECK-NEXT: 1 5 0.50 vplzcntd %xmm16, %xmm19140# CHECK-NEXT: 2 11 0.50 * vplzcntd (%rax), %xmm19141# CHECK-NEXT: 2 11 0.50 * vplzcntd (%rax){1to4}, %xmm19142# CHECK-NEXT: 1 5 0.50 vplzcntd %xmm16, %xmm19 {%k1}143# CHECK-NEXT: 2 11 0.50 * vplzcntd (%rax), %xmm19 {%k1}144# CHECK-NEXT: 2 11 0.50 * vplzcntd (%rax){1to4}, %xmm19 {%k1}145# CHECK-NEXT: 1 5 0.50 vplzcntd %xmm16, %xmm19 {%k1} {z}146# CHECK-NEXT: 2 11 0.50 * vplzcntd (%rax), %xmm19 {%k1} {z}147# CHECK-NEXT: 2 11 0.50 * vplzcntd (%rax){1to4}, %xmm19 {%k1} {z}148# CHECK-NEXT: 1 5 0.50 vplzcntd %ymm16, %ymm19149# CHECK-NEXT: 2 12 0.50 * vplzcntd (%rax), %ymm19150# CHECK-NEXT: 2 12 0.50 * vplzcntd (%rax){1to8}, %ymm19151# CHECK-NEXT: 1 5 0.50 vplzcntd %ymm16, %ymm19 {%k1}152# CHECK-NEXT: 2 12 0.50 * vplzcntd (%rax), %ymm19 {%k1}153# CHECK-NEXT: 2 12 0.50 * vplzcntd (%rax){1to8}, %ymm19 {%k1}154# CHECK-NEXT: 1 5 0.50 vplzcntd %ymm16, %ymm19 {%k1} {z}155# CHECK-NEXT: 2 12 0.50 * vplzcntd (%rax), %ymm19 {%k1} {z}156# CHECK-NEXT: 2 12 0.50 * vplzcntd (%rax){1to8}, %ymm19 {%k1} {z}157# CHECK-NEXT: 1 5 0.50 vplzcntq %xmm16, %xmm19158# CHECK-NEXT: 2 11 0.50 * vplzcntq (%rax), %xmm19159# CHECK-NEXT: 2 11 0.50 * vplzcntq (%rax){1to2}, %xmm19160# CHECK-NEXT: 1 5 0.50 vplzcntq %xmm16, %xmm19 {%k1}161# CHECK-NEXT: 2 11 0.50 * vplzcntq (%rax), %xmm19 {%k1}162# CHECK-NEXT: 2 11 0.50 * vplzcntq (%rax){1to2}, %xmm19 {%k1}163# CHECK-NEXT: 1 5 0.50 vplzcntq %xmm16, %xmm19 {%k1} {z}164# CHECK-NEXT: 2 11 0.50 * vplzcntq (%rax), %xmm19 {%k1} {z}165# CHECK-NEXT: 2 11 0.50 * vplzcntq (%rax){1to2}, %xmm19 {%k1} {z}166# CHECK-NEXT: 1 5 0.50 vplzcntq %ymm16, %ymm19167# CHECK-NEXT: 2 12 0.50 * vplzcntq (%rax), %ymm19168# CHECK-NEXT: 2 12 0.50 * vplzcntq (%rax){1to4}, %ymm19169# CHECK-NEXT: 1 5 0.50 vplzcntq %ymm16, %ymm19 {%k1}170# CHECK-NEXT: 2 12 0.50 * vplzcntq (%rax), %ymm19 {%k1}171# CHECK-NEXT: 2 12 0.50 * vplzcntq (%rax){1to4}, %ymm19 {%k1}172# CHECK-NEXT: 1 5 0.50 vplzcntq %ymm16, %ymm19 {%k1} {z}173# CHECK-NEXT: 2 12 0.50 * vplzcntq (%rax), %ymm19 {%k1} {z}174# CHECK-NEXT: 2 12 0.50 * vplzcntq (%rax){1to4}, %ymm19 {%k1} {z}175 176# CHECK: Resources:177# CHECK-NEXT: [0] - SKXDivider178# CHECK-NEXT: [1] - SKXFPDivider179# CHECK-NEXT: [2] - SKXPort0180# CHECK-NEXT: [3] - SKXPort1181# CHECK-NEXT: [4] - SKXPort2182# CHECK-NEXT: [5] - SKXPort3183# CHECK-NEXT: [6] - SKXPort4184# CHECK-NEXT: [7] - SKXPort5185# CHECK-NEXT: [8] - SKXPort6186# CHECK-NEXT: [9] - SKXPort7187 188# CHECK: Resource pressure per iteration:189# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]190# CHECK-NEXT: - - 123.50 129.50 24.00 24.00 - 213.00 - -191 192# CHECK: Resource pressure by instruction:193# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:194# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastmb2q %k0, %xmm16195# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastmb2q %k0, %ymm16196# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastmw2d %k0, %xmm16197# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastmw2d %k0, %ymm16198# CHECK-NEXT: - - 3.83 3.83 - - - 6.33 - - vpconflictd %xmm16, %xmm19199# CHECK-NEXT: - - 1.67 2.67 0.50 0.50 - 2.67 - - vpconflictd (%rax), %xmm19200# CHECK-NEXT: - - 1.67 2.67 0.50 0.50 - 2.67 - - vpconflictd (%rax){1to4}, %xmm19201# CHECK-NEXT: - - 3.83 3.83 - - - 6.33 - - vpconflictd %xmm16, %xmm19 {%k1}202# CHECK-NEXT: - - 1.67 2.67 0.50 0.50 - 2.67 - - vpconflictd (%rax), %xmm19 {%k1}203# CHECK-NEXT: - - 1.67 2.67 0.50 0.50 - 2.67 - - vpconflictd (%rax){1to4}, %xmm19 {%k1}204# CHECK-NEXT: - - 3.83 3.83 - - - 6.33 - - vpconflictd %xmm16, %xmm19 {%k1} {z}205# CHECK-NEXT: - - 1.67 2.67 0.50 0.50 - 2.67 - - vpconflictd (%rax), %xmm19 {%k1} {z}206# CHECK-NEXT: - - 1.67 2.67 0.50 0.50 - 2.67 - - vpconflictd (%rax){1to4}, %xmm19 {%k1} {z}207# CHECK-NEXT: - - 5.17 5.17 - - - 10.67 - - vpconflictd %ymm16, %ymm19208# CHECK-NEXT: - - 5.17 5.17 0.50 0.50 - 10.67 - - vpconflictd (%rax), %ymm19209# CHECK-NEXT: - - 5.17 5.17 0.50 0.50 - 10.67 - - vpconflictd (%rax){1to8}, %ymm19210# CHECK-NEXT: - - 5.17 5.17 - - - 10.67 - - vpconflictd %ymm16, %ymm19 {%k1}211# CHECK-NEXT: - - 5.17 5.17 0.50 0.50 - 10.67 - - vpconflictd (%rax), %ymm19 {%k1}212# CHECK-NEXT: - - 5.17 5.17 0.50 0.50 - 10.67 - - vpconflictd (%rax){1to8}, %ymm19 {%k1}213# CHECK-NEXT: - - 5.17 5.17 - - - 10.67 - - vpconflictd %ymm16, %ymm19 {%k1} {z}214# CHECK-NEXT: - - 5.17 5.17 0.50 0.50 - 10.67 - - vpconflictd (%rax), %ymm19 {%k1} {z}215# CHECK-NEXT: - - 5.17 5.17 0.50 0.50 - 10.67 - - vpconflictd (%rax){1to8}, %ymm19 {%k1} {z}216# CHECK-NEXT: - - 0.33 0.33 - - - 2.33 - - vpconflictq %xmm16, %xmm19217# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 2.33 - - vpconflictq (%rax), %xmm19218# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 2.33 - - vpconflictq (%rax){1to2}, %xmm19219# CHECK-NEXT: - - 0.33 0.33 - - - 2.33 - - vpconflictq %xmm16, %xmm19 {%k1}220# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 2.33 - - vpconflictq (%rax), %xmm19 {%k1}221# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 2.33 - - vpconflictq (%rax){1to2}, %xmm19 {%k1}222# CHECK-NEXT: - - 0.33 0.33 - - - 2.33 - - vpconflictq %xmm16, %xmm19 {%k1} {z}223# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 2.33 - - vpconflictq (%rax), %xmm19 {%k1} {z}224# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 2.33 - - vpconflictq (%rax){1to2}, %xmm19 {%k1} {z}225# CHECK-NEXT: - - 3.83 3.83 - - - 6.33 - - vpconflictq %ymm16, %ymm19226# CHECK-NEXT: - - 3.83 3.83 0.50 0.50 - 6.33 - - vpconflictq (%rax), %ymm19227# CHECK-NEXT: - - 3.83 3.83 0.50 0.50 - 6.33 - - vpconflictq (%rax){1to4}, %ymm19228# CHECK-NEXT: - - 3.83 3.83 - - - 6.33 - - vpconflictq %ymm16, %ymm19 {%k1}229# CHECK-NEXT: - - 3.83 3.83 0.50 0.50 - 6.33 - - vpconflictq (%rax), %ymm19 {%k1}230# CHECK-NEXT: - - 3.83 3.83 0.50 0.50 - 6.33 - - vpconflictq (%rax){1to4}, %ymm19 {%k1}231# CHECK-NEXT: - - 3.83 3.83 - - - 6.33 - - vpconflictq %ymm16, %ymm19 {%k1} {z}232# CHECK-NEXT: - - 3.83 3.83 0.50 0.50 - 6.33 - - vpconflictq (%rax), %ymm19 {%k1} {z}233# CHECK-NEXT: - - 3.83 3.83 0.50 0.50 - 6.33 - - vpconflictq (%rax){1to4}, %ymm19 {%k1} {z}234# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntd %xmm16, %xmm19235# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax), %xmm19236# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax){1to4}, %xmm19237# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntd %xmm16, %xmm19 {%k1}238# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax), %xmm19 {%k1}239# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax){1to4}, %xmm19 {%k1}240# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntd %xmm16, %xmm19 {%k1} {z}241# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax), %xmm19 {%k1} {z}242# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax){1to4}, %xmm19 {%k1} {z}243# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntd %ymm16, %ymm19244# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax), %ymm19245# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax){1to8}, %ymm19246# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntd %ymm16, %ymm19 {%k1}247# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax), %ymm19 {%k1}248# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax){1to8}, %ymm19 {%k1}249# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntd %ymm16, %ymm19 {%k1} {z}250# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax), %ymm19 {%k1} {z}251# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntd (%rax){1to8}, %ymm19 {%k1} {z}252# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntq %xmm16, %xmm19253# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax), %xmm19254# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax){1to2}, %xmm19255# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntq %xmm16, %xmm19 {%k1}256# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax), %xmm19 {%k1}257# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax){1to2}, %xmm19 {%k1}258# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntq %xmm16, %xmm19 {%k1} {z}259# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax), %xmm19 {%k1} {z}260# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax){1to2}, %xmm19 {%k1} {z}261# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntq %ymm16, %ymm19262# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax), %ymm19263# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax){1to4}, %ymm19264# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntq %ymm16, %ymm19 {%k1}265# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax), %ymm19 {%k1}266# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax){1to4}, %ymm19 {%k1}267# CHECK-NEXT: - - 0.50 0.50 - - - - - - vplzcntq %ymm16, %ymm19 {%k1} {z}268# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax), %ymm19 {%k1} {z}269# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vplzcntq (%rax){1to4}, %ymm19 {%k1} {z}270