From 63b14b615eb83ed2b2cdd69b49b283a9b5ff7357 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Sat, 15 Aug 2026 20:38:43 +0800 Subject: [GlobalISel] Legalize multi-precision multiplication --- backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'backend/include/rcc/CodeGen') diff --git a/backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h b/backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h index 55665df..eb83c5a 100644 --- a/backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h +++ b/backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h @@ -36,6 +36,7 @@ public: [[nodiscard]] Expected lowerMinMax(MachineInstr &Instruction); [[nodiscard]] Expected lowerThreewayCompare(MachineInstr &Instruction); [[nodiscard]] Expected lowerDivRem(MachineInstr &Instruction); + [[nodiscard]] Expected lowerHighMultiply(MachineInstr &Instruction); [[nodiscard]] Expected lowerBitCount(MachineInstr &Instruction); [[nodiscard]] Expected lowerBswap(MachineInstr &Instruction); [[nodiscard]] Expected lowerFunnelShift(MachineInstr &Instruction); @@ -84,8 +85,14 @@ private: [[nodiscard]] Expected buildWidenedRemergeToDst(Register Destination, LowLevelType LCMType, const std::vector &RemergeRegisters); + [[nodiscard]] Expected multiplyRegisters(std::vector &Destinations, + const std::vector &FirstSources, + const std::vector &SecondSources, + LowLevelType NarrowType); [[nodiscard]] Expected narrowScalarAddSub(MachineInstr &Instruction, std::size_t TypeIndex, LowLevelType NarrowType); + [[nodiscard]] Expected narrowScalarMul(MachineInstr &Instruction, std::size_t TypeIndex, + LowLevelType NarrowType); [[nodiscard]] Expected narrowScalarBasic(MachineInstr &Instruction, std::size_t TypeIndex, LowLevelType NarrowType); [[nodiscard]] Expected narrowScalarExt(MachineInstr &Instruction, std::size_t TypeIndex, -- cgit v1.2.3