<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Nov 7, 2008, at 3:33 PMPST, Daniel Dunbar wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">This appears to be causing failures on linux? See<div><a href="http://google1.osuosl.org:8011/builders/llvm-x86_64-linux/builds/186">http://google1.osuosl.org:8011/builders/llvm-x86_64-linux/builds/186</a></div><div>and</div> <div><a href="http://google1.osuosl.org:8011/builders/llvm-i686-linux/builds/85">http://google1.osuosl.org:8011/builders/llvm-i686-linux/builds/85</a></div></blockquote><div><br></div><div>I'll look, thanks.</div><br><blockquote type="cite"><div> - Daniel<br><br><div class="gmail_quote">On Fri, Nov 7, 2008 at 2:54 PM, Dale Johannesen <span dir="ltr"><<a href="mailto:dalej@apple.com">dalej@apple.com</a>></span> wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Author: johannes<br> Date: Fri Nov 7 16:54:33 2008<br> New Revision: 58871<br> <br> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=58871&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=58871&view=rev</a><br> Log:<br> Make FP tests requiring two compares work on PPC (PR 642).<br> This is Chris' patch from the PR, modified to realize that<br> SETUGT/SETULT occur legitimately with integers, plus<br> two fixes in LegalizeDAG to pass a valid result type into<br> LegalizeSetCC. The argument of TLI.getSetCCResultType is<br> ignored on PPC, but I think I'm following usage elsewhere.<br> <br> <br> Modified:<br> llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp<br> llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp<br> llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp<br> <br> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp<br> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=58871&r1=58870&r2=58871&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=58871&r1=58870&r2=58871&view=diff</a><br> <br> ==============================================================================<br> --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)<br> +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Fri Nov 7 16:54:33 2008<br> @@ -2008,7 +2008,7 @@<br> Tmp3 = Node->getOperand(3); // RHS<br> Tmp4 = Node->getOperand(1); // CC<br> <br> - LegalizeSetCC(Node->getValueType(0), Tmp2, Tmp3, Tmp4);<br> + LegalizeSetCC(TLI.getSetCCResultType(Tmp2), Tmp2, Tmp3, Tmp4);<br> LastCALLSEQ_END = DAG.getEntryNode();<br> <br> // If we didn't get both a LHS and RHS back from LegalizeSetCC,<br> @@ -2910,7 +2910,7 @@<br> Tmp4 = LegalizeOp(Node->getOperand(3)); // False<br> SDValue CC = Node->getOperand(4);<br> <br> - LegalizeSetCC(Node->getValueType(0), Tmp1, Tmp2, CC);<br> + LegalizeSetCC(TLI.getSetCCResultType(Tmp1), Tmp1, Tmp2, CC);<br> <br> // If we didn't get both a LHS and RHS back from LegalizeSetCC,<br> // the LHS is a legal SETCC itself. In this case, we need to compare<br> <br> Modified: llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp<br> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp?rev=58871&r1=58870&r2=58871&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp?rev=58871&r1=58870&r2=58871&view=diff</a><br> <br> ==============================================================================<br> --- llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp (original)<br> +++ llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp Fri Nov 7 16:54:33 2008<br> @@ -587,28 +587,29 @@<br> <br> static PPC::Predicate getPredicateForSetCC(ISD::CondCode CC) {<br> switch (CC) {<br> - default: assert(0 && "Unknown condition!"); abort();<br> - case ISD::SETOEQ: // FIXME: This is incorrect see PR642.<br> case ISD::SETUEQ:<br> + case ISD::SETONE:<br> + case ISD::SETOLE:<br> + case ISD::SETOGE:<br> + assert(0 && "Should be lowered by legalize!");<br> + default: assert(0 && "Unknown condition!"); abort();<br> + case ISD::SETOEQ:<br> case ISD::SETEQ: return PPC::PRED_EQ;<br> - case ISD::SETONE: // FIXME: This is incorrect see PR642.<br> case ISD::SETUNE:<br> case ISD::SETNE: return PPC::PRED_NE;<br> - case ISD::SETOLT: // FIXME: This is incorrect see PR642.<br> - case ISD::SETULT:<br> + case ISD::SETOLT:<br> case ISD::SETLT: return PPC::PRED_LT;<br> - case ISD::SETOLE: // FIXME: This is incorrect see PR642.<br> case ISD::SETULE:<br> case ISD::SETLE: return PPC::PRED_LE;<br> - case ISD::SETOGT: // FIXME: This is incorrect see PR642.<br> - case ISD::SETUGT:<br> + case ISD::SETOGT:<br> case ISD::SETGT: return PPC::PRED_GT;<br> - case ISD::SETOGE: // FIXME: This is incorrect see PR642.<br> case ISD::SETUGE:<br> case ISD::SETGE: return PPC::PRED_GE;<br> -<br> case ISD::SETO: return PPC::PRED_NU;<br> case ISD::SETUO: return PPC::PRED_UN;<br> + // These two are invalid for floating point. Assume we have int.<br> + case ISD::SETULT: return PPC::PRED_LT;<br> + case ISD::SETUGT: return PPC::PRED_GT;<br> }<br> }<br> <br> @@ -637,12 +638,14 @@<br> case ISD::SETUNE:<br> case ISD::SETNE: Invert = true; return 2; // !Bit #2 = SETUNE<br> case ISD::SETO: Invert = true; return 3; // !Bit #3 = SETO<br> - case ISD::SETULT: Other = 0; return 3; // SETOLT | SETUO<br> - case ISD::SETUGT: Other = 1; return 3; // SETOGT | SETUO<br> - case ISD::SETUEQ: Other = 2; return 3; // SETOEQ | SETUO<br> - case ISD::SETOGE: Other = 1; return 2; // SETOGT | SETOEQ<br> - case ISD::SETOLE: Other = 0; return 2; // SETOLT | SETOEQ<br> - case ISD::SETONE: Other = 0; return 1; // SETOLT | SETOGT<br> + case ISD::SETUEQ:<br> + case ISD::SETOGE:<br> + case ISD::SETOLE:<br> + case ISD::SETONE:<br> + assert(0 && "Invalid branch code: should be expanded by legalize");<br> + // These are invalid for floating point. Assume integer.<br> + case ISD::SETULT: return 0;<br> + case ISD::SETUGT: return 1;<br> }<br> return 0;<br> }<br> <br> Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp<br> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=58871&r1=58870&r2=58871&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=58871&r1=58870&r2=58871&view=diff</a><br> <br> ==============================================================================<br> --- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original)<br> +++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Fri Nov 7 16:54:33 2008<br> @@ -209,6 +209,20 @@<br> // We want to custom lower some of our intrinsics.<br> setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::Other, Custom);<br> <br> + // Comparisons that require checking two conditions.<br> + setCondCodeAction(ISD::SETULT, MVT::f32, Expand);<br> + setCondCodeAction(ISD::SETULT, MVT::f64, Expand);<br> + setCondCodeAction(ISD::SETUGT, MVT::f32, Expand);<br> + setCondCodeAction(ISD::SETUGT, MVT::f64, Expand);<br> + setCondCodeAction(ISD::SETUEQ, MVT::f32, Expand);<br> + setCondCodeAction(ISD::SETUEQ, MVT::f64, Expand);<br> + setCondCodeAction(ISD::SETOGE, MVT::f32, Expand);<br> + setCondCodeAction(ISD::SETOGE, MVT::f64, Expand);<br> + setCondCodeAction(ISD::SETOLE, MVT::f32, Expand);<br> + setCondCodeAction(ISD::SETOLE, MVT::f64, Expand);<br> + setCondCodeAction(ISD::SETONE, MVT::f32, Expand);<br> + setCondCodeAction(ISD::SETONE, MVT::f64, Expand);<br> +<br> if (TM.getSubtarget<PPCSubtarget>().has64BitSupport()) {<br> // They also have instructions for converting between i64 and fp.<br> setOperationAction(ISD::FP_TO_SINT, MVT::i64, Custom);<br> <br> <br> _______________________________________________<br> llvm-commits mailing list<br> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br> </blockquote></div><br></div> _______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits<br></blockquote></div><br></body></html>