mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-24 20:44:51 +00:00
Add support for loading and storing pointers...
llvm-svn: 575
This commit is contained in:
parent
45ab5fc1ae
commit
eb286a8ad2
@ -821,53 +821,45 @@ CreateDivConstInstruction(const InstructionNode* instrNode,
|
||||
}
|
||||
|
||||
|
||||
static inline MachineOpCode
|
||||
ChooseLoadInstruction(const Type* resultType)
|
||||
{
|
||||
MachineOpCode opCode = INVALID_OPCODE;
|
||||
|
||||
switch (resultType->getPrimitiveID())
|
||||
{
|
||||
case Type::BoolTyID: opCode = LDUB; break;
|
||||
case Type::UByteTyID: opCode = LDUB; break;
|
||||
case Type::SByteTyID: opCode = LDSB; break;
|
||||
case Type::UShortTyID: opCode = LDUH; break;
|
||||
case Type::ShortTyID: opCode = LDSH; break;
|
||||
case Type::UIntTyID: opCode = LDUW; break;
|
||||
case Type::IntTyID: opCode = LDSW; break;
|
||||
static inline MachineOpCode ChooseLoadInstruction(const Type *DestTy) {
|
||||
switch (DestTy->getPrimitiveID()) {
|
||||
case Type::BoolTyID:
|
||||
case Type::UByteTyID: return LDUB;
|
||||
case Type::SByteTyID: return LDSB;
|
||||
case Type::UShortTyID: return LDUH;
|
||||
case Type::ShortTyID: return LDSH;
|
||||
case Type::UIntTyID: return LDUW;
|
||||
case Type::IntTyID: return LDSW;
|
||||
case Type::PointerTyID:
|
||||
case Type::ULongTyID:
|
||||
case Type::LongTyID: opCode = LDX; break;
|
||||
case Type::FloatTyID: opCode = LD; break;
|
||||
case Type::DoubleTyID: opCode = LDD; break;
|
||||
default: assert(0 && "Invalid type for Load instruction"); break;
|
||||
case Type::LongTyID: return LDX;
|
||||
case Type::FloatTyID: return LD;
|
||||
case Type::DoubleTyID: return LDD;
|
||||
default: assert(0 && "Invalid type for Load instruction");
|
||||
}
|
||||
|
||||
return opCode;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static inline MachineOpCode
|
||||
ChooseStoreInstruction(const Type* valueType)
|
||||
{
|
||||
MachineOpCode opCode = INVALID_OPCODE;
|
||||
|
||||
switch (valueType->getPrimitiveID())
|
||||
{
|
||||
static inline MachineOpCode ChooseStoreInstruction(const Type *DestTy) {
|
||||
switch (DestTy->getPrimitiveID()) {
|
||||
case Type::BoolTyID:
|
||||
case Type::UByteTyID:
|
||||
case Type::SByteTyID: opCode = STB; break;
|
||||
case Type::SByteTyID: return STB;
|
||||
case Type::UShortTyID:
|
||||
case Type::ShortTyID: opCode = STH; break;
|
||||
case Type::ShortTyID: return STH;
|
||||
case Type::UIntTyID:
|
||||
case Type::IntTyID: opCode = STW; break;
|
||||
case Type::IntTyID: return STW;
|
||||
case Type::PointerTyID:
|
||||
case Type::ULongTyID:
|
||||
case Type::LongTyID: opCode = STX; break;
|
||||
case Type::FloatTyID: opCode = ST; break;
|
||||
case Type::DoubleTyID: opCode = STD; break;
|
||||
default: assert(0 && "Invalid type for Store instruction"); break;
|
||||
case Type::LongTyID: return STX;
|
||||
case Type::FloatTyID: return ST;
|
||||
case Type::DoubleTyID: return STD;
|
||||
default: assert(0 && "Invalid type for Store instruction");
|
||||
}
|
||||
|
||||
return opCode;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user