aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LoopUtils.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2020-10-12 16:06:41 +0100
committerSimon Pilgrim <llvm-dev@redking.me.uk>2020-10-12 16:06:41 +0100
commitbbf3925879b56aea42daeecc794bb41e99ebc126 (patch)
treee7ed76647b457bcd2f1d7d4efaa160aa6ac66646 /llvm/lib/Transforms/Utils/LoopUtils.cpp
parentfa566233706ce8345f2c0152b51312a217b848c9 (diff)
downloadllvm-bbf3925879b56aea42daeecc794bb41e99ebc126.zip
llvm-bbf3925879b56aea42daeecc794bb41e99ebc126.tar.gz
llvm-bbf3925879b56aea42daeecc794bb41e99ebc126.tar.bz2
[InstCombine] matchFunnelShift - fold or(shl(a,x),lshr(b,sub(bw,x))) -> fshl(a,b,x) iff x < bw (REAPPLIED)
If value tracking can confirm that a shift value is less than the type bitwidth then we can more confidently fold general or(shl(a,x),lshr(b,sub(bw,x))) patterns to a funnel/rotate intrinsic pattern without causing bad codegen regressions in the backend (see D89139). Reapplied after the shift canonicalization in rG02295e6d1a15 which removed the need to flip the shift values. Differential Revision: https://reviews.llvm.org/D88783
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
0 files changed, 0 insertions, 0 deletions