[PATCH] D89542: [InstCombine] narrowFunnelShift - fold trunc/zext or(shl(a,x),lshr(b,sub(bw,x))) -> fshl(a,b,x) (PR35155)

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 16 04:31:03 PDT 2020


RKSimon created this revision.
RKSimon added reviewers: spatel, lebedev.ri, nikic, kbelochapka.
Herald added a subscriber: hiraditya.
Herald added a project: LLVM.
RKSimon requested review of this revision.

As discussed on PR35155, this extends narrowFunnelShift (recently renamed from narrowRotate) to support basic funnel shift patterns.

Unlike matchFunnelShift we don't include the computeKnownBits limitation as extracting the pattern from the zext/trunc layers should be a indicator of reasonable funnel shift codegen, in D89139 <https://reviews.llvm.org/D89139> we demonstrated how to efficiently promote funnel shifts to wider types.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D89542

Files:
  llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
  llvm/test/Transforms/InstCombine/funnel.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D89542.298593.patch
Type: text/x-patch
Size: 6546 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201016/1f37cc68/attachment.bin>


More information about the llvm-commits mailing list