@@ -1517,38 +1517,164 @@ define i1 @fcmp_one_fsub_const(float %x, float %y) {
1517
1517
ret i1 %cmp
1518
1518
}
1519
1519
1520
- define <8 x i1 > @fcmp_vec_ogt_fsub_const (<8 x float > %x , <8 x float > %y ) {
1521
- ; CHECK-LABEL: @fcmp_vec_ogt_fsub_const(
1522
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1520
+ define i1 @fcmp_oeq_fsub_const (float %x , float %y ) {
1521
+ ; CHECK-LABEL: @fcmp_oeq_fsub_const(
1522
+ ; CHECK-NEXT: [[FS:%.*]] = fsub float [[X:%.*]], [[Y:%.*]]
1523
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq float [[FS]], 0.000000e+00
1524
+ ; CHECK-NEXT: ret i1 [[CMP]]
1525
+ ;
1526
+ %fs = fsub float %x , %y
1527
+ %cmp = fcmp oeq float %fs , 0 .000000e+00
1528
+ ret i1 %cmp
1529
+ }
1530
+
1531
+ define i1 @fcmp_oge_fsub_const (float %x , float %y ) {
1532
+ ; CHECK-LABEL: @fcmp_oge_fsub_const(
1533
+ ; CHECK-NEXT: [[FS:%.*]] = fsub float [[X:%.*]], [[Y:%.*]]
1534
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp oge float [[FS]], 0.000000e+00
1535
+ ; CHECK-NEXT: ret i1 [[CMP]]
1536
+ ;
1537
+ %fs = fsub float %x , %y
1538
+ %cmp = fcmp oge float %fs , 0 .000000e+00
1539
+ ret i1 %cmp
1540
+ }
1541
+
1542
+ define i1 @fcmp_ole_fsub_const (float %x , float %y ) {
1543
+ ; CHECK-LABEL: @fcmp_ole_fsub_const(
1544
+ ; CHECK-NEXT: [[FS:%.*]] = fsub float [[X:%.*]], [[Y:%.*]]
1545
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ole float [[FS]], 0.000000e+00
1546
+ ; CHECK-NEXT: ret i1 [[CMP]]
1547
+ ;
1548
+ %fs = fsub float %x , %y
1549
+ %cmp = fcmp ole float %fs , 0 .000000e+00
1550
+ ret i1 %cmp
1551
+ }
1552
+
1553
+ define i1 @fcmp_ueq_fsub_const (float %x , float %y ) {
1554
+ ; CHECK-LABEL: @fcmp_ueq_fsub_const(
1555
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq float [[X:%.*]], [[Y:%.*]]
1556
+ ; CHECK-NEXT: ret i1 [[CMP]]
1557
+ ;
1558
+ %fs = fsub float %x , %y
1559
+ %cmp = fcmp ueq float %fs , 0 .000000e+00
1560
+ ret i1 %cmp
1561
+ }
1562
+
1563
+ define i1 @fcmp_uge_fsub_const (float %x , float %y ) {
1564
+ ; CHECK-LABEL: @fcmp_uge_fsub_const(
1565
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp uge float [[X:%.*]], [[Y:%.*]]
1566
+ ; CHECK-NEXT: ret i1 [[CMP]]
1567
+ ;
1568
+ %fs = fsub float %x , %y
1569
+ %cmp = fcmp uge float %fs , 0 .000000e+00
1570
+ ret i1 %cmp
1571
+ }
1572
+
1573
+ define i1 @fcmp_ule_fsub_const (float %x , float %y ) {
1574
+ ; CHECK-LABEL: @fcmp_ule_fsub_const(
1575
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ule float [[X:%.*]], [[Y:%.*]]
1576
+ ; CHECK-NEXT: ret i1 [[CMP]]
1577
+ ;
1578
+ %fs = fsub float %x , %y
1579
+ %cmp = fcmp ule float %fs , 0 .000000e+00
1580
+ ret i1 %cmp
1581
+ }
1582
+
1583
+ define i1 @fcmp_ugt_fsub_const (float %x , float %y ) {
1584
+ ; CHECK-LABEL: @fcmp_ugt_fsub_const(
1585
+ ; CHECK-NEXT: [[FS:%.*]] = fsub float [[X:%.*]], [[Y:%.*]]
1586
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt float [[FS]], 0.000000e+00
1587
+ ; CHECK-NEXT: ret i1 [[CMP]]
1588
+ ;
1589
+ %fs = fsub float %x , %y
1590
+ %cmp = fcmp ugt float %fs , 0 .000000e+00
1591
+ ret i1 %cmp
1592
+ }
1593
+
1594
+ define i1 @fcmp_ult_fsub_const (float %x , float %y ) {
1595
+ ; CHECK-LABEL: @fcmp_ult_fsub_const(
1596
+ ; CHECK-NEXT: [[FS:%.*]] = fsub float [[X:%.*]], [[Y:%.*]]
1597
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ult float [[FS]], 0.000000e+00
1598
+ ; CHECK-NEXT: ret i1 [[CMP]]
1599
+ ;
1600
+ %fs = fsub float %x , %y
1601
+ %cmp = fcmp ult float %fs , 0 .000000e+00
1602
+ ret i1 %cmp
1603
+ }
1604
+
1605
+ define i1 @fcmp_une_fsub_const (float %x , float %y ) {
1606
+ ; CHECK-LABEL: @fcmp_une_fsub_const(
1607
+ ; CHECK-NEXT: [[FS:%.*]] = fsub float [[X:%.*]], [[Y:%.*]]
1608
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp une float [[FS]], 0.000000e+00
1609
+ ; CHECK-NEXT: ret i1 [[CMP]]
1610
+ ;
1611
+ %fs = fsub float %x , %y
1612
+ %cmp = fcmp une float %fs , 0 .000000e+00
1613
+ ret i1 %cmp
1614
+ }
1615
+
1616
+ define <8 x i1 > @fcmp_vec_uge_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1617
+ ; CHECK-LABEL: @fcmp_vec_uge_fast_fsub_const(
1618
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp uge <8 x float> [[X:%.*]], [[Y:%.*]]
1523
1619
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1524
1620
;
1525
- %fs = fsub <8 x float > %x , %y
1526
- %cmp = fcmp ogt <8 x float > %fs , zeroinitializer
1621
+ %fs = fsub fast <8 x float > %x , %y
1622
+ %cmp = fcmp uge <8 x float > %fs , zeroinitializer
1527
1623
ret <8 x i1 > %cmp
1528
1624
}
1529
1625
1530
- define <8 x i1 > @fcmp_vec_olt_fsub_const (<8 x float > %x , <8 x float > %y ) {
1531
- ; CHECK-LABEL: @fcmp_vec_olt_fsub_const (
1532
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1626
+ define <8 x i1 > @fcmp_vec_ule_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1627
+ ; CHECK-LABEL: @fcmp_vec_ule_fast_fsub_const (
1628
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ule <8 x float> [[X:%.*]], [[Y:%.*]]
1533
1629
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1534
1630
;
1535
- %fs = fsub <8 x float > %x , %y
1536
- %cmp = fcmp olt <8 x float > %fs , zeroinitializer
1631
+ %fs = fsub fast <8 x float > %x , %y
1632
+ %cmp = fcmp ule <8 x float > %fs , zeroinitializer
1537
1633
ret <8 x i1 > %cmp
1538
1634
}
1539
1635
1540
- define <8 x i1 > @fcmp_vec_one_fsub_const (<8 x float > %x , <8 x float > %y ) {
1541
- ; CHECK-LABEL: @fcmp_vec_one_fsub_const (
1542
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1636
+ define <8 x i1 > @fcmp_vec_ueq_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1637
+ ; CHECK-LABEL: @fcmp_vec_ueq_fast_fsub_const (
1638
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq <8 x float> [[X:%.*]], [[Y:%.*]]
1543
1639
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1544
1640
;
1545
- %fs = fsub <8 x float > %x , %y
1546
- %cmp = fcmp one <8 x float > %fs , zeroinitializer
1641
+ %fs = fsub fast <8 x float > %x , %y
1642
+ %cmp = fcmp ueq <8 x float > %fs , zeroinitializer
1547
1643
ret <8 x i1 > %cmp
1548
1644
}
1549
1645
1550
- define <8 x i1 > @fcmp_vec_ogt_fm_fsub_const (<8 x float > %x , <8 x float > %y ) {
1551
- ; CHECK-LABEL: @fcmp_vec_ogt_fm_fsub_const(
1646
+ define <8 x i1 > @fcmp_vec_oge_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1647
+ ; CHECK-LABEL: @fcmp_vec_oge_fast_fsub_const(
1648
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp oge <8 x float> [[X:%.*]], [[Y:%.*]]
1649
+ ; CHECK-NEXT: ret <8 x i1> [[CMP]]
1650
+ ;
1651
+ %fs = fsub fast <8 x float > %x , %y
1652
+ %cmp = fcmp oge <8 x float > %fs , zeroinitializer
1653
+ ret <8 x i1 > %cmp
1654
+ }
1655
+
1656
+ define <8 x i1 > @fcmp_vec_ole_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1657
+ ; CHECK-LABEL: @fcmp_vec_ole_fast_fsub_const(
1658
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ole <8 x float> [[X:%.*]], [[Y:%.*]]
1659
+ ; CHECK-NEXT: ret <8 x i1> [[CMP]]
1660
+ ;
1661
+ %fs = fsub fast <8 x float > %x , %y
1662
+ %cmp = fcmp ole <8 x float > %fs , zeroinitializer
1663
+ ret <8 x i1 > %cmp
1664
+ }
1665
+
1666
+ define <8 x i1 > @fcmp_vec_oeq_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1667
+ ; CHECK-LABEL: @fcmp_vec_oeq_fast_fsub_const(
1668
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq <8 x float> [[X:%.*]], [[Y:%.*]]
1669
+ ; CHECK-NEXT: ret <8 x i1> [[CMP]]
1670
+ ;
1671
+ %fs = fsub fast <8 x float > %x , %y
1672
+ %cmp = fcmp oeq <8 x float > %fs , zeroinitializer
1673
+ ret <8 x i1 > %cmp
1674
+ }
1675
+
1676
+ define <8 x i1 > @fcmp_vec_ogt_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1677
+ ; CHECK-LABEL: @fcmp_vec_ogt_fast_fsub_const(
1552
1678
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1553
1679
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1554
1680
;
@@ -1557,8 +1683,8 @@ define <8 x i1> @fcmp_vec_ogt_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1557
1683
ret <8 x i1 > %cmp
1558
1684
}
1559
1685
1560
- define <8 x i1 > @fcmp_vec_olt_fm_fsub_const (<8 x float > %x , <8 x float > %y ) {
1561
- ; CHECK-LABEL: @fcmp_vec_olt_fm_fsub_const (
1686
+ define <8 x i1 > @fcmp_vec_olt_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1687
+ ; CHECK-LABEL: @fcmp_vec_olt_fast_fsub_const (
1562
1688
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1563
1689
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1564
1690
;
@@ -1567,8 +1693,8 @@ define <8 x i1> @fcmp_vec_olt_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1567
1693
ret <8 x i1 > %cmp
1568
1694
}
1569
1695
1570
- define <8 x i1 > @fcmp_vec_one_fm_fsub_const (<8 x float > %x , <8 x float > %y ) {
1571
- ; CHECK-LABEL: @fcmp_vec_one_fm_fsub_const (
1696
+ define <8 x i1 > @fcmp_vec_one_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1697
+ ; CHECK-LABEL: @fcmp_vec_one_fast_fsub_const (
1572
1698
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1573
1699
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1574
1700
;
@@ -1577,32 +1703,32 @@ define <8 x i1> @fcmp_vec_one_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1577
1703
ret <8 x i1 > %cmp
1578
1704
}
1579
1705
1580
- define <8 x i1 > @ffcmp_vec_ogt_fsub_const (<8 x float > %x , <8 x float > %y ) {
1581
- ; CHECK-LABEL: @ffcmp_vec_ogt_fsub_const (
1582
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1706
+ define <8 x i1 > @fcmp_vec_ugt_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1707
+ ; CHECK-LABEL: @fcmp_vec_ugt_fast_fsub_const (
1708
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt <8 x float> [[X:%.*]], [[Y:%.*]]
1583
1709
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1584
1710
;
1585
- %fs = fsub <8 x float > %x , %y
1586
- %cmp = fcmp fast ogt <8 x float > %fs , zeroinitializer
1711
+ %fs = fsub fast <8 x float > %x , %y
1712
+ %cmp = fcmp ugt <8 x float > %fs , zeroinitializer
1587
1713
ret <8 x i1 > %cmp
1588
1714
}
1589
1715
1590
- define <8 x i1 > @ffcmp_vec_olt_fsub_const (<8 x float > %x , <8 x float > %y ) {
1591
- ; CHECK-LABEL: @ffcmp_vec_olt_fsub_const (
1592
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1716
+ define <8 x i1 > @fcmp_vec_ult_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1717
+ ; CHECK-LABEL: @fcmp_vec_ult_fast_fsub_const (
1718
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ult <8 x float> [[X:%.*]], [[Y:%.*]]
1593
1719
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1594
1720
;
1595
- %fs = fsub <8 x float > %x , %y
1596
- %cmp = fcmp fast olt <8 x float > %fs , zeroinitializer
1721
+ %fs = fsub fast <8 x float > %x , %y
1722
+ %cmp = fcmp ult <8 x float > %fs , zeroinitializer
1597
1723
ret <8 x i1 > %cmp
1598
1724
}
1599
1725
1600
- define <8 x i1 > @ffcmp_vec_one_fsub_const (<8 x float > %x , <8 x float > %y ) {
1601
- ; CHECK-LABEL: @ffcmp_vec_one_fsub_const (
1602
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1726
+ define <8 x i1 > @fcmp_vec_une_fast_fsub_const (<8 x float > %x , <8 x float > %y ) {
1727
+ ; CHECK-LABEL: @fcmp_vec_une_fast_fsub_const (
1728
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp une <8 x float> [[X:%.*]], [[Y:%.*]]
1603
1729
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1604
1730
;
1605
- %fs = fsub <8 x float > %x , %y
1606
- %cmp = fcmp fast one <8 x float > %fs , zeroinitializer
1731
+ %fs = fsub fast <8 x float > %x , %y
1732
+ %cmp = fcmp une <8 x float > %fs , zeroinitializer
1607
1733
ret <8 x i1 > %cmp
1608
1734
}
0 commit comments