[llvm] r283316 - [AVR] Add AVRRegisterInfo::splitReg function
Dylan McKay via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 5 06:27:31 PDT 2016
Author: dylanmckay
Date: Wed Oct 5 08:27:30 2016
New Revision: 283316
URL: http://llvm.org/viewvc/llvm-project?rev=283316&view=rev
Log:
[AVR] Add AVRRegisterInfo::splitReg function
No tests are included just yet - this is used from the pseudo
instruction expander pass, which hasn't been pulled in-tree yet.
Modified:
llvm/trunk/lib/Target/AVR/AVRRegisterInfo.cpp
llvm/trunk/lib/Target/AVR/AVRRegisterInfo.h
Modified: llvm/trunk/lib/Target/AVR/AVRRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AVR/AVRRegisterInfo.cpp?rev=283316&r1=283315&r2=283316&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AVR/AVRRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/AVR/AVRRegisterInfo.cpp Wed Oct 5 08:27:30 2016
@@ -253,4 +253,14 @@ AVRRegisterInfo::getPointerRegClass(cons
return &AVR::PTRDISPREGSRegClass;
}
+void AVRRegisterInfo::splitReg(unsigned Reg,
+ unsigned &LoReg,
+ unsigned &HiReg) const {
+ assert(AVR::DREGSRegClass.contains(Reg) && "can only split 16-bit registers");
+
+ LoReg = getSubReg(Reg, AVR::sub_lo);
+ HiReg = getSubReg(Reg, AVR::sub_hi);
+}
+
} // end of namespace llvm
+
Modified: llvm/trunk/lib/Target/AVR/AVRRegisterInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AVR/AVRRegisterInfo.h?rev=283316&r1=283315&r2=283316&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AVR/AVRRegisterInfo.h (original)
+++ llvm/trunk/lib/Target/AVR/AVRRegisterInfo.h Wed Oct 5 08:27:30 2016
@@ -42,13 +42,15 @@ public:
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;
+
+ /// Splits a 16-bit `DREGS` register into the lo/hi register pair.
+ /// \param Reg A 16-bit register to split.
+ void splitReg(unsigned Reg, unsigned &LoReg, unsigned &HiReg) const;
};
} // end namespace llvm
More information about the llvm-commits
mailing list