BPFFrameLowering.h revision 360784
1//===-- BPFFrameLowering.h - Define frame lowering for BPF -----*- 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-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This class implements BPF-specific bits of TargetFrameLowering class. 10// 11//===----------------------------------------------------------------------===// 12 13#ifndef LLVM_LIB_TARGET_BPF_BPFFRAMELOWERING_H 14#define LLVM_LIB_TARGET_BPF_BPFFRAMELOWERING_H 15 16#include "llvm/CodeGen/TargetFrameLowering.h" 17 18namespace llvm { 19class BPFSubtarget; 20 21class BPFFrameLowering : public TargetFrameLowering { 22public: 23 explicit BPFFrameLowering(const BPFSubtarget &sti) 24 : TargetFrameLowering(TargetFrameLowering::StackGrowsDown, Align(8), 0) {} 25 26 void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override; 27 void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; 28 29 bool hasFP(const MachineFunction &MF) const override; 30 void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs, 31 RegScavenger *RS) const override; 32 33 MachineBasicBlock::iterator 34 eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, 35 MachineBasicBlock::iterator MI) const override { 36 return MBB.erase(MI); 37 } 38}; 39} 40#endif 41