1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py 2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver3 -timeline -iterations=2 < %s | FileCheck %s 3 4# LLVM-MCA-BEGIN 5mulxl %eax, %eax, %ecx 6# LLVM-MCA-END 7 8# LLVM-MCA-BEGIN 9mulxq %rax, %rax, %rcx 10# LLVM-MCA-END 11 12# CHECK: [0] Code Region 13 14# CHECK: Iterations: 2 15# CHECK-NEXT: Instructions: 2 16# CHECK-NEXT: Total Cycles: 10 17# CHECK-NEXT: Total uOps: 4 18 19# CHECK: Dispatch Width: 6 20# CHECK-NEXT: uOps Per Cycle: 0.40 21# CHECK-NEXT: IPC: 0.20 22# CHECK-NEXT: Block RThroughput: 1.0 23 24# CHECK: Instruction Info: 25# CHECK-NEXT: [1]: #uOps 26# CHECK-NEXT: [2]: Latency 27# CHECK-NEXT: [3]: RThroughput 28# CHECK-NEXT: [4]: MayLoad 29# CHECK-NEXT: [5]: MayStore 30# CHECK-NEXT: [6]: HasSideEffects (U) 31 32# CHECK: [1] [2] [3] [4] [5] [6] Instructions: 33# CHECK-NEXT: 2 4 1.00 mulxl %eax, %eax, %ecx 34 35# CHECK: Resources: 36# CHECK-NEXT: [0] - Zn3AGU0 37# CHECK-NEXT: [1] - Zn3AGU1 38# CHECK-NEXT: [2] - Zn3AGU2 39# CHECK-NEXT: [3] - Zn3ALU0 40# CHECK-NEXT: [4] - Zn3ALU1 41# CHECK-NEXT: [5] - Zn3ALU2 42# CHECK-NEXT: [6] - Zn3ALU3 43# CHECK-NEXT: [7] - Zn3BRU1 44# CHECK-NEXT: [8] - Zn3FP0 45# CHECK-NEXT: [9] - Zn3FP1 46# CHECK-NEXT: [10] - Zn3FP2 47# CHECK-NEXT: [11] - Zn3FP3 48# CHECK-NEXT: [12.0] - Zn3FP45 49# CHECK-NEXT: [12.1] - Zn3FP45 50# CHECK-NEXT: [13] - Zn3FPSt 51# CHECK-NEXT: [14.0] - Zn3LSU 52# CHECK-NEXT: [14.1] - Zn3LSU 53# CHECK-NEXT: [14.2] - Zn3LSU 54# CHECK-NEXT: [15.0] - Zn3Load 55# CHECK-NEXT: [15.1] - Zn3Load 56# CHECK-NEXT: [15.2] - Zn3Load 57# CHECK-NEXT: [16.0] - Zn3Store 58# CHECK-NEXT: [16.1] - Zn3Store 59 60# CHECK: Resource pressure per iteration: 61# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] 62# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - 63 64# CHECK: Resource pressure by instruction: 65# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] Instructions: 66# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - mulxl %eax, %eax, %ecx 67 68# CHECK: Timeline view: 69# CHECK-NEXT: Index 0123456789 70 71# CHECK: [0,0] DeeeeER . mulxl %eax, %eax, %ecx 72# CHECK-NEXT: [1,0] D===eeeeER mulxl %eax, %eax, %ecx 73 74# CHECK: Average Wait times (based on the timeline view): 75# CHECK-NEXT: [0]: Executions 76# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue 77# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready 78# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage 79 80# CHECK: [0] [1] [2] [3] 81# CHECK-NEXT: 0. 2 2.5 0.5 0.0 mulxl %eax, %eax, %ecx 82 83# CHECK: [1] Code Region 84 85# CHECK: Iterations: 2 86# CHECK-NEXT: Instructions: 2 87# CHECK-NEXT: Total Cycles: 10 88# CHECK-NEXT: Total uOps: 4 89 90# CHECK: Dispatch Width: 6 91# CHECK-NEXT: uOps Per Cycle: 0.40 92# CHECK-NEXT: IPC: 0.20 93# CHECK-NEXT: Block RThroughput: 1.0 94 95# CHECK: Instruction Info: 96# CHECK-NEXT: [1]: #uOps 97# CHECK-NEXT: [2]: Latency 98# CHECK-NEXT: [3]: RThroughput 99# CHECK-NEXT: [4]: MayLoad 100# CHECK-NEXT: [5]: MayStore 101# CHECK-NEXT: [6]: HasSideEffects (U) 102 103# CHECK: [1] [2] [3] [4] [5] [6] Instructions: 104# CHECK-NEXT: 2 4 1.00 mulxq %rax, %rax, %rcx 105 106# CHECK: Resources: 107# CHECK-NEXT: [0] - Zn3AGU0 108# CHECK-NEXT: [1] - Zn3AGU1 109# CHECK-NEXT: [2] - Zn3AGU2 110# CHECK-NEXT: [3] - Zn3ALU0 111# CHECK-NEXT: [4] - Zn3ALU1 112# CHECK-NEXT: [5] - Zn3ALU2 113# CHECK-NEXT: [6] - Zn3ALU3 114# CHECK-NEXT: [7] - Zn3BRU1 115# CHECK-NEXT: [8] - Zn3FP0 116# CHECK-NEXT: [9] - Zn3FP1 117# CHECK-NEXT: [10] - Zn3FP2 118# CHECK-NEXT: [11] - Zn3FP3 119# CHECK-NEXT: [12.0] - Zn3FP45 120# CHECK-NEXT: [12.1] - Zn3FP45 121# CHECK-NEXT: [13] - Zn3FPSt 122# CHECK-NEXT: [14.0] - Zn3LSU 123# CHECK-NEXT: [14.1] - Zn3LSU 124# CHECK-NEXT: [14.2] - Zn3LSU 125# CHECK-NEXT: [15.0] - Zn3Load 126# CHECK-NEXT: [15.1] - Zn3Load 127# CHECK-NEXT: [15.2] - Zn3Load 128# CHECK-NEXT: [16.0] - Zn3Store 129# CHECK-NEXT: [16.1] - Zn3Store 130 131# CHECK: Resource pressure per iteration: 132# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] 133# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - 134 135# CHECK: Resource pressure by instruction: 136# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] Instructions: 137# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - mulxq %rax, %rax, %rcx 138 139# CHECK: Timeline view: 140# CHECK-NEXT: Index 0123456789 141 142# CHECK: [0,0] DeeeeER . mulxq %rax, %rax, %rcx 143# CHECK-NEXT: [1,0] D===eeeeER mulxq %rax, %rax, %rcx 144 145# CHECK: Average Wait times (based on the timeline view): 146# CHECK-NEXT: [0]: Executions 147# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue 148# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready 149# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage 150 151# CHECK: [0] [1] [2] [3] 152# CHECK-NEXT: 0. 2 2.5 0.5 0.0 mulxq %rax, %rax, %rcx 153