class PhyRegAlloc;
class Pass;
-// OpCodeMask definitions for the Sparc V9
-//
-const OpCodeMask Immed = 0x00002000; // immed or reg operand?
-const OpCodeMask Annul = 0x20000000; // annul delay instr?
-const OpCodeMask PredictTaken = 0x00080000; // predict branch taken?
-
-
enum SparcInstrSchedClass {
SPARC_NONE, /* Instructions with no scheduling restrictions */
SPARC_IEUN, /* Integer class that can use IEU0 or IEU1 */
//---------------------------------------------------------------------------
struct UltraSparcInstrInfo : public MachineInstrInfo {
- UltraSparcInstrInfo(const TargetMachine& tgt);
+ UltraSparcInstrInfo();
//
// All immediate constants are in position 1 except the
// particular function. The frame contents are obtained from the
// MachineCodeInfoForMethod object for the given function.
//
- int getFirstIncomingArgOffset (MachineCodeForMethod& mcInfo,
+ int getFirstIncomingArgOffset (MachineFunction& mcInfo,
bool& growUp) const
{
growUp = true; // arguments area grows upwards
return FirstIncomingArgOffsetFromFP;
}
- int getFirstOutgoingArgOffset (MachineCodeForMethod& mcInfo,
+ int getFirstOutgoingArgOffset (MachineFunction& mcInfo,
bool& growUp) const
{
growUp = true; // arguments area grows upwards
return FirstOutgoingArgOffsetFromSP;
}
- int getFirstOptionalOutgoingArgOffset(MachineCodeForMethod& mcInfo,
+ int getFirstOptionalOutgoingArgOffset(MachineFunction& mcInfo,
bool& growUp)const
{
growUp = true; // arguments area grows upwards
return FirstOptionalOutgoingArgOffsetFromSP;
}
- int getFirstAutomaticVarOffset (MachineCodeForMethod& mcInfo,
+ int getFirstAutomaticVarOffset (MachineFunction& mcInfo,
bool& growUp) const;
- int getRegSpillAreaOffset (MachineCodeForMethod& mcInfo,
+ int getRegSpillAreaOffset (MachineFunction& mcInfo,
bool& growUp) const;
- int getTmpAreaOffset (MachineCodeForMethod& mcInfo,
+ int getTmpAreaOffset (MachineFunction& mcInfo,
bool& growUp) const;
- int getDynamicAreaOffset (MachineCodeForMethod& mcInfo,
+ int getDynamicAreaOffset (MachineFunction& mcInfo,
bool& growUp) const;
//
//---------------------------------------------------------------------------
class UltraSparc : public TargetMachine {
-private:
UltraSparcInstrInfo instrInfo;
UltraSparcSchedInfo schedInfo;
UltraSparcRegInfo regInfo;
virtual const MachineCacheInfo &getCacheInfo() const { return cacheInfo; }
virtual const MachineOptInfo &getOptInfo() const { return optInfo; }
- // getPrologEpilogCodeInserter - Inserts prolog/epilog code.
- virtual Pass* getPrologEpilogInsertionPass();
+ virtual bool addPassesToEmitAssembly(PassManager &PM, std::ostream &Out);
+
+ // getPrologEpilogInsertionPass - Inserts prolog/epilog code.
+ Pass* getPrologEpilogInsertionPass();
// getFunctionAsmPrinterPass - Writes out machine code for a single function
- virtual Pass* getFunctionAsmPrinterPass(std::ostream &Out);
+ Pass* getFunctionAsmPrinterPass(std::ostream &Out);
// getModuleAsmPrinterPass - Writes generated machine code to assembly file.
- virtual Pass* getModuleAsmPrinterPass(std::ostream &Out);
+ Pass* getModuleAsmPrinterPass(std::ostream &Out);
// getEmitBytecodeToAsmPass - Emits final LLVM bytecode to assembly file.
- virtual Pass* getEmitBytecodeToAsmPass(std::ostream &Out);
+ Pass* getEmitBytecodeToAsmPass(std::ostream &Out);
};
#endif