From 0eece8418647563e4111c21f2582a352bb645d6b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 17 Dec 2002 04:03:08 +0000 Subject: [PATCH] New file llvm-svn: 5097 --- llvm/lib/Target/MRegisterInfo.cpp | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 llvm/lib/Target/MRegisterInfo.cpp diff --git a/llvm/lib/Target/MRegisterInfo.cpp b/llvm/lib/Target/MRegisterInfo.cpp new file mode 100644 index 000000000000..c47bb45440b5 --- /dev/null +++ b/llvm/lib/Target/MRegisterInfo.cpp @@ -0,0 +1,32 @@ +//===- MRegisterInfo.cpp - Target Register Information Implementation -----===// +// +// This file implements the MRegisterInfo interface. +// +//===----------------------------------------------------------------------===// + +#include "llvm/Target/MRegisterInfo.h" + +MRegisterInfo::MRegisterInfo(const MRegisterDesc *D, unsigned NR, + regclass_iterator RCB, regclass_iterator RCE) + : Desc(D), NumRegs(NR), RegClassBegin(RCB), RegClassEnd(RCE) { + assert(NumRegs < FirstVirtualRegister && + "Target has too many physical registers!"); + + PhysRegClasses = new const TargetRegisterClass*[NumRegs]; + for (unsigned i = 0; i != NumRegs; ++i) + PhysRegClasses[i] = 0; + + // Fill in the PhysRegClasses map + for (MRegisterInfo::regclass_iterator I = regclass_begin(), + E = regclass_end(); I != E; ++I) + for (unsigned i=0; i < (*I)->getNumRegs(); ++i) { + assert(PhysRegClasses[(*I)->getRegister(i)] == 0 && + "Register in more than one class?"); + PhysRegClasses[(*I)->getRegister(i)] = *I; + } +} + + +MRegisterInfo::~MRegisterInfo() { + delete[] PhysRegClasses; +}