From 9208bbf5c9f12099de3f0a0716c33b0759075f03 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 17 Dec 2002 04:03:08 +0000 Subject: [PATCH] New file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5097 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/MRegisterInfo.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 lib/Target/MRegisterInfo.cpp diff --git a/lib/Target/MRegisterInfo.cpp b/lib/Target/MRegisterInfo.cpp new file mode 100644 index 00000000000..c47bb45440b --- /dev/null +++ b/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; +}