Add function returning which operand holds immediate constant

for a given opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1307 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Vikram S. Adve 2001-11-14 18:48:36 +00:00
parent 9e29f78029
commit 4c5fe2d3ed
3 changed files with 30 additions and 0 deletions

View File

@ -209,6 +209,13 @@ public:
virtual int maxLatency(MachineOpCode opCode) const {
return getDescriptor(opCode).latency;
}
//
// Which operand holds an immediate constant? Returns -1 if none
//
virtual int getImmmedConstantPos(MachineOpCode opCode) const {
return -1; // immediate position is machine specific, so say -1 == "none"
}
// Check if the specified constant fits in the immediate field
// of this machine instruction

View File

@ -209,6 +209,13 @@ public:
virtual int maxLatency(MachineOpCode opCode) const {
return getDescriptor(opCode).latency;
}
//
// Which operand holds an immediate constant? Returns -1 if none
//
virtual int getImmmedConstantPos(MachineOpCode opCode) const {
return -1; // immediate position is machine specific, so say -1 == "none"
}
// Check if the specified constant fits in the immediate field
// of this machine instruction

View File

@ -89,6 +89,22 @@ extern const MachineInstrDescriptor SparcMachineInstrDesc[];
class UltraSparcInstrInfo : public MachineInstrInfo {
public:
/*ctor*/ UltraSparcInstrInfo(const TargetMachine& tgt);
//
// All immediate constants are in position 0 except the
// store instructions.
//
virtual int getImmmedConstantPos(MachineOpCode opCode) const {
bool ignore;
if (this->maxImmedConstant(opCode, ignore) != 0)
{
assert(! this->isStore((MachineOpCode) STB - 1)); // first store is STB
assert(! this->isStore((MachineOpCode) STD + 1)); // last store is STD
return (opCode >= STB || opCode <= STD)? 2 : 1;
}
else
return -1;
}
virtual bool hasResultInterlock (MachineOpCode opCode) const
{