[all-commits] [llvm/llvm-project] 31ea97: [SLP] Add some tests that require memory runtime c...

Florian Hahn via All-commits all-commits at lists.llvm.org
Fri Jun 11 06:30:55 PDT 2021


  Branch: refs/heads/perf/tmp-slp-memcheck-noaliasmd
  Home:   https://github.com/llvm/llvm-project
  Commit: 31ea973802050b5bacf4d5261e000b6875108c49
      https://github.com/llvm/llvm-project/commit/31ea973802050b5bacf4d5261e000b6875108c49
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2021-06-11 (Fri, 11 Jun 2021)

  Changed paths:
    A llvm/test/Transforms/SLPVectorizer/AArch64/memory-runtime-checks.ll
    A llvm/test/Transforms/SLPVectorizer/X86/memory-runtime-checks.ll

  Log Message:
  -----------
  [SLP] Add some tests that require memory runtime checks.


  Commit: eb951149ea161a0b7cfba9f7645c4fdf3a7d9ecb
      https://github.com/llvm/llvm-project/commit/eb951149ea161a0b7cfba9f7645c4fdf3a7d9ecb
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2021-06-11 (Fri, 11 Jun 2021)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/Transforms/SLPVectorizer/AArch64/memory-runtime-checks.ll
    M llvm/test/Transforms/SLPVectorizer/X86/memory-runtime-checks.ll

  Log Message:
  -----------
  [SLPVectorizer] WIP Implement initial memory versioning (WIP!)

This patch is just an initial sketch to get a discussion going on how to
best support generating runtime checks for may-aliasing memory accesses.

The key question to start with is where to best collect and generate
runtime checks. Currently codegen for a block is eager; for each block,
if we find a vectorizable tree, we vectorize it and then analyze the
rest of the block. This makes it hard to collect *all* runtime checks
for a block before changing the code.

Perhaps for now we need to limit the checks to the first vectorizable
tree in a block? This is what the patch tries to do.

There are a couple of mechanical/technical issues that need to be
addressed, but I think the questions above are key to answer/address
first.

Other than that, the patch does not yet consider the cost of cloning
the block and the runtime checks. It also does not introduce phis
for values used outside the cloned block, so it will generate invalid IR
in those cases for now.

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


  Commit: 6a7fc3e02d1fcf08189cbf87091967845557c4fe
      https://github.com/llvm/llvm-project/commit/6a7fc3e02d1fcf08189cbf87091967845557c4fe
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2021-06-11 (Fri, 11 Jun 2021)

  Changed paths:
    M llvm/lib/Analysis/ScalarEvolution.cpp
    M llvm/test/Analysis/LoopAccessAnalysis/reverse-memcheck-bounds.ll
    M llvm/test/Transforms/IndVarSimplify/eliminate-exit-no-dl.ll

  Log Message:
  -----------
  Foo


  Commit: 95227e4faaa5640cc4c0601124f596ce027effce
      https://github.com/llvm/llvm-project/commit/95227e4faaa5640cc4c0601124f596ce027effce
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2021-06-11 (Fri, 11 Jun 2021)

  Changed paths:
    M llvm/lib/Analysis/ScalarEvolution.cpp
    M llvm/test/Transforms/SLPVectorizer/AArch64/memory-runtime-checks.ll
    M llvm/test/Transforms/SLPVectorizer/X86/memory-runtime-checks.ll

  Log Message:
  -----------
  Wrap


Compare: https://github.com/llvm/llvm-project/compare/31ea97380205%5E...95227e4faaa5


More information about the All-commits mailing list