[all-commits] [llvm/llvm-project] a7d326: [LV][REVEC][AArch64] Proof of concept for re-vecto...

Gaëtan Bossu via All-commits all-commits at lists.llvm.org
Wed Jul 8 06:05:14 PDT 2026


  Branch: refs/heads/users/gbossu/lv.revec.poc.2
  Home:   https://github.com/llvm/llvm-project
  Commit: a7d3267e8fa0b0b08e1882483dcb8962d9dd2961
      https://github.com/llvm/llvm-project/commit/a7d3267e8fa0b0b08e1882483dcb8962d9dd2961
  Author: Gaëtan Bossu <gaetan.bossu at arm.com>
  Date:   2026-07-08 (Wed, 08 Jul 2026)

  Changed paths:
    M llvm/include/llvm/IR/VectorTypeUtils.h
    M llvm/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h
    M llvm/lib/IR/IRBuilder.cpp
    M llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
    M llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/lib/Transforms/Vectorize/VPlan.cpp
    M llvm/lib/Transforms/Vectorize/VPlanHelpers.h
    M llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-disabled.ll
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-invalid.ll
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-livein.ll
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-memory-contiguous.ll
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-memory-gather-scatter.ll
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-memory-interleaved.ll
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-predication.ll
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-select.ll
    A llvm/test/Transforms/LoopVectorize/AArch64/revec-unroll.ll

  Log Message:
  -----------
  [LV][REVEC][AArch64] Proof of concept for re-vectorisation

This shows the changes required to enable basic re-vectorisation support in LoopVectorizer. Most of the diff comes from the added tests, the changes to LoopVectorizer files are rather minimal. This proof-of-concept has obvious limitations and only represents the first building block.

My hope is that this helps discussions and complements the RFC at https://discourse.llvm.org/t/rfc-re-vectorisation-to-wider-vectors-in-loopvectorizer/91071.

Support for re-vectorisation is hidden behind a -vectorize-vector-loops flag and LV will bail out if it encounters constructs that are not yet supported. For example:
 - shufflevectors
 - gather/scatter and interleaved accesses
 - target intrinsics
 - reductions
 - if-conversion or tail folding



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list