[all-commits] [llvm/llvm-project] c079a2: [LV] Add tests for epilogue vectorization with wid...

Florian Hahn via All-commits all-commits at lists.llvm.org
Mon Sep 19 23:06:35 PDT 2022


  Branch: refs/heads/release/15.x
  Home:   https://github.com/llvm/llvm-project
  Commit: c079a29305bbec42bbbfe64d3c2b8d57ce6b6eb9
      https://github.com/llvm/llvm-project/commit/c079a29305bbec42bbbfe64d3c2b8d57ce6b6eb9
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2022-09-20 (Tue, 20 Sep 2022)

  Changed paths:
    A llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-widen-inductions.ll

  Log Message:
  -----------
  [LV] Add tests for epilogue vectorization with widened inductions.

Includes a test for the miscompile in #57712.


  Commit: 38b5fa73d58576df84852c6bbf6d8219de69428b
      https://github.com/llvm/llvm-project/commit/38b5fa73d58576df84852c6bbf6d8219de69428b
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2022-09-20 (Tue, 20 Sep 2022)

  Changed paths:
    A llvm/test/Transforms/LoopVectorize/AArch64/epilog-vectorization-widen-inductions.ll
    R llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-widen-inductions.ll

  Log Message:
  -----------
  [LV] Move new epilog-vectorization-widen-inductions.ll to AArch64 dir.

The test requires the AArch64 backend, so move it to the right subdir.


  Commit: b73d2c8c720a8c8e6e73b11be4e27afa6cb75bdf
      https://github.com/llvm/llvm-project/commit/b73d2c8c720a8c8e6e73b11be4e27afa6cb75bdf
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2022-09-20 (Tue, 20 Sep 2022)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/lib/Transforms/Vectorize/VPlan.cpp
    M llvm/lib/Transforms/Vectorize/VPlan.h
    M llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
    M llvm/test/Transforms/LoopVectorize/AArch64/epilog-vectorization-widen-inductions.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/sve-live-out-pointer-induction.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/sve-widen-gep.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/sve-widen-phi.ll
    M llvm/test/Transforms/LoopVectorize/X86/interleave-opaque-pointers.ll
    M llvm/test/Transforms/LoopVectorize/opaque-ptr.ll

  Log Message:
  -----------
  [LV] Keep track of cost-based ScalarAfterVec in VPWidenPointerInd.

Epilogue vectorization uses isScalarAfterVectorization to check if
widened versions for inductions need to be generated and bails out in
those cases.

At the moment, there are scenarios where isScalarAfterVectorization
returns true but VPWidenPointerInduction::onlyScalarsGenerated would
return false, causing widening.

This can lead to widened phis with incorrect start values being created
in the epilogue vector body.

This patch addresses the issue by storing the cost-model decision in
VPWidenPointerInductionRecipe and restoring the behavior before 151c144.
This effectively reverts 151c144, but the long-term fix is to properly
support widened inductions during epilogue vectorization

Fixes #57712.


Compare: https://github.com/llvm/llvm-project/compare/d64394b81d6e...b73d2c8c720a


More information about the All-commits mailing list