Add support for loading and storing pointers...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@575 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2001-09-14 20:00:02 +00:00
parent ffe335ace1
commit 7163447b9d

View File

@ -821,53 +821,45 @@ CreateDivConstInstruction(const InstructionNode* instrNode,
} }
static inline MachineOpCode static inline MachineOpCode ChooseLoadInstruction(const Type *DestTy) {
ChooseLoadInstruction(const Type* resultType) switch (DestTy->getPrimitiveID()) {
{ case Type::BoolTyID:
MachineOpCode opCode = INVALID_OPCODE; case Type::UByteTyID: return LDUB;
case Type::SByteTyID: return LDSB;
switch (resultType->getPrimitiveID()) case Type::UShortTyID: return LDUH;
{ case Type::ShortTyID: return LDSH;
case Type::BoolTyID: opCode = LDUB; break; case Type::UIntTyID: return LDUW;
case Type::UByteTyID: opCode = LDUB; break; case Type::IntTyID: return LDSW;
case Type::SByteTyID: opCode = LDSB; break; case Type::PointerTyID:
case Type::UShortTyID: opCode = LDUH; break;
case Type::ShortTyID: opCode = LDSH; break;
case Type::UIntTyID: opCode = LDUW; break;
case Type::IntTyID: opCode = LDSW; break;
case Type::ULongTyID: case Type::ULongTyID:
case Type::LongTyID: opCode = LDX; break; case Type::LongTyID: return LDX;
case Type::FloatTyID: opCode = LD; break; case Type::FloatTyID: return LD;
case Type::DoubleTyID: opCode = LDD; break; case Type::DoubleTyID: return LDD;
default: assert(0 && "Invalid type for Load instruction"); break; default: assert(0 && "Invalid type for Load instruction");
} }
return opCode; return 0;
} }
static inline MachineOpCode static inline MachineOpCode ChooseStoreInstruction(const Type *DestTy) {
ChooseStoreInstruction(const Type* valueType) switch (DestTy->getPrimitiveID()) {
{
MachineOpCode opCode = INVALID_OPCODE;
switch (valueType->getPrimitiveID())
{
case Type::BoolTyID: case Type::BoolTyID:
case Type::UByteTyID: case Type::UByteTyID:
case Type::SByteTyID: opCode = STB; break; case Type::SByteTyID: return STB;
case Type::UShortTyID: case Type::UShortTyID:
case Type::ShortTyID: opCode = STH; break; case Type::ShortTyID: return STH;
case Type::UIntTyID: case Type::UIntTyID:
case Type::IntTyID: opCode = STW; break; case Type::IntTyID: return STW;
case Type::PointerTyID:
case Type::ULongTyID: case Type::ULongTyID:
case Type::LongTyID: opCode = STX; break; case Type::LongTyID: return STX;
case Type::FloatTyID: opCode = ST; break; case Type::FloatTyID: return ST;
case Type::DoubleTyID: opCode = STD; break; case Type::DoubleTyID: return STD;
default: assert(0 && "Invalid type for Store instruction"); break; default: assert(0 && "Invalid type for Store instruction");
} }
return opCode; return 0;
} }