diff options
Diffstat (limited to 'backend/include/rcc/CodeGen/TargetInstrInfo.h')
| -rw-r--r-- | backend/include/rcc/CodeGen/TargetInstrInfo.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/backend/include/rcc/CodeGen/TargetInstrInfo.h b/backend/include/rcc/CodeGen/TargetInstrInfo.h index 34752c5..8457ede 100644 --- a/backend/include/rcc/CodeGen/TargetInstrInfo.h +++ b/backend/include/rcc/CodeGen/TargetInstrInfo.h @@ -16,8 +16,14 @@ namespace rcc { class MachineBasicBlock; class MachineFunction; class MachineInstr; +class MachineOperand; class TargetDescription; +struct MachineCopyOperands final { + MachineOperand *Destination = nullptr; + MachineOperand *Source = nullptr; +}; + struct MachineBranchAnalysis final { MachineInstr *Conditional = nullptr; MachineInstr *Unconditional = nullptr; @@ -57,6 +63,16 @@ public: const MachineFunction &Function, const TargetDescription &Target) const = 0; + [[nodiscard]] virtual std::optional<MachineCopyOperands> + getCopyOperands(MachineInstr &) const noexcept { + return std::nullopt; + } + + [[nodiscard]] virtual Expected<bool> simplifyInstruction(MachineInstr &, MachineFunction &, + const TargetDescription &) const { + return false; + } + [[nodiscard]] virtual Expected<bool> tryConvertToThreeAddress(MachineInstr &, std::size_t, std::size_t, MachineFunction &, const TargetDescription &) const { |
