[all-commits] [llvm/llvm-project] bbf392: [InstCombine] matchFunnelShift - fold or(shl(a, x), ...

Simon Pilgrim via All-commits all-commits at lists.llvm.org
Mon Oct 12 08:08:49 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: bbf3925879b56aea42daeecc794bb41e99ebc126
      https://github.com/llvm/llvm-project/commit/bbf3925879b56aea42daeecc794bb41e99ebc126
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2020-10-12 (Mon, 12 Oct 2020)

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
    M llvm/test/Transforms/InstCombine/funnel.ll
    M llvm/test/Transforms/InstCombine/rotate.ll

  Log Message:
  -----------
  [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




More information about the All-commits mailing list