@@ -1309,8 +1309,8 @@ define i1 @reduce_logical_and1(i1 %a, i32 %b, i32 %c) {
1309
1309
; CHECK-NEXT: bb:
1310
1310
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[B:%.*]], 6
1311
1311
; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[C:%.*]], [[B]]
1312
- ; CHECK-NEXT: [[AND1 :%.*]] = select i1 [[A:%.* ]], i1 [[CMP1]], i1 false
1313
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[AND1 ]], i1 [[CMP ]], i1 false
1312
+ ; CHECK-NEXT: [[TMP0 :%.*]] = and i1 [[CMP1 ]], [[CMP]]
1313
+ ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[A:%.* ]], i1 [[TMP0 ]], i1 false
1314
1314
; CHECK-NEXT: ret i1 [[AND2]]
1315
1315
;
1316
1316
bb:
@@ -1324,9 +1324,9 @@ bb:
1324
1324
define i1 @reduce_logical_and2 (i1 %a , i1 %b , i1 %c ) {
1325
1325
; CHECK-LABEL: @reduce_logical_and2(
1326
1326
; CHECK-NEXT: bb:
1327
- ; CHECK-NEXT: [[CMP :%.*]] = xor i1 [[C:%.*]], [[B:%.*]]
1328
- ; CHECK-NEXT: [[AND2 :%.*]] = select i1 [[AND1:%.* ]], i1 [[CMP]], i1 false
1329
- ; CHECK-NEXT: [[AND3:%.*]] = select i1 [[AND2]], i1 [[B]], i1 false
1327
+ ; CHECK-NEXT: [[TMP0 :%.*]] = xor i1 [[C:%.*]], true
1328
+ ; CHECK-NEXT: [[B :%.*]] = and i1 [[TMP0 ]], [[B1:%.*]]
1329
+ ; CHECK-NEXT: [[AND3:%.*]] = select i1 [[AND2:%.* ]], i1 [[B]], i1 false
1330
1330
; CHECK-NEXT: ret i1 [[AND3]]
1331
1331
;
1332
1332
bb:
@@ -1341,8 +1341,8 @@ define i1 @reduce_logical_and3(i1 %a, i32 %b, i32 noundef %c) {
1341
1341
; CHECK-NEXT: bb:
1342
1342
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[B:%.*]], 6
1343
1343
; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[C:%.*]], [[B]]
1344
- ; CHECK-NEXT: [[AND1 :%.*]] = select i1 [[A:%.* ]], i1 [[CMP]], i1 false
1345
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[AND1 ]], i1 [[CMP1 ]], i1 false
1344
+ ; CHECK-NEXT: [[TMP0 :%.*]] = and i1 [[CMP ]], [[CMP1]]
1345
+ ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[A:%.* ]], i1 [[TMP0 ]], i1 false
1346
1346
; CHECK-NEXT: ret i1 [[AND2]]
1347
1347
;
1348
1348
bb:
@@ -1358,8 +1358,8 @@ define i1 @reduce_logical_or1(i1 %a, i32 %b, i32 %c) {
1358
1358
; CHECK-NEXT: bb:
1359
1359
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[B:%.*]], 6
1360
1360
; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[C:%.*]], [[B]]
1361
- ; CHECK-NEXT: [[AND1 :%.*]] = select i1 [[A:%.* ]], i1 true, i1 [[CMP1 ]]
1362
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[AND1 ]], i1 true, i1 [[CMP ]]
1361
+ ; CHECK-NEXT: [[TMP0 :%.*]] = or i1 [[CMP1 ]], [[CMP ]]
1362
+ ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[A:%.* ]], i1 true, i1 [[TMP0 ]]
1363
1363
; CHECK-NEXT: ret i1 [[AND2]]
1364
1364
;
1365
1365
bb:
@@ -1373,9 +1373,8 @@ bb:
1373
1373
define i1 @reduce_logical_or2 (i1 %a , i1 %b , i1 %c ) {
1374
1374
; CHECK-LABEL: @reduce_logical_or2(
1375
1375
; CHECK-NEXT: bb:
1376
- ; CHECK-NEXT: [[CMP:%.*]] = xor i1 [[C:%.*]], [[B:%.*]]
1377
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[AND1:%.*]], i1 true, i1 [[CMP]]
1378
- ; CHECK-NEXT: [[AND3:%.*]] = select i1 [[AND2]], i1 true, i1 [[B]]
1376
+ ; CHECK-NEXT: [[B:%.*]] = or i1 [[C:%.*]], [[B1:%.*]]
1377
+ ; CHECK-NEXT: [[AND3:%.*]] = select i1 [[AND2:%.*]], i1 true, i1 [[B]]
1379
1378
; CHECK-NEXT: ret i1 [[AND3]]
1380
1379
;
1381
1380
bb:
@@ -1390,8 +1389,8 @@ define i1 @reduce_logical_or3(i1 %a, i32 %b, i32 noundef %c) {
1390
1389
; CHECK-NEXT: bb:
1391
1390
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[B:%.*]], 6
1392
1391
; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[C:%.*]], [[B]]
1393
- ; CHECK-NEXT: [[AND1 :%.*]] = select i1 [[A:%.* ]], i1 true, i1 [[CMP ]]
1394
- ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[AND1 ]], i1 true, i1 [[CMP1 ]]
1392
+ ; CHECK-NEXT: [[TMP0 :%.*]] = or i1 [[CMP ]], [[CMP1 ]]
1393
+ ; CHECK-NEXT: [[AND2:%.*]] = select i1 [[A:%.* ]], i1 true, i1 [[TMP0 ]]
1395
1394
; CHECK-NEXT: ret i1 [[AND2]]
1396
1395
;
1397
1396
bb:
0 commit comments