1*480093f4SDimitry Andric //===-- VERegisterInfo.h - VE Register Information Impl ---------*- C++ -*-===// 2*480093f4SDimitry Andric // 3*480093f4SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*480093f4SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*480093f4SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*480093f4SDimitry Andric // 7*480093f4SDimitry Andric //===----------------------------------------------------------------------===// 8*480093f4SDimitry Andric // 9*480093f4SDimitry Andric // This file contains the VE implementation of the TargetRegisterInfo class. 10*480093f4SDimitry Andric // 11*480093f4SDimitry Andric //===----------------------------------------------------------------------===// 12*480093f4SDimitry Andric 13*480093f4SDimitry Andric #ifndef LLVM_LIB_TARGET_VE_VEREGISTERINFO_H 14*480093f4SDimitry Andric #define LLVM_LIB_TARGET_VE_VEREGISTERINFO_H 15*480093f4SDimitry Andric 16*480093f4SDimitry Andric #include "llvm/CodeGen/TargetRegisterInfo.h" 17*480093f4SDimitry Andric 18*480093f4SDimitry Andric #define GET_REGINFO_HEADER 19*480093f4SDimitry Andric #include "VEGenRegisterInfo.inc" 20*480093f4SDimitry Andric 21*480093f4SDimitry Andric namespace llvm { 22*480093f4SDimitry Andric struct VERegisterInfo : public VEGenRegisterInfo { 23*480093f4SDimitry Andric public: 24*480093f4SDimitry Andric VERegisterInfo(); 25*480093f4SDimitry Andric 26*480093f4SDimitry Andric /// Code Generation virtual methods... 27*480093f4SDimitry Andric const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override; 28*480093f4SDimitry Andric const uint32_t *getCallPreservedMask(const MachineFunction &MF, 29*480093f4SDimitry Andric CallingConv::ID CC) const override; 30*480093f4SDimitry Andric const uint32_t *getNoPreservedMask() const override; 31*480093f4SDimitry Andric 32*480093f4SDimitry Andric BitVector getReservedRegs(const MachineFunction &MF) const override; 33*480093f4SDimitry Andric bool isConstantPhysReg(unsigned PhysReg) const override; 34*480093f4SDimitry Andric 35*480093f4SDimitry Andric const TargetRegisterClass *getPointerRegClass(const MachineFunction &MF, 36*480093f4SDimitry Andric unsigned Kind) const override; 37*480093f4SDimitry Andric 38*480093f4SDimitry Andric void eliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj, 39*480093f4SDimitry Andric unsigned FIOperandNum, 40*480093f4SDimitry Andric RegScavenger *RS = nullptr) const override; 41*480093f4SDimitry Andric 42*480093f4SDimitry Andric Register getFrameRegister(const MachineFunction &MF) const override; 43*480093f4SDimitry Andric 44*480093f4SDimitry Andric bool canRealignStack(const MachineFunction &MF) const override; 45*480093f4SDimitry Andric }; 46*480093f4SDimitry Andric 47*480093f4SDimitry Andric } // namespace llvm 48*480093f4SDimitry Andric 49*480093f4SDimitry Andric #endif 50