<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Scott,<div><br></div><div>In case you missed it, I reimplemented your BuildVectorSDNode::isConstantSplat method following the suggestions from Chris.  The revised version passes "make check" for llvm.  Assuming that it also passes Evan's tests, I think it should also do what you need for CellSPU.</div><div><br><div><div>On Feb 25, 2009, at 12:16 PM, Scott Michel wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Evan:<br><br>I work on reverting it, although, when I tried yesterday, it wasn't particularly clean (lots of rejected patches, presumably due to intervening commits.)<br><br>Are you still getting the backtrace or is this just a case of incorrectly generated code?<br> <br><br>-scooter<br><br><div class="gmail_quote">On Wed, Feb 25, 2009 at 10:09 AM, Evan Cheng <span dir="ltr"><<a href="mailto:echeng@apple.com">echeng@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div style="">Things are still broken. Unfortunately llvm test suite does not contain enough vector code to fully test this. Can you revert the patch first?<div><br></div><font color="#888888"><div>Evan</div></font><div><div> </div><div class="Wj3C7c"><div><br><div><div>On Feb 24, 2009, at 7:14 PM, Scott Michel wrote:</div><br><blockquote type="cite">Evan:<br><br>I did not encounter this back trace before I committed the newest BuildVectorSDNode patch, which removed all class instance members and passes results back via reference parameters.<br> <br><br>-scooter<br><br> <div class="gmail_quote">On Tue, Feb 24, 2009 at 11:39 AM, Evan Cheng <span dir="ltr"><<a href="mailto:evan.cheng@apple.com" target="_blank">evan.cheng@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div>I believe this patch has broken a PPC app that I am tracking. Here is a reduced test case. Reproduce with llc -mattr=+Altivec -mcpu=g5. The backtrace looks like this:<div><br></div><div><div><font face="Courier" size="2"><span style="font-size: 10px;">#0  0x9333ae42 in __kill ()</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#1  0x9333ae34 in kill$UNIX2003 ()</span></font></div><div><font face="Courier" size="2"><span style="font-size: 10px;">#2  0x933ad23a in raise ()</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#3  0x933b9679 in abort ()</span></font></div><div><font face="Courier" size="2"><span style="font-size: 10px;">#4  0x933ae3db in __assert_rtn ()</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#5  0x0008bd8f in llvm::MVT::getVectorElementType (this=0xbfffdda4) at ValueTypes.h:317</span></font></div><div><font face="Courier" size="2"><span style="font-size: 10px;">#6  0x002aed06 in BuildSplatI (Val=0, SplatSize=8, VT={{V = 24, SimpleTy = llvm::MVT::v4i32, LLVMTy = 0x18}}, DAG=@0x16088a0, dl={Idx = 4294967295}) at PPCISelLowering.cpp:311\</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">5</span></font></div><div><font face="Courier" size="2"><span style="font-size: 10px;">#7  0x002afae4 in llvm::PPCTargetLowering::LowerBUILD_VECTOR (this=0x1803d58, Op={Node = 0x157a530, ResNo = 0}, DAG=@0x16088a0) at PPCISelLowering.cpp:3200</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#8  0x002bb54f in llvm::PPCTargetLowering::LowerOperation (this=0x1803d58, Op={Node = 0x157a530, ResNo = 0}, DAG=@0x16088a0) at PPCISelLowering.cpp:3766</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#9  0x0051bed6 in (anonymous namespace)::SelectionDAGLegalize::LegalizeOp (this=0xbffff0e8, Op={Node = 0x157a530, ResNo = 0}) at LegalizeDAG.cpp:1608</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#10 0x0054837d in (anonymous namespace)::SelectionDAGLegalize::HandleOp (this=0xbffff0e8, Op={Node = 0x157a530, ResNo = 0}) at LegalizeDAG.cpp:519</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#11 0x005485a5 in (anonymous namespace)::SelectionDAGLegalize::LegalizeDAG (this=0xbffff0e8) at LegalizeDAG.cpp:389</span></font></div><div><font face="Courier" size="2"><span style="font-size: 10px;">#12 0x00548734 in llvm::SelectionDAG::Legalize (this=0x16088a0, TypesNeedLegalizing=false, Fast=false) at LegalizeDAG.cpp:8648</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#13 0x005ec313 in llvm::SelectionDAGISel::CodeGenAndEmitDAG (this=0x1608780) at SelectionDAGISel.cpp:626</span></font></div><div><font face="Courier" size="2"><span style="font-size: 10px;">#14 0x005ee7e2 in llvm::SelectionDAGISel::SelectBasicBlock (this=0x1608780, LLVMBB=0x1603fa0, Begin={<bidirectional_iterator<llvm::Instruction,int>> = {<std::iterator<std::bid\</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">irectional_iterator_tag,llvm::Instruction,int,llvm::Instruction*,llvm::Instruction&>> = {<No data fields>}, <No data fields>}, NodePtr = 0x1604dd0}, End={<bidirectional_iterat\</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">or<llvm::Instruction,int>> = {<std::iterator<std::bidirectional_iterator_tag,llvm::Instruction,int,llvm::Instruction*,llvm::Instruction&>> = {<No data fields>}, <No data field\</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">s>}, NodePtr = 0x16049e0}) at SelectionDAGISel.cpp:500</span></font></div><div><font face="Courier" size="2"><span style="font-size: 10px;">#15 0x005ef123 in llvm::SelectionDAGISel::SelectAllBasicBlocks (this=0x1608780, Fn=@0x1603720, MF=@0x160d520, MMI=0x160bbd0, DW=0x1608fe0, TII=@0x1803ce0) at SelectionDAGISel.\</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">cpp:856</span></font></div><div><font face="Courier" size="2"><span style="font-size: 10px;">#16 0x005efe54 in llvm::SelectionDAGISel::runOnFunction (this=0x1608780, Fn=@0x1603720) at SelectionDAGISel.cpp:327</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#17 0x002a3aea in (anonymous namespace)::PPCDAGToDAGISel::runOnFunction (this=0x1608780, Fn=@0x1603720) at PPCISelDAGToDAG.cpp:54</span></font></div><div> <font face="Courier" size="2"><span style="font-size: 10px;">#18 0x00874127 in llvm::FPPassManager::runOnFunction (this=0x1606610, F=@0x1603720) at PassManager.cpp:1323</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#19 0x0087464c in llvm::FunctionPassManagerImpl::run (this=0x1606410, F=@0x1603720) at PassManager.cpp:1281</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#20 0x008747da in llvm::FunctionPassManager::run (this=0xbffff520, F=@0x1603720) at PassManager.cpp:1226</span></font></div> <div><font face="Courier" size="2"><span style="font-size: 10px;">#21 0x0000352e in main (argc=6, argv=0xbffff5d0) at llc.cpp:317</span></font></div> <div><br></div><div></div></div></div><br><div><div><div></div> <div><br></div><div>Evan</div><div><br><div><div>On Feb 24, 2009, at 9:35 AM, Scott Michel wrote:</div><br><blockquote type="cite">Duncan:<br><br>I'm still stymied how this whole thread ended up about shuffle vector nodes, when the original problem was my build vector patch. I'm still working on backing the build vector patch out (it isn't clean with all of the intervening commits and I have pressing management tasks which command my attention.)<br> <br><br>-scooter<br><br><div class="gmail_quote">On Tue, Feb 24, 2009 at 12:28 AM, Duncan Sands <span dir="ltr"><<a href="mailto:baldrick@free.fr" target="_blank">baldrick@free.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div>> 3. Introduce a new ShuffleVectorSDNode that only has two SDValue<br> > operands (the two input vectors), but that also contains an array of<br> > ints in the node (not as operands).<br> </div>...<br> <div> > The important part of #3 is that we really want an array of ints<br> > (using -1 for undef) for the shuffle mask, not "operands".  This<br> > eliminates the nastiness we have now were we need a buildvector, and<br> > it eliminates the dance we have to prevent the build vector from being<br> > legalized, and prevent the integer operands to it from being legalized.<br> <br> </div>This is PR2957 (which originally suggested a variadic SDNode, but it<br> quickly became clear that an array of ints is better).  It would be<br> great to have a volunteer for this (I don't have time).<br> <br> Ciao,<br> <font color="#888888"><br> Duncan.<br> </font></blockquote></div><br> _______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></blockquote></div><br></div></div></div><br>_______________________________________________<br> LLVM Developers mailing list<br> <a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br> <br></blockquote></div><br> _______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></blockquote></div><br></div></div></div></div><br>_______________________________________________<br> LLVM Developers mailing list<br> <a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br> <br></blockquote></div><br> _______________________________________________<br>LLVM Developers mailing list<br>LLVMdev@cs.uiuc.edu         <a href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></blockquote></div><br></div></body></html>