[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