[PATCH] D42032: [LLVM][PASSES][InstCombine] Fix (a + a + ...) / a cases
Roman Lebedev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 14 23:28:39 PST 2018
lebedev.ri added a comment.
In https://reviews.llvm.org/D42032#975917, @AntonBikineev wrote:
> Hey Roman,
> Thanks for the comments.
>
> > 1. Please upload patches with full context (`-U999999`)
>
> Done.
>
> > 2. This needs testing coverage https://bugs.llvm.org/show_bug.cgi?id=35709#c1 notes that "(x+x+x)/x" is already handled, so maybe search for it and look how it is tested? And given that this is a generalization of that, perhaps that one is no longer needed?
> The "(x+x+x)/x" case is handled because "(x+x+x)" gets turned into "mul %x, 3" and then another simplification "(x * y) / x -> y" takes place. Things like "x+x" (with power-of-2 number of terms) in turn, get simplified into "shl %x, constant". So it's not a generalization, but a particular case.
Ah, makes sense. https://godbolt.org/g/qyDUQv
Now, not that i know what i'm talking about, but Alive does not like those testcases as-is:
https://rise4fun.com/Alive/bvYn
But if we look at the IR in godbolt, we can note that it's "shl nsw i32", and then it likes it:
https://rise4fun.com/Alive/23e
So i wonder if that "no signed wrap" needs to be matched too.
https://reviews.llvm.org/D42032
More information about the llvm-commits
mailing list