[all-commits] [llvm/llvm-project] c416f6: [IVDescriptors] Add pointer InductionDescriptors w...

Philip Reames via All-commits all-commits at lists.llvm.org
Wed Apr 5 09:32:53 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c416f6700f513d86226482f47ad956ceb4e7c927
      https://github.com/llvm/llvm-project/commit/c416f6700f513d86226482f47ad956ceb4e7c927
  Author: Philip Reames <preames at rivosinc.com>
  Date:   2023-04-05 (Wed, 05 Apr 2023)

  Changed paths:
    M llvm/lib/Analysis/IVDescriptors.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/test/Transforms/LoopVectorize/RISCV/strided-accesses.ll
    M llvm/test/Transforms/LoopVectorize/pointer-induction-unroll.ll
    M llvm/test/Transforms/LoopVectorize/pointer-induction.ll

  Log Message:
  -----------
  [IVDescriptors] Add pointer InductionDescriptors with non-constant strides (try 2)

(JFYI - This has been heavily reframed since original attempt at landing.)

This change updates the InductionDescriptor logic to allow matching a pointer IV with a non-constant stride, but also updates the LoopVectorizer to bailout on such descriptors by default. This preserves the default vectorizer behavior.

In review, it was pointed out that there's multiple unfortunate performance implications which need to be addressed before this can be enabled. Having a flag allows us to exercise the behavior, and write test cases for logic which is otherwise unreachable (or hard to reach).

This will also enable non-constant stride pointer recurrences for other consumers. I've audited said code, and don't see any obvious issues.

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




More information about the All-commits mailing list