Path: blob/main/contrib/llvm-project/llvm/lib/Target/AVR/AVRRegisterInfo.h
96353 views
//===-- AVRRegisterInfo.h - AVR Register Information Impl -------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// This file contains the AVR implementation of the TargetRegisterInfo class.9//10//===----------------------------------------------------------------------===//1112#ifndef LLVM_AVR_REGISTER_INFO_H13#define LLVM_AVR_REGISTER_INFO_H1415#include "llvm/CodeGen/TargetRegisterInfo.h"1617#define GET_REGINFO_HEADER18#include "AVRGenRegisterInfo.inc"1920namespace llvm {2122/// Utilities relating to AVR registers.23class AVRRegisterInfo : public AVRGenRegisterInfo {24public:25AVRRegisterInfo();2627public:28const uint16_t *29getCalleeSavedRegs(const MachineFunction *MF = nullptr) const override;30const uint32_t *getCallPreservedMask(const MachineFunction &MF,31CallingConv::ID CC) const override;32BitVector getReservedRegs(const MachineFunction &MF) const override;3334const TargetRegisterClass *35getLargestLegalSuperClass(const TargetRegisterClass *RC,36const MachineFunction &MF) const override;3738/// Stack Frame Processing Methods39bool eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj,40unsigned FIOperandNum,41RegScavenger *RS = nullptr) const override;4243Register getFrameRegister(const MachineFunction &MF) const override;4445const TargetRegisterClass *46getPointerRegClass(const MachineFunction &MF,47unsigned Kind = 0) const override;4849/// Splits a 16-bit `DREGS` register into the lo/hi register pair.50/// \param Reg A 16-bit register to split.51void splitReg(Register Reg, Register &LoReg, Register &HiReg) const;5253bool shouldCoalesce(MachineInstr *MI, const TargetRegisterClass *SrcRC,54unsigned SubReg, const TargetRegisterClass *DstRC,55unsigned DstSubReg, const TargetRegisterClass *NewRC,56LiveIntervals &LIS) const override;57};5859} // end namespace llvm6061#endif // LLVM_AVR_REGISTER_INFO_H626364