From: Andrea Di Biagio Date: Thu, 8 Mar 2018 15:34:38 +0000 (+0000) Subject: [llvm-mca] Emit the 'Instruction Info' table before the resource pressure view. X-Git-Tag: llvmorg-7.0.0-rc1~11115 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7bbac07f22b82aa8b580624996e11489c4083a8c;p=platform%2Fupstream%2Fllvm.git [llvm-mca] Emit the 'Instruction Info' table before the resource pressure view. In future, both the summary information and the 'instruction info' table should be moved into a separate "Summary" view. llvm-svn: 327010 --- diff --git a/llvm/test/tools/llvm-mca/ARM/simple-test-cortex-a9.s b/llvm/test/tools/llvm-mca/ARM/simple-test-cortex-a9.s index 683df6ec..fe734e3 100644 --- a/llvm/test/tools/llvm-mca/ARM/simple-test-cortex-a9.s +++ b/llvm/test/tools/llvm-mca/ARM/simple-test-cortex-a9.s @@ -8,6 +8,18 @@ vadd.f32 s0, s2, s2 # CHECK-NEXT: Dispatch Width: 2 # CHECK-NEXT: IPC: 0.95 +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 vadd.f32 s0, s2, s2 + + # CHECK: Resources: # CHECK-NEXT: [0] - A9UnitAGU # CHECK-NEXT: [1.0] - A9UnitALU @@ -24,14 +36,3 @@ vadd.f32 s0, s2, s2 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] Instructions: # CHECK-NEXT: 1.00 - - - 1.00 - - vadd.f32 s0, s2, s2 - -# CHECK: Instruction Info: -# CHECK-NEXT: [1]: #uOps -# CHECK-NEXT: [2]: Latency -# CHECK-NEXT: [3]: RThroughput -# CHECK-NEXT: [4]: MayLoad -# CHECK-NEXT: [5]: MayStore -# CHECK-NEXT: [6]: HasSideEffects - -# CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 4 1.00 vadd.f32 s0, s2, s2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/dot-product.s b/llvm/test/tools/llvm-mca/X86/BtVer2/dot-product.s index 5fc173c..739a76b 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/dot-product.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/dot-product.s @@ -10,6 +10,21 @@ vhaddps %xmm3, %xmm3, %xmm4 # CHECK-NEXT: Dispatch Width: 2 # CHECK-NEXT: IPC: 1.48 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 2 1.00 vmulps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: 1 3 1.00 vhaddps %xmm2, %xmm2, %xmm3 +# CHECK-NEXT: 1 3 1.00 vhaddps %xmm3, %xmm3, %xmm4 + + # CHECK: Resources: # CHECK-NEXT: [0] - JALU0 # CHECK-NEXT: [1] - JALU1 @@ -36,19 +51,6 @@ vhaddps %xmm3, %xmm3, %xmm4 # CHECK-NEXT: - - - - - 1.00 - - - - - - - - vhaddps %xmm2, %xmm2, %xmm3 # CHECK-NEXT: - - - - - 1.00 - - - - - - - - vhaddps %xmm3, %xmm3, %xmm4 -# CHECK: Instruction Info: -# CHECK-NEXT: [1]: #uOps -# CHECK-NEXT: [2]: Latency -# CHECK-NEXT: [3]: RThroughput -# CHECK-NEXT: [4]: MayLoad -# CHECK-NEXT: [5]: MayStore -# CHECK-NEXT: [6]: HasSideEffects - -# CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 2 1.00 vmulps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: 1 3 1.00 vhaddps %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: 1 3 1.00 vhaddps %xmm3, %xmm3, %xmm4 - # CHECK: Timeline view: # CHECK-NEXT: 012345 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/load-store-alias.s b/llvm/test/tools/llvm-mca/X86/BtVer2/load-store-alias.s index cdac2fc9..0aecff0 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/load-store-alias.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/load-store-alias.s @@ -16,6 +16,25 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: IPC: 0.33 +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 * vmovaps (%rsi), %xmm0 +# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, (%rdi) +# CHECK-NEXT: 1 5 1.00 * vmovaps 16(%rsi), %xmm0 +# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 16(%rdi) +# CHECK-NEXT: 1 5 1.00 * vmovaps 32(%rsi), %xmm0 +# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 32(%rdi) +# CHECK-NEXT: 1 5 1.00 * vmovaps 48(%rsi), %xmm0 +# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 48(%rdi) + + # CHECK: Resources: # CHECK-NEXT: [0] - JALU0 # CHECK-NEXT: [1] - JALU1 @@ -49,24 +68,6 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovaps %xmm0, 48(%rdi) -# CHECK: Instruction Info: -# CHECK-NEXT: [1]: #uOps -# CHECK-NEXT: [2]: Latency -# CHECK-NEXT: [3]: RThroughput -# CHECK-NEXT: [4]: MayLoad -# CHECK-NEXT: [5]: MayStore -# CHECK-NEXT: [6]: HasSideEffects - -# CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 5 1.00 * vmovaps (%rsi), %xmm0 -# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, (%rdi) -# CHECK-NEXT: 1 5 1.00 * vmovaps 16(%rsi), %xmm0 -# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 16(%rdi) -# CHECK-NEXT: 1 5 1.00 * vmovaps 32(%rsi), %xmm0 -# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 32(%rdi) -# CHECK-NEXT: 1 5 1.00 * vmovaps 48(%rsi), %xmm0 -# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 48(%rdi) - # CHECK: Timeline view: # CHECK-NEXT: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/memcpy-like-test.s b/llvm/test/tools/llvm-mca/X86/BtVer2/memcpy-like-test.s index 8086f8b..b0e2583 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/memcpy-like-test.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/memcpy-like-test.s @@ -17,6 +17,25 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: IPC: 1.96 +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 * vmovaps (%rsi), %xmm0 +# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, (%rdi) +# CHECK-NEXT: 1 5 1.00 * vmovaps 16(%rsi), %xmm0 +# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 16(%rdi) +# CHECK-NEXT: 1 5 1.00 * vmovaps 32(%rsi), %xmm0 +# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 32(%rdi) +# CHECK-NEXT: 1 5 1.00 * vmovaps 48(%rsi), %xmm0 +# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 48(%rdi) + + # CHECK: Resources: # CHECK-NEXT: [0] - JALU0 # CHECK-NEXT: [1] - JALU1 @@ -50,25 +69,6 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovaps %xmm0, 48(%rdi) -# CHECK: Instruction Info: -# CHECK-NEXT: [1]: #uOps -# CHECK-NEXT: [2]: Latency -# CHECK-NEXT: [3]: RThroughput -# CHECK-NEXT: [4]: MayLoad -# CHECK-NEXT: [5]: MayStore -# CHECK-NEXT: [6]: HasSideEffects - -# CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 5 1.00 * vmovaps (%rsi), %xmm0 -# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, (%rdi) -# CHECK-NEXT: 1 5 1.00 * vmovaps 16(%rsi), %xmm0 -# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 16(%rdi) -# CHECK-NEXT: 1 5 1.00 * vmovaps 32(%rsi), %xmm0 -# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 32(%rdi) -# CHECK-NEXT: 1 5 1.00 * vmovaps 48(%rsi), %xmm0 -# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, 48(%rdi) - - # CHECK: Timeline view: # CHECK-NEXT: 01 # CHECK-NEXT: Index 0123456789 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/simple-test.s b/llvm/test/tools/llvm-mca/X86/BtVer2/simple-test.s index a2c9cb0..310ea3f 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/simple-test.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/simple-test.s @@ -8,6 +8,19 @@ add %edi, %eax # CHECK-NEXT: Dispatch Width: 2 # CHECK-NEXT: IPC: 0.97 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.50 addl %edi, %eax + + # CHECK-LABEL: Resources: # CHECK-NEXT: [0] - JALU0 # CHECK-NEXT: [1] - JALU1 @@ -32,14 +45,3 @@ add %edi, %eax # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - addl %edi, %eax - -# CHECK: Instruction Info: -# CHECK-NEXT: [1]: #uOps -# CHECK-NEXT: [2]: Latency -# CHECK-NEXT: [3]: RThroughput -# CHECK-NEXT: [4]: MayLoad -# CHECK-NEXT: [5]: MayStore -# CHECK-NEXT: [6]: HasSideEffects - -# CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 1 0.50 addl %edi, %eax diff --git a/llvm/tools/llvm-mca/BackendPrinter.cpp b/llvm/tools/llvm-mca/BackendPrinter.cpp index 511aefa..521ef04 100644 --- a/llvm/tools/llvm-mca/BackendPrinter.cpp +++ b/llvm/tools/llvm-mca/BackendPrinter.cpp @@ -156,6 +156,8 @@ void BackendPrinter::printReport() const { unsigned Cycles = B.getNumCycles(); printGeneralStatistics(B.getNumIterations(), Cycles, B.getNumInstructions(), B.getDispatchWidth()); + printInstructionInfo(); + if (EnableVerboseOutput) { printDispatchStalls(B.getNumRATStalls(), B.getNumRCUStalls(), B.getNumSQStalls(), B.getNumLDQStalls(), @@ -169,10 +171,8 @@ void BackendPrinter::printReport() const { printSchedulerUsage(B.getSchedModel(), Usage); } - if (RPV) { + if (RPV) RPV->printResourcePressure(getOStream(), Cycles); - printInstructionInfo(); - } if (TV) { TV->printTimeline(getOStream());