137 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver2 -timeline -iterations=2 < %s | FileCheck %s3 4# PR51494: A read-advance on the implicit read of EDX/RDX was missing.5 6# LLVM-MCA-BEGIN7mulxl (%rdi), %eax, %edx8# LLVM-MCA-END9 10# LLVM-MCA-BEGIN11mulxq (%rdi), %rax, %rdx12# LLVM-MCA-END13 14# CHECK: [0] Code Region15 16# CHECK: Iterations: 217# CHECK-NEXT: Instructions: 218# CHECK-NEXT: Total Cycles: 1319# CHECK-NEXT: Total uOps: 220 21# CHECK: Dispatch Width: 422# CHECK-NEXT: uOps Per Cycle: 0.1523# CHECK-NEXT: IPC: 0.1524# CHECK-NEXT: Block RThroughput: 2.025 26# CHECK: Instruction Info:27# CHECK-NEXT: [1]: #uOps28# CHECK-NEXT: [2]: Latency29# CHECK-NEXT: [3]: RThroughput30# CHECK-NEXT: [4]: MayLoad31# CHECK-NEXT: [5]: MayStore32# CHECK-NEXT: [6]: HasSideEffects (U)33 34# CHECK: [1] [2] [3] [4] [5] [6] Instructions:35# CHECK-NEXT: 1 7 2.00 * mulxl (%rdi), %eax, %edx36 37# CHECK: Resources:38# CHECK-NEXT: [0] - Zn2AGU039# CHECK-NEXT: [1] - Zn2AGU140# CHECK-NEXT: [2] - Zn2AGU241# CHECK-NEXT: [3] - Zn2ALU042# CHECK-NEXT: [4] - Zn2ALU143# CHECK-NEXT: [5] - Zn2ALU244# CHECK-NEXT: [6] - Zn2ALU345# CHECK-NEXT: [7] - Zn2Divider46# CHECK-NEXT: [8] - Zn2FPU047# CHECK-NEXT: [9] - Zn2FPU148# CHECK-NEXT: [10] - Zn2FPU249# CHECK-NEXT: [11] - Zn2FPU350# CHECK-NEXT: [12] - Zn2Multiplier51 52# CHECK: Resource pressure per iteration:53# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]54# CHECK-NEXT: - 0.50 0.50 - 1.00 - - - - - - - 2.0055 56# CHECK: Resource pressure by instruction:57# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:58# CHECK-NEXT: - 0.50 0.50 - 1.00 - - - - - - - 2.00 mulxl (%rdi), %eax, %edx59 60# CHECK: Timeline view:61# CHECK-NEXT: 01262# CHECK-NEXT: Index 012345678963 64# CHECK: [0,0] DeeeeeeeER. . mulxl (%rdi), %eax, %edx65# CHECK-NEXT: [1,0] D===eeeeeeeER mulxl (%rdi), %eax, %edx66 67# CHECK: Average Wait times (based on the timeline view):68# CHECK-NEXT: [0]: Executions69# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue70# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready71# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage72 73# CHECK: [0] [1] [2] [3]74# CHECK-NEXT: 0. 2 2.5 0.5 0.0 mulxl (%rdi), %eax, %edx75 76# CHECK: [1] Code Region77 78# CHECK: Iterations: 279# CHECK-NEXT: Instructions: 280# CHECK-NEXT: Total Cycles: 1381# CHECK-NEXT: Total uOps: 282 83# CHECK: Dispatch Width: 484# CHECK-NEXT: uOps Per Cycle: 0.1585# CHECK-NEXT: IPC: 0.1586# CHECK-NEXT: Block RThroughput: 2.087 88# CHECK: Instruction Info:89# CHECK-NEXT: [1]: #uOps90# CHECK-NEXT: [2]: Latency91# CHECK-NEXT: [3]: RThroughput92# CHECK-NEXT: [4]: MayLoad93# CHECK-NEXT: [5]: MayStore94# CHECK-NEXT: [6]: HasSideEffects (U)95 96# CHECK: [1] [2] [3] [4] [5] [6] Instructions:97# CHECK-NEXT: 1 7 2.00 * mulxq (%rdi), %rax, %rdx98 99# CHECK: Resources:100# CHECK-NEXT: [0] - Zn2AGU0101# CHECK-NEXT: [1] - Zn2AGU1102# CHECK-NEXT: [2] - Zn2AGU2103# CHECK-NEXT: [3] - Zn2ALU0104# CHECK-NEXT: [4] - Zn2ALU1105# CHECK-NEXT: [5] - Zn2ALU2106# CHECK-NEXT: [6] - Zn2ALU3107# CHECK-NEXT: [7] - Zn2Divider108# CHECK-NEXT: [8] - Zn2FPU0109# CHECK-NEXT: [9] - Zn2FPU1110# CHECK-NEXT: [10] - Zn2FPU2111# CHECK-NEXT: [11] - Zn2FPU3112# CHECK-NEXT: [12] - Zn2Multiplier113 114# CHECK: Resource pressure per iteration:115# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]116# CHECK-NEXT: - 0.50 0.50 - 1.00 - - - - - - - 2.00117 118# CHECK: Resource pressure by instruction:119# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:120# CHECK-NEXT: - 0.50 0.50 - 1.00 - - - - - - - 2.00 mulxq (%rdi), %rax, %rdx121 122# CHECK: Timeline view:123# CHECK-NEXT: 012124# CHECK-NEXT: Index 0123456789125 126# CHECK: [0,0] DeeeeeeeER. . mulxq (%rdi), %rax, %rdx127# CHECK-NEXT: [1,0] D===eeeeeeeER mulxq (%rdi), %rax, %rdx128 129# CHECK: Average Wait times (based on the timeline view):130# CHECK-NEXT: [0]: Executions131# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue132# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready133# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage134 135# CHECK: [0] [1] [2] [3]136# CHECK-NEXT: 0. 2 2.5 0.5 0.0 mulxq (%rdi), %rax, %rdx137