1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py 2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s 3 4vcvtne2ps2bf16 %zmm16, %zmm17, %zmm19 5vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 6vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 7vcvtne2ps2bf16 %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, %ymm19 15vcvtneps2bf16 (%rax), %ymm19 16vcvtneps2bf16 (%rax){1to16}, %ymm19 17vcvtneps2bf16 %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, %zmm19 25vdpbf16ps (%rax), %zmm17, %zmm19 26vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 27vdpbf16ps %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]: #uOps 36# CHECK-NEXT: [2]: Latency 37# CHECK-NEXT: [3]: RThroughput 38# CHECK-NEXT: [4]: MayLoad 39# CHECK-NEXT: [5]: MayStore 40# 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, %zmm19 44# CHECK-NEXT: 3 11 1.00 * vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 45# CHECK-NEXT: 3 11 1.00 * vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 46# 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, %ymm19 53# CHECK-NEXT: 3 11 1.00 * vcvtneps2bf16 (%rax), %ymm19 54# CHECK-NEXT: 3 11 1.00 * vcvtneps2bf16 (%rax){1to16}, %ymm19 55# 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, %zmm19 62# CHECK-NEXT: 2 10 0.50 * vdpbf16ps (%rax), %zmm17, %zmm19 63# CHECK-NEXT: 2 10 0.50 * vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 64# 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] - SBDivider 73# CHECK-NEXT: [1] - SBFPDivider 74# CHECK-NEXT: [2] - SBPort0 75# CHECK-NEXT: [3] - SBPort1 76# CHECK-NEXT: [4] - SBPort4 77# CHECK-NEXT: [5] - SBPort5 78# CHECK-NEXT: [6.0] - SBPort23 79# CHECK-NEXT: [6.1] - SBPort23 80 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.00 84 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, %zmm19 88# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtne2ps2bf16 (%rax), %zmm17, %zmm19 89# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtne2ps2bf16 (%rax){1to16}, %zmm17, %zmm19 90# 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, %ymm19 97# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtneps2bf16 (%rax), %ymm19 98# CHECK-NEXT: - - - 1.00 - 1.00 0.50 0.50 vcvtneps2bf16 (%rax){1to16}, %ymm19 99# 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, %zmm19 106# CHECK-NEXT: - - 0.50 0.50 - - 0.50 0.50 vdpbf16ps (%rax), %zmm17, %zmm19 107# CHECK-NEXT: - - 0.50 0.50 - - 0.50 0.50 vdpbf16ps (%rax){1to16}, %zmm17, %zmm19 108# 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