diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-15 04:23:23 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-15 04:23:23 +0800 |
| commit | 1ff4fb953820c823ae8d5035c75bf43bf85e9c3c (patch) | |
| tree | 305fb7db48bede76baf4760cd9d2c6714fd175b0 /backend/include/rcc/CodeGen | |
| parent | 6a53b7f8c3ce90791e3988b6cb9c4a9808e8d984 (diff) | |
| download | rcc-project-1ff4fb953820c823ae8d5035c75bf43bf85e9c3c.tar.gz rcc-project-1ff4fb953820c823ae8d5035c75bf43bf85e9c3c.tar.xz | |
[RISCV][GlobalISel] Legalize scalar bit count operations
Diffstat (limited to 'backend/include/rcc/CodeGen')
| -rw-r--r-- | backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h | 1 | ||||
| -rw-r--r-- | backend/include/rcc/CodeGen/MachineIRBuilder.h | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h b/backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h index fdb61d5..71ead8b 100644 --- a/backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h +++ b/backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h @@ -36,6 +36,7 @@ public: [[nodiscard]] Expected<void> lowerMinMax(MachineInstr &Instruction); [[nodiscard]] Expected<void> lowerThreewayCompare(MachineInstr &Instruction); [[nodiscard]] Expected<void> lowerDivRem(MachineInstr &Instruction); + [[nodiscard]] Expected<void> lowerBitCount(MachineInstr &Instruction); [[nodiscard]] Expected<void> lowerBswap(MachineInstr &Instruction); [[nodiscard]] Expected<void> lowerRotate(MachineInstr &Instruction); [[nodiscard]] Expected<void> lowerVAArg(MachineInstr &Instruction); diff --git a/backend/include/rcc/CodeGen/MachineIRBuilder.h b/backend/include/rcc/CodeGen/MachineIRBuilder.h index f87adfe..20c4ad0 100644 --- a/backend/include/rcc/CodeGen/MachineIRBuilder.h +++ b/backend/include/rcc/CodeGen/MachineIRBuilder.h @@ -244,6 +244,8 @@ public: [[nodiscard]] Expected<MachineInstr *> buildUndef(MachineIRBuilderResult Destination) const; [[nodiscard]] Expected<MachineInstr *> buildAnyExtOrTrunc(MachineIRBuilderResult Destination, Register Source) const; + [[nodiscard]] Expected<MachineInstr *> buildZExtOrTrunc(MachineIRBuilderResult Destination, + Register Source) const; [[nodiscard]] Expected<MachineInstr *> buildSExtOrTrunc(MachineIRBuilderResult Destination, Register Source) const; [[nodiscard]] virtual Expected<MachineInstr *> buildConstant(MachineIRBuilderResult Destination, |
