1 # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py 2 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -timeline -timeline-max-iterations=3 -iterations=1500 < %s | FileCheck %s 3 4 # perf stat reports an IPC of 1.00 for this code block. 5 6 # Although both SBB are dependency breaking instructions, there is still an 7 # implicit dependency on EFLAGS which limits the ILP. So, the hardware backend 8 # can only execute one instruction per cycle. 9 10 sbb %edx, %edx 11 sbb %eax, %eax 12 13 # CHECK: Iterations: 1500 14 # CHECK-NEXT: Instructions: 3000 15 # CHECK-NEXT: Total Cycles: 3003 16 # CHECK-NEXT: Dispatch Width: 2 17 # CHECK-NEXT: IPC: 1.00 18 # CHECK-NEXT: Block RThroughput: 2.0 19 20 # CHECK: Instruction Info: 21 # CHECK-NEXT: [1]: #uOps 22 # CHECK-NEXT: [2]: Latency 23 # CHECK-NEXT: [3]: RThroughput 24 # CHECK-NEXT: [4]: MayLoad 25 # CHECK-NEXT: [5]: MayStore 26 # CHECK-NEXT: [6]: HasSideEffects (U) 27 28 # CHECK: [1] [2] [3] [4] [5] [6] Instructions: 29 # CHECK-NEXT: 1 1 1.00 sbbl %edx, %edx 30 # CHECK-NEXT: 1 1 1.00 sbbl %eax, %eax 31 32 # CHECK: Resources: 33 # CHECK-NEXT: [0] - JALU0 34 # CHECK-NEXT: [1] - JALU1 35 # CHECK-NEXT: [2] - JDiv 36 # CHECK-NEXT: [3] - JFPA 37 # CHECK-NEXT: [4] - JFPM 38 # CHECK-NEXT: [5] - JFPU0 39 # CHECK-NEXT: [6] - JFPU1 40 # CHECK-NEXT: [7] - JLAGU 41 # CHECK-NEXT: [8] - JMul 42 # CHECK-NEXT: [9] - JSAGU 43 # CHECK-NEXT: [10] - JSTC 44 # CHECK-NEXT: [11] - JVALU0 45 # CHECK-NEXT: [12] - JVALU1 46 # CHECK-NEXT: [13] - JVIMUL 47 48 # CHECK: Resource pressure per iteration: 49 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 50 # CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - 51 52 # CHECK: Resource pressure by instruction: 53 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: 54 # CHECK-NEXT: - 2.00 - - - - - - - - - - - - sbbl %edx, %edx 55 # CHECK-NEXT: 2.00 - - - - - - - - - - - - - sbbl %eax, %eax 56 57 # CHECK: Timeline view: 58 # CHECK-NEXT: Index 012345678 59 60 # CHECK: [0,0] DeER . . sbbl %edx, %edx 61 # CHECK-NEXT: [0,1] D=eER. . sbbl %eax, %eax 62 # CHECK-NEXT: [1,0] .D=eER . sbbl %edx, %edx 63 # CHECK-NEXT: [1,1] .D==eER . sbbl %eax, %eax 64 # CHECK-NEXT: [2,0] . D==eER. sbbl %edx, %edx 65 # CHECK-NEXT: [2,1] . D===eER sbbl %eax, %eax 66 67 # CHECK: Average Wait times (based on the timeline view): 68 # CHECK-NEXT: [0]: Executions 69 # CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue 70 # CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready 71 # CHECK-NEXT: [3]: Average time elapsed from WB until retire stage 72 73 # CHECK: [0] [1] [2] [3] 74 # CHECK-NEXT: 0. 3 2.0 0.3 0.0 sbbl %edx, %edx 75 # CHECK-NEXT: 1. 3 3.0 0.0 0.0 sbbl %eax, %eax 76