aboutsummaryrefslogtreecommitdiff
path: root/backend/include/rcc/CodeGen/TargetCodeGen.h
diff options
context:
space:
mode:
Diffstat (limited to 'backend/include/rcc/CodeGen/TargetCodeGen.h')
-rw-r--r--backend/include/rcc/CodeGen/TargetCodeGen.h95
1 files changed, 0 insertions, 95 deletions
diff --git a/backend/include/rcc/CodeGen/TargetCodeGen.h b/backend/include/rcc/CodeGen/TargetCodeGen.h
deleted file mode 100644
index 65f65a4..0000000
--- a/backend/include/rcc/CodeGen/TargetCodeGen.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#ifndef RCC_CODEGEN_TARGETCODEGEN_H
-#define RCC_CODEGEN_TARGETCODEGEN_H
-
-#include "rcc/Support/Error.h"
-
-#include <cstdint>
-
-namespace rcc {
-
-class MachineFunction;
-class MachineInstr;
-class TargetDescription;
-struct VirtualRegisterInfo;
-
-enum class LegalizationAction : std::uint8_t {
- Legal,
- Unsupported,
- Custom,
- Lower,
- Libcall,
- WidenScalar,
- NarrowScalar,
- MoreElements,
- FewerElements,
- Bitcast,
- ChangeElementType,
- ChangeAddressSpace,
-};
-
-class TargetLegalizerInfo {
-public:
- virtual ~TargetLegalizerInfo() = default;
-
- [[nodiscard]] virtual Expected<LegalizationAction>
- classify(const MachineInstr &Instruction, const MachineFunction &Function,
- const TargetDescription &Target) const = 0;
-
- [[nodiscard]] virtual Expected<void> lower(MachineInstr &Instruction, MachineFunction &Function,
- const TargetDescription &Target,
- LegalizationAction Action) const = 0;
-
- // This hook performs read-only target checks before a lowering mutation is committed.
- [[nodiscard]] virtual Expected<void> validateLowering(const MachineInstr &,
- const MachineFunction &,
- const TargetDescription &,
- LegalizationAction) const {
- return {};
- }
-};
-
-class TargetRegisterBankInfo {
-public:
- virtual ~TargetRegisterBankInfo() = default;
-
- [[nodiscard]] virtual Expected<RegisterBankID>
- selectBank(const MachineFunction &Function, Register Reg, const VirtualRegisterInfo &Info,
- const MachineInstr *Context, const TargetDescription &Target) const = 0;
-
- [[nodiscard]] virtual Expected<void>
- constrainInstruction(MachineInstr &Instruction, MachineFunction &Function,
- const TargetDescription &Target) const = 0;
-
- // This hook must not mutate MachineIR. It allows the pass to reject a bad mapping
- // before publishing any bank or class assignment.
- [[nodiscard]] virtual Expected<void> validateInstruction(const MachineInstr &,
- const MachineFunction &,
- const TargetDescription &) const {
- return {};
- }
-};
-
-class TargetInstructionSelector {
-public:
- virtual ~TargetInstructionSelector() = default;
-
- [[nodiscard]] virtual Expected<void> select(MachineInstr &Instruction, MachineFunction &Function,
- const TargetDescription &Target) const = 0;
-
- // Selection matching is read-only and must complete before select() mutates MachineIR.
- [[nodiscard]] virtual Expected<void> canSelect(const MachineInstr &, const MachineFunction &,
- const TargetDescription &) const {
- return {};
- }
-
- [[nodiscard]] virtual Expected<void>
- constrainSelectedInstruction(MachineInstr &, MachineFunction &, const TargetDescription &) const {
- return {};
- }
-};
-
-} // namespace rcc
-
-#endif // RCC_CODEGEN_TARGETCODEGEN_H