[all-commits] [llvm/llvm-project] e49d04: [AArch64][CodeGen] Lower (de)interleave2 intrinsic...

huntergr-arm via All-commits all-commits at lists.llvm.org
Mon Jun 26 06:41:03 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e49d04e760f649ce1aeec68cc607ca2d5cf8e738
      https://github.com/llvm/llvm-project/commit/e49d04e760f649ce1aeec68cc607ca2d5cf8e738
  Author: Graham Hunter <graham.hunter at arm.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/lib/CodeGen/InterleavedAccessPass.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.h
    A llvm/test/Transforms/InterleavedAccess/AArch64/fixed-deinterleave-intrinsics.ll
    A llvm/test/Transforms/InterleavedAccess/AArch64/scalable-deinterleave-intrinsics.ll

  Log Message:
  -----------
  [AArch64][CodeGen] Lower (de)interleave2 intrinsics to ld2/st2

The InterleavedAccess pass currently matches (de)interleaving
shufflevector instructions with loads or stores, and calls into
target lowering to generate ldN or stN instructions.

Since we can't use shufflevector for scalable vectors (besides a
splat with zeroinitializer), we have interleave2 and deinterleave2
intrinsics. This patch extends InterleavedAccess to recognize those
intrinsics and if possible replace them with ld2/st2.

Reviewed By: paulwalker-arm

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




More information about the All-commits mailing list