@@ -1440,10 +1440,10 @@ bool RISCVInstrInfo::findCommutedOpIndices(const MachineInstr &MI,
1440
1440
case CASE_VFMA_SPLATS (FNMSUB):
1441
1441
case CASE_VFMA_SPLATS (FNMACC):
1442
1442
case CASE_VFMA_SPLATS (FNMSAC):
1443
- case CASE_VFMA_OPCODE_LMULS (FMACC, VV):
1444
- case CASE_VFMA_OPCODE_LMULS (FMSAC, VV):
1445
- case CASE_VFMA_OPCODE_LMULS (FNMACC, VV):
1446
- case CASE_VFMA_OPCODE_LMULS (FNMSAC, VV):
1443
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FMACC, VV):
1444
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FMSAC, VV):
1445
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FNMACC, VV):
1446
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FNMSAC, VV):
1447
1447
case CASE_VFMA_OPCODE_LMULS (MADD, VX):
1448
1448
case CASE_VFMA_OPCODE_LMULS (NMSUB, VX):
1449
1449
case CASE_VFMA_OPCODE_LMULS (MACC, VX):
@@ -1464,10 +1464,10 @@ bool RISCVInstrInfo::findCommutedOpIndices(const MachineInstr &MI,
1464
1464
return false ;
1465
1465
return true ;
1466
1466
}
1467
- case CASE_VFMA_OPCODE_LMULS (FMADD, VV):
1468
- case CASE_VFMA_OPCODE_LMULS (FMSUB, VV):
1469
- case CASE_VFMA_OPCODE_LMULS (FNMADD, VV):
1470
- case CASE_VFMA_OPCODE_LMULS (FNMSUB, VV):
1467
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FMADD, VV):
1468
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FMSUB, VV):
1469
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FNMADD, VV):
1470
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FNMSUB, VV):
1471
1471
case CASE_VFMA_OPCODE_LMULS (MADD, VV):
1472
1472
case CASE_VFMA_OPCODE_LMULS (NMSUB, VV): {
1473
1473
// If the tail policy is undisturbed we can't commute.
@@ -1585,10 +1585,10 @@ MachineInstr *RISCVInstrInfo::commuteInstructionImpl(MachineInstr &MI,
1585
1585
case CASE_VFMA_SPLATS (FNMADD):
1586
1586
case CASE_VFMA_SPLATS (FNMSAC):
1587
1587
case CASE_VFMA_SPLATS (FNMSUB):
1588
- case CASE_VFMA_OPCODE_LMULS (FMACC, VV):
1589
- case CASE_VFMA_OPCODE_LMULS (FMSAC, VV):
1590
- case CASE_VFMA_OPCODE_LMULS (FNMACC, VV):
1591
- case CASE_VFMA_OPCODE_LMULS (FNMSAC, VV):
1588
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FMACC, VV):
1589
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FMSAC, VV):
1590
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FNMACC, VV):
1591
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FNMSAC, VV):
1592
1592
case CASE_VFMA_OPCODE_LMULS (MADD, VX):
1593
1593
case CASE_VFMA_OPCODE_LMULS (NMSUB, VX):
1594
1594
case CASE_VFMA_OPCODE_LMULS (MACC, VX):
@@ -1611,10 +1611,10 @@ MachineInstr *RISCVInstrInfo::commuteInstructionImpl(MachineInstr &MI,
1611
1611
CASE_VFMA_CHANGE_OPCODE_SPLATS (FNMADD, FNMACC)
1612
1612
CASE_VFMA_CHANGE_OPCODE_SPLATS (FNMSAC, FNMSUB)
1613
1613
CASE_VFMA_CHANGE_OPCODE_SPLATS (FNMSUB, FNMSAC)
1614
- CASE_VFMA_CHANGE_OPCODE_LMULS (FMACC, FMADD, VV)
1615
- CASE_VFMA_CHANGE_OPCODE_LMULS (FMSAC, FMSUB, VV)
1616
- CASE_VFMA_CHANGE_OPCODE_LMULS (FNMACC, FNMADD, VV)
1617
- CASE_VFMA_CHANGE_OPCODE_LMULS (FNMSAC, FNMSUB, VV)
1614
+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (FMACC, FMADD, VV)
1615
+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (FMSAC, FMSUB, VV)
1616
+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (FNMACC, FNMADD, VV)
1617
+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (FNMSAC, FNMSUB, VV)
1618
1618
CASE_VFMA_CHANGE_OPCODE_LMULS (MACC, MADD, VX)
1619
1619
CASE_VFMA_CHANGE_OPCODE_LMULS (MADD, MACC, VX)
1620
1620
CASE_VFMA_CHANGE_OPCODE_LMULS (NMSAC, NMSUB, VX)
@@ -1628,10 +1628,10 @@ MachineInstr *RISCVInstrInfo::commuteInstructionImpl(MachineInstr &MI,
1628
1628
return TargetInstrInfo::commuteInstructionImpl (WorkingMI, /* NewMI=*/ false ,
1629
1629
OpIdx1, OpIdx2);
1630
1630
}
1631
- case CASE_VFMA_OPCODE_LMULS (FMADD, VV):
1632
- case CASE_VFMA_OPCODE_LMULS (FMSUB, VV):
1633
- case CASE_VFMA_OPCODE_LMULS (FNMADD, VV):
1634
- case CASE_VFMA_OPCODE_LMULS (FNMSUB, VV):
1631
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FMADD, VV):
1632
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FMSUB, VV):
1633
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FNMADD, VV):
1634
+ case CASE_VFMA_OPCODE_LMULS_MF4 (FNMSUB, VV):
1635
1635
case CASE_VFMA_OPCODE_LMULS (MADD, VV):
1636
1636
case CASE_VFMA_OPCODE_LMULS (NMSUB, VV): {
1637
1637
assert ((OpIdx1 == 1 || OpIdx2 == 1 ) && " Unexpected opcode index" );
@@ -1642,10 +1642,10 @@ MachineInstr *RISCVInstrInfo::commuteInstructionImpl(MachineInstr &MI,
1642
1642
switch (MI.getOpcode ()) {
1643
1643
default :
1644
1644
llvm_unreachable (" Unexpected opcode" );
1645
- CASE_VFMA_CHANGE_OPCODE_LMULS (FMADD, FMACC, VV)
1646
- CASE_VFMA_CHANGE_OPCODE_LMULS (FMSUB, FMSAC, VV)
1647
- CASE_VFMA_CHANGE_OPCODE_LMULS (FNMADD, FNMACC, VV)
1648
- CASE_VFMA_CHANGE_OPCODE_LMULS (FNMSUB, FNMSAC, VV)
1645
+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (FMADD, FMACC, VV)
1646
+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (FMSUB, FMSAC, VV)
1647
+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (FNMADD, FNMACC, VV)
1648
+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (FNMSUB, FNMSAC, VV)
1649
1649
CASE_VFMA_CHANGE_OPCODE_LMULS (MADD, MACC, VV)
1650
1650
CASE_VFMA_CHANGE_OPCODE_LMULS (NMSUB, NMSAC, VV)
1651
1651
}
@@ -1674,36 +1674,42 @@ MachineInstr *RISCVInstrInfo::commuteInstructionImpl(MachineInstr &MI,
1674
1674
#define CASE_WIDEOP_OPCODE_COMMON (OP, LMUL ) \
1675
1675
RISCV::PseudoV##OP##_##LMUL##_TIED
1676
1676
1677
- #define CASE_WIDEOP_OPCODE_LMULS (OP ) \
1678
- CASE_WIDEOP_OPCODE_COMMON (OP, MF8): \
1679
- case CASE_WIDEOP_OPCODE_COMMON(OP, MF4): \
1677
+ #define CASE_WIDEOP_OPCODE_LMULS_MF4 (OP ) \
1678
+ CASE_WIDEOP_OPCODE_COMMON (OP, MF4): \
1680
1679
case CASE_WIDEOP_OPCODE_COMMON(OP, MF2): \
1681
1680
case CASE_WIDEOP_OPCODE_COMMON(OP, M1): \
1682
1681
case CASE_WIDEOP_OPCODE_COMMON(OP, M2): \
1683
1682
case CASE_WIDEOP_OPCODE_COMMON(OP, M4)
1683
+
1684
+ #define CASE_WIDEOP_OPCODE_LMULS (OP ) \
1685
+ CASE_WIDEOP_OPCODE_COMMON (OP, MF8): \
1686
+ case CASE_WIDEOP_OPCODE_LMULS_MF4(OP)
1684
1687
// clang-format on
1685
1688
1686
1689
#define CASE_WIDEOP_CHANGE_OPCODE_COMMON (OP, LMUL ) \
1687
1690
case RISCV::PseudoV##OP##_##LMUL##_TIED: \
1688
1691
NewOpc = RISCV::PseudoV##OP##_##LMUL; \
1689
1692
break ;
1690
1693
1691
- #define CASE_WIDEOP_CHANGE_OPCODE_LMULS (OP ) \
1692
- CASE_WIDEOP_CHANGE_OPCODE_COMMON (OP, MF8) \
1694
+ #define CASE_WIDEOP_CHANGE_OPCODE_LMULS_MF4 (OP ) \
1693
1695
CASE_WIDEOP_CHANGE_OPCODE_COMMON (OP, MF4) \
1694
1696
CASE_WIDEOP_CHANGE_OPCODE_COMMON(OP, MF2) \
1695
1697
CASE_WIDEOP_CHANGE_OPCODE_COMMON(OP, M1) \
1696
1698
CASE_WIDEOP_CHANGE_OPCODE_COMMON(OP, M2) \
1697
1699
CASE_WIDEOP_CHANGE_OPCODE_COMMON(OP, M4)
1698
1700
1701
+ #define CASE_WIDEOP_CHANGE_OPCODE_LMULS (OP ) \
1702
+ CASE_WIDEOP_CHANGE_OPCODE_COMMON (OP, MF8) \
1703
+ CASE_WIDEOP_CHANGE_OPCODE_LMULS_MF4(OP)
1704
+
1699
1705
MachineInstr *RISCVInstrInfo::convertToThreeAddress(MachineInstr &MI,
1700
1706
LiveVariables *LV,
1701
1707
LiveIntervals *LIS) const {
1702
1708
switch (MI.getOpcode ()) {
1703
1709
default :
1704
1710
break ;
1705
- case CASE_WIDEOP_OPCODE_LMULS (FWADD_WV):
1706
- case CASE_WIDEOP_OPCODE_LMULS (FWSUB_WV):
1711
+ case CASE_WIDEOP_OPCODE_LMULS_MF4 (FWADD_WV):
1712
+ case CASE_WIDEOP_OPCODE_LMULS_MF4 (FWSUB_WV):
1707
1713
case CASE_WIDEOP_OPCODE_LMULS (WADD_WV):
1708
1714
case CASE_WIDEOP_OPCODE_LMULS (WADDU_WV):
1709
1715
case CASE_WIDEOP_OPCODE_LMULS (WSUB_WV):
@@ -1713,8 +1719,8 @@ MachineInstr *RISCVInstrInfo::convertToThreeAddress(MachineInstr &MI,
1713
1719
switch (MI.getOpcode ()) {
1714
1720
default :
1715
1721
llvm_unreachable (" Unexpected opcode" );
1716
- CASE_WIDEOP_CHANGE_OPCODE_LMULS (FWADD_WV)
1717
- CASE_WIDEOP_CHANGE_OPCODE_LMULS (FWSUB_WV)
1722
+ CASE_WIDEOP_CHANGE_OPCODE_LMULS_MF4 (FWADD_WV)
1723
+ CASE_WIDEOP_CHANGE_OPCODE_LMULS_MF4 (FWSUB_WV)
1718
1724
CASE_WIDEOP_CHANGE_OPCODE_LMULS (WADD_WV)
1719
1725
CASE_WIDEOP_CHANGE_OPCODE_LMULS (WADDU_WV)
1720
1726
CASE_WIDEOP_CHANGE_OPCODE_LMULS (WSUB_WV)
0 commit comments