Hello folks, Over the last few years I provided a few links (below) to some optimizations derived by Souper. I know that at least a few of these optimizations got implemented in LLVM but I don't have any good data on this. If you implemented any of these, or know of some that got implemented, could you drop me a line? Also I'll be at the upcoming dev meeting in San Jose and would love to chat with folks about this stuff. Thanks, John http://lists.llvm.org/pipermail/llvm-dev/2014-November/078971.html http://lists.llvm.org/pipermail/llvm-dev/2015-July/088481.html
Hi John, IIRC, the following commits are a direct/indirect result of using Souper: r268735: [SimplifyCFG] Prefer a simplification based on a dominating condition. r268636: [ValueTracking] Improve isImpliedCondition for matching LHS and Imm RHSs. r268104: [InstCombine] Determine the result of a select based on a dominating condition. r267430: [ValueTracking] Improve isImpliedCondition when the dominating cond is false. r267177: [SimplifyCFG] Add final missing implications to isImpliedTrueByMatchingCmp. r267171: [SimplifyCFG] Add missing implications to isImpliedTrueByMatchingCmp. r266767: [ValueTracking] Improve isImpliedCondition for conditions with matching operands. Chad On 2016-11-02 02:01, John Regehr via llvm-dev wrote:> Hello folks, > > Over the last few years I provided a few links (below) to some > optimizations derived by Souper. > > I know that at least a few of these optimizations got implemented in > LLVM but I don't have any good data on this. If you implemented any of > these, or know of some that got implemented, could you drop me a line? > > Also I'll be at the upcoming dev meeting in San Jose and would love to > chat with folks about this stuff. > > Thanks, > > John > > http://lists.llvm.org/pipermail/llvm-dev/2014-November/078971.html > http://lists.llvm.org/pipermail/llvm-dev/2015-July/088481.html > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
%0:i32 = var
%1:i32 = and 1:i32, %0
%2:i1 = ne 0:i32, %1
infer %2
%3:i1 = trunc %0
result %3
We canonicalize from a trunc to the and/icmp sequence. I'm not sure why.
Does anyone know the history?
// Canonicalize trunc x to i1 -> (icmp ne (and x, 1), 0), likewise for
vector.
if (DestTy->getScalarSizeInBits() == 1) {
Constant *One = ConstantInt::get(SrcTy, 1);
Src = Builder->CreateAnd(Src, One);
Value *Zero = Constant::getNullValue(Src->getType());
return new ICmpInst(ICmpInst::ICMP_NE, Src, Zero);
}
On Wed, Nov 2, 2016 at 12:01 AM, John Regehr via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Hello folks,
>
> Over the last few years I provided a few links (below) to some
> optimizations derived by Souper.
>
> I know that at least a few of these optimizations got implemented in LLVM
> but I don't have any good data on this. If you implemented any of
these, or
> know of some that got implemented, could you drop me a line?
>
> Also I'll be at the upcoming dev meeting in San Jose and would love to
> chat with folks about this stuff.
>
> Thanks,
>
> John
>
> http://lists.llvm.org/pipermail/llvm-dev/2014-November/078971.html
> http://lists.llvm.org/pipermail/llvm-dev/2015-July/088481.html
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20161110/b67e75ad/attachment.html>