brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 9bd78d0 Raw
57 lines · c
1//===-- LanaiFrameLowering.h - Define frame lowering for Lanai --*- C++-*--===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This class implements Lanai-specific bits of TargetFrameLowering class.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_LANAI_LANAIFRAMELOWERING_H14#define LLVM_LIB_TARGET_LANAI_LANAIFRAMELOWERING_H15 16#include "llvm/CodeGen/TargetFrameLowering.h"17 18namespace llvm {19 20class BitVector;21class LanaiSubtarget;22 23class LanaiFrameLowering : public TargetFrameLowering {24private:25  void determineFrameLayout(MachineFunction &MF) const;26  void replaceAdjDynAllocPseudo(MachineFunction &MF) const;27 28protected:29  const LanaiSubtarget &STI;30 31public:32  explicit LanaiFrameLowering(const LanaiSubtarget &Subtarget)33      : TargetFrameLowering(StackGrowsDown,34                            /*StackAlignment=*/Align(8),35                            /*LocalAreaOffset=*/0),36        STI(Subtarget) {}37 38  // emitProlog/emitEpilog - These methods insert prolog and epilog code into39  // the function.40  void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;41  void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;42 43  MachineBasicBlock::iterator44  eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,45                                MachineBasicBlock::iterator I) const override;46 47  void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,48                            RegScavenger *RS = nullptr) const override;49 50protected:51  bool hasFPImpl(const MachineFunction & /*MF*/) const override { return true; }52};53 54} // namespace llvm55 56#endif // LLVM_LIB_TARGET_LANAI_LANAIFRAMELOWERING_H57