diff options
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/i1-copy-phi.ll | 19 | ||||
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/implicit-def-muse.ll | 22 |
2 files changed, 41 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AMDGPU/i1-copy-phi.ll b/llvm/test/CodeGen/AMDGPU/i1-copy-phi.ll index 5b25271ce17..7286d9785ed 100644 --- a/llvm/test/CodeGen/AMDGPU/i1-copy-phi.ll +++ b/llvm/test/CodeGen/AMDGPU/i1-copy-phi.ll @@ -37,3 +37,22 @@ bb6: ; preds = %bb4, %bb3 declare i32 @llvm.amdgcn.workitem.id.x() #0 attributes #0 = { nounwind readnone } + +; Make sure this won't crash. +; SI-LABEL: {{^}}vcopy_i1_undef +; SI: v_cndmask_b32_e64 +; SI: v_cndmask_b32_e64 +define <2 x float> @vcopy_i1_undef(<2 x float> addrspace(1)* %p) { +entry: + br i1 undef, label %exit, label %false + +false: + %x = load <2 x float>, <2 x float> addrspace(1)* %p + %cmp = fcmp one <2 x float> %x, zeroinitializer + br label %exit + +exit: + %c = phi <2 x i1> [ undef, %entry ], [ %cmp, %false ] + %ret = select <2 x i1> %c, <2 x float> <float 2.0, float 2.0>, <2 x float> <float 4.0, float 4.0> + ret <2 x float> %ret +} diff --git a/llvm/test/CodeGen/AMDGPU/implicit-def-muse.ll b/llvm/test/CodeGen/AMDGPU/implicit-def-muse.ll new file mode 100644 index 00000000000..fb540c3a6ba --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/implicit-def-muse.ll @@ -0,0 +1,22 @@ +; RUN: llc -march=amdgcn -stop-after=amdgpu-isel -verify-machineinstrs -o - %s | FileCheck %s + +; CHECK-LABEL: vcopy_i1_undef +; CHECK: IMPLICIT_DEF +; CHECK-NOT: COPY +; CHECK: IMPLICIT_DEF +; CHECK-NOT: COPY +; CHECK: .false: +define <2 x float> @vcopy_i1_undef(<2 x float> addrspace(1)* %p) { +entry: + br i1 undef, label %exit, label %false + +false: + %x = load <2 x float>, <2 x float> addrspace(1)* %p + %cmp = fcmp one <2 x float> %x, zeroinitializer + br label %exit + +exit: + %c = phi <2 x i1> [ undef, %entry ], [ %cmp, %false ] + %ret = select <2 x i1> %c, <2 x float> <float 2.0, float 2.0>, <2 x float> <float 4.0, float 4.0> + ret <2 x float> %ret +} |

