diff options
author | Dylan McKay <dylanmckay34@gmail.com> | 2016-05-06 10:12:31 +0000 |
---|---|---|
committer | Dylan McKay <dylanmckay34@gmail.com> | 2016-05-06 10:12:31 +0000 |
commit | 6d8078f9937f5dce3283b218fd3c3403dc899fcf (patch) | |
tree | cf113645c0d6bc58081f366428a5c818bbee16ad /llvm/lib/Target/AVR/AVRRegisterInfo.h | |
parent | c7a82b41a706728ce7c212b5bc40c74d1cce53c7 (diff) | |
download | bcm5719-llvm-6d8078f9937f5dce3283b218fd3c3403dc899fcf.tar.gz bcm5719-llvm-6d8078f9937f5dce3283b218fd3c3403dc899fcf.zip |
[AVR] Add a majority of the backend code
Summary: This adds the majority of the AVR backend.
Reviewers: hfinkel, dsanders, vkalintiris, arsenm
Subscribers: dylanmckay
Differential Revision: http://reviews.llvm.org/D17906
llvm-svn: 268722
Diffstat (limited to 'llvm/lib/Target/AVR/AVRRegisterInfo.h')
-rw-r--r-- | llvm/lib/Target/AVR/AVRRegisterInfo.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/llvm/lib/Target/AVR/AVRRegisterInfo.h b/llvm/lib/Target/AVR/AVRRegisterInfo.h new file mode 100644 index 00000000000..59c0849d209 --- /dev/null +++ b/llvm/lib/Target/AVR/AVRRegisterInfo.h @@ -0,0 +1,56 @@ +//===-- AVRRegisterInfo.h - AVR Register Information Impl -------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file contains the AVR implementation of the TargetRegisterInfo class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_AVR_REGISTER_INFO_H +#define LLVM_AVR_REGISTER_INFO_H + +#include "llvm/Target/TargetRegisterInfo.h" + +#define GET_REGINFO_HEADER +#include "AVRGenRegisterInfo.inc" + +namespace llvm { + +/// Utilities relating to AVR registers. +class AVRRegisterInfo : public AVRGenRegisterInfo { +public: + AVRRegisterInfo(); + +public: + const uint16_t * + getCalleeSavedRegs(const MachineFunction *MF = 0) const override; + const uint32_t *getCallPreservedMask(const MachineFunction &MF, + CallingConv::ID CC) const override; + BitVector getReservedRegs(const MachineFunction &MF) const override; + + const TargetRegisterClass * + getLargestLegalSuperClass(const TargetRegisterClass *RC, + const MachineFunction &MF) const override; + + /// Stack Frame Processing Methods + void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj, + unsigned FIOperandNum, + RegScavenger *RS = NULL) const override; + + /// Debug information queries. + unsigned getFrameRegister(const MachineFunction &MF) const override; + + /// Returns a TargetRegisterClass used for pointer values. + const TargetRegisterClass * + getPointerRegClass(const MachineFunction &MF, + unsigned Kind = 0) const override; +}; + +} // end namespace llvm + +#endif // LLVM_AVR_REGISTER_INFO_H |