Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / lower-module-lds-constantexpr-phi.ll
blobc81ea7fe3d2f7566f4ca89652812db86fa0e260a
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -S -mtriple=amdgcn-- -amdgpu-lower-module-lds --amdgpu-lower-module-lds-strategy=module < %s | FileCheck %s
3 ; RUN: opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-module-lds --amdgpu-lower-module-lds-strategy=module < %s | FileCheck %s
5 @var = addrspace(3) global i32 undef, align 4
7 ; Regression test. Duplicate constantexpr in phi nodes shall not emit broken IR
8 define amdgpu_kernel void @func(i32 %c) {
9 ; CHECK-LABEL: @func(
10 ; CHECK-NEXT:  entry:
11 ; CHECK-NEXT:    switch i32 [[C:%.*]], label [[RETURN:%.*]] [
12 ; CHECK-NEXT:    i32 0, label [[BB0:%.*]]
13 ; CHECK-NEXT:    i32 1, label [[BB1:%.*]]
14 ; CHECK-NEXT:    ]
15 ; CHECK:       bb0:
16 ; CHECK-NEXT:    [[TMP0:%.*]] = addrspacecast ptr addrspace(3) @llvm.amdgcn.kernel.func.lds to ptr
17 ; CHECK-NEXT:    br label [[BB2:%.*]]
18 ; CHECK:       bb1:
19 ; CHECK-NEXT:    [[TMP1:%.*]] = addrspacecast ptr addrspace(3) @llvm.amdgcn.kernel.func.lds to ptr
20 ; CHECK-NEXT:    br label [[BB2]]
21 ; CHECK:       bb2:
22 ; CHECK-NEXT:    [[TMP:%.*]] = phi ptr [ [[TMP0]], [[BB0]] ], [ [[TMP1]], [[BB1]] ]
23 ; CHECK-NEXT:    br label [[RETURN]]
24 ; CHECK:       return:
25 ; CHECK-NEXT:    ret void
27 entry:
28   switch i32 %c, label %return [
29   i32 0, label %bb0
30   i32 1, label %bb1
31   ]
33 bb0:
34   br label %bb2
36 bb1:
37   br label %bb2
39 bb2:
40   %tmp = phi ptr [ addrspacecast (ptr addrspace(3) @var to ptr), %bb0 ], [ addrspacecast (ptr addrspace(3) @var to ptr), %bb1 ]
41   br label %return
43 return:
44   ret void