41 lines · c
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-exception6//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 frame11// explicitly and does not generate prologues/epilogues of functions.12// As a result, we are not required to implemented the frame lowering13// functionality substantially.14//15//===----------------------------------------------------------------------===//16 17#ifndef LLVM_LIB_TARGET_SPIRV_SPIRVFRAMELOWERING_H18#define LLVM_LIB_TARGET_SPIRV_SPIRVFRAMELOWERING_H19 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 36protected:37 bool hasFPImpl(const MachineFunction &MF) const override { return false; }38};39} // namespace llvm40#endif // LLVM_LIB_TARGET_SPIRV_SPIRVFRAMELOWERING_H41