1//===-- SPIRVFrameLowering.h - Define frame lowering for SPIR-V -*- 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 SPIRV-specific bits of TargetFrameLowering class. 10// The target uses only virtual registers. It does not operate with stack frame 11// explicitly and does not generate prologues/epilogues of functions. 12// As a result, we are not required to implemented the frame lowering 13// functionality substantially. 14// 15//===----------------------------------------------------------------------===// 16 17#ifndef LLVM_LIB_TARGET_SPIRV_SPIRVFRAMELOWERING_H 18#define LLVM_LIB_TARGET_SPIRV_SPIRVFRAMELOWERING_H 19 20#include "llvm/CodeGen/TargetFrameLowering.h" 21#include "llvm/Support/Alignment.h" 22 23namespace llvm { 24class SPIRVSubtarget; 25 26class SPIRVFrameLowering : public TargetFrameLowering { 27public: 28 explicit SPIRVFrameLowering(const SPIRVSubtarget &sti) 29 : TargetFrameLowering(TargetFrameLowering::StackGrowsDown, Align(8), 0) {} 30 31 void emitPrologue(MachineFunction &MF, 32 MachineBasicBlock &MBB) const override {} 33 void emitEpilogue(MachineFunction &MF, 34 MachineBasicBlock &MBB) const override {} 35 36 bool hasFP(const MachineFunction &MF) const override { return false; } 37}; 38} // namespace llvm 39#endif // LLVM_LIB_TARGET_SPIRV_SPIRVFRAMELOWERING_H 40