@@ -1395,9 +1395,7 @@ define i8 @add_like_or_t2_extrause(i8 %x) {
1395
1395
1396
1396
define i8 @add_and_xor (i8 %x , i8 %y ) {
1397
1397
; CHECK-LABEL: @add_and_xor(
1398
- ; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[X:%.*]], -1
1399
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[XOR]], [[Y:%.*]]
1400
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[AND]], [[X]]
1398
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[Y:%.*]], [[X:%.*]]
1401
1399
; CHECK-NEXT: ret i8 [[ADD]]
1402
1400
;
1403
1401
%xor = xor i8 %x , -1
@@ -1435,9 +1433,7 @@ define i8 @add_and_xor_wrong_op(i8 %x, i8 %y, i8 %z) {
1435
1433
define i8 @add_and_xor_commuted1 (i8 %x , i8 %_y ) {
1436
1434
; CHECK-LABEL: @add_and_xor_commuted1(
1437
1435
; CHECK-NEXT: [[Y:%.*]] = udiv i8 42, [[_Y:%.*]]
1438
- ; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[X:%.*]], -1
1439
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y]], [[XOR]]
1440
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[AND]], [[X]]
1436
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[Y]], [[X:%.*]]
1441
1437
; CHECK-NEXT: ret i8 [[ADD]]
1442
1438
;
1443
1439
%y = udiv i8 42 , %_y ; thwart complexity-based canonicalization
@@ -1450,9 +1446,7 @@ define i8 @add_and_xor_commuted1(i8 %x, i8 %_y) {
1450
1446
define i8 @add_and_xor_commuted2 (i8 %_x , i8 %y ) {
1451
1447
; CHECK-LABEL: @add_and_xor_commuted2(
1452
1448
; CHECK-NEXT: [[X:%.*]] = udiv i8 42, [[_X:%.*]]
1453
- ; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[X]], -1
1454
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[XOR]], [[Y:%.*]]
1455
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[X]], [[AND]]
1449
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[X]], [[Y:%.*]]
1456
1450
; CHECK-NEXT: ret i8 [[ADD]]
1457
1451
;
1458
1452
%x = udiv i8 42 , %_x ; thwart complexity-based canonicalization
@@ -1466,9 +1460,7 @@ define i8 @add_and_xor_commuted3(i8 %_x, i8 %_y) {
1466
1460
; CHECK-LABEL: @add_and_xor_commuted3(
1467
1461
; CHECK-NEXT: [[X:%.*]] = udiv i8 42, [[_X:%.*]]
1468
1462
; CHECK-NEXT: [[Y:%.*]] = udiv i8 42, [[_Y:%.*]]
1469
- ; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[X]], -1
1470
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y]], [[XOR]]
1471
- ; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i8 [[X]], [[AND]]
1463
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[X]], [[Y]]
1472
1464
; CHECK-NEXT: ret i8 [[ADD]]
1473
1465
;
1474
1466
%x = udiv i8 42 , %_x ; thwart complexity-based canonicalization
@@ -1485,7 +1477,7 @@ define i8 @add_and_xor_extra_use(i8 %x, i8 %y) {
1485
1477
; CHECK-NEXT: call void @use(i8 [[XOR]])
1486
1478
; CHECK-NEXT: [[AND:%.*]] = and i8 [[XOR]], [[Y:%.*]]
1487
1479
; CHECK-NEXT: call void @use(i8 [[AND]])
1488
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[AND ]], [[X]]
1480
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[Y ]], [[X]]
1489
1481
; CHECK-NEXT: ret i8 [[ADD]]
1490
1482
;
1491
1483
%xor = xor i8 %x , -1
@@ -1500,7 +1492,7 @@ define i8 @add_xor_and_const(i8 %x) {
1500
1492
; CHECK-LABEL: @add_xor_and_const(
1501
1493
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 42
1502
1494
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], 42
1503
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[XOR]], [[X]]
1495
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[XOR]], [[X]]
1504
1496
; CHECK-NEXT: ret i8 [[ADD]]
1505
1497
;
1506
1498
%and = and i8 %x , 42
@@ -1527,7 +1519,7 @@ define i8 @add_xor_and_var(i8 %x, i8 %y) {
1527
1519
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], [[Y:%.*]]
1528
1520
; CHECK-NEXT: call void @use(i8 [[AND]])
1529
1521
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], [[Y]]
1530
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[XOR]], [[X]]
1522
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[XOR]], [[X]]
1531
1523
; CHECK-NEXT: ret i8 [[ADD]]
1532
1524
;
1533
1525
%and = and i8 %x , %y
@@ -1572,7 +1564,7 @@ define i8 @add_xor_and_var_commuted1(i8 %x, i8 %y) {
1572
1564
; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y:%.*]], [[X:%.*]]
1573
1565
; CHECK-NEXT: call void @use(i8 [[AND]])
1574
1566
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], [[Y]]
1575
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[XOR]], [[X]]
1567
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[XOR]], [[X]]
1576
1568
; CHECK-NEXT: ret i8 [[ADD]]
1577
1569
;
1578
1570
%and = and i8 %y , %x
@@ -1588,7 +1580,7 @@ define i8 @add_xor_and_var_commuted2(i8 %x, i8 %_y) {
1588
1580
; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y]], [[X:%.*]]
1589
1581
; CHECK-NEXT: call void @use(i8 [[AND]])
1590
1582
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[Y]], [[AND]]
1591
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[XOR]], [[X]]
1583
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[XOR]], [[X]]
1592
1584
; CHECK-NEXT: ret i8 [[ADD]]
1593
1585
;
1594
1586
%y = udiv i8 42 , %_y ; thwart complexity-based canonicalization
@@ -1605,7 +1597,7 @@ define i8 @add_xor_and_var_commuted3(i8 %x, i8 %_y) {
1605
1597
; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y]], [[X:%.*]]
1606
1598
; CHECK-NEXT: call void @use(i8 [[AND]])
1607
1599
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[Y]], [[AND]]
1608
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[XOR]], [[X]]
1600
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[XOR]], [[X]]
1609
1601
; CHECK-NEXT: ret i8 [[ADD]]
1610
1602
;
1611
1603
%y = udiv i8 42 , %_y ; thwart complexity-based canonicalization
@@ -1622,7 +1614,7 @@ define i8 @add_xor_and_var_commuted4(i8 %_x, i8 %y) {
1622
1614
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X]], [[Y:%.*]]
1623
1615
; CHECK-NEXT: call void @use(i8 [[AND]])
1624
1616
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], [[Y]]
1625
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[X]], [[XOR]]
1617
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[X]], [[XOR]]
1626
1618
; CHECK-NEXT: ret i8 [[ADD]]
1627
1619
;
1628
1620
%x = udiv i8 42 , %_x ; thwart complexity-based canonicalization
@@ -1639,7 +1631,7 @@ define i8 @add_xor_and_var_commuted5(i8 %_x, i8 %y) {
1639
1631
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X]], [[Y:%.*]]
1640
1632
; CHECK-NEXT: call void @use(i8 [[AND]])
1641
1633
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], [[Y]]
1642
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[X]], [[XOR]]
1634
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[X]], [[XOR]]
1643
1635
; CHECK-NEXT: ret i8 [[ADD]]
1644
1636
;
1645
1637
%x = udiv i8 42 , %_x ; thwart complexity-based canonicalization
@@ -1657,7 +1649,7 @@ define i8 @add_xor_and_var_commuted6(i8 %_x, i8 %_y) {
1657
1649
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X]], [[Y]]
1658
1650
; CHECK-NEXT: call void @use(i8 [[AND]])
1659
1651
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[Y]], [[AND]]
1660
- ; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i8 [[X]], [[XOR]]
1652
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[X]], [[XOR]]
1661
1653
; CHECK-NEXT: ret i8 [[ADD]]
1662
1654
;
1663
1655
%x = udiv i8 42 , %_x ; thwart complexity-based canonicalization
@@ -1676,7 +1668,7 @@ define i8 @add_xor_and_var_commuted7(i8 %_x, i8 %_y) {
1676
1668
; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y]], [[X]]
1677
1669
; CHECK-NEXT: call void @use(i8 [[AND]])
1678
1670
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[Y]], [[AND]]
1679
- ; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i8 [[X]], [[XOR]]
1671
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[X]], [[XOR]]
1680
1672
; CHECK-NEXT: ret i8 [[ADD]]
1681
1673
;
1682
1674
%x = udiv i8 42 , %_x ; thwart complexity-based canonicalization
@@ -1694,7 +1686,7 @@ define i8 @add_xor_and_var_extra_use(i8 %x, i8 %y) {
1694
1686
; CHECK-NEXT: call void @use(i8 [[AND]])
1695
1687
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], [[Y]]
1696
1688
; CHECK-NEXT: call void @use(i8 [[XOR]])
1697
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[XOR]], [[X]]
1689
+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[XOR]], [[X]]
1698
1690
; CHECK-NEXT: ret i8 [[ADD]]
1699
1691
;
1700
1692
%and = and i8 %x , %y
0 commit comments