@@ -124,6 +124,67 @@ exit:
124
124
ret i8 %or2
125
125
}
126
126
127
+
128
+ define i8 @test_cond_and_bothways (i8 %x ) {
129
+ ; CHECK-LABEL: @test_cond_and_bothways(
130
+ ; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 91
131
+ ; CHECK-NEXT: [[CMP0:%.*]] = icmp ne i8 [[AND]], 24
132
+ ; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i8 [[X]], 0
133
+ ; CHECK-NEXT: [[COND:%.*]] = and i1 [[CMP0]], [[CMP1]]
134
+ ; CHECK-NEXT: br i1 [[COND]], label [[IF:%.*]], label [[EXIT:%.*]]
135
+ ; CHECK: if:
136
+ ; CHECK-NEXT: [[OR1:%.*]] = or i8 [[X]], -4
137
+ ; CHECK-NEXT: ret i8 [[OR1]]
138
+ ; CHECK: exit:
139
+ ; CHECK-NEXT: [[OR2:%.*]] = or i8 [[X]], -4
140
+ ; CHECK-NEXT: ret i8 [[OR2]]
141
+ ;
142
+ %and = and i8 %x , 91
143
+ %cmp0 = icmp ne i8 %and , 24
144
+ %cmp1 = icmp ne i8 %x , 0
145
+ %cond = and i1 %cmp0 , %cmp1
146
+ br i1 %cond , label %if , label %exit
147
+
148
+ if:
149
+ %or1 = or i8 %x , -4
150
+ ret i8 %or1
151
+
152
+ exit:
153
+ %or2 = or i8 %x , -4
154
+ ret i8 %or2
155
+ }
156
+
157
+ define i8 @test_cond_or_bothways (i8 %x ) {
158
+ ; CHECK-LABEL: @test_cond_or_bothways(
159
+ ; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 91
160
+ ; CHECK-NEXT: [[CMP0:%.*]] = icmp eq i8 [[AND]], 24
161
+ ; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 [[X]], 0
162
+ ; CHECK-NEXT: [[COND:%.*]] = or i1 [[CMP0]], [[CMP1]]
163
+ ; CHECK-NEXT: br i1 [[COND]], label [[IF:%.*]], label [[EXIT:%.*]]
164
+ ; CHECK: if:
165
+ ; CHECK-NEXT: [[OR1:%.*]] = or i8 [[X]], -4
166
+ ; CHECK-NEXT: ret i8 [[OR1]]
167
+ ; CHECK: exit:
168
+ ; CHECK-NEXT: [[OR2:%.*]] = or i8 [[X]], -4
169
+ ; CHECK-NEXT: ret i8 [[OR2]]
170
+ ;
171
+ %and = and i8 %x , 91
172
+ %cmp0 = icmp eq i8 %and , 24
173
+ %cmp1 = icmp eq i8 %x , 0
174
+ %cond = or i1 %cmp0 , %cmp1
175
+ br i1 %cond , label %if , label %exit
176
+
177
+ if:
178
+ %or1 = or i8 %x , -4
179
+ ret i8 %or1
180
+
181
+ exit:
182
+ %or2 = or i8 %x , -4
183
+ ret i8 %or2
184
+ }
185
+
186
+
187
+
127
188
define i8 @test_cond_and_commuted (i8 %x , i1 %c1 , i1 %c2 ) {
128
189
; CHECK-LABEL: @test_cond_and_commuted(
129
190
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 3
0 commit comments