From: Andrew Lenharth Date: Wed, 2 Feb 2005 03:36:35 +0000 (+0000) Subject: try to make a bug bugpointable, add yet more constant pool stuff, fixup constant... X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=2afc8219966b4146213ec2b80bde7e7cd94f5289;p=oota-llvm.git try to make a bug bugpointable, add yet more constant pool stuff, fixup constant loads for FP git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19985 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Alpha/AlphaISelPattern.cpp b/lib/Target/Alpha/AlphaISelPattern.cpp index e8de3c8bd7b..344117dd80a 100644 --- a/lib/Target/Alpha/AlphaISelPattern.cpp +++ b/lib/Target/Alpha/AlphaISelPattern.cpp @@ -351,7 +351,7 @@ unsigned ISel::SelectExprFP(SDOperand N, unsigned Result) { Select(Chain); AlphaLowering.restoreGP(BB); - Opc = DestType == MVT::f64 ? Alpha::LDS : Alpha::LDT; + Opc = DestType == MVT::f64 ? Alpha::LDS_SYM : Alpha::LDT_SYM; BuildMI(BB, Opc, 1, Result).addGlobalAddress(cast(Address)->getGlobal()); } else if (ConstantPoolSDNode *CP = dyn_cast(Address)) { @@ -1046,19 +1046,25 @@ unsigned ISel::SelectExpr(SDOperand N) { SDOperand Chain = N.getOperand(0); SDOperand Address = N.getOperand(1); + assert(DestType == MVT::i64 && "unknown Load dest type"); + if (Address.getOpcode() == ISD::GlobalAddress) - { - Select(Chain); - AlphaLowering.restoreGP(BB); - BuildMI(BB, Alpha::LOAD, 1, Result).addGlobalAddress(cast(Address)->getGlobal()); - } + { + Select(Chain); + AlphaLowering.restoreGP(BB); + BuildMI(BB, Alpha::LOAD, 1, Result).addGlobalAddress(cast(Address)->getGlobal()); + } + else if (ConstantPoolSDNode *CP = dyn_cast(Address)) { + AlphaLowering.restoreGP(BB); + BuildMI(BB, Alpha::LOAD, 1, Result).addConstantPoolIndex(CP->getIndex()); + } else - { - Select(Chain); - Tmp2 = SelectExpr(Address); - BuildMI(BB, Alpha::LDQ, 2, Result).addImm(0).addReg(Tmp2); - } - return Result; + { + Select(Chain); + Tmp2 = SelectExpr(Address); + BuildMI(BB, Alpha::LDQ, 2, Result).addImm(0).addReg(Tmp2); + } + return Result; } } diff --git a/lib/Target/Alpha/AlphaInstrInfo.td b/lib/Target/Alpha/AlphaInstrInfo.td index fbf3d7196e1..b9e2cc34541 100644 --- a/lib/Target/Alpha/AlphaInstrInfo.td +++ b/lib/Target/Alpha/AlphaInstrInfo.td @@ -266,7 +266,7 @@ def STL : MForm<0x2C, (ops GPRC:$RA, s16imm:$DISP, GPRC:$RB), "stl $RA,$DISP($RB def STQ : MForm<0x2D, (ops GPRC:$RA, s16imm:$DISP, GPRC:$RB), "stq $RA,$DISP($RB)">; //Store quadword //Loads, int -def LDL : MForm<0x28, (ops GPRC:$RA, s16imm:$DISP, GPRC:$RB), "ldq $RA,$DISP($RB)">; // Load sign-extended longword +def LDL : MForm<0x28, (ops GPRC:$RA, s16imm:$DISP, GPRC:$RB), "ldl $RA,$DISP($RB)">; // Load sign-extended longword def LDQ : MForm<0x29, (ops GPRC:$RA, s16imm:$DISP, GPRC:$RB), "ldq $RA,$DISP($RB)">; //Load quadword def LDBU : MForm<0x0A, (ops GPRC:$RA, s16imm:$DISP, GPRC:$RB), "ldbu $RA,$DISP($RB)">; //Load zero-extended byte def LDWU : MForm<0x0C, (ops GPRC:$RA, s16imm:$DISP, GPRC:$RB), "ldwu $RA,$DISP($RB)">; //Load zero-extended word