From: Chris Lattner Date: Thu, 17 Nov 2005 18:02:16 +0000 (+0000) Subject: Teach the selector to fold lo(g) into load instruction immediate fields X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4f0f86de5f183b09d07b17d1f940bd3e298abfcd;p=oota-llvm.git Teach the selector to fold lo(g) into load instruction immediate fields git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24396 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index 7c5c808878b..5baec745c94 100644 --- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -413,6 +413,14 @@ bool PPCDAGToDAGISel::SelectAddr(SDOperand Addr, SDOperand &Op1, Op2 = Select(Addr.getOperand(0)); } return false; + } else if (Addr.getOperand(1).getOpcode() == PPCISD::Lo) { + // Match LOAD (ADD (X, Lo(G))). + assert(!cast(Addr.getOperand(1).getOperand(1))->getValue() + && "Cannot handle constant offsets yet!"); + Op1 = Addr.getOperand(1).getOperand(0); // The global address. + assert(Op1.getOpcode() == ISD::TargetGlobalAddress); + Op2 = Select(Addr.getOperand(0)); + return false; // [&g+r] } else { Op1 = Select(Addr.getOperand(0)); Op2 = Select(Addr.getOperand(1));