summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2018-03-29 14:26:56 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2018-03-29 14:26:56 +0000
commit0a837ef6b13e34abb785c720c4fa3d79be45db0f (patch)
tree6100e362adef63da303999b61539b272ffc21bbb /llvm/test
parentfe1d346f996f9a7df76073e0cff2ebefdebc18cf (diff)
downloadbcm5719-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.s46
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
OpenPOWER on IntegriCloud