61 lines · c
1//===-- XtensaRegisterInfo.h - Xtensa Register Information Impl -*- 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 file contains the Xtensa implementation of the TargetRegisterInfo class.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_XTENSA_XTENSAREGISTERINFO_H14#define LLVM_LIB_TARGET_XTENSA_XTENSAREGISTERINFO_H15 16#include "Xtensa.h"17#include "llvm/CodeGen/TargetRegisterInfo.h"18 19#define GET_REGINFO_HEADER20#include "XtensaGenRegisterInfo.inc"21 22namespace llvm {23class TargetRegisterClass;24class XtensaInstrInfo;25class XtensaSubtarget;26 27class XtensaRegisterInfo : public XtensaGenRegisterInfo {28public:29 const XtensaSubtarget &Subtarget;30 31 XtensaRegisterInfo(const XtensaSubtarget &STI);32 33 bool requiresRegisterScavenging(const MachineFunction &MF) const override {34 return true;35 }36 37 bool requiresFrameIndexScavenging(const MachineFunction &MF) const override {38 return true;39 }40 41 bool trackLivenessAfterRegAlloc(const MachineFunction &) const override {42 return true;43 }44 45 const uint16_t *46 getCalleeSavedRegs(const MachineFunction *MF = 0) const override;47 const uint32_t *getCallPreservedMask(const MachineFunction &MF,48 CallingConv::ID) const override;49 BitVector getReservedRegs(const MachineFunction &MF) const override;50 51 bool eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj,52 unsigned FIOperandNum,53 RegScavenger *RS = nullptr) const override;54 55 Register getFrameRegister(const MachineFunction &MF) const override;56};57 58} // end namespace llvm59 60#endif // LLVM_LIB_TARGET_XTENSA_REGISTERINFO_H61