diff options
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/collapse-endcf.ll | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/reduce-saveexec.mir | 147 |
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 +... +--- |

