403 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 -timeline -timeline-max-iterations=3 < %s | FileCheck %s3 4# TODO: Fix the processor resource usage for zero-idiom YMM XOR instructions.5# Those vector XOR instructions should only consume 1cy of JFPU1 (instead6# of 2cy).7 8# LLVM-MCA-BEGIN ZERO-IDIOM-19 10vaddps %ymm0, %ymm0, %ymm111vxorps %ymm1, %ymm1, %ymm112vblendps $2, %ymm1, %ymm2, %ymm313 14# LLVM-MCA-END15 16# LLVM-MCA-BEGIN ZERO-IDIOM-217 18vaddpd %ymm0, %ymm0, %ymm119vxorpd %ymm1, %ymm1, %ymm120vblendpd $2, %ymm1, %ymm2, %ymm321 22# LLVM-MCA-END23 24# LLVM-MCA-BEGIN ZERO-IDIOM-325vaddps %ymm0, %ymm1, %ymm226vandnps %ymm2, %ymm2, %ymm327# LLVM-MCA-END28 29# LLVM-MCA-BEGIN ZERO-IDIOM-430vaddps %ymm0, %ymm1, %ymm231vandnps %ymm2, %ymm2, %ymm332# LLVM-MCA-END33 34# LLVM-MCA-BEGIN ZERO-IDIOM-535vperm2f128 $136, %ymm0, %ymm0, %ymm136vaddps %ymm1, %ymm1, %ymm037# LLVM-MCA-END38 39# CHECK: [0] Code Region - ZERO-IDIOM-140 41# CHECK: Iterations: 10042# CHECK-NEXT: Instructions: 30043# CHECK-NEXT: Total Cycles: 30444# CHECK-NEXT: Total uOps: 60045 46# CHECK: Dispatch Width: 247# CHECK-NEXT: uOps Per Cycle: 1.9748# CHECK-NEXT: IPC: 0.9949# CHECK-NEXT: Block RThroughput: 3.050 51# CHECK: Instruction Info:52# CHECK-NEXT: [1]: #uOps53# CHECK-NEXT: [2]: Latency54# CHECK-NEXT: [3]: RThroughput55# CHECK-NEXT: [4]: MayLoad56# CHECK-NEXT: [5]: MayStore57# CHECK-NEXT: [6]: HasSideEffects (U)58 59# CHECK: [1] [2] [3] [4] [5] [6] Instructions:60# CHECK-NEXT: 2 3 2.00 vaddps %ymm0, %ymm0, %ymm161# CHECK-NEXT: 2 1 0.50 vxorps %ymm1, %ymm1, %ymm162# CHECK-NEXT: 2 1 1.00 vblendps $2, %ymm1, %ymm2, %ymm363 64# CHECK: Resources:65# CHECK-NEXT: [0] - JALU066# CHECK-NEXT: [1] - JALU167# CHECK-NEXT: [2] - JDiv68# CHECK-NEXT: [3] - JFPA69# CHECK-NEXT: [4] - JFPM70# CHECK-NEXT: [5] - JFPU071# CHECK-NEXT: [6] - JFPU172# CHECK-NEXT: [7] - JLAGU73# CHECK-NEXT: [8] - JMul74# CHECK-NEXT: [9] - JSAGU75# CHECK-NEXT: [10] - JSTC76# CHECK-NEXT: [11] - JVALU077# CHECK-NEXT: [12] - JVALU178# CHECK-NEXT: [13] - JVIMUL79 80# CHECK: Resource pressure per iteration:81# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]82# CHECK-NEXT: - - - 3.00 2.00 3.00 2.00 - - - - - - -83 84# CHECK: Resource pressure by instruction:85# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:86# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vaddps %ymm0, %ymm0, %ymm187# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vxorps %ymm1, %ymm1, %ymm188# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vblendps $2, %ymm1, %ymm2, %ymm389 90# CHECK: Timeline view:91# CHECK-NEXT: 012392# CHECK-NEXT: Index 012345678993 94# CHECK: [0,0] DeeeER . . vaddps %ymm0, %ymm0, %ymm195# CHECK-NEXT: [0,1] .DeE-R . . vxorps %ymm1, %ymm1, %ymm196# CHECK-NEXT: [0,2] . DeE-R . . vblendps $2, %ymm1, %ymm2, %ymm397# CHECK-NEXT: [1,0] . DeeeER . . vaddps %ymm0, %ymm0, %ymm198# CHECK-NEXT: [1,1] . DeE-R . . vxorps %ymm1, %ymm1, %ymm199# CHECK-NEXT: [1,2] . DeE-R. . vblendps $2, %ymm1, %ymm2, %ymm3100# CHECK-NEXT: [2,0] . .D=eeeER. vaddps %ymm0, %ymm0, %ymm1101# CHECK-NEXT: [2,1] . . DeE--R. vxorps %ymm1, %ymm1, %ymm1102# CHECK-NEXT: [2,2] . . DeE--R vblendps $2, %ymm1, %ymm2, %ymm3103 104# CHECK: Average Wait times (based on the timeline view):105# CHECK-NEXT: [0]: Executions106# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue107# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready108# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage109 110# CHECK: [0] [1] [2] [3]111# CHECK-NEXT: 0. 3 1.3 1.3 0.0 vaddps %ymm0, %ymm0, %ymm1112# CHECK-NEXT: 1. 3 1.0 1.0 1.3 vxorps %ymm1, %ymm1, %ymm1113# CHECK-NEXT: 2. 3 1.0 0.0 1.3 vblendps $2, %ymm1, %ymm2, %ymm3114# CHECK-NEXT: 3 1.1 0.8 0.9 <total>115 116# CHECK: [1] Code Region - ZERO-IDIOM-2117 118# CHECK: Iterations: 100119# CHECK-NEXT: Instructions: 300120# CHECK-NEXT: Total Cycles: 304121# CHECK-NEXT: Total uOps: 600122 123# CHECK: Dispatch Width: 2124# CHECK-NEXT: uOps Per Cycle: 1.97125# CHECK-NEXT: IPC: 0.99126# CHECK-NEXT: Block RThroughput: 3.0127 128# CHECK: Instruction Info:129# CHECK-NEXT: [1]: #uOps130# CHECK-NEXT: [2]: Latency131# CHECK-NEXT: [3]: RThroughput132# CHECK-NEXT: [4]: MayLoad133# CHECK-NEXT: [5]: MayStore134# CHECK-NEXT: [6]: HasSideEffects (U)135 136# CHECK: [1] [2] [3] [4] [5] [6] Instructions:137# CHECK-NEXT: 2 3 2.00 vaddpd %ymm0, %ymm0, %ymm1138# CHECK-NEXT: 2 1 0.50 vxorpd %ymm1, %ymm1, %ymm1139# CHECK-NEXT: 2 1 1.00 vblendpd $2, %ymm1, %ymm2, %ymm3140 141# CHECK: Resources:142# CHECK-NEXT: [0] - JALU0143# CHECK-NEXT: [1] - JALU1144# CHECK-NEXT: [2] - JDiv145# CHECK-NEXT: [3] - JFPA146# CHECK-NEXT: [4] - JFPM147# CHECK-NEXT: [5] - JFPU0148# CHECK-NEXT: [6] - JFPU1149# CHECK-NEXT: [7] - JLAGU150# CHECK-NEXT: [8] - JMul151# CHECK-NEXT: [9] - JSAGU152# CHECK-NEXT: [10] - JSTC153# CHECK-NEXT: [11] - JVALU0154# CHECK-NEXT: [12] - JVALU1155# CHECK-NEXT: [13] - JVIMUL156 157# CHECK: Resource pressure per iteration:158# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]159# CHECK-NEXT: - - - 3.00 2.00 3.00 2.00 - - - - - - -160 161# CHECK: Resource pressure by instruction:162# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:163# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vaddpd %ymm0, %ymm0, %ymm1164# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vxorpd %ymm1, %ymm1, %ymm1165# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vblendpd $2, %ymm1, %ymm2, %ymm3166 167# CHECK: Timeline view:168# CHECK-NEXT: 0123169# CHECK-NEXT: Index 0123456789170 171# CHECK: [0,0] DeeeER . . vaddpd %ymm0, %ymm0, %ymm1172# CHECK-NEXT: [0,1] .DeE-R . . vxorpd %ymm1, %ymm1, %ymm1173# CHECK-NEXT: [0,2] . DeE-R . . vblendpd $2, %ymm1, %ymm2, %ymm3174# CHECK-NEXT: [1,0] . DeeeER . . vaddpd %ymm0, %ymm0, %ymm1175# CHECK-NEXT: [1,1] . DeE-R . . vxorpd %ymm1, %ymm1, %ymm1176# CHECK-NEXT: [1,2] . DeE-R. . vblendpd $2, %ymm1, %ymm2, %ymm3177# CHECK-NEXT: [2,0] . .D=eeeER. vaddpd %ymm0, %ymm0, %ymm1178# CHECK-NEXT: [2,1] . . DeE--R. vxorpd %ymm1, %ymm1, %ymm1179# CHECK-NEXT: [2,2] . . DeE--R vblendpd $2, %ymm1, %ymm2, %ymm3180 181# CHECK: Average Wait times (based on the timeline view):182# CHECK-NEXT: [0]: Executions183# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue184# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready185# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage186 187# CHECK: [0] [1] [2] [3]188# CHECK-NEXT: 0. 3 1.3 1.3 0.0 vaddpd %ymm0, %ymm0, %ymm1189# CHECK-NEXT: 1. 3 1.0 1.0 1.3 vxorpd %ymm1, %ymm1, %ymm1190# CHECK-NEXT: 2. 3 1.0 0.0 1.3 vblendpd $2, %ymm1, %ymm2, %ymm3191# CHECK-NEXT: 3 1.1 0.8 0.9 <total>192 193# CHECK: [2] Code Region - ZERO-IDIOM-3194 195# CHECK: Iterations: 100196# CHECK-NEXT: Instructions: 200197# CHECK-NEXT: Total Cycles: 204198# CHECK-NEXT: Total uOps: 400199 200# CHECK: Dispatch Width: 2201# CHECK-NEXT: uOps Per Cycle: 1.96202# CHECK-NEXT: IPC: 0.98203# CHECK-NEXT: Block RThroughput: 2.0204 205# CHECK: Instruction Info:206# CHECK-NEXT: [1]: #uOps207# CHECK-NEXT: [2]: Latency208# CHECK-NEXT: [3]: RThroughput209# CHECK-NEXT: [4]: MayLoad210# CHECK-NEXT: [5]: MayStore211# CHECK-NEXT: [6]: HasSideEffects (U)212 213# CHECK: [1] [2] [3] [4] [5] [6] Instructions:214# CHECK-NEXT: 2 3 2.00 vaddps %ymm0, %ymm1, %ymm2215# CHECK-NEXT: 2 1 0.50 vandnps %ymm2, %ymm2, %ymm3216 217# CHECK: Resources:218# CHECK-NEXT: [0] - JALU0219# CHECK-NEXT: [1] - JALU1220# CHECK-NEXT: [2] - JDiv221# CHECK-NEXT: [3] - JFPA222# CHECK-NEXT: [4] - JFPM223# CHECK-NEXT: [5] - JFPU0224# CHECK-NEXT: [6] - JFPU1225# CHECK-NEXT: [7] - JLAGU226# CHECK-NEXT: [8] - JMul227# CHECK-NEXT: [9] - JSAGU228# CHECK-NEXT: [10] - JSTC229# CHECK-NEXT: [11] - JVALU0230# CHECK-NEXT: [12] - JVALU1231# CHECK-NEXT: [13] - JVIMUL232 233# CHECK: Resource pressure per iteration:234# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]235# CHECK-NEXT: - - - 2.00 1.00 2.00 1.00 - - - - - - -236 237# CHECK: Resource pressure by instruction:238# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:239# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vaddps %ymm0, %ymm1, %ymm2240# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandnps %ymm2, %ymm2, %ymm3241 242# CHECK: Timeline view:243# CHECK-NEXT: Index 0123456789244 245# CHECK: [0,0] DeeeER . vaddps %ymm0, %ymm1, %ymm2246# CHECK-NEXT: [0,1] .DeE-R . vandnps %ymm2, %ymm2, %ymm3247# CHECK-NEXT: [1,0] . DeeeER . vaddps %ymm0, %ymm1, %ymm2248# CHECK-NEXT: [1,1] . DeE-R . vandnps %ymm2, %ymm2, %ymm3249# CHECK-NEXT: [2,0] . DeeeER vaddps %ymm0, %ymm1, %ymm2250# CHECK-NEXT: [2,1] . DeE-R vandnps %ymm2, %ymm2, %ymm3251 252# CHECK: Average Wait times (based on the timeline view):253# CHECK-NEXT: [0]: Executions254# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue255# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready256# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage257 258# CHECK: [0] [1] [2] [3]259# CHECK-NEXT: 0. 3 1.0 1.0 0.0 vaddps %ymm0, %ymm1, %ymm2260# CHECK-NEXT: 1. 3 1.0 1.0 1.0 vandnps %ymm2, %ymm2, %ymm3261# CHECK-NEXT: 3 1.0 1.0 0.5 <total>262 263# CHECK: [3] Code Region - ZERO-IDIOM-4264 265# CHECK: Iterations: 100266# CHECK-NEXT: Instructions: 200267# CHECK-NEXT: Total Cycles: 204268# CHECK-NEXT: Total uOps: 400269 270# CHECK: Dispatch Width: 2271# CHECK-NEXT: uOps Per Cycle: 1.96272# CHECK-NEXT: IPC: 0.98273# CHECK-NEXT: Block RThroughput: 2.0274 275# CHECK: Instruction Info:276# CHECK-NEXT: [1]: #uOps277# CHECK-NEXT: [2]: Latency278# CHECK-NEXT: [3]: RThroughput279# CHECK-NEXT: [4]: MayLoad280# CHECK-NEXT: [5]: MayStore281# CHECK-NEXT: [6]: HasSideEffects (U)282 283# CHECK: [1] [2] [3] [4] [5] [6] Instructions:284# CHECK-NEXT: 2 3 2.00 vaddps %ymm0, %ymm1, %ymm2285# CHECK-NEXT: 2 1 0.50 vandnps %ymm2, %ymm2, %ymm3286 287# CHECK: Resources:288# CHECK-NEXT: [0] - JALU0289# CHECK-NEXT: [1] - JALU1290# CHECK-NEXT: [2] - JDiv291# CHECK-NEXT: [3] - JFPA292# CHECK-NEXT: [4] - JFPM293# CHECK-NEXT: [5] - JFPU0294# CHECK-NEXT: [6] - JFPU1295# CHECK-NEXT: [7] - JLAGU296# CHECK-NEXT: [8] - JMul297# CHECK-NEXT: [9] - JSAGU298# CHECK-NEXT: [10] - JSTC299# CHECK-NEXT: [11] - JVALU0300# CHECK-NEXT: [12] - JVALU1301# CHECK-NEXT: [13] - JVIMUL302 303# CHECK: Resource pressure per iteration:304# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]305# CHECK-NEXT: - - - 2.00 1.00 2.00 1.00 - - - - - - -306 307# CHECK: Resource pressure by instruction:308# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:309# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vaddps %ymm0, %ymm1, %ymm2310# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandnps %ymm2, %ymm2, %ymm3311 312# CHECK: Timeline view:313# CHECK-NEXT: Index 0123456789314 315# CHECK: [0,0] DeeeER . vaddps %ymm0, %ymm1, %ymm2316# CHECK-NEXT: [0,1] .DeE-R . vandnps %ymm2, %ymm2, %ymm3317# CHECK-NEXT: [1,0] . DeeeER . vaddps %ymm0, %ymm1, %ymm2318# CHECK-NEXT: [1,1] . DeE-R . vandnps %ymm2, %ymm2, %ymm3319# CHECK-NEXT: [2,0] . DeeeER vaddps %ymm0, %ymm1, %ymm2320# CHECK-NEXT: [2,1] . DeE-R vandnps %ymm2, %ymm2, %ymm3321 322# CHECK: Average Wait times (based on the timeline view):323# CHECK-NEXT: [0]: Executions324# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue325# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready326# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage327 328# CHECK: [0] [1] [2] [3]329# CHECK-NEXT: 0. 3 1.0 1.0 0.0 vaddps %ymm0, %ymm1, %ymm2330# CHECK-NEXT: 1. 3 1.0 1.0 1.0 vandnps %ymm2, %ymm2, %ymm3331# CHECK-NEXT: 3 1.0 1.0 0.5 <total>332 333# CHECK: [4] Code Region - ZERO-IDIOM-5334 335# CHECK: Iterations: 100336# CHECK-NEXT: Instructions: 200337# CHECK-NEXT: Total Cycles: 205338# CHECK-NEXT: Total uOps: 400339 340# CHECK: Dispatch Width: 2341# CHECK-NEXT: uOps Per Cycle: 1.95342# CHECK-NEXT: IPC: 0.98343# CHECK-NEXT: Block RThroughput: 2.0344 345# CHECK: Instruction Info:346# CHECK-NEXT: [1]: #uOps347# CHECK-NEXT: [2]: Latency348# CHECK-NEXT: [3]: RThroughput349# CHECK-NEXT: [4]: MayLoad350# CHECK-NEXT: [5]: MayStore351# CHECK-NEXT: [6]: HasSideEffects (U)352 353# CHECK: [1] [2] [3] [4] [5] [6] Instructions:354# CHECK-NEXT: 2 1 0.50 vperm2f128 $136, %ymm0, %ymm0, %ymm1355# CHECK-NEXT: 2 3 2.00 vaddps %ymm1, %ymm1, %ymm0356 357# CHECK: Resources:358# CHECK-NEXT: [0] - JALU0359# CHECK-NEXT: [1] - JALU1360# CHECK-NEXT: [2] - JDiv361# CHECK-NEXT: [3] - JFPA362# CHECK-NEXT: [4] - JFPM363# CHECK-NEXT: [5] - JFPU0364# CHECK-NEXT: [6] - JFPU1365# CHECK-NEXT: [7] - JLAGU366# CHECK-NEXT: [8] - JMul367# CHECK-NEXT: [9] - JSAGU368# CHECK-NEXT: [10] - JSTC369# CHECK-NEXT: [11] - JVALU0370# CHECK-NEXT: [12] - JVALU1371# CHECK-NEXT: [13] - JVIMUL372 373# CHECK: Resource pressure per iteration:374# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]375# CHECK-NEXT: - - - 2.00 1.00 2.00 1.00 - - - - - - -376 377# CHECK: Resource pressure by instruction:378# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:379# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vperm2f128 $136, %ymm0, %ymm0, %ymm1380# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vaddps %ymm1, %ymm1, %ymm0381 382# CHECK: Timeline view:383# CHECK-NEXT: 0384# CHECK-NEXT: Index 0123456789385 386# CHECK: [0,0] DeER . . vperm2f128 $136, %ymm0, %ymm0, %ymm1387# CHECK-NEXT: [0,1] .DeeeER . vaddps %ymm1, %ymm1, %ymm0388# CHECK-NEXT: [1,0] . DeE-R . vperm2f128 $136, %ymm0, %ymm0, %ymm1389# CHECK-NEXT: [1,1] . DeeeER . vaddps %ymm1, %ymm1, %ymm0390# CHECK-NEXT: [2,0] . DeE-R . vperm2f128 $136, %ymm0, %ymm0, %ymm1391# CHECK-NEXT: [2,1] . DeeeER vaddps %ymm1, %ymm1, %ymm0392 393# CHECK: Average Wait times (based on the timeline view):394# CHECK-NEXT: [0]: Executions395# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue396# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready397# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage398 399# CHECK: [0] [1] [2] [3]400# CHECK-NEXT: 0. 3 1.0 1.0 0.7 vperm2f128 $136, %ymm0, %ymm0, %ymm1401# CHECK-NEXT: 1. 3 1.0 0.0 0.0 vaddps %ymm1, %ymm1, %ymm0402# CHECK-NEXT: 3 1.0 0.5 0.3 <total>403