128 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=1500 -noalias=false -timeline -timeline-max-iterations=1 -bottleneck-analysis < %s | FileCheck %s3 4vmovaps (%rsi), %xmm05vmovaps %xmm0, (%rdi)6vmovaps 16(%rsi), %xmm07vmovaps %xmm0, 16(%rdi)8vmovaps 32(%rsi), %xmm09vmovaps %xmm0, 32(%rdi)10vmovaps 48(%rsi), %xmm011vmovaps %xmm0, 48(%rdi)12 13# CHECK: Iterations: 150014# CHECK-NEXT: Instructions: 1200015# CHECK-NEXT: Total Cycles: 3600316# CHECK-NEXT: Total uOps: 1200017 18# CHECK: Dispatch Width: 219# CHECK-NEXT: uOps Per Cycle: 0.3320# CHECK-NEXT: IPC: 0.3321# CHECK-NEXT: Block RThroughput: 4.022 23# CHECK: Cycles with backend pressure increase [ 99.89% ]24# CHECK-NEXT: Throughput Bottlenecks:25# CHECK-NEXT: Resource Pressure [ 0.00% ]26# CHECK-NEXT: Data Dependencies: [ 99.89% ]27# CHECK-NEXT: - Register Dependencies [ 83.24% ]28# CHECK-NEXT: - Memory Dependencies [ 99.89% ]29 30# CHECK: Critical sequence based on the simulation:31 32# CHECK: Instruction Dependency Information33# CHECK-NEXT: +----< 7. vmovaps %xmm0, 48(%rdi)34# CHECK-NEXT: |35# CHECK-NEXT: | < loop carried >36# CHECK-NEXT: |37# CHECK-NEXT: +----> 0. vmovaps (%rsi), %xmm0 ## MEMORY dependency.38# CHECK-NEXT: +----> 1. vmovaps %xmm0, (%rdi) ## REGISTER dependency: %xmm039# CHECK-NEXT: +----> 2. vmovaps 16(%rsi), %xmm0 ## MEMORY dependency.40# CHECK-NEXT: +----> 3. vmovaps %xmm0, 16(%rdi) ## REGISTER dependency: %xmm041# CHECK-NEXT: +----> 4. vmovaps 32(%rsi), %xmm0 ## MEMORY dependency.42# CHECK-NEXT: +----> 5. vmovaps %xmm0, 32(%rdi) ## REGISTER dependency: %xmm043# CHECK-NEXT: +----> 6. vmovaps 48(%rsi), %xmm0 ## MEMORY dependency.44# CHECK-NEXT: +----> 7. vmovaps %xmm0, 48(%rdi) ## REGISTER dependency: %xmm045# CHECK-NEXT: |46# CHECK-NEXT: | < loop carried >47# CHECK-NEXT: |48# CHECK-NEXT: +----> 0. vmovaps (%rsi), %xmm0 ## MEMORY dependency.49 50# CHECK: Instruction Info:51# CHECK-NEXT: [1]: #uOps52# CHECK-NEXT: [2]: Latency53# CHECK-NEXT: [3]: RThroughput54# CHECK-NEXT: [4]: MayLoad55# CHECK-NEXT: [5]: MayStore56# CHECK-NEXT: [6]: HasSideEffects (U)57 58# CHECK: [1] [2] [3] [4] [5] [6] Instructions:59# CHECK-NEXT: 1 5 1.00 * vmovaps (%rsi), %xmm060# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, (%rdi)61# CHECK-NEXT: 1 5 1.00 * vmovaps 16(%rsi), %xmm062# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 16(%rdi)63# CHECK-NEXT: 1 5 1.00 * vmovaps 32(%rsi), %xmm064# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 32(%rdi)65# CHECK-NEXT: 1 5 1.00 * vmovaps 48(%rsi), %xmm066# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 48(%rdi)67 68# CHECK: Resources:69# CHECK-NEXT: [0] - JALU070# CHECK-NEXT: [1] - JALU171# CHECK-NEXT: [2] - JDiv72# CHECK-NEXT: [3] - JFPA73# CHECK-NEXT: [4] - JFPM74# CHECK-NEXT: [5] - JFPU075# CHECK-NEXT: [6] - JFPU176# CHECK-NEXT: [7] - JLAGU77# CHECK-NEXT: [8] - JMul78# CHECK-NEXT: [9] - JSAGU79# CHECK-NEXT: [10] - JSTC80# CHECK-NEXT: [11] - JVALU081# CHECK-NEXT: [12] - JVALU182# CHECK-NEXT: [13] - JVIMUL83 84# CHECK: Resource pressure per iteration:85# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]86# CHECK-NEXT: - - - - - - 4.00 4.00 - 4.00 4.00 - - -87 88# CHECK: Resource pressure by instruction:89# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:90# CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovaps (%rsi), %xmm091# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, (%rdi)92# CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovaps 16(%rsi), %xmm093# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, 16(%rdi)94# CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovaps 32(%rsi), %xmm095# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, 32(%rdi)96# CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovaps 48(%rsi), %xmm097# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, 48(%rdi)98 99# CHECK: Timeline view:100# CHECK-NEXT: 0123456789101# CHECK-NEXT: Index 0123456789 0123456102 103# CHECK: [0,0] DeeeeeER . . . .. vmovaps (%rsi), %xmm0104# CHECK-NEXT: [0,1] D=====eER . . . .. vmovaps %xmm0, (%rdi)105# CHECK-NEXT: [0,2] .D=====eeeeeER . . .. vmovaps 16(%rsi), %xmm0106# CHECK-NEXT: [0,3] .D==========eER. . .. vmovaps %xmm0, 16(%rdi)107# CHECK-NEXT: [0,4] . D==========eeeeeER. .. vmovaps 32(%rsi), %xmm0108# CHECK-NEXT: [0,5] . D===============eER .. vmovaps %xmm0, 32(%rdi)109# CHECK-NEXT: [0,6] . D===============eeeeeER. vmovaps 48(%rsi), %xmm0110# CHECK-NEXT: [0,7] . D====================eER vmovaps %xmm0, 48(%rdi)111 112# CHECK: Average Wait times (based on the timeline view):113# CHECK-NEXT: [0]: Executions114# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue115# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready116# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage117 118# CHECK: [0] [1] [2] [3]119# CHECK-NEXT: 0. 1 1.0 1.0 0.0 vmovaps (%rsi), %xmm0120# CHECK-NEXT: 1. 1 6.0 0.0 0.0 vmovaps %xmm0, (%rdi)121# CHECK-NEXT: 2. 1 6.0 0.0 0.0 vmovaps 16(%rsi), %xmm0122# CHECK-NEXT: 3. 1 11.0 0.0 0.0 vmovaps %xmm0, 16(%rdi)123# CHECK-NEXT: 4. 1 11.0 0.0 0.0 vmovaps 32(%rsi), %xmm0124# CHECK-NEXT: 5. 1 16.0 0.0 0.0 vmovaps %xmm0, 32(%rdi)125# CHECK-NEXT: 6. 1 16.0 0.0 0.0 vmovaps 48(%rsi), %xmm0126# CHECK-NEXT: 7. 1 21.0 0.0 0.0 vmovaps %xmm0, 48(%rdi)127# CHECK-NEXT: 1 11.0 0.1 0.0 <total>128