mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
Added virtual function to generate an instruction sequence to
load a constant into a register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@862 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
30764b8366
commit
5684c4e2b4
@ -9,8 +9,13 @@
|
||||
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Support/DataTypes.h"
|
||||
#include <vector>
|
||||
|
||||
class MachineInstrDescriptor;
|
||||
class TmpInstruction;
|
||||
class MachineInstr;
|
||||
class Value;
|
||||
class Instruction;
|
||||
|
||||
|
||||
typedef int InstrSchedClass;
|
||||
@ -211,6 +216,21 @@ public:
|
||||
isSignExtended = getDescriptor(opCode).immedIsSignExtended;
|
||||
return getDescriptor(opCode).maxImmedConst;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Code generation support for creating individual machine instructions
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
// Create an instruction sequence to put the constant `val' into
|
||||
// the virtual register `dest'. `val' may be a ConstPoolVal or a
|
||||
// GlobalValue, viz., the constant address of a global variable or function.
|
||||
// The generated instructions are returned in `minstrVec'.
|
||||
// Any temp. registers (TmpInstruction) created are returned in `tempVec'.
|
||||
//
|
||||
virtual void CreateCodeToLoadConst(Value* val,
|
||||
Instruction* dest,
|
||||
vector<MachineInstr*>& minstrVec,
|
||||
vector<TmpInstruction*>& temps) const =0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -9,8 +9,13 @@
|
||||
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Support/DataTypes.h"
|
||||
#include <vector>
|
||||
|
||||
class MachineInstrDescriptor;
|
||||
class TmpInstruction;
|
||||
class MachineInstr;
|
||||
class Value;
|
||||
class Instruction;
|
||||
|
||||
|
||||
typedef int InstrSchedClass;
|
||||
@ -211,6 +216,21 @@ public:
|
||||
isSignExtended = getDescriptor(opCode).immedIsSignExtended;
|
||||
return getDescriptor(opCode).maxImmedConst;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Code generation support for creating individual machine instructions
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
// Create an instruction sequence to put the constant `val' into
|
||||
// the virtual register `dest'. `val' may be a ConstPoolVal or a
|
||||
// GlobalValue, viz., the constant address of a global variable or function.
|
||||
// The generated instructions are returned in `minstrVec'.
|
||||
// Any temp. registers (TmpInstruction) created are returned in `tempVec'.
|
||||
//
|
||||
virtual void CreateCodeToLoadConst(Value* val,
|
||||
Instruction* dest,
|
||||
vector<MachineInstr*>& minstrVec,
|
||||
vector<TmpInstruction*>& temps) const =0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -85,7 +85,7 @@ class UltraSparcInstrInfo : public MachineInstrInfo {
|
||||
public:
|
||||
/*ctor*/ UltraSparcInstrInfo();
|
||||
|
||||
virtual bool hasResultInterlock (MachineOpCode opCode)
|
||||
virtual bool hasResultInterlock (MachineOpCode opCode) const
|
||||
{
|
||||
// All UltraSPARC instructions have interlocks (note that delay slots
|
||||
// are not considered here).
|
||||
@ -96,10 +96,19 @@ public:
|
||||
return (opCode == FCMPS || opCode == FCMPD || opCode == FCMPQ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Code generation support for creating individual machine instructions
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
// Create an instruction sequence to put the constant `val' into
|
||||
// the virtual register `dest'. The generated instructions are
|
||||
// returned in `minstrVec'. Any temporary registers (TmpInstruction)
|
||||
// created are returned in `tempVec'.
|
||||
//
|
||||
virtual void CreateCodeToLoadConst(Value* val,
|
||||
Instruction* dest,
|
||||
vector<MachineInstr*>& minstrVec,
|
||||
vector<TmpInstruction*>& tempVec) const;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user