@@ -3775,11 +3775,13 @@ std::string RISCVInstrInfo::createMIROperandComment(
37753775
37763776#define CASE_VFMA_OPCODE_VV (OP ) \
37773777 CASE_VFMA_OPCODE_LMULS_MF4 (OP, VV, E16 ): \
3778+ case CASE_VFMA_OPCODE_LMULS_MF4(OP##_ALT, VV, E16 ): \
37783779 case CASE_VFMA_OPCODE_LMULS_MF2(OP, VV, E32 ): \
37793780 case CASE_VFMA_OPCODE_LMULS_M1(OP, VV, E64 )
37803781
37813782#define CASE_VFMA_SPLATS (OP ) \
37823783 CASE_VFMA_OPCODE_LMULS_MF4 (OP, VFPR16, E16 ): \
3784+ case CASE_VFMA_OPCODE_LMULS_MF4(OP##_ALT, VFPR16, E16 ): \
37833785 case CASE_VFMA_OPCODE_LMULS_MF2(OP, VFPR32, E32 ): \
37843786 case CASE_VFMA_OPCODE_LMULS_M1(OP, VFPR64, E64 )
37853787// clang-format on
@@ -4003,11 +4005,13 @@ bool RISCVInstrInfo::findCommutedOpIndices(const MachineInstr &MI,
40034005
40044006#define CASE_VFMA_CHANGE_OPCODE_VV (OLDOP, NEWOP ) \
40054007 CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (OLDOP, NEWOP, VV, E16 ) \
4008+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4(OLDOP##_ALT, NEWOP##_ALT, VV, E16 ) \
40064009 CASE_VFMA_CHANGE_OPCODE_LMULS_MF2(OLDOP, NEWOP, VV, E32 ) \
40074010 CASE_VFMA_CHANGE_OPCODE_LMULS_M1(OLDOP, NEWOP, VV, E64 )
40084011
40094012#define CASE_VFMA_CHANGE_OPCODE_SPLATS (OLDOP, NEWOP ) \
40104013 CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 (OLDOP, NEWOP, VFPR16, E16 ) \
4014+ CASE_VFMA_CHANGE_OPCODE_LMULS_MF4(OLDOP##_ALT, NEWOP##_ALT, VFPR16, E16 ) \
40114015 CASE_VFMA_CHANGE_OPCODE_LMULS_MF2(OLDOP, NEWOP, VFPR32, E32 ) \
40124016 CASE_VFMA_CHANGE_OPCODE_LMULS_M1(OLDOP, NEWOP, VFPR64, E64 )
40134017// clang-format on
@@ -4469,6 +4473,20 @@ bool RISCVInstrInfo::simplifyInstruction(MachineInstr &MI) const {
44694473 CASE_FP_WIDEOP_CHANGE_OPCODE_COMMON(OP, M2, E32 ) \
44704474 CASE_FP_WIDEOP_CHANGE_OPCODE_COMMON(OP, M4, E16 ) \
44714475 CASE_FP_WIDEOP_CHANGE_OPCODE_COMMON(OP, M4, E32 ) \
4476+
4477+ #define CASE_FP_WIDEOP_OPCODE_LMULS_ALT (OP ) \
4478+ CASE_FP_WIDEOP_OPCODE_COMMON (OP, MF4, E16 ): \
4479+ case CASE_FP_WIDEOP_OPCODE_COMMON(OP, MF2, E16 ): \
4480+ case CASE_FP_WIDEOP_OPCODE_COMMON(OP, M1, E16 ): \
4481+ case CASE_FP_WIDEOP_OPCODE_COMMON(OP, M2, E16 ): \
4482+ case CASE_FP_WIDEOP_OPCODE_COMMON(OP, M4, E16 )
4483+
4484+ #define CASE_FP_WIDEOP_CHANGE_OPCODE_LMULS_ALT (OP ) \
4485+ CASE_FP_WIDEOP_CHANGE_OPCODE_COMMON (OP, MF4, E16 ) \
4486+ CASE_FP_WIDEOP_CHANGE_OPCODE_COMMON(OP, MF2, E16 ) \
4487+ CASE_FP_WIDEOP_CHANGE_OPCODE_COMMON(OP, M1, E16 ) \
4488+ CASE_FP_WIDEOP_CHANGE_OPCODE_COMMON(OP, M2, E16 ) \
4489+ CASE_FP_WIDEOP_CHANGE_OPCODE_COMMON(OP, M4, E16 )
44724490// clang-format on
44734491
44744492MachineInstr *RISCVInstrInfo::convertToThreeAddress(MachineInstr &MI,
@@ -4478,6 +4496,8 @@ MachineInstr *RISCVInstrInfo::convertToThreeAddress(MachineInstr &MI,
44784496 switch (MI.getOpcode ()) {
44794497 default :
44804498 return nullptr ;
4499+ case CASE_FP_WIDEOP_OPCODE_LMULS_ALT (FWADD_ALT_WV):
4500+ case CASE_FP_WIDEOP_OPCODE_LMULS_ALT (FWSUB_ALT_WV):
44814501 case CASE_FP_WIDEOP_OPCODE_LMULS (FWADD_WV):
44824502 case CASE_FP_WIDEOP_OPCODE_LMULS (FWSUB_WV): {
44834503 assert (RISCVII::hasVecPolicyOp (MI.getDesc ().TSFlags ) &&
@@ -4494,6 +4514,8 @@ MachineInstr *RISCVInstrInfo::convertToThreeAddress(MachineInstr &MI,
44944514 llvm_unreachable (" Unexpected opcode" );
44954515 CASE_FP_WIDEOP_CHANGE_OPCODE_LMULS (FWADD_WV)
44964516 CASE_FP_WIDEOP_CHANGE_OPCODE_LMULS (FWSUB_WV)
4517+ CASE_FP_WIDEOP_CHANGE_OPCODE_LMULS_ALT (FWADD_ALT_WV)
4518+ CASE_FP_WIDEOP_CHANGE_OPCODE_LMULS_ALT (FWSUB_ALT_WV)
44974519 }
44984520 // clang-format on
44994521
0 commit comments