summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/AMDGPU/collapse-endcf.ll2
-rw-r--r--llvm/test/CodeGen/AMDGPU/reduce-saveexec.mir147
2 files changed, 148 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/AMDGPU/collapse-endcf.ll b/llvm/test/CodeGen/AMDGPU/collapse-endcf.ll
index 6316df79546..f4199d41221 100644
--- a/llvm/test/CodeGen/AMDGPU/collapse-endcf.ll
+++ b/llvm/test/CodeGen/AMDGPU/collapse-endcf.ll
@@ -4,7 +4,7 @@
; GCN: s_and_saveexec_b64 [[SAVEEXEC:s\[[0-9:]+\]]]
; GCN-NEXT: ; mask branch [[ENDIF:BB[0-9_]+]]
; GCN-NEXT: s_cbranch_execz [[ENDIF]]
-; GCN: s_and_saveexec_b64
+; GCN: s_and_b64 exec, exec, vcc
; GCN-NEXT: ; mask branch [[ENDIF]]
; GCN-NEXT: {{^BB[0-9_]+}}:
; GCN: store_dword
diff --git a/llvm/test/CodeGen/AMDGPU/reduce-saveexec.mir b/llvm/test/CodeGen/AMDGPU/reduce-saveexec.mir
new file mode 100644
index 00000000000..6f6b0deb2b9
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/reduce-saveexec.mir
@@ -0,0 +1,147 @@
+# RUN: llc -march=amdgcn -verify-machineinstrs -run-pass si-optimize-exec-masking %s -o - | FileCheck -check-prefix=GCN %s
+
+---
+# GCN-LABEL: name: reduce_and_saveexec
+# GCN: %exec = S_AND_B64 %exec, killed %vcc
+# GCN-NEXT: S_ENDPGM
+name: reduce_and_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_AND_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_and_saveexec_commuted
+# GCN: %exec = S_AND_B64 killed %vcc, %exec
+# GCN-NEXT: S_ENDPGM
+name: reduce_and_saveexec_commuted
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_AND_B64 killed %vcc, %exec, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_and_saveexec_liveout
+# GCN: %sgpr0_sgpr1 = S_AND_B64 %exec, killed %vcc
+# GCN-NEXT: %exec = COPY
+name: reduce_and_saveexec_liveout
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_AND_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: and_saveexec
+# GCN: %sgpr0_sgpr1 = S_AND_SAVEEXEC_B64 %vcc
+# GCN-NEXT: S_ENDPGM
+name: and_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = COPY %exec
+ %sgpr2_sgpr3 = S_AND_B64 %sgpr0_sgpr1, killed %vcc, implicit-def %scc
+ %exec = S_MOV_B64_term %sgpr2_sgpr3
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_or_saveexec
+# GCN: %exec = S_OR_B64 %exec, killed %vcc
+# GCN-NEXT: S_ENDPGM
+name: reduce_or_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_OR_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_xor_saveexec
+# GCN: %exec = S_XOR_B64 %exec, killed %vcc
+# GCN-NEXT: S_ENDPGM
+name: reduce_xor_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_XOR_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_andn2_saveexec
+# GCN: %exec = S_ANDN2_B64 %exec, killed %vcc
+# GCN-NEXT: S_ENDPGM
+name: reduce_andn2_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_ANDN2_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_orn2_saveexec
+# GCN: %exec = S_ORN2_B64 %exec, killed %vcc
+# GCN-NEXT: S_ENDPGM
+name: reduce_orn2_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_ORN2_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_nand_saveexec
+# GCN: %exec = S_NAND_B64 %exec, killed %vcc
+# GCN-NEXT: S_ENDPGM
+name: reduce_nand_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_NAND_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_nor_saveexec
+# GCN: %exec = S_NOR_B64 %exec, killed %vcc
+# GCN-NEXT: S_ENDPGM
+name: reduce_nor_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_NOR_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
+# GCN-LABEL: name: reduce_xnor_saveexec
+# GCN: %exec = S_XNOR_B64 %exec, killed %vcc
+# GCN-NEXT: S_ENDPGM
+name: reduce_xnor_saveexec
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %vcc = IMPLICIT_DEF
+ %sgpr0_sgpr1 = S_XNOR_B64 %exec, killed %vcc, implicit-def %scc
+ %exec = COPY killed %sgpr0_sgpr1
+ S_ENDPGM
+...
+---
OpenPOWER on IntegriCloud