@@ -1489,48 +1489,51 @@ define i4 @PR96857_xor_without_noundef(i4 %val0, i4 %val1, i4 %val2) {
1489
1489
define i32 @or_disjoint_with_xor (i32 %a , i32 %b ) {
1490
1490
; CHECK-LABEL: @or_disjoint_with_xor(
1491
1491
; CHECK-NEXT: entry:
1492
- ; CHECK-NEXT: [[TMP0:%.*]] = xor i32 [[A:%.*]], -1
1493
- ; CHECK-NEXT: [[XOR:%.*]] = and i32 [[B:%.*]], [[TMP0]]
1494
- ; CHECK-NEXT: ret i32 [[XOR]]
1492
+ ; CHECK-NEXT: ret i32 [[B:%.*]]
1495
1493
;
1496
1494
entry:
1497
1495
%or = or disjoint i32 %a , %b
1498
1496
%xor = xor i32 %or , %a
1499
1497
ret i32 %xor
1500
1498
}
1501
1499
1502
- define i32 @xor_with_or_disjoint (i32 %a , i32 %b , i32 %c ) {
1503
- ; CHECK-LABEL: @xor_with_or_disjoint (
1500
+ define i32 @xor_with_or_disjoint_ab (i32 %a , i32 %b ) {
1501
+ ; CHECK-LABEL: @xor_with_or_disjoint_ab (
1504
1502
; CHECK-NEXT: entry:
1505
- ; CHECK-NEXT: [[TMP0:%.*]] = xor i32 [[A:%.*]], -1
1506
- ; CHECK-NEXT: [[XOR:%.*]] = and i32 [[B:%.*]], [[TMP0]]
1507
- ; CHECK-NEXT: ret i32 [[XOR]]
1503
+ ; CHECK-NEXT: ret i32 [[B:%.*]]
1508
1504
;
1509
1505
entry:
1510
1506
%or = or disjoint i32 %a , %b
1511
1507
%xor = xor i32 %a , %or
1512
1508
ret i32 %xor
1513
1509
}
1514
1510
1515
- define <2 x i32 > @or_disjoint_with_xor_vec (<2 x i32 > %a , < 2 x i32 > %b , <2 x i32 > %c ) {
1511
+ define i32 @xor_with_or_disjoint_ba (i32 %a , i32 %b ) {
1512
+ ; CHECK-LABEL: @xor_with_or_disjoint_ba(
1513
+ ; CHECK-NEXT: entry:
1514
+ ; CHECK-NEXT: ret i32 [[B:%.*]]
1515
+ ;
1516
+ entry:
1517
+ %or = or disjoint i32 %b , %a
1518
+ %xor = xor i32 %b , %or
1519
+ ret i32 %xor
1520
+ }
1521
+
1522
+ define <2 x i32 > @or_disjoint_with_xor_vec (<2 x i32 > %a , < 2 x i32 > %b ) {
1516
1523
; CHECK-LABEL: @or_disjoint_with_xor_vec(
1517
1524
; CHECK-NEXT: entry:
1518
- ; CHECK-NEXT: [[TMP0:%.*]] = xor <2 x i32> [[A:%.*]], <i32 -1, i32 -1>
1519
- ; CHECK-NEXT: [[XOR:%.*]] = and <2 x i32> [[B:%.*]], [[TMP0]]
1520
- ; CHECK-NEXT: ret <2 x i32> [[XOR]]
1525
+ ; CHECK-NEXT: ret <2 x i32> [[B:%.*]]
1521
1526
;
1522
1527
entry:
1523
1528
%or = or disjoint <2 x i32 > %a , %b
1524
1529
%xor = xor <2 x i32 > %or , %a
1525
1530
ret <2 x i32 > %xor
1526
1531
}
1527
1532
1528
- define <2 x i32 > @xor_with_or_disjoint_vec (<2 x i32 > %a , < 2 x i32 > %b , < 2 x i32 > %c ) {
1533
+ define <2 x i32 > @xor_with_or_disjoint_vec (<2 x i32 > %a , < 2 x i32 > %b ) {
1529
1534
; CHECK-LABEL: @xor_with_or_disjoint_vec(
1530
1535
; CHECK-NEXT: entry:
1531
- ; CHECK-NEXT: [[TMP0:%.*]] = xor <2 x i32> [[A:%.*]], <i32 -1, i32 -1>
1532
- ; CHECK-NEXT: [[XOR:%.*]] = and <2 x i32> [[B:%.*]], [[TMP0]]
1533
- ; CHECK-NEXT: ret <2 x i32> [[XOR]]
1536
+ ; CHECK-NEXT: ret <2 x i32> [[B:%.*]]
1534
1537
;
1535
1538
entry:
1536
1539
%or = or disjoint <2 x i32 > %a , %b
0 commit comments