summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2016-10-15 00:58:14 +0000
committerTom Stellard <thomas.stellard@amd.com>2016-10-15 00:58:14 +0000
commit961811c90661390431068d9e9d222e292620e0e0 (patch)
treef74e79c9b700aa8b3a110b486a2600cd68e2212f /llvm/test
parent44264e1353916cbb5d447082c9e7a8ba1c56b9f3 (diff)
downloadbcm5719-llvm-961811c90661390431068d9e9d222e292620e0e0.tar.gz
bcm5719-llvm-961811c90661390431068d9e9d222e292620e0e0.zip
AMDGPU/SI: Handle s_getreg hazard in GCNHazardRecognizer
Reviewers: arsenm Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, llvm-commits, tony-tye Differential Revision: https://reviews.llvm.org/D25526 llvm-svn: 284298
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/MIR/AMDGPU/inserted-wait-states.mir67
1 files changed, 62 insertions, 5 deletions
diff --git a/llvm/test/CodeGen/MIR/AMDGPU/inserted-wait-states.mir b/llvm/test/CodeGen/MIR/AMDGPU/inserted-wait-states.mir
index 9003454c358..1f283ab9483 100644
--- a/llvm/test/CodeGen/MIR/AMDGPU/inserted-wait-states.mir
+++ b/llvm/test/CodeGen/MIR/AMDGPU/inserted-wait-states.mir
@@ -1,5 +1,12 @@
# RUN: llc -march=amdgcn -run-pass post-RA-hazard-rec %s -o - | FileCheck %s
+--- |
+ define void @div_fmas() { ret void }
+ define void @s_getreg() { ret void }
+...
+---
+# CHECK-LABEL: name: div_fmas
+
# CHECK-LABEL: bb.0:
# CHECK: S_MOV_B64
# CHECK-NOT: S_NOP
@@ -28,11 +35,7 @@
# CHECK: S_NOP
# CHECK: S_NOP
# CHECK: V_DIV_FMAS_F32
---- |
- define void @test0() { ret void }
-...
----
-name: test0
+name: div_fmas
body: |
bb.0:
@@ -57,4 +60,58 @@ body: |
%vgpr4, %vcc = V_DIV_SCALE_F32 0, %vgpr1, 0, %vgpr1, 0, %vgpr3, 0, 0, implicit %exec
%vgpr0 = V_DIV_FMAS_F32 0, %vgpr1, 0, %vgpr2, 0, %vgpr3, 0, 0, implicit %vcc, implicit %exec
S_ENDPGM
+
+...
+
+...
+---
+# CHECK-LABEL: name: s_getreg
+
+# CHECK-LABEL: bb.0:
+# CHECK: S_SETREG
+# CHECK: S_NOP 0
+# CHECK: S_NOP 0
+# CHECK: S_GETREG
+
+# CHECK-LABEL: bb.1:
+# CHECK: S_SETREG_IMM32
+# CHECK: S_NOP 0
+# CHECK: S_NOP 0
+# CHECK: S_GETREG
+
+# CHECK-LABEL: bb.2:
+# CHECK: S_SETREG
+# CHECK: S_NOP 0
+# CHECK: S_GETREG
+
+# CHECK-LABEL: bb.3:
+# CHECK: S_SETREG
+# CHECK-NEXT: S_GETREG
+
+name: s_getreg
+
+body: |
+ bb.0:
+ successors: %bb.1
+ S_SETREG_B32 %sgpr0, 1
+ %sgpr1 = S_GETREG_B32 1
+ S_BRANCH %bb.1
+
+ bb.1:
+ successors: %bb.2
+ S_SETREG_IMM32_B32 0, 1
+ %sgpr1 = S_GETREG_B32 1
+ S_BRANCH %bb.2
+
+ bb.2:
+ successors: %bb.3
+ S_SETREG_B32 %sgpr0, 1
+ %sgpr1 = S_MOV_B32 0
+ %sgpr2 = S_GETREG_B32 1
+ S_BRANCH %bb.3
+
+ bb.3:
+ S_SETREG_B32 %sgpr0, 0
+ %sgpr1 = S_GETREG_B32 1
+ S_ENDPGM
...
OpenPOWER on IntegriCloud