[all-commits] [llvm/llvm-project] 9cc218: [unroll] Use value domain for symbolic execution b...

Philip Reames via All-commits all-commits at lists.llvm.org
Wed May 26 08:41:54 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 9cc2181ec3885b5b505849448955659b3c6299d5
      https://github.com/llvm/llvm-project/commit/9cc2181ec3885b5b505849448955659b3c6299d5
  Author: Philip Reames <listmail at philipreames.com>
  Date:   2021-05-26 (Wed, 26 May 2021)

  Changed paths:
    M llvm/include/llvm/Analysis/LoopUnrollAnalyzer.h
    M llvm/lib/Analysis/LoopUnrollAnalyzer.cpp
    M llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
    M llvm/test/Transforms/LoopUnroll/unroll-cost-symbolic-execute.ll
    M llvm/unittests/Analysis/UnrollAnalyzerTest.cpp

  Log Message:
  -----------
  [unroll] Use value domain for symbolic execution based cost model

The current full unroll cost model does a symbolic evaluation of the loop up to a fixed limit. That symbolic evaluation currently simplifies to constants, but we can generalize to arbitrary Values using the InstructionSimplify infrastructure at very low cost.

By itself, this enables some simplifications, but it's mainly useful when combined with the branch simplification over in D102928.

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




More information about the All-commits mailing list