diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-08-16 21:58:15 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-08-16 21:58:15 +0000 |
| commit | 79f5ebc7b90ab69dfdad76fa2c7e5fe605ff7d6a (patch) | |
| tree | ddf8731be23fe2e7554e327c67405df29e33ecef /llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp | |
| parent | 7c76278242b4369d54e4dbee39e7eef07fb3dc82 (diff) | |
| download | bcm5719-llvm-79f5ebc7b90ab69dfdad76fa2c7e5fe605ff7d6a.tar.gz bcm5719-llvm-79f5ebc7b90ab69dfdad76fa2c7e5fe605ff7d6a.zip | |
updates for changes in nodes
llvm-svn: 22808
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp index 4e674dc5690..680d55848ba 100644 --- a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp +++ b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp @@ -808,11 +808,12 @@ unsigned ISel::SelectExpr(SDOperand N, bool Recording) { SDNode *Node = N.Val; MVT::ValueType DestType = N.getValueType(); - if (Node->getOpcode() == ISD::CopyFromReg && - (MRegisterInfo::isVirtualRegister(cast<RegSDNode>(Node)->getReg()) || - cast<RegSDNode>(Node)->getReg() == PPC::R1)) + if (Node->getOpcode() == ISD::CopyFromReg) { + unsigned Reg = cast<RegisterSDNode>(Node->getOperand(1))->getReg(); // Just use the specified register as our input. - return cast<RegSDNode>(Node)->getReg(); + if (MRegisterInfo::isVirtualRegister(Reg) || Reg == PPC::R1) + return Reg; + } unsigned &Reg = ExprMap[N]; if (Reg) return Reg; @@ -1085,7 +1086,7 @@ unsigned ISel::SelectExpr(SDOperand N, bool Recording) { DestType = N.getValue(0).getValueType(); if (Result == 1) Result = ExprMap[N.getValue(0)] = MakeReg(DestType); - Tmp1 = dyn_cast<RegSDNode>(Node)->getReg(); + Tmp1 = dyn_cast<RegisterSDNode>(Node->getOperand(1))->getReg(); if (MVT::isInteger(DestType)) BuildMI(BB, PPC::OR, 2, Result).addReg(Tmp1).addReg(Tmp1); else @@ -1877,12 +1878,12 @@ void ISel::Select(SDOperand N) { return; case ISD::CopyToReg: Select(N.getOperand(0)); - Tmp1 = SelectExpr(N.getOperand(1)); - Tmp2 = cast<RegSDNode>(N)->getReg(); + Tmp1 = SelectExpr(N.getOperand(2)); + Tmp2 = cast<RegisterSDNode>(N.getOperand(1))->getReg(); if (Tmp1 != Tmp2) { - if (N.getOperand(1).getValueType() == MVT::f64 || - N.getOperand(1).getValueType() == MVT::f32) + if (N.getOperand(2).getValueType() == MVT::f64 || + N.getOperand(2).getValueType() == MVT::f32) BuildMI(BB, PPC::FMR, 1, Tmp2).addReg(Tmp1); else BuildMI(BB, PPC::OR, 2, Tmp2).addReg(Tmp1).addReg(Tmp1); @@ -1890,7 +1891,8 @@ void ISel::Select(SDOperand N) { return; case ISD::ImplicitDef: Select(N.getOperand(0)); - BuildMI(BB, PPC::IMPLICIT_DEF, 0, cast<RegSDNode>(N)->getReg()); + BuildMI(BB, PPC::IMPLICIT_DEF, 0, + cast<RegisterSDNode>(N.getOperand(1))->getReg()); return; case ISD::RET: switch (N.getNumOperands()) { |

