diff options
| author | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2018-04-13 15:19:07 +0000 |
|---|---|---|
| committer | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2018-04-13 15:19:07 +0000 |
| commit | c752616f30417e277c372ebb32770f62c54b058e (patch) | |
| tree | 74dfbe33cefedb04eddf1b503bfdf49b5efe0860 /llvm/test/tools | |
| parent | 545a0c2fb0886f1c0140ef6cbd05ca0a1c8f800a (diff) | |
| download | bcm5719-llvm-c752616f30417e277c372ebb32770f62c54b058e.tar.gz bcm5719-llvm-c752616f30417e277c372ebb32770f62c54b058e.zip | |
[llvm-mca] Ensure that instructions with a schedule read-advance are always issued in the right order.
Normally, the Scheduler prioritizes older instructions over younger instructions
during the instruction issue stage. In one particular case where a dependent
instruction had a schedule read-advance associated to one of the input operands,
this rule was not correctly applied.
This patch fixes the issue and adds a test to verify that we don't regress that
particular case.
llvm-svn: 330032
Diffstat (limited to 'llvm/test/tools')
| -rw-r--r-- | llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-3.s | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-3.s b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-3.s new file mode 100644 index 00000000000..bc530b6f25c --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-3.s @@ -0,0 +1,44 @@ +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=1 -resource-pressure=0 -timeline -dispatch=3 < %s | FileCheck %s + + add %rdi, %rsi + add (%rsp), %rsi + add %rdx, %r8 + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 3 +# CHECK-NEXT: Total Cycles: 7 +# CHECK-NEXT: Dispatch Width: 3 +# CHECK-NEXT: IPC: 0.43 + +# 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 addq %rdi, %rsi +# CHECK-NEXT: 1 4 1.00 * addq (%rsp), %rsi +# CHECK-NEXT: 1 1 0.50 addq %rdx, %r8 + +# CHECK: Timeline view: + +# CHECK: Index 0123456 + +# CHECK: [0,0] DeER .. addq %rdi, %rsi +# CHECK-NEXT: [0,1] DeeeeER addq (%rsp), %rsi +# CHECK-NEXT: [0,2] D=eE--R addq %rdx, %r8 + +# 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 addq %rdi, %rsi +# CHECK-NEXT: 1. 1 1.0 0.0 0.0 addq (%rsp), %rsi +# CHECK-NEXT: 2. 1 2.0 2.0 2.0 addq %rdx, %r8 + |

