brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · ede0eeb Raw
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