[llvm] r288833 - [InstSimplify] add folds for or-of-icmps with same operands
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 6 13:42:19 PST 2016
Ah, I didn't think of the swapOperands() as a mutation, but of course
you're right. I don't see any precedent for that, so I suppose it's safer
to just create some temps with the swapped values.
On Tue, Dec 6, 2016 at 2:18 PM, Friedman, Eli <efriedma at codeaurora.org>
wrote:
> On 12/6/2016 10:09 AM, Sanjay Patel via llvm-commits wrote:
>
>> Author: spatel
>> Date: Tue Dec 6 12:09:37 2016
>> New Revision: 288833
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=288833&view=rev
>> Log:
>> [InstSimplify] add folds for or-of-icmps with same operands
>>
>> All of these (and a few more) are already handled by InstCombine,
>> but we shouldn't have to wait until then to simplify these because
>> they're cheap to deal with here in InstSimplify.
>>
>> Modified:
>> llvm/trunk/lib/Analysis/InstructionSimplify.cpp
>> llvm/trunk/test/Transforms/InstSimplify/or-icmps-same-ops.ll
>>
>> Modified: llvm/trunk/lib/Analysis/InstructionSimplify.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/
>> InstructionSimplify.cpp?rev=288833&r1=288832&r2=288833&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Analysis/InstructionSimplify.cpp (original)
>> +++ llvm/trunk/lib/Analysis/InstructionSimplify.cpp Tue Dec 6 12:09:37
>> 2016
>> @@ -1700,12 +1700,44 @@ Value *llvm::SimplifyAndInst(Value *Op0,
>> RecursionLimit);
>> }
>> -/// Simplify (or (icmp ...) (icmp ...)) to true when we can tell that
>> the union
>> -/// contains all possible values.
>> +/// Commuted variants are assumed to be handled by calling this function
>> again
>> +/// with the parameters swapped.
>> +static Value *simplifyOrOfICmpsWithSameOperands(ICmpInst *Op0, ICmpInst
>> *Op1) {
>> + ICmpInst::Predicate Pred0, Pred1;
>> + Value *A ,*B;
>> + match(Op0, m_ICmp(Pred0, m_Value(A), m_Value(B)));
>> + if (match(Op1, m_ICmp(Pred1, m_Specific(B), m_Specific(A))))
>> + Op1->swapOperands();
>>
>
> Is InstSimplify allowed to mutate instructions?
>
> -Eli
>
>
> --
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
> Foundation Collaborative Project
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161206/81870d3e/attachment.html>
More information about the llvm-commits
mailing list