187 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=2 -timeline < %s | FileCheck %s3 4# LLVM-MCA-BEGIN5xadd %ecx, (%rsp)6add %ecx, %ecx7add %ecx, %ecx8imul %ecx, %ecx9imul %ecx, %ecx10# LLVM-MCA-END11 12# LLVM-MCA-BEGIN13lock xadd %ecx, (%rsp)14add %ecx, %ecx15add %ecx, %ecx16imul %ecx, %ecx17imul %ecx, %ecx18# LLVM-MCA-END19 20# CHECK: [0] Code Region21 22# CHECK: Iterations: 223# CHECK-NEXT: Instructions: 1024# CHECK-NEXT: Total Cycles: 2425# CHECK-NEXT: Total uOps: 1626 27# CHECK: Dispatch Width: 228# CHECK-NEXT: uOps Per Cycle: 0.6729# CHECK-NEXT: IPC: 0.4230# CHECK-NEXT: Block RThroughput: 4.031 32# CHECK: Instruction Info:33# CHECK-NEXT: [1]: #uOps34# CHECK-NEXT: [2]: Latency35# CHECK-NEXT: [3]: RThroughput36# CHECK-NEXT: [4]: MayLoad37# CHECK-NEXT: [5]: MayStore38# CHECK-NEXT: [6]: HasSideEffects (U)39 40# CHECK: [1] [2] [3] [4] [5] [6] Instructions:41# CHECK-NEXT: 4 11 1.50 * * xaddl %ecx, (%rsp)42# CHECK-NEXT: 1 1 0.50 addl %ecx, %ecx43# CHECK-NEXT: 1 1 0.50 addl %ecx, %ecx44# CHECK-NEXT: 1 3 1.00 imull %ecx, %ecx45# CHECK-NEXT: 1 3 1.00 imull %ecx, %ecx46 47# CHECK: Resources:48# CHECK-NEXT: [0] - JALU049# CHECK-NEXT: [1] - JALU150# CHECK-NEXT: [2] - JDiv51# CHECK-NEXT: [3] - JFPA52# CHECK-NEXT: [4] - JFPM53# CHECK-NEXT: [5] - JFPU054# CHECK-NEXT: [6] - JFPU155# CHECK-NEXT: [7] - JLAGU56# CHECK-NEXT: [8] - JMul57# CHECK-NEXT: [9] - JSAGU58# CHECK-NEXT: [10] - JSTC59# CHECK-NEXT: [11] - JVALU060# CHECK-NEXT: [12] - JVALU161# CHECK-NEXT: [13] - JVIMUL62 63# CHECK: Resource pressure per iteration:64# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]65# CHECK-NEXT: 2.50 4.50 - - - - - 1.00 2.00 1.00 - - - -66 67# CHECK: Resource pressure by instruction:68# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:69# CHECK-NEXT: 1.50 1.50 - - - - - 1.00 - 1.00 - - - - xaddl %ecx, (%rsp)70# CHECK-NEXT: 1.00 - - - - - - - - - - - - - addl %ecx, %ecx71# CHECK-NEXT: - 1.00 - - - - - - - - - - - - addl %ecx, %ecx72# CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - imull %ecx, %ecx73# CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - imull %ecx, %ecx74 75# CHECK: Timeline view:76# CHECK-NEXT: 012345678977# CHECK-NEXT: Index 0123456789 012378 79# CHECK: [0,0] DeeeeeeeeeeeER . . . xaddl %ecx, (%rsp)80# CHECK-NEXT: [0,1] . D=eE-------R . . . addl %ecx, %ecx81# CHECK-NEXT: [0,2] . D==eE-------R. . . addl %ecx, %ecx82# CHECK-NEXT: [0,3] . D==eeeE----R. . . imull %ecx, %ecx83# CHECK-NEXT: [0,4] . D=====eeeE--R . . imull %ecx, %ecx84# CHECK-NEXT: [1,0] . D====eeeeeeeeeeeER . xaddl %ecx, (%rsp)85# CHECK-NEXT: [1,1] . .D=====eE-------R . addl %ecx, %ecx86# CHECK-NEXT: [1,2] . .D======eE-------R. addl %ecx, %ecx87# CHECK-NEXT: [1,3] . . D======eeeE----R. imull %ecx, %ecx88# CHECK-NEXT: [1,4] . . D=========eeeE--R imull %ecx, %ecx89 90# CHECK: Average Wait times (based on the timeline view):91# CHECK-NEXT: [0]: Executions92# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue93# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready94# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage95 96# CHECK: [0] [1] [2] [3]97# CHECK-NEXT: 0. 2 3.0 0.5 0.0 xaddl %ecx, (%rsp)98# CHECK-NEXT: 1. 2 4.0 0.0 7.0 addl %ecx, %ecx99# CHECK-NEXT: 2. 2 5.0 0.0 7.0 addl %ecx, %ecx100# CHECK-NEXT: 3. 2 5.0 0.0 4.0 imull %ecx, %ecx101# CHECK-NEXT: 4. 2 8.0 0.0 2.0 imull %ecx, %ecx102# CHECK-NEXT: 2 5.0 0.1 4.0 <total>103 104# CHECK: [1] Code Region105 106# CHECK: Iterations: 2107# CHECK-NEXT: Instructions: 10108# CHECK-NEXT: Total Cycles: 38109# CHECK-NEXT: Total uOps: 16110 111# CHECK: Dispatch Width: 2112# CHECK-NEXT: uOps Per Cycle: 0.42113# CHECK-NEXT: IPC: 0.26114# CHECK-NEXT: Block RThroughput: 16.0115 116# CHECK: Instruction Info:117# CHECK-NEXT: [1]: #uOps118# CHECK-NEXT: [2]: Latency119# CHECK-NEXT: [3]: RThroughput120# CHECK-NEXT: [4]: MayLoad121# CHECK-NEXT: [5]: MayStore122# CHECK-NEXT: [6]: HasSideEffects (U)123 124# CHECK: [1] [2] [3] [4] [5] [6] Instructions:125# CHECK-NEXT: 4 16 16.00 * * lock xaddl %ecx, (%rsp)126# CHECK-NEXT: 1 1 0.50 addl %ecx, %ecx127# CHECK-NEXT: 1 1 0.50 addl %ecx, %ecx128# CHECK-NEXT: 1 3 1.00 imull %ecx, %ecx129# CHECK-NEXT: 1 3 1.00 imull %ecx, %ecx130 131# CHECK: Resources:132# CHECK-NEXT: [0] - JALU0133# CHECK-NEXT: [1] - JALU1134# CHECK-NEXT: [2] - JDiv135# CHECK-NEXT: [3] - JFPA136# CHECK-NEXT: [4] - JFPM137# CHECK-NEXT: [5] - JFPU0138# CHECK-NEXT: [6] - JFPU1139# CHECK-NEXT: [7] - JLAGU140# CHECK-NEXT: [8] - JMul141# CHECK-NEXT: [9] - JSAGU142# CHECK-NEXT: [10] - JSTC143# CHECK-NEXT: [11] - JVALU0144# CHECK-NEXT: [12] - JVALU1145# CHECK-NEXT: [13] - JVIMUL146 147# CHECK: Resource pressure per iteration:148# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]149# CHECK-NEXT: 2.50 4.50 - - - - - 16.00 2.00 16.00 - - - -150 151# CHECK: Resource pressure by instruction:152# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:153# CHECK-NEXT: 1.50 1.50 - - - - - 16.00 - 16.00 - - - - lock xaddl %ecx, (%rsp)154# CHECK-NEXT: 1.00 - - - - - - - - - - - - - addl %ecx, %ecx155# CHECK-NEXT: - 1.00 - - - - - - - - - - - - addl %ecx, %ecx156# CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - imull %ecx, %ecx157# CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - imull %ecx, %ecx158 159# CHECK: Timeline view:160# CHECK-NEXT: 0123456789 01234567161# CHECK-NEXT: Index 0123456789 0123456789162 163# CHECK: [0,0] DeeeeeeeeeeeeeeeeER . . . . . lock xaddl %ecx, (%rsp)164# CHECK-NEXT: [0,1] . D=========eE----R . . . . . addl %ecx, %ecx165# CHECK-NEXT: [0,2] . D==========eE----R. . . . . addl %ecx, %ecx166# CHECK-NEXT: [0,3] . D==========eeeE-R. . . . . imull %ecx, %ecx167# CHECK-NEXT: [0,4] . D=============eeeER . . . . imull %ecx, %ecx168# CHECK-NEXT: [1,0] . D============eeeeeeeeeeeeeeeeER. . lock xaddl %ecx, (%rsp)169# CHECK-NEXT: [1,1] . .D=====================eE----R. . addl %ecx, %ecx170# CHECK-NEXT: [1,2] . .D======================eE----R . addl %ecx, %ecx171# CHECK-NEXT: [1,3] . . D======================eeeE-R . imull %ecx, %ecx172# CHECK-NEXT: [1,4] . . D=========================eeeER imull %ecx, %ecx173 174# CHECK: Average Wait times (based on the timeline view):175# CHECK-NEXT: [0]: Executions176# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue177# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready178# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage179 180# CHECK: [0] [1] [2] [3]181# CHECK-NEXT: 0. 2 7.0 0.5 0.0 lock xaddl %ecx, (%rsp)182# CHECK-NEXT: 1. 2 16.0 0.0 4.0 addl %ecx, %ecx183# CHECK-NEXT: 2. 2 17.0 0.0 4.0 addl %ecx, %ecx184# CHECK-NEXT: 3. 2 17.0 0.0 1.0 imull %ecx, %ecx185# CHECK-NEXT: 4. 2 20.0 0.0 0.0 imull %ecx, %ecx186# CHECK-NEXT: 2 15.4 0.1 1.8 <total>187