[llvm] r274465 - [InstCombine] enable vector select of bools -> logic folds

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 6 14:11:13 PDT 2016


Yes - that looks nicer:
http://reviews.llvm.org/rL274670

Thanks!

On Wed, Jul 6, 2016 at 12:09 PM, Eli Friedman <eli.friedman at gmail.com>
wrote:

> On Sun, Jul 3, 2016 at 7:34 AM, Sanjay Patel via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: spatel
>> Date: Sun Jul  3 09:34:39 2016
>> New Revision: 274465
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=274465&view=rev
>> Log:
>> [InstCombine] enable vector select of bools -> logic folds
>>
>> Modified:
>>     llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
>>     llvm/trunk/test/Transforms/InstCombine/select.ll
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp?rev=274465&r1=274464&r2=274465&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp Sun Jul
>> 3 09:34:39 2016
>> @@ -918,9 +918,11 @@ Instruction *InstCombiner::visitSelectIn
>>            SimplifySelectInst(CondVal, TrueVal, FalseVal, DL, TLI, DT,
>> AC))
>>      return replaceInstUsesWith(SI, V);
>>
>> -  if (SI.getType()->isIntegerTy(1)) {
>> -    if (ConstantInt *C = dyn_cast<ConstantInt>(TrueVal)) {
>> -      if (C->getZExtValue()) {
>> +  if (SI.getType()->getScalarType()->isIntegerTy(1) &&
>> +      TrueVal->getType() == CondVal->getType()) {
>> +    const APInt *TrueC;
>> +    if (match(TrueVal, m_APInt(TrueC))) {
>> +      if (TrueC->isAllOnesValue()) {
>>
>
> m_One()?
>
>
>>          // Change: A = select B, true, C --> A = or B, C
>>          return BinaryOperator::CreateOr(CondVal, FalseVal);
>>        }
>> @@ -928,8 +930,9 @@ Instruction *InstCombiner::visitSelectIn
>>        Value *NotCond = Builder->CreateNot(CondVal, "not." +
>> CondVal->getName());
>>        return BinaryOperator::CreateAnd(NotCond, FalseVal);
>>      }
>> -    if (ConstantInt *C = dyn_cast<ConstantInt>(FalseVal)) {
>> -      if (!C->getZExtValue()) {
>> +    const APInt *FalseC;
>> +    if (match(FalseVal, m_APInt(FalseC))) {
>>
>
> m_Zero()?
>
> -Eli
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160706/6e086172/attachment.html>


More information about the llvm-commits mailing list