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
16 ; MIPS32-NEXT: # %bb.1: # %entry
17 ; MIPS32-NEXT: j $BB0_3
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
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
34 br i1 %cnd, label %cond.true, label %cond.false
43 %cond = phi i1 [ %a, %cond.true ], [ %b, %cond.false ]
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
59 ; MIPS32-NEXT: # %bb.1: # %entry
60 ; MIPS32-NEXT: j $BB1_3
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
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
77 br i1 %cnd, label %cond.true, label %cond.false
86 %cond = phi i8 [ %a, %cond.true ], [ %b, %cond.false ]
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
102 ; MIPS32-NEXT: # %bb.1: # %entry
103 ; MIPS32-NEXT: j $BB2_3
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
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
120 br i1 %cnd, label %cond.true, label %cond.false
129 %cond = phi i16 [ %a, %cond.true ], [ %b, %cond.false ]
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
145 ; MIPS32-NEXT: # %bb.1: # %entry
146 ; MIPS32-NEXT: j $BB3_3
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
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
163 br i1 %cnd, label %cond.true, label %cond.false
172 %cond = phi i32 [ %a, %cond.true ], [ %b, %cond.false ]