Checkin changes to:

1. Clean up the TargetMachine structure.  No more wierd pointers that have to
   be cast around and taken care of by the target.
2. Instruction Scheduling now takes the schedinfo as an argument.  The same
   should be done with the instinfo, it just isn't now.
3. Sparc.h is now just a factory method.  Eventually this file will dissapear,
   but probably not until we have more than one backend.  :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@564 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2001-09-14 04:32:38 +00:00
parent c6495eeef6
commit 69db8da023
3 changed files with 18 additions and 50 deletions

View File

@ -12,14 +12,13 @@
#ifndef LLVM_CODEGEN_INSTR_SCHEDULING_H
#define LLVM_CODEGEN_INSTR_SCHEDULING_H
#include "llvm/Support/CommandLine.h"
#include "llvm/CodeGen/MachineInstr.h"
class Method;
class SchedulingManager;
class TargetMachine;
class MachineSchedInfo;
// Debug option levels for instruction scheduling
enum SchedDebugLevel_t {
@ -43,9 +42,8 @@ extern cl::Enum<SchedDebugLevel_t> SchedDebugLevel;
// are still in SSA form.
//---------------------------------------------------------------------------
bool ScheduleInstructionsWithSSA (Method* method,
const TargetMachine &Target);
bool ScheduleInstructionsWithSSA(Method* method, const TargetMachine &Target,
const MachineSchedInfo &schedInfo);
//---------------------------------------------------------------------------
// Function: ScheduleInstructions

View File

@ -7,27 +7,11 @@
#ifndef LLVM_CODEGEN_SPARC_H
#define LLVM_CODEGEN_SPARC_H
#include "llvm/CodeGen/TargetMachine.h"
class TargetMachine;
//---------------------------------------------------------------------------
// class UltraSparcMachine
//
// Purpose:
// Primary interface to machine description for the UltraSPARC.
// Primarily just initializes machine-dependent parameters in
// class TargetMachine, and creates machine-dependent subclasses
// for classes such as MachineInstrInfo.
//---------------------------------------------------------------------------
class UltraSparc : public TargetMachine {
public:
UltraSparc();
virtual ~UltraSparc();
// compileMethod - For the sparc, we do instruction selection, followed by
// delay slot scheduling, then register allocation.
//
virtual bool compileMethod(Method *M);
};
// allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine
// that implements the Sparc backend.
//
TargetMachine *allocateSparcTargetMachine();
#endif

View File

@ -750,21 +750,17 @@ public:
int zeroRegNum; // register that gives 0 if any (-1 if none)
public:
/*ctor*/ TargetMachine(const string &targetname,
unsigned char PtrSize = 8, unsigned char PtrAl = 8,
unsigned char DoubleAl = 8, unsigned char FloatAl = 4,
unsigned char LongAl = 8, unsigned char IntAl = 4,
unsigned char ShortAl = 2, unsigned char ByteAl = 1)
: TargetName(targetname),
DataLayout(targetname, PtrSize, PtrAl,
DoubleAl, FloatAl, LongAl, IntAl,
ShortAl, ByteAl) { }
TargetMachine(const string &targetname,
unsigned char PtrSize = 8, unsigned char PtrAl = 8,
unsigned char DoubleAl = 8, unsigned char FloatAl = 4,
unsigned char LongAl = 8, unsigned char IntAl = 4,
unsigned char ShortAl = 2, unsigned char ByteAl = 1)
: TargetName(targetname), DataLayout(targetname, PtrSize, PtrAl,
DoubleAl, FloatAl, LongAl, IntAl,
ShortAl, ByteAl) { }
virtual ~TargetMachine() {}
/*dtor*/ virtual ~TargetMachine() {}
const MachineInstrInfo& getInstrInfo () const { return *machineInstrInfo; }
const MachineSchedInfo& getSchedInfo() const { return *machineSchedInfo; }
virtual const MachineInstrInfo& getInstrInfo() const = 0;
virtual unsigned int findOptimalStorageSize (const Type* ty) const;
@ -774,8 +770,6 @@ public:
return (regNum1 == regNum2);
}
const MachineRegInfo& getRegInfo() const { return *machineRegInfo; }
// compileMethod - This does everything neccesary to compile a method into the
// built in representation. This allows the target to have complete control
// over how it does compilation. This does not emit assembly or output
@ -788,14 +782,6 @@ public:
// used.
//
virtual void emitAssembly(Method *M, ostream &OutStr) { /* todo */ }
protected:
// Description of machine instructions
// Protect so that subclass can control alloc/dealloc
MachineInstrInfo* machineInstrInfo;
MachineSchedInfo* machineSchedInfo;
const MachineRegInfo* machineRegInfo;
};
#endif