[llvm-dev] Branch is not optimized because of right shift
Stefanos Baziotis via llvm-dev
llvm-dev at lists.llvm.org
Sun Apr 5 15:27:00 PDT 2020
Thanks, I didn't know that! Indeed, it's instruction combine that does the
Στις Δευ, 6 Απρ 2020 στις 12:38 π.μ., ο/η Florian Hahn <
florian_hahn at apple.com> έγραψε:
> > On Apr 5, 2020, at 22:20, Stefanos Baziotis <stefanos.baziotis at gmail.com>
> > > Any idea about how the compiler could remove the lshr and use a add
> > Actually, I just figured that doing this test is like solving this:
> > 8 <= x/2 <= 13
> > 16 <= x <= 26
> > 0 <= x - 16 <= 10 => 0 <= x < 11
> > The left part is know since it's unsigned
> > The right part could be done x <= 11 => x < 12 because it's actually an
> integer division.
> > Wow... I would be really happy to know what pass does that.
> I’d guess a combination of instcombine rules together with some other
> transforms. You could probably use `-print-after-all` (`clang -mllvm
> -print-after-all` if you are using clang) to track down the relevant
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev