From: Vikram S. Adve Date: Tue, 18 Sep 2001 13:01:29 +0000 (+0000) Subject: Make class TargetMachine the common interface to all target-dependent X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0fb498017a44c85cae172f0b244bb1d79bf4c821;p=oota-llvm.git Make class TargetMachine the common interface to all target-dependent information, including instr, sched, and reg information. Rename files to match the primary classes they provide. Commented out call to register allocation until more tests run correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@616 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/SparcV9/SparcV9TargetMachine.cpp b/lib/Target/SparcV9/SparcV9TargetMachine.cpp index 3e9998004df..37052568cd1 100644 --- a/lib/Target/SparcV9/SparcV9TargetMachine.cpp +++ b/lib/Target/SparcV9/SparcV9TargetMachine.cpp @@ -1,3 +1,4 @@ +// $Id$ //*************************************************************************** // File: // Sparc.cpp @@ -18,12 +19,48 @@ #include "llvm/CodeGen/PhyRegAlloc.h" +//***************************** Internal Functions *************************/ + +//---------------------------------------------------------------------------- // allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine // that implements the Sparc backend. (the llvm/CodeGen/Sparc.h interface) +//---------------------------------------------------------------------------- // TargetMachine *allocateSparcTargetMachine() { return new UltraSparc(); } +//---------------------------------------------------------------------------- +// Entry point for register allocation for a module +//---------------------------------------------------------------------------- + +bool +AllocateRegisters(Method *M, TargetMachine &TM) +{ + + if ( (M)->isExternal() ) // don't process prototypes + return false; + + if( DEBUG_RA ) { + cout << endl << "******************** Method "<< (M)->getName(); + cout << " ********************" <isExternal() ) // don't process prototypes - return; - - if( DEBUG_RA ) { - cout << endl << "******************** Method "<< (M)->getName(); - cout << " ********************" <getName() + << "\n\n"; + return true; + } - - PhyRegAlloc PRA(M, TM , &LVI); // allocate registers - PRA.allocateRegisters(); - - - if( DEBUG_RA ) cout << endl << "Register allocation complete!" << endl; - -} - - - - - -bool UltraSparc::compileMethod(Method *M) { - if (SelectInstructionsForMethod(M, *this)) { - cerr << "Instruction selection failed for method " << M->getName() - << "\n\n"; - return true; - } + if (ScheduleInstructionsWithSSA(M, *this)) + { + cerr << "Instruction scheduling before allocation failed for method " + << M->getName() << "\n\n"; + return true; + } + + // if (AllocateRegisters(M, *this)) // allocate registers + // { + // cerr << "Register allocation failed for method " + // << M->getName() << "\n\n"; + // return true; + // } - if (ScheduleInstructionsWithSSA(M, *this, InstSchedulingInfo)) { - cerr << "Instruction scheduling before allocation failed for method " - << M->getName() << "\n\n"; - return true; - } - - AllocateRegisters(M, *this); // allocate registers - - return false; }