[PATCH] [llgo] irgen: generate switch instructions
Philip Reames
listmail at philipreames.com
Thu Jan 8 10:36:28 PST 2015
On 01/08/2015 01:15 AM, Chandler Carruth wrote:
>
> On Wed, Jan 7, 2015 at 11:05 AM, Peter Collingbourne <peter at pcc.me.uk
> <mailto:peter at pcc.me.uk>> wrote:
>
> > I don't know if this will ever be necessary, but another option is for llgo to grow its own IR on
> top of go/ssa. I'd rather not go there for this, though.
>
>
> Agreed. FWIW, the long term direction I'd like to see is
> attempting to extend go/ssa with what we need (in this particular
> case, a native switch instruction).
>
> > I did look to see if there was an existing pass, but again I
> couldn't see anything that looked relevant
>
>
> If you grep for
> `SimplifyCFGOpt::FoldValueComparisonIntoPredecessors` you should
> find something.
>
> > Geo-mean improvement of 0.49% (0.23% - 0.75% @ 95% CI)
>
>
> Great! I'm a little surprised that we can do better than LLVM on
> its own, but maybe I don't understand what the simplifycfg code is
> doing.
>
>
> Just a peanut gallery comment, but I'm pretty disappointed that LLVM
> can't turn if-chains into switches for you. I think not dealing with
> switches sounds like a really reasonable simplification for a frontend
> to desire. The optimizer should fix this code, and should both be
> faster and more powerful in doing so.
I agree here.
>
> Any interest in trying to make LLVM's switch formation powerful enough
> to catch the cases you care about? Or at least reducing the test case
> we missed? If we can do that, it seems like it would remove the
> ugliness from the approach by letting you generate "naive" switches
> with high confidence that they optimize appropriately?
This is close enough to my own interests that if you can create a small
test case, I'll take a serious look at fixing it. I'm not going to go
too far, but if it ends up being a simple fix, I'd like to have this
work. Please file a bug with your IR fragment.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150108/e2219a81/attachment.html>
More information about the llvm-commits
mailing list