Revert r354244 "[DAGCombiner] Eliminate dead stores to stack."
[llvm-complete.git] / test / CodeGen / Mips / GlobalISel / llvm-ir / phi.ll
blob8aa059674ee60518ba46fa6a2f7ac20b033c1a79
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc  -O0 -mtriple=mipsel-linux-gnu -global-isel  -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS32
4 define i1 @test_i1(i1 %cnd, i1 %a, i1 %b) {
5 ; MIPS32-LABEL: test_i1:
6 ; MIPS32:       # %bb.0: # %entry
7 ; MIPS32-NEXT:    addiu $sp, $sp, -16
8 ; MIPS32-NEXT:    .cfi_def_cfa_offset 16
9 ; MIPS32-NEXT:    lui $1, 0
10 ; MIPS32-NEXT:    ori $1, $1, 1
11 ; MIPS32-NEXT:    and $1, $4, $1
12 ; MIPS32-NEXT:    sw $5, 12($sp) # 4-byte Folded Spill
13 ; MIPS32-NEXT:    sw $6, 8($sp) # 4-byte Folded Spill
14 ; MIPS32-NEXT:    bnez $1, $BB0_2
15 ; MIPS32-NEXT:    nop
16 ; MIPS32-NEXT:  # %bb.1: # %entry
17 ; MIPS32-NEXT:    j $BB0_3
18 ; MIPS32-NEXT:    nop
19 ; MIPS32-NEXT:  $BB0_2: # %cond.true
20 ; MIPS32-NEXT:    lw $1, 12($sp) # 4-byte Folded Reload
21 ; MIPS32-NEXT:    sw $1, 4($sp) # 4-byte Folded Spill
22 ; MIPS32-NEXT:    j $BB0_4
23 ; MIPS32-NEXT:    nop
24 ; MIPS32-NEXT:  $BB0_3: # %cond.false
25 ; MIPS32-NEXT:    lw $1, 8($sp) # 4-byte Folded Reload
26 ; MIPS32-NEXT:    sw $1, 4($sp) # 4-byte Folded Spill
27 ; MIPS32-NEXT:  $BB0_4: # %cond.end
28 ; MIPS32-NEXT:    lw $1, 4($sp) # 4-byte Folded Reload
29 ; MIPS32-NEXT:    move $2, $1
30 ; MIPS32-NEXT:    addiu $sp, $sp, 16
31 ; MIPS32-NEXT:    jr $ra
32 ; MIPS32-NEXT:    nop
33 entry:
34   br i1 %cnd, label %cond.true, label %cond.false
36 cond.true:
37   br label %cond.end
39 cond.false:
40   br label %cond.end
42 cond.end:
43   %cond = phi i1 [ %a, %cond.true ], [ %b, %cond.false ]
44   ret i1 %cond
47 define i8 @test_i8(i1 %cnd, i8 %a, i8 %b) {
48 ; MIPS32-LABEL: test_i8:
49 ; MIPS32:       # %bb.0: # %entry
50 ; MIPS32-NEXT:    addiu $sp, $sp, -16
51 ; MIPS32-NEXT:    .cfi_def_cfa_offset 16
52 ; MIPS32-NEXT:    lui $1, 0
53 ; MIPS32-NEXT:    ori $1, $1, 1
54 ; MIPS32-NEXT:    and $1, $4, $1
55 ; MIPS32-NEXT:    sw $5, 12($sp) # 4-byte Folded Spill
56 ; MIPS32-NEXT:    sw $6, 8($sp) # 4-byte Folded Spill
57 ; MIPS32-NEXT:    bnez $1, $BB1_2
58 ; MIPS32-NEXT:    nop
59 ; MIPS32-NEXT:  # %bb.1: # %entry
60 ; MIPS32-NEXT:    j $BB1_3
61 ; MIPS32-NEXT:    nop
62 ; MIPS32-NEXT:  $BB1_2: # %cond.true
63 ; MIPS32-NEXT:    lw $1, 12($sp) # 4-byte Folded Reload
64 ; MIPS32-NEXT:    sw $1, 4($sp) # 4-byte Folded Spill
65 ; MIPS32-NEXT:    j $BB1_4
66 ; MIPS32-NEXT:    nop
67 ; MIPS32-NEXT:  $BB1_3: # %cond.false
68 ; MIPS32-NEXT:    lw $1, 8($sp) # 4-byte Folded Reload
69 ; MIPS32-NEXT:    sw $1, 4($sp) # 4-byte Folded Spill
70 ; MIPS32-NEXT:  $BB1_4: # %cond.end
71 ; MIPS32-NEXT:    lw $1, 4($sp) # 4-byte Folded Reload
72 ; MIPS32-NEXT:    move $2, $1
73 ; MIPS32-NEXT:    addiu $sp, $sp, 16
74 ; MIPS32-NEXT:    jr $ra
75 ; MIPS32-NEXT:    nop
76 entry:
77   br i1 %cnd, label %cond.true, label %cond.false
79 cond.true:
80   br label %cond.end
82 cond.false:
83   br label %cond.end
85 cond.end:
86   %cond = phi i8 [ %a, %cond.true ], [ %b, %cond.false ]
87   ret i8 %cond
90 define i16 @test_i16(i1 %cnd, i16 %a, i16 %b) {
91 ; MIPS32-LABEL: test_i16:
92 ; MIPS32:       # %bb.0: # %entry
93 ; MIPS32-NEXT:    addiu $sp, $sp, -16
94 ; MIPS32-NEXT:    .cfi_def_cfa_offset 16
95 ; MIPS32-NEXT:    lui $1, 0
96 ; MIPS32-NEXT:    ori $1, $1, 1
97 ; MIPS32-NEXT:    and $1, $4, $1
98 ; MIPS32-NEXT:    sw $5, 12($sp) # 4-byte Folded Spill
99 ; MIPS32-NEXT:    sw $6, 8($sp) # 4-byte Folded Spill
100 ; MIPS32-NEXT:    bnez $1, $BB2_2
101 ; MIPS32-NEXT:    nop
102 ; MIPS32-NEXT:  # %bb.1: # %entry
103 ; MIPS32-NEXT:    j $BB2_3
104 ; MIPS32-NEXT:    nop
105 ; MIPS32-NEXT:  $BB2_2: # %cond.true
106 ; MIPS32-NEXT:    lw $1, 12($sp) # 4-byte Folded Reload
107 ; MIPS32-NEXT:    sw $1, 4($sp) # 4-byte Folded Spill
108 ; MIPS32-NEXT:    j $BB2_4
109 ; MIPS32-NEXT:    nop
110 ; MIPS32-NEXT:  $BB2_3: # %cond.false
111 ; MIPS32-NEXT:    lw $1, 8($sp) # 4-byte Folded Reload
112 ; MIPS32-NEXT:    sw $1, 4($sp) # 4-byte Folded Spill
113 ; MIPS32-NEXT:  $BB2_4: # %cond.end
114 ; MIPS32-NEXT:    lw $1, 4($sp) # 4-byte Folded Reload
115 ; MIPS32-NEXT:    move $2, $1
116 ; MIPS32-NEXT:    addiu $sp, $sp, 16
117 ; MIPS32-NEXT:    jr $ra
118 ; MIPS32-NEXT:    nop
119 entry:
120   br i1 %cnd, label %cond.true, label %cond.false
122 cond.true:
123   br label %cond.end
125 cond.false:
126   br label %cond.end
128 cond.end:
129   %cond = phi i16 [ %a, %cond.true ], [ %b, %cond.false ]
130   ret i16 %cond
133 define i32 @test_i32(i1 %cnd, i32 %a, i32 %b) {
134 ; MIPS32-LABEL: test_i32:
135 ; MIPS32:       # %bb.0: # %entry
136 ; MIPS32-NEXT:    addiu $sp, $sp, -16
137 ; MIPS32-NEXT:    .cfi_def_cfa_offset 16
138 ; MIPS32-NEXT:    lui $1, 0
139 ; MIPS32-NEXT:    ori $1, $1, 1
140 ; MIPS32-NEXT:    and $1, $4, $1
141 ; MIPS32-NEXT:    sw $5, 12($sp) # 4-byte Folded Spill
142 ; MIPS32-NEXT:    sw $6, 8($sp) # 4-byte Folded Spill
143 ; MIPS32-NEXT:    bnez $1, $BB3_2
144 ; MIPS32-NEXT:    nop
145 ; MIPS32-NEXT:  # %bb.1: # %entry
146 ; MIPS32-NEXT:    j $BB3_3
147 ; MIPS32-NEXT:    nop
148 ; MIPS32-NEXT:  $BB3_2: # %cond.true
149 ; MIPS32-NEXT:    lw $1, 12($sp) # 4-byte Folded Reload
150 ; MIPS32-NEXT:    sw $1, 4($sp) # 4-byte Folded Spill
151 ; MIPS32-NEXT:    j $BB3_4
152 ; MIPS32-NEXT:    nop
153 ; MIPS32-NEXT:  $BB3_3: # %cond.false
154 ; MIPS32-NEXT:    lw $1, 8($sp) # 4-byte Folded Reload
155 ; MIPS32-NEXT:    sw $1, 4($sp) # 4-byte Folded Spill
156 ; MIPS32-NEXT:  $BB3_4: # %cond.end
157 ; MIPS32-NEXT:    lw $1, 4($sp) # 4-byte Folded Reload
158 ; MIPS32-NEXT:    move $2, $1
159 ; MIPS32-NEXT:    addiu $sp, $sp, 16
160 ; MIPS32-NEXT:    jr $ra
161 ; MIPS32-NEXT:    nop
162 entry:
163   br i1 %cnd, label %cond.true, label %cond.false
165 cond.true:
166   br label %cond.end
168 cond.false:
169   br label %cond.end
171 cond.end:
172   %cond = phi i32 [ %a, %cond.true ], [ %b, %cond.false ]
173   ret i32 %cond