[PATCH] DAGCombiner: Respect the result of TLI.getBooleanContents() when expanding SETCC
Duncan Sands
baldrick at free.fr
Fri Mar 1 00:19:29 PST 2013
On 28/02/13 21:48, Tom Stellard wrote:
> On Thu, Feb 28, 2013 at 05:29:10PM +0100, Duncan Sands wrote:
>> Hi Tom, this is OK with a testcase.
>>
>
> Hi Duncan,
>
> Here is an updated patch with a test case for R600.
LGTM.
Ciao, Duncan.
>
> -Tom
>
>> Ciao, Duncan.
>>
>> On 28/02/13 00:16, Tom Stellard wrote:
>>> From: Tom Stellard <thomas.stellard at amd.com>
>>>
>>> ---
>>> lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 14 +++++++++++++-
>>> 1 files changed, 13 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
>>> index f085e44..743a9da 100644
>>> --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
>>> +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
>>> @@ -3632,8 +3632,20 @@ void SelectionDAGLegalize::ExpandNode(SDNode *Node) {
>>> // Otherwise, SETCC for the given comparison type must be completely
>>> // illegal; expand it into a SELECT_CC.
>>> EVT VT = Node->getValueType(0);
>>> + int TrueValue;
>>> + switch(TLI.getBooleanContents(VT.isVector())) {
>>> + default: assert(!"Unhandled BooleanContent value");
>>> + case TargetLowering::ZeroOrOneBooleanContent:
>>> + case TargetLowering::UndefinedBooleanContent:
>>> + TrueValue = 1;
>>> + break;
>>> + case TargetLowering::ZeroOrNegativeOneBooleanContent:
>>> + TrueValue = -1;
>>> + break;
>>> + }
>>> Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, VT, Tmp1, Tmp2,
>>> - DAG.getConstant(1, VT), DAG.getConstant(0, VT), Tmp3);
>>> + DAG.getConstant(TrueValue, VT), DAG.getConstant(0, VT),
>>> + Tmp3);
>>> Results.push_back(Tmp1);
>>> break;
>>> }
>>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list