268 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -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: 1 1 0.50 vpconflictd %xmm16, %xmm19104# CHECK-NEXT: 2 7 0.50 * vpconflictd (%rax), %xmm19105# CHECK-NEXT: 2 7 0.50 * vpconflictd (%rax){1to4}, %xmm19106# CHECK-NEXT: 1 1 0.50 vpconflictd %xmm16, %xmm19 {%k1}107# CHECK-NEXT: 2 7 0.50 * vpconflictd (%rax), %xmm19 {%k1}108# CHECK-NEXT: 2 7 0.50 * vpconflictd (%rax){1to4}, %xmm19 {%k1}109# CHECK-NEXT: 1 1 0.50 vpconflictd %xmm16, %xmm19 {%k1} {z}110# CHECK-NEXT: 2 7 0.50 * vpconflictd (%rax), %xmm19 {%k1} {z}111# CHECK-NEXT: 2 7 0.50 * vpconflictd (%rax){1to4}, %xmm19 {%k1} {z}112# CHECK-NEXT: 1 1 0.50 vpconflictd %ymm16, %ymm19113# CHECK-NEXT: 2 8 0.50 * vpconflictd (%rax), %ymm19114# CHECK-NEXT: 2 8 0.50 * vpconflictd (%rax){1to8}, %ymm19115# CHECK-NEXT: 1 1 0.50 vpconflictd %ymm16, %ymm19 {%k1}116# CHECK-NEXT: 2 8 0.50 * vpconflictd (%rax), %ymm19 {%k1}117# CHECK-NEXT: 2 8 0.50 * vpconflictd (%rax){1to8}, %ymm19 {%k1}118# CHECK-NEXT: 1 1 0.50 vpconflictd %ymm16, %ymm19 {%k1} {z}119# CHECK-NEXT: 2 8 0.50 * vpconflictd (%rax), %ymm19 {%k1} {z}120# CHECK-NEXT: 2 8 0.50 * vpconflictd (%rax){1to8}, %ymm19 {%k1} {z}121# CHECK-NEXT: 1 1 0.50 vpconflictq %xmm16, %xmm19122# CHECK-NEXT: 2 7 0.50 * vpconflictq (%rax), %xmm19123# CHECK-NEXT: 2 7 0.50 * vpconflictq (%rax){1to2}, %xmm19124# CHECK-NEXT: 1 1 0.50 vpconflictq %xmm16, %xmm19 {%k1}125# CHECK-NEXT: 2 7 0.50 * vpconflictq (%rax), %xmm19 {%k1}126# CHECK-NEXT: 2 7 0.50 * vpconflictq (%rax){1to2}, %xmm19 {%k1}127# CHECK-NEXT: 1 1 0.50 vpconflictq %xmm16, %xmm19 {%k1} {z}128# CHECK-NEXT: 2 7 0.50 * vpconflictq (%rax), %xmm19 {%k1} {z}129# CHECK-NEXT: 2 7 0.50 * vpconflictq (%rax){1to2}, %xmm19 {%k1} {z}130# CHECK-NEXT: 1 1 0.50 vpconflictq %ymm16, %ymm19131# CHECK-NEXT: 2 8 0.50 * vpconflictq (%rax), %ymm19132# CHECK-NEXT: 2 8 0.50 * vpconflictq (%rax){1to4}, %ymm19133# CHECK-NEXT: 1 1 0.50 vpconflictq %ymm16, %ymm19 {%k1}134# CHECK-NEXT: 2 8 0.50 * vpconflictq (%rax), %ymm19 {%k1}135# CHECK-NEXT: 2 8 0.50 * vpconflictq (%rax){1to4}, %ymm19 {%k1}136# CHECK-NEXT: 1 1 0.50 vpconflictq %ymm16, %ymm19 {%k1} {z}137# CHECK-NEXT: 2 8 0.50 * vpconflictq (%rax), %ymm19 {%k1} {z}138# CHECK-NEXT: 2 8 0.50 * vpconflictq (%rax){1to4}, %ymm19 {%k1} {z}139# CHECK-NEXT: 1 5 1.00 vplzcntd %xmm16, %xmm19140# CHECK-NEXT: 2 11 1.00 * vplzcntd (%rax), %xmm19141# CHECK-NEXT: 2 11 1.00 * vplzcntd (%rax){1to4}, %xmm19142# CHECK-NEXT: 1 5 1.00 vplzcntd %xmm16, %xmm19 {%k1}143# CHECK-NEXT: 2 11 1.00 * vplzcntd (%rax), %xmm19 {%k1}144# CHECK-NEXT: 2 11 1.00 * vplzcntd (%rax){1to4}, %xmm19 {%k1}145# CHECK-NEXT: 1 5 1.00 vplzcntd %xmm16, %xmm19 {%k1} {z}146# CHECK-NEXT: 2 11 1.00 * vplzcntd (%rax), %xmm19 {%k1} {z}147# CHECK-NEXT: 2 11 1.00 * vplzcntd (%rax){1to4}, %xmm19 {%k1} {z}148# CHECK-NEXT: 1 5 1.00 vplzcntd %ymm16, %ymm19149# CHECK-NEXT: 2 12 1.00 * vplzcntd (%rax), %ymm19150# CHECK-NEXT: 2 12 1.00 * vplzcntd (%rax){1to8}, %ymm19151# CHECK-NEXT: 1 5 1.00 vplzcntd %ymm16, %ymm19 {%k1}152# CHECK-NEXT: 2 12 1.00 * vplzcntd (%rax), %ymm19 {%k1}153# CHECK-NEXT: 2 12 1.00 * vplzcntd (%rax){1to8}, %ymm19 {%k1}154# CHECK-NEXT: 1 5 1.00 vplzcntd %ymm16, %ymm19 {%k1} {z}155# CHECK-NEXT: 2 12 1.00 * vplzcntd (%rax), %ymm19 {%k1} {z}156# CHECK-NEXT: 2 12 1.00 * vplzcntd (%rax){1to8}, %ymm19 {%k1} {z}157# CHECK-NEXT: 1 5 1.00 vplzcntq %xmm16, %xmm19158# CHECK-NEXT: 2 11 1.00 * vplzcntq (%rax), %xmm19159# CHECK-NEXT: 2 11 1.00 * vplzcntq (%rax){1to2}, %xmm19160# CHECK-NEXT: 1 5 1.00 vplzcntq %xmm16, %xmm19 {%k1}161# CHECK-NEXT: 2 11 1.00 * vplzcntq (%rax), %xmm19 {%k1}162# CHECK-NEXT: 2 11 1.00 * vplzcntq (%rax){1to2}, %xmm19 {%k1}163# CHECK-NEXT: 1 5 1.00 vplzcntq %xmm16, %xmm19 {%k1} {z}164# CHECK-NEXT: 2 11 1.00 * vplzcntq (%rax), %xmm19 {%k1} {z}165# CHECK-NEXT: 2 11 1.00 * vplzcntq (%rax){1to2}, %xmm19 {%k1} {z}166# CHECK-NEXT: 1 5 1.00 vplzcntq %ymm16, %ymm19167# CHECK-NEXT: 2 12 1.00 * vplzcntq (%rax), %ymm19168# CHECK-NEXT: 2 12 1.00 * vplzcntq (%rax){1to4}, %ymm19169# CHECK-NEXT: 1 5 1.00 vplzcntq %ymm16, %ymm19 {%k1}170# CHECK-NEXT: 2 12 1.00 * vplzcntq (%rax), %ymm19 {%k1}171# CHECK-NEXT: 2 12 1.00 * vplzcntq (%rax){1to4}, %ymm19 {%k1}172# CHECK-NEXT: 1 5 1.00 vplzcntq %ymm16, %ymm19 {%k1} {z}173# CHECK-NEXT: 2 12 1.00 * vplzcntq (%rax), %ymm19 {%k1} {z}174# CHECK-NEXT: 2 12 1.00 * vplzcntq (%rax){1to4}, %ymm19 {%k1} {z}175 176# CHECK: Resources:177# CHECK-NEXT: [0] - SBDivider178# CHECK-NEXT: [1] - SBFPDivider179# CHECK-NEXT: [2] - SBPort0180# CHECK-NEXT: [3] - SBPort1181# CHECK-NEXT: [4] - SBPort4182# CHECK-NEXT: [5] - SBPort5183# CHECK-NEXT: [6.0] - SBPort23184# CHECK-NEXT: [6.1] - SBPort23185 186# CHECK: Resource pressure per iteration:187# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]188# CHECK-NEXT: - - 36.00 18.00 - 22.00 24.00 24.00189 190# CHECK: Resource pressure by instruction:191# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:192# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastmb2q %k0, %xmm16193# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastmb2q %k0, %ymm16194# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastmw2d %k0, %xmm16195# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastmw2d %k0, %ymm16196# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictd %xmm16, %xmm19197# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax), %xmm19198# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax){1to4}, %xmm19199# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictd %xmm16, %xmm19 {%k1}200# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax), %xmm19 {%k1}201# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax){1to4}, %xmm19 {%k1}202# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictd %xmm16, %xmm19 {%k1} {z}203# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax), %xmm19 {%k1} {z}204# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax){1to4}, %xmm19 {%k1} {z}205# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictd %ymm16, %ymm19206# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax), %ymm19207# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax){1to8}, %ymm19208# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictd %ymm16, %ymm19 {%k1}209# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax), %ymm19 {%k1}210# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax){1to8}, %ymm19 {%k1}211# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictd %ymm16, %ymm19 {%k1} {z}212# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax), %ymm19 {%k1} {z}213# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictd (%rax){1to8}, %ymm19 {%k1} {z}214# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictq %xmm16, %xmm19215# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax), %xmm19216# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax){1to2}, %xmm19217# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictq %xmm16, %xmm19 {%k1}218# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax), %xmm19 {%k1}219# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax){1to2}, %xmm19 {%k1}220# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictq %xmm16, %xmm19 {%k1} {z}221# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax), %xmm19 {%k1} {z}222# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax){1to2}, %xmm19 {%k1} {z}223# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictq %ymm16, %ymm19224# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax), %ymm19225# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax){1to4}, %ymm19226# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictq %ymm16, %ymm19 {%k1}227# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax), %ymm19 {%k1}228# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax){1to4}, %ymm19 {%k1}229# CHECK-NEXT: - - - 0.50 - 0.50 - - vpconflictq %ymm16, %ymm19 {%k1} {z}230# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax), %ymm19 {%k1} {z}231# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpconflictq (%rax){1to4}, %ymm19 {%k1} {z}232# CHECK-NEXT: - - 1.00 - - - - - vplzcntd %xmm16, %xmm19233# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax), %xmm19234# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax){1to4}, %xmm19235# CHECK-NEXT: - - 1.00 - - - - - vplzcntd %xmm16, %xmm19 {%k1}236# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax), %xmm19 {%k1}237# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax){1to4}, %xmm19 {%k1}238# CHECK-NEXT: - - 1.00 - - - - - vplzcntd %xmm16, %xmm19 {%k1} {z}239# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax), %xmm19 {%k1} {z}240# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax){1to4}, %xmm19 {%k1} {z}241# CHECK-NEXT: - - 1.00 - - - - - vplzcntd %ymm16, %ymm19242# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax), %ymm19243# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax){1to8}, %ymm19244# CHECK-NEXT: - - 1.00 - - - - - vplzcntd %ymm16, %ymm19 {%k1}245# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax), %ymm19 {%k1}246# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax){1to8}, %ymm19 {%k1}247# CHECK-NEXT: - - 1.00 - - - - - vplzcntd %ymm16, %ymm19 {%k1} {z}248# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax), %ymm19 {%k1} {z}249# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntd (%rax){1to8}, %ymm19 {%k1} {z}250# CHECK-NEXT: - - 1.00 - - - - - vplzcntq %xmm16, %xmm19251# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax), %xmm19252# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax){1to2}, %xmm19253# CHECK-NEXT: - - 1.00 - - - - - vplzcntq %xmm16, %xmm19 {%k1}254# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax), %xmm19 {%k1}255# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax){1to2}, %xmm19 {%k1}256# CHECK-NEXT: - - 1.00 - - - - - vplzcntq %xmm16, %xmm19 {%k1} {z}257# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax), %xmm19 {%k1} {z}258# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax){1to2}, %xmm19 {%k1} {z}259# CHECK-NEXT: - - 1.00 - - - - - vplzcntq %ymm16, %ymm19260# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax), %ymm19261# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax){1to4}, %ymm19262# CHECK-NEXT: - - 1.00 - - - - - vplzcntq %ymm16, %ymm19 {%k1}263# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax), %ymm19 {%k1}264# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax){1to4}, %ymm19 {%k1}265# CHECK-NEXT: - - 1.00 - - - - - vplzcntq %ymm16, %ymm19 {%k1} {z}266# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax), %ymm19 {%k1} {z}267# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vplzcntq (%rax){1to4}, %ymm19 {%k1} {z}268