diff options
author | Chris Lattner <sabre@nondot.org> | 2010-02-23 01:37:39 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-02-23 01:37:39 +0000 |
commit | 674b75617c977bb7168171fca514da3c082ec074 (patch) | |
tree | 6277aa36095ad201b639cf90c33c64a9f1ff5da4 /lib | |
parent | 8843fd39c8b9bbe187d78cfce7cc6582c124cff5 (diff) | |
download | external_llvm-674b75617c977bb7168171fca514da3c082ec074.zip external_llvm-674b75617c977bb7168171fca514da3c082ec074.tar.gz external_llvm-674b75617c977bb7168171fca514da3c082ec074.tar.bz2 |
fix hte last cellspu failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96854 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/CellSPU/SPUISelDAGToDAG.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/Target/CellSPU/SPUISelDAGToDAG.cpp b/lib/Target/CellSPU/SPUISelDAGToDAG.cpp index 64a49fe..2d1a700 100644 --- a/lib/Target/CellSPU/SPUISelDAGToDAG.cpp +++ b/lib/Target/CellSPU/SPUISelDAGToDAG.cpp @@ -767,21 +767,22 @@ SPUDAGToDAGISel::Select(SDNode *N) { } SDNode *shufMaskLoad = emitBuildVector(shufMask.getNode()); - SDNode *PromoteScalar = CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl, - Op0VecVT, Op0).getNode(); - + + HandleSDNode PromoteScalar(CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl, + Op0VecVT, Op0)); + + SDValue PromScalar; + if (SDNode *N = SelectCode(PromoteScalar.getValue().getNode())) + PromScalar = SDValue(N, 0); + else + PromScalar = PromoteScalar.getValue(); + SDValue zextShuffle = CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT, - SDValue(PromoteScalar, 0), - SDValue(PromoteScalar, 0), + PromScalar, PromScalar, SDValue(shufMaskLoad, 0)); - // N.B.: BIT_CONVERT replaces and updates the zextShuffle node, so we - // re-use it in the VEC2PREFSLOT selection without needing to explicitly - // call SelectCode (it's already done for us.) - HandleSDNode Dummy2(zextShuffle); //CurDAG->getNode(ISD::BIT_CONVERT, dl, OpVecVT, - // zextShuffle)); - + HandleSDNode Dummy2(zextShuffle); if (SDNode *N = SelectCode(Dummy2.getValue().getNode())) return N; HandleSDNode Dummy(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT, |