@@ -126,6 +126,7 @@ class RISCVVIntrinsic {
126
126
Intrinsic IntrinsicID = !cast<Intrinsic>(NAME);
127
127
bits<4> ScalarOperand = NoScalarOperand;
128
128
bits<5> VLOperand = NoVLOperand;
129
+ bit IsFPIntrinsic = 0;
129
130
}
130
131
131
132
let TargetPrefix = "riscv" in {
@@ -1442,14 +1443,15 @@ let TargetPrefix = "riscv" in {
1442
1443
defm vwmaccus : RISCVTernaryWide;
1443
1444
defm vwmaccsu : RISCVTernaryWide;
1444
1445
1445
- defm vfadd : RISCVBinaryAAXRoundingMode;
1446
- defm vfsub : RISCVBinaryAAXRoundingMode;
1447
- defm vfrsub : RISCVBinaryAAXRoundingMode;
1448
-
1449
- defm vfwadd : RISCVBinaryABXRoundingMode;
1450
- defm vfwsub : RISCVBinaryABXRoundingMode;
1451
- defm vfwadd_w : RISCVBinaryAAXRoundingMode;
1452
- defm vfwsub_w : RISCVBinaryAAXRoundingMode;
1446
+ let IsFPIntrinsic = 1 in {
1447
+ defm vfadd : RISCVBinaryAAXRoundingMode;
1448
+ defm vfsub : RISCVBinaryAAXRoundingMode;
1449
+ defm vfrsub : RISCVBinaryAAXRoundingMode;
1450
+ defm vfwadd : RISCVBinaryABXRoundingMode;
1451
+ defm vfwsub : RISCVBinaryABXRoundingMode;
1452
+ defm vfwadd_w : RISCVBinaryAAXRoundingMode;
1453
+ defm vfwsub_w : RISCVBinaryAAXRoundingMode;
1454
+ }
1453
1455
1454
1456
defm vsaddu : RISCVSaturatingBinaryAAX;
1455
1457
defm vsadd : RISCVSaturatingBinaryAAX;
@@ -1484,6 +1486,7 @@ let TargetPrefix = "riscv" in {
1484
1486
llvm_anyint_ty],
1485
1487
[IntrNoMem]>, RISCVVIntrinsic {
1486
1488
let VLOperand = 2;
1489
+ let IsFPIntrinsic = 1;
1487
1490
}
1488
1491
1489
1492
def int_riscv_vmv_x_s : DefaultAttrsIntrinsic<[LLVMVectorElementType<0>],
@@ -1506,51 +1509,57 @@ let TargetPrefix = "riscv" in {
1506
1509
llvm_anyint_ty],
1507
1510
[IntrNoMem]>, RISCVVIntrinsic {
1508
1511
let VLOperand = 2;
1512
+ let IsFPIntrinsic = 1;
1509
1513
}
1510
1514
1511
- defm vfmul : RISCVBinaryAAXRoundingMode;
1512
- defm vfdiv : RISCVBinaryAAXRoundingMode;
1513
- defm vfrdiv : RISCVBinaryAAXRoundingMode;
1515
+ let IsFPIntrinsic = 1 in {
1516
+ defm vfmul : RISCVBinaryAAXRoundingMode;
1517
+ defm vfdiv : RISCVBinaryAAXRoundingMode;
1518
+ defm vfrdiv : RISCVBinaryAAXRoundingMode;
1514
1519
1515
- defm vfwmul : RISCVBinaryABXRoundingMode;
1520
+ defm vfwmul : RISCVBinaryABXRoundingMode;
1516
1521
1517
- defm vfmacc : RISCVTernaryAAXARoundingMode;
1518
- defm vfnmacc : RISCVTernaryAAXARoundingMode;
1519
- defm vfmsac : RISCVTernaryAAXARoundingMode;
1520
- defm vfnmsac : RISCVTernaryAAXARoundingMode;
1521
- defm vfmadd : RISCVTernaryAAXARoundingMode;
1522
- defm vfnmadd : RISCVTernaryAAXARoundingMode;
1523
- defm vfmsub : RISCVTernaryAAXARoundingMode;
1524
- defm vfnmsub : RISCVTernaryAAXARoundingMode;
1522
+ defm vfmacc : RISCVTernaryAAXARoundingMode;
1523
+ defm vfnmacc : RISCVTernaryAAXARoundingMode;
1524
+ defm vfmsac : RISCVTernaryAAXARoundingMode;
1525
+ defm vfnmsac : RISCVTernaryAAXARoundingMode;
1526
+ defm vfmadd : RISCVTernaryAAXARoundingMode;
1527
+ defm vfnmadd : RISCVTernaryAAXARoundingMode;
1528
+ defm vfmsub : RISCVTernaryAAXARoundingMode;
1529
+ defm vfnmsub : RISCVTernaryAAXARoundingMode;
1525
1530
1526
- defm vfwmacc : RISCVTernaryWideRoundingMode;
1527
- defm vfwmaccbf16 : RISCVTernaryWideRoundingMode;
1528
- defm vfwnmacc : RISCVTernaryWideRoundingMode;
1529
- defm vfwmsac : RISCVTernaryWideRoundingMode;
1530
- defm vfwnmsac : RISCVTernaryWideRoundingMode;
1531
+ defm vfwmacc : RISCVTernaryWideRoundingMode;
1532
+ defm vfwmaccbf16 : RISCVTernaryWideRoundingMode;
1533
+ defm vfwnmacc : RISCVTernaryWideRoundingMode;
1534
+ defm vfwmsac : RISCVTernaryWideRoundingMode;
1535
+ defm vfwnmsac : RISCVTernaryWideRoundingMode;
1531
1536
1532
- defm vfsqrt : RISCVUnaryAARoundingMode;
1533
- defm vfrsqrt7 : RISCVUnaryAA;
1534
- defm vfrec7 : RISCVUnaryAARoundingMode;
1537
+ defm vfsqrt : RISCVUnaryAARoundingMode;
1538
+ defm vfrsqrt7 : RISCVUnaryAA;
1539
+ defm vfrec7 : RISCVUnaryAARoundingMode;
1535
1540
1536
- defm vfmin : RISCVBinaryAAX;
1537
- defm vfmax : RISCVBinaryAAX;
1541
+ defm vfmin : RISCVBinaryAAX;
1542
+ defm vfmax : RISCVBinaryAAX;
1538
1543
1539
- defm vfsgnj : RISCVBinaryAAX;
1540
- defm vfsgnjn : RISCVBinaryAAX;
1541
- defm vfsgnjx : RISCVBinaryAAX;
1544
+ defm vfsgnj : RISCVBinaryAAX;
1545
+ defm vfsgnjn : RISCVBinaryAAX;
1546
+ defm vfsgnjx : RISCVBinaryAAX;
1542
1547
1543
- defm vfclass : RISCVClassify;
1548
+ defm vfclass : RISCVClassify;
1544
1549
1545
- defm vfmerge : RISCVBinaryWithV0;
1550
+ defm vfmerge : RISCVBinaryWithV0;
1551
+ }
1546
1552
1547
1553
defm vslideup : RVVSlide;
1548
1554
defm vslidedown : RVVSlide;
1549
1555
1550
1556
defm vslide1up : RISCVBinaryAAX;
1551
1557
defm vslide1down : RISCVBinaryAAX;
1552
- defm vfslide1up : RISCVBinaryAAX;
1553
- defm vfslide1down : RISCVBinaryAAX;
1558
+
1559
+ let IsFPIntrinsic = 1 in {
1560
+ defm vfslide1up : RISCVBinaryAAX;
1561
+ defm vfslide1down : RISCVBinaryAAX;
1562
+ }
1554
1563
1555
1564
defm vrgather_vv : RISCVRGatherVV;
1556
1565
defm vrgather_vx : RISCVRGatherVX;
@@ -1571,12 +1580,14 @@ let TargetPrefix = "riscv" in {
1571
1580
defm vnclipu : RISCVSaturatingBinaryABShiftRoundingMode;
1572
1581
defm vnclip : RISCVSaturatingBinaryABShiftRoundingMode;
1573
1582
1574
- defm vmfeq : RISCVCompare;
1575
- defm vmfne : RISCVCompare;
1576
- defm vmflt : RISCVCompare;
1577
- defm vmfle : RISCVCompare;
1578
- defm vmfgt : RISCVCompare;
1579
- defm vmfge : RISCVCompare;
1583
+ let IsFPIntrinsic = 1 in {
1584
+ defm vmfeq : RISCVCompare;
1585
+ defm vmfne : RISCVCompare;
1586
+ defm vmflt : RISCVCompare;
1587
+ defm vmfle : RISCVCompare;
1588
+ defm vmfgt : RISCVCompare;
1589
+ defm vmfge : RISCVCompare;
1590
+ }
1580
1591
1581
1592
defm vredsum : RISCVReduction;
1582
1593
defm vredand : RISCVReduction;
@@ -1590,13 +1601,15 @@ let TargetPrefix = "riscv" in {
1590
1601
defm vwredsumu : RISCVReduction;
1591
1602
defm vwredsum : RISCVReduction;
1592
1603
1593
- defm vfredosum : RISCVReductionRoundingMode;
1594
- defm vfredusum : RISCVReductionRoundingMode;
1595
- defm vfredmin : RISCVReduction;
1596
- defm vfredmax : RISCVReduction;
1604
+ let IsFPIntrinsic = 1 in {
1605
+ defm vfredosum : RISCVReductionRoundingMode;
1606
+ defm vfredusum : RISCVReductionRoundingMode;
1607
+ defm vfredmin : RISCVReduction;
1608
+ defm vfredmax : RISCVReduction;
1597
1609
1598
- defm vfwredusum : RISCVReductionRoundingMode;
1599
- defm vfwredosum : RISCVReductionRoundingMode;
1610
+ defm vfwredusum : RISCVReductionRoundingMode;
1611
+ defm vfwredosum : RISCVReductionRoundingMode;
1612
+ }
1600
1613
1601
1614
def int_riscv_vmand: RISCVBinaryAAAUnMasked;
1602
1615
def int_riscv_vmnand: RISCVBinaryAAAUnMasked;
@@ -1615,31 +1628,33 @@ let TargetPrefix = "riscv" in {
1615
1628
defm vmsof : RISCVMaskedUnaryMOut;
1616
1629
defm vmsif : RISCVMaskedUnaryMOut;
1617
1630
1618
- defm vfcvt_xu_f_v : RISCVConversionRoundingMode;
1619
- defm vfcvt_x_f_v : RISCVConversionRoundingMode;
1620
- defm vfcvt_rtz_xu_f_v : RISCVConversion;
1621
- defm vfcvt_rtz_x_f_v : RISCVConversion;
1622
- defm vfcvt_f_xu_v : RISCVConversionRoundingMode;
1623
- defm vfcvt_f_x_v : RISCVConversionRoundingMode;
1624
-
1625
- defm vfwcvt_f_xu_v : RISCVConversion;
1626
- defm vfwcvt_f_x_v : RISCVConversion;
1627
- defm vfwcvt_xu_f_v : RISCVConversionRoundingMode;
1628
- defm vfwcvt_x_f_v : RISCVConversionRoundingMode;
1629
- defm vfwcvt_rtz_xu_f_v : RISCVConversion;
1630
- defm vfwcvt_rtz_x_f_v : RISCVConversion;
1631
- defm vfwcvt_f_f_v : RISCVConversion;
1632
- defm vfwcvtbf16_f_f_v : RISCVConversion;
1633
-
1634
- defm vfncvt_f_xu_w : RISCVConversionRoundingMode;
1635
- defm vfncvt_f_x_w : RISCVConversionRoundingMode;
1636
- defm vfncvt_xu_f_w : RISCVConversionRoundingMode;
1637
- defm vfncvt_x_f_w : RISCVConversionRoundingMode;
1638
- defm vfncvt_rtz_xu_f_w : RISCVConversion;
1639
- defm vfncvt_rtz_x_f_w : RISCVConversion;
1640
- defm vfncvt_f_f_w : RISCVConversionRoundingMode;
1641
- defm vfncvtbf16_f_f_w : RISCVConversionRoundingMode;
1642
- defm vfncvt_rod_f_f_w : RISCVConversion;
1631
+ let IsFPIntrinsic = 1 in {
1632
+ defm vfcvt_xu_f_v : RISCVConversionRoundingMode;
1633
+ defm vfcvt_x_f_v : RISCVConversionRoundingMode;
1634
+ defm vfcvt_rtz_xu_f_v : RISCVConversion;
1635
+ defm vfcvt_rtz_x_f_v : RISCVConversion;
1636
+ defm vfcvt_f_xu_v : RISCVConversionRoundingMode;
1637
+ defm vfcvt_f_x_v : RISCVConversionRoundingMode;
1638
+
1639
+ defm vfwcvt_f_xu_v : RISCVConversion;
1640
+ defm vfwcvt_f_x_v : RISCVConversion;
1641
+ defm vfwcvt_xu_f_v : RISCVConversionRoundingMode;
1642
+ defm vfwcvt_x_f_v : RISCVConversionRoundingMode;
1643
+ defm vfwcvt_rtz_xu_f_v : RISCVConversion;
1644
+ defm vfwcvt_rtz_x_f_v : RISCVConversion;
1645
+ defm vfwcvt_f_f_v : RISCVConversion;
1646
+ defm vfwcvtbf16_f_f_v : RISCVConversion;
1647
+
1648
+ defm vfncvt_f_xu_w : RISCVConversionRoundingMode;
1649
+ defm vfncvt_f_x_w : RISCVConversionRoundingMode;
1650
+ defm vfncvt_xu_f_w : RISCVConversionRoundingMode;
1651
+ defm vfncvt_x_f_w : RISCVConversionRoundingMode;
1652
+ defm vfncvt_rtz_xu_f_w : RISCVConversion;
1653
+ defm vfncvt_rtz_x_f_w : RISCVConversion;
1654
+ defm vfncvt_f_f_w : RISCVConversionRoundingMode;
1655
+ defm vfncvtbf16_f_f_w : RISCVConversionRoundingMode;
1656
+ defm vfncvt_rod_f_f_w : RISCVConversion;
1657
+ }
1643
1658
1644
1659
// Output: (vector)
1645
1660
// Input: (passthru, mask type input, vl)
0 commit comments