diff options
| author | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2018-03-29 14:26:56 +0000 |
|---|---|---|
| committer | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2018-03-29 14:26:56 +0000 |
| commit | 0a837ef6b13e34abb785c720c4fa3d79be45db0f (patch) | |
| tree | 6100e362adef63da303999b61539b272ffc21bbb /llvm/test | |
| parent | fe1d346f996f9a7df76073e0cff2ebefdebc18cf (diff) | |
| download | bcm5719-llvm-0a837ef6b13e34abb785c720c4fa3d79be45db0f.tar.gz bcm5719-llvm-0a837ef6b13e34abb785c720c4fa3d79be45db0f.zip | |
[llvm-mca] Correctly set the ReadAdvance information for register use operands.
The tool was passing the wrong operand index to method
MCSubtargetInfo::getReadAdvanceCycles(). That method requires a "UseIdx", and
not the operand index. This was found when testing X86 code where instructions
had a memory folded operand.
This patch fixes the issue and adds test read-advance-1.s to ensure that
the ReadAfterLd (a ReadAdvance of 3cy) information is correctly used.
llvm-svn: 328790
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-1.s | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-1.s new file mode 100644 index 00000000000..dc628d06839 --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-1.s @@ -0,0 +1,46 @@ +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=1 -timeline -resource-pressure=false < %s | FileCheck %s + +# The vmul can start executing 3cy in advance. That is beause the first use +# operand (i.e. %xmm1) is a ReadAfterLd. That means, the memory operand is +# evaluated before %xmm1. + + +vaddps %xmm0, %xmm0, %xmm1 +vmulps (%rdi), %xmm1, %xmm2 + + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 10 +# CHECK-NEXT: Dispatch Width: 2 + + +# 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 3 1.00 vaddps %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: 1 7 1.00 * vmulps (%rdi), %xmm1, %xmm2 + + +# CHECK: Timeline view: + +# CHECK: Index 0123456789 +# CHECK: [0,0] DeeeER . vaddps %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DeeeeeeeER vmulps (%rdi), %xmm1, %xmm2 + + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 vaddps %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: 1. 1 1.0 0.0 0.0 vmulps (%rdi), %xmm1, %xmm2 |

