[all-commits] [llvm/llvm-project] d47503: [SCEV] Apply loop guards to divisibility tests

Gil Rapaport via All-commits all-commits at lists.llvm.org
Mon Feb 1 22:10:49 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: d475030dc28a85e649cdd3dd4e5941ec82227c26
      https://github.com/llvm/llvm-project/commit/d475030dc28a85e649cdd3dd4e5941ec82227c26
  Author: Gil Rapaport <gil.rapaport at intel.com>
  Date:   2021-02-02 (Tue, 02 Feb 2021)

  Changed paths:
    M llvm/include/llvm/Analysis/ScalarEvolution.h
    M llvm/lib/Analysis/ScalarEvolution.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/test/Analysis/ScalarEvolution/trip-multiple-guard-info.ll
    A llvm/test/Transforms/LoopUnroll/runtime-unroll-assume-no-remainder.ll
    M llvm/test/Transforms/LoopVectorize/dont-fold-tail-for-divisible-TC.ll

  Log Message:
  -----------
  [SCEV] Apply loop guards to divisibility tests

Extend applyLoopGuards() to take into account conditions/assumes proving some
value %v to be divisible by D by rewriting %v to (%v / D) * D. This lets the
loop unroller and the loop vectorizer identify more loops as not requiring
remainder loops.

Differential Revision: https://reviews.llvm.org/D95521




More information about the All-commits mailing list