114 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 4vcvtne2ps2bf16 %zmm16, %zmm17, %zmm195vcvtne2ps2bf16 (%rax), %zmm17, %zmm196vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm197vcvtne2ps2bf16 %zmm16, %zmm17, %zmm19 {k1}8vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 {k1}9vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 {k1}10vcvtne2ps2bf16 %zmm16, %zmm17, %zmm19 {k1}{z}11vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 {k1}{z}12vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 {k1}{z}13 14vcvtneps2bf16 %zmm16, %ymm1915vcvtneps2bf16 (%rax), %ymm1916vcvtneps2bf16 (%rax){1to16}, %ymm1917vcvtneps2bf16 %zmm16, %ymm19 {k1}18vcvtneps2bf16 (%rax), %ymm19 {k1}19vcvtneps2bf16 (%rax){1to16}, %ymm19 {k1}20vcvtneps2bf16 %zmm16, %ymm19 {k1}{z}21vcvtneps2bf16 (%rax), %ymm19 {k1}{z}22vcvtneps2bf16 (%rax){1to16}, %ymm19 {k1}{z}23 24vdpbf16ps %zmm16, %zmm17, %zmm1925vdpbf16ps (%rax), %zmm17, %zmm1926vdpbf16ps (%rax){1to16}, %zmm17, %zmm1927vdpbf16ps %zmm16, %zmm17, %zmm19 {k1}28vdpbf16ps (%rax), %zmm17, %zmm19 {k1}29vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 {k1}30vdpbf16ps %zmm16, %zmm17, %zmm19 {k1}{z}31vdpbf16ps (%rax), %zmm17, %zmm19 {k1}{z}32vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 {k1}{z}33 34# CHECK: Instruction Info:35# CHECK-NEXT: [1]: #uOps36# CHECK-NEXT: [2]: Latency37# CHECK-NEXT: [3]: RThroughput38# CHECK-NEXT: [4]: MayLoad39# CHECK-NEXT: [5]: MayStore40# CHECK-NEXT: [6]: HasSideEffects (U)41 42# CHECK: [1] [2] [3] [4] [5] [6] Instructions:43# CHECK-NEXT: 2 4 1.00 vcvtne2ps2bf16 %zmm16, %zmm17, %zmm1944# CHECK-NEXT: 3 11 1.00 * vcvtne2ps2bf16 (%rax), %zmm17, %zmm1945# CHECK-NEXT: 3 11 1.00 * vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm1946# CHECK-NEXT: 2 4 1.00 vcvtne2ps2bf16 %zmm16, %zmm17, %zmm19 {%k1}47# CHECK-NEXT: 3 11 1.00 * vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 {%k1}48# CHECK-NEXT: 3 11 1.00 * vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 {%k1}49# CHECK-NEXT: 2 4 1.00 vcvtne2ps2bf16 %zmm16, %zmm17, %zmm19 {%k1} {z}50# CHECK-NEXT: 3 11 1.00 * vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 {%k1} {z}51# CHECK-NEXT: 3 11 1.00 * vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}52# CHECK-NEXT: 2 4 1.00 vcvtneps2bf16 %zmm16, %ymm1953# CHECK-NEXT: 3 11 1.00 * vcvtneps2bf16 (%rax), %ymm1954# CHECK-NEXT: 3 11 1.00 * vcvtneps2bf16 (%rax){1to16}, %ymm1955# CHECK-NEXT: 2 4 1.00 vcvtneps2bf16 %zmm16, %ymm19 {%k1}56# CHECK-NEXT: 3 11 1.00 * vcvtneps2bf16 (%rax), %ymm19 {%k1}57# CHECK-NEXT: 3 11 1.00 * vcvtneps2bf16 (%rax){1to16}, %ymm19 {%k1}58# CHECK-NEXT: 2 4 1.00 vcvtneps2bf16 %zmm16, %ymm19 {%k1} {z}59# CHECK-NEXT: 3 11 1.00 * vcvtneps2bf16 (%rax), %ymm19 {%k1} {z}60# CHECK-NEXT: 3 11 1.00 * vcvtneps2bf16 (%rax){1to16}, %ymm19 {%k1} {z}61# CHECK-NEXT: 1 5 0.50 vdpbf16ps %zmm16, %zmm17, %zmm1962# CHECK-NEXT: 2 10 0.50 * vdpbf16ps (%rax), %zmm17, %zmm1963# CHECK-NEXT: 2 10 0.50 * vdpbf16ps (%rax){1to16}, %zmm17, %zmm1964# CHECK-NEXT: 1 5 0.50 vdpbf16ps %zmm16, %zmm17, %zmm19 {%k1}65# CHECK-NEXT: 2 10 0.50 * vdpbf16ps (%rax), %zmm17, %zmm19 {%k1}66# CHECK-NEXT: 2 10 0.50 * vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 {%k1}67# CHECK-NEXT: 1 5 0.50 vdpbf16ps %zmm16, %zmm17, %zmm19 {%k1} {z}68# CHECK-NEXT: 2 10 0.50 * vdpbf16ps (%rax), %zmm17, %zmm19 {%k1} {z}69# CHECK-NEXT: 2 10 0.50 * vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}70 71# CHECK: Resources:72# CHECK-NEXT: [0] - SBDivider73# CHECK-NEXT: [1] - SBFPDivider74# CHECK-NEXT: [2] - SBPort075# CHECK-NEXT: [3] - SBPort176# CHECK-NEXT: [4] - SBPort477# CHECK-NEXT: [5] - SBPort578# CHECK-NEXT: [6.0] - SBPort2379# CHECK-NEXT: [6.1] - SBPort2380 81# CHECK: Resource pressure per iteration:82# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]83# CHECK-NEXT: - - 4.50 22.50 - 18.00 9.00 9.0084 85# CHECK: Resource pressure by instruction:86# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:87# CHECK-NEXT: - - - 1.00 - 1.00 - - vcvtne2ps2bf16 %zmm16, %zmm17, %zmm1988# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtne2ps2bf16 (%rax), %zmm17, %zmm1989# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm1990# CHECK-NEXT: - - - 1.00 - 1.00 - - vcvtne2ps2bf16 %zmm16, %zmm17, %zmm19 {%k1}91# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 {%k1}92# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 {%k1}93# CHECK-NEXT: - - - 1.00 - 1.00 - - vcvtne2ps2bf16 %zmm16, %zmm17, %zmm19 {%k1} {z}94# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 {%k1} {z}95# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}96# CHECK-NEXT: - - - 1.00 - 1.00 - - vcvtneps2bf16 %zmm16, %ymm1997# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtneps2bf16 (%rax), %ymm1998# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtneps2bf16 (%rax){1to16}, %ymm1999# CHECK-NEXT: - - - 1.00 - 1.00 - - vcvtneps2bf16 %zmm16, %ymm19 {%k1}100# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtneps2bf16 (%rax), %ymm19 {%k1}101# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtneps2bf16 (%rax){1to16}, %ymm19 {%k1}102# CHECK-NEXT: - - - 1.00 - 1.00 - - vcvtneps2bf16 %zmm16, %ymm19 {%k1} {z}103# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtneps2bf16 (%rax), %ymm19 {%k1} {z}104# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtneps2bf16 (%rax){1to16}, %ymm19 {%k1} {z}105# CHECK-NEXT: - - 0.50 0.50 - - - - vdpbf16ps %zmm16, %zmm17, %zmm19106# CHECK-NEXT: - - 0.50 0.50 - - 0.50 0.50 vdpbf16ps (%rax), %zmm17, %zmm19107# CHECK-NEXT: - - 0.50 0.50 - - 0.50 0.50 vdpbf16ps (%rax){1to16}, %zmm17, %zmm19108# CHECK-NEXT: - - 0.50 0.50 - - - - vdpbf16ps %zmm16, %zmm17, %zmm19 {%k1}109# CHECK-NEXT: - - 0.50 0.50 - - 0.50 0.50 vdpbf16ps (%rax), %zmm17, %zmm19 {%k1}110# CHECK-NEXT: - - 0.50 0.50 - - 0.50 0.50 vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 {%k1}111# CHECK-NEXT: - - 0.50 0.50 - - - - vdpbf16ps %zmm16, %zmm17, %zmm19 {%k1} {z}112# CHECK-NEXT: - - 0.50 0.50 - - 0.50 0.50 vdpbf16ps (%rax), %zmm17, %zmm19 {%k1} {z}113# CHECK-NEXT: - - 0.50 0.50 - - 0.50 0.50 vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}114