[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / phi-elimination-assertion.mir
blobe2e6ea76103c7478ba76f7ed58b0e67ae3059526
1 # RUN: llc -mtriple amdgcn -run-pass livevars -run-pass phi-node-elimination -o - %s | FileCheck %s
3 ################################################################################
4 # This test used to hit an assert in PHIElimination:
5 #  PHIElimination::LowerPHINode(llvm::MachineBasicBlock&, llvm::MachineBasicBlock::iterator): Assertion `KillInst->readsRegister(SrcReg) && "Cannot find kill instruction"'
7 ---
8 name:            foo
9 tracksRegLiveness: true
10 body:             |
11   bb.0:
12     S_CBRANCH_SCC0 %bb.2, implicit undef $scc
14   bb.1:
15     %1:sreg_32_xm0 = S_MOV_B32 255
16     S_BRANCH %bb.3
18   bb.2:
19     %2:sreg_32_xm0 = S_MOV_B32 254
21   bb.3:
22     dead %3:sreg_32_xm0 = PHI undef %2, %bb.2, undef %1, %bb.1
23     %4:sreg_32_xm0 = PHI %2, %bb.2, %1, %bb.1
24     S_NOP 0, implicit %4
25 ...
27 # CHECK-LABEL: name:            foo
28 # CHECK:   bb.3:
29 # CHECK-NEXT:     dead %2:sreg_32_xm0 = IMPLICIT_DEF
30 # CHECK-NEXT:     %3:sreg_32_xm0 = COPY killed %4
31 # CHECK-NEXT:     S_NOP 0, implicit killed %3
34 ################################################################################
35 # Similar test as above, but with swapped order for the PHI nodes.
36 # With this PHI node order we did not hit the assert, but we used to get
38 #  bb.3:
39 #    dead %3:sreg_32_xm0 = COPY killed %4
40 #    %2:sreg_32_xm0 = COPY %4
41 #    S_NOP 0, implicit killed %2
43 # which looks weird regarding killed flags for %4.
45 ---
46 name:            bar
47 tracksRegLiveness: true
48 body:             |
49   bb.0:
50     S_CBRANCH_SCC0 %bb.2, implicit undef $scc
52   bb.1:
53     %1:sreg_32_xm0 = S_MOV_B32 255
54     S_BRANCH %bb.3
56   bb.2:
57     %2:sreg_32_xm0 = S_MOV_B32 254
59   bb.3:
60     %4:sreg_32_xm0 = PHI %2, %bb.2, %1, %bb.1
61     dead %3:sreg_32_xm0 = PHI undef %2, %bb.2, undef %1, %bb.1
62     S_NOP 0, implicit %4
63 ...
65 # CHECK-LABEL: name:            bar
66 # CHECK:   bb.3:
67 # CHECK-NEXT:     dead %3:sreg_32_xm0 = IMPLICIT_DEF
68 # CHECK-NEXT:     %2:sreg_32_xm0 = COPY killed %4
69 # CHECK-NEXT:     S_NOP 0, implicit killed %2
72 # The following test crashes in phi-elimination hooks.
75 ---
76 name:            bax
77 tracksRegLiveness: true
78 body:             |
79   bb.0:
80     S_CBRANCH_SCC0 %bb.2, implicit undef $scc
82   bb.1:
83     %1:sreg_32_xm0 = S_MOV_B32 255
84     S_BRANCH %bb.3
86   bb.2:
87     %2:sreg_32_xm0 = S_MOV_B32 254
89   bb.3:
90     %3:sreg_32_xm0 = PHI %2, %bb.2, %1, %bb.1
91 ...
93 # CHECK-LABEL: name:            bax
94 # CHECK:   bb.3:
95 # CHECK-NEXT:     %2:sreg_32_xm0 = COPY killed %3