@@ -207,10 +207,7 @@ define i1 @bools_logical_commute0_and1_and2(i1 %a, i1 %b, i1 %c) {
207
207
208
208
define i1 @bools_logical_commute1 (i1 %a , i1 %b , i1 %c ) {
209
209
; CHECK-LABEL: @bools_logical_commute1(
210
- ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[C:%.*]], true
211
- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[A:%.*]], i1 [[NOT]], i1 false
212
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[C]], i1 [[B:%.*]], i1 false
213
- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[AND1]], i1 true, i1 [[AND2]]
210
+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]]
214
211
; CHECK-NEXT: ret i1 [[OR]]
215
212
;
216
213
%not = xor i1 %c , -1
@@ -223,10 +220,7 @@ define i1 @bools_logical_commute1(i1 %a, i1 %b, i1 %c) {
223
220
define i1 @bools_logical_commute1_and1 (i1 %b , i1 %c ) {
224
221
; CHECK-LABEL: @bools_logical_commute1_and1(
225
222
; CHECK-NEXT: [[A:%.*]] = call i1 @gen1()
226
- ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[C:%.*]], true
227
- ; CHECK-NEXT: [[AND1:%.*]] = and i1 [[A]], [[NOT]]
228
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[C]], i1 [[B:%.*]], i1 false
229
- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[AND1]], i1 true, i1 [[AND2]]
223
+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A]]
230
224
; CHECK-NEXT: ret i1 [[OR]]
231
225
;
232
226
%a = call i1 @gen1 ()
@@ -239,10 +233,7 @@ define i1 @bools_logical_commute1_and1(i1 %b, i1 %c) {
239
233
240
234
define i1 @bools_logical_commute1_and2 (i1 %a , i1 %b , i1 %c ) {
241
235
; CHECK-LABEL: @bools_logical_commute1_and2(
242
- ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[C:%.*]], true
243
- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[A:%.*]], i1 [[NOT]], i1 false
244
- ; CHECK-NEXT: [[AND2:%.*]] = and i1 [[C]], [[B:%.*]]
245
- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[AND1]], i1 true, i1 [[AND2]]
236
+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]]
246
237
; CHECK-NEXT: ret i1 [[OR]]
247
238
;
248
239
%not = xor i1 %c , -1
@@ -255,10 +246,7 @@ define i1 @bools_logical_commute1_and2(i1 %a, i1 %b, i1 %c) {
255
246
define i1 @bools_logical_commute1_and1_and2 (i1 %b , i1 %c ) {
256
247
; CHECK-LABEL: @bools_logical_commute1_and1_and2(
257
248
; CHECK-NEXT: [[A:%.*]] = call i1 @gen1()
258
- ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[C:%.*]], true
259
- ; CHECK-NEXT: [[AND1:%.*]] = and i1 [[A]], [[NOT]]
260
- ; CHECK-NEXT: [[AND2:%.*]] = and i1 [[C]], [[B:%.*]]
261
- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[AND1]], i1 true, i1 [[AND2]]
249
+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A]]
262
250
; CHECK-NEXT: ret i1 [[OR]]
263
251
;
264
252
%a = call i1 @gen1 ()
@@ -319,10 +307,8 @@ define <2 x i1> @bools_logical_commute2_and1_and2(<2 x i1> %a, <2 x i1> %b, <2 x
319
307
320
308
define i1 @bools_logical_commute3 (i1 %a , i1 %b , i1 %c ) {
321
309
; CHECK-LABEL: @bools_logical_commute3(
322
- ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[C:%.*]], true
323
- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[A:%.*]], i1 [[NOT]], i1 false
324
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[B:%.*]], i1 [[C]], i1 false
325
- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[AND1]], i1 true, i1 [[AND2]]
310
+ ; CHECK-NEXT: [[TMP1:%.*]] = freeze i1 [[C:%.*]]
311
+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i1 [[B:%.*]], i1 [[A:%.*]]
326
312
; CHECK-NEXT: ret i1 [[OR]]
327
313
;
328
314
%not = xor i1 %c , -1
@@ -335,10 +321,7 @@ define i1 @bools_logical_commute3(i1 %a, i1 %b, i1 %c) {
335
321
define i1 @bools_logical_commute3_and1 (i1 %b , i1 %c ) {
336
322
; CHECK-LABEL: @bools_logical_commute3_and1(
337
323
; CHECK-NEXT: [[A:%.*]] = call i1 @gen1()
338
- ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[C:%.*]], true
339
- ; CHECK-NEXT: [[AND1:%.*]] = and i1 [[A]], [[NOT]]
340
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[B:%.*]], i1 [[C]], i1 false
341
- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[AND1]], i1 true, i1 [[AND2]]
324
+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A]]
342
325
; CHECK-NEXT: ret i1 [[OR]]
343
326
;
344
327
%a = call i1 @gen1 ()
@@ -351,10 +334,7 @@ define i1 @bools_logical_commute3_and1(i1 %b, i1 %c) {
351
334
352
335
define i1 @bools_logical_commute3_and2 (i1 %a , i1 %b , i1 %c ) {
353
336
; CHECK-LABEL: @bools_logical_commute3_and2(
354
- ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[C:%.*]], true
355
- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[A:%.*]], i1 [[NOT]], i1 false
356
- ; CHECK-NEXT: [[AND2:%.*]] = and i1 [[B:%.*]], [[C]]
357
- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[AND1]], i1 true, i1 [[AND2]]
337
+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]]
358
338
; CHECK-NEXT: ret i1 [[OR]]
359
339
;
360
340
%not = xor i1 %c , -1
@@ -367,10 +347,7 @@ define i1 @bools_logical_commute3_and2(i1 %a, i1 %b, i1 %c) {
367
347
define i1 @bools_logical_commute3_and1_and2 (i1 %b , i1 %c ) {
368
348
; CHECK-LABEL: @bools_logical_commute3_and1_and2(
369
349
; CHECK-NEXT: [[A:%.*]] = call i1 @gen1()
370
- ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[C:%.*]], true
371
- ; CHECK-NEXT: [[AND1:%.*]] = and i1 [[A]], [[NOT]]
372
- ; CHECK-NEXT: [[AND2:%.*]] = and i1 [[B:%.*]], [[C]]
373
- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[AND1]], i1 true, i1 [[AND2]]
350
+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A]]
374
351
; CHECK-NEXT: ret i1 [[OR]]
375
352
;
376
353
%a = call i1 @gen1 ()
0 commit comments