aboutsummaryrefslogtreecommitdiff
path: root/backend/include
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-15 04:23:23 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-15 04:23:23 +0800
commit1ff4fb953820c823ae8d5035c75bf43bf85e9c3c (patch)
tree305fb7db48bede76baf4760cd9d2c6714fd175b0 /backend/include
parent6a53b7f8c3ce90791e3988b6cb9c4a9808e8d984 (diff)
downloadrcc-project-1ff4fb953820c823ae8d5035c75bf43bf85e9c3c.tar.gz
rcc-project-1ff4fb953820c823ae8d5035c75bf43bf85e9c3c.tar.xz
[RISCV][GlobalISel] Legalize scalar bit count operations
Diffstat (limited to 'backend/include')
-rw-r--r--backend/include/rcc/CodeGen/GlobalISel/LegalizerHelper.h1
-rw-r--r--backend/include/rcc/CodeGen/MachineIRBuilder.h2
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,