[all-commits] [llvm/llvm-project] d33910: [AArch64][SME2/SVE2p1] Add predicate-as-counter in...

sdesmalen-arm via All-commits all-commits at lists.llvm.org
Mon May 22 06:51:46 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: d33910a8cc838587886a7302e7f8e6761bb5a89c
      https://github.com/llvm/llvm-project/commit/d33910a8cc838587886a7302e7f8e6761bb5a89c
  Author: Sander de Smalen <sander.desmalen at arm.com>
  Date:   2023-05-22 (Mon, 22 May 2023)

  Changed paths:
    M llvm/include/llvm/IR/IntrinsicsAArch64.td
    M llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
    M llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
    A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-selx2.ll
    A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-selx4.ll

  Log Message:
  -----------
  [AArch64][SME2/SVE2p1] Add predicate-as-counter intrinsics for sel

These intrinsics are used to implement the sel intrinsics that selects
a tuple of 2 or 4 values based on a predicate-as-counter operand, e.g.

  __attribute__((arm_streaming))
  svuint8x2_t svsel[_u8_x2](svcount_t png, svuint8x2_t zn, svuint8x2_t zm);

  __attribute__((arm_streaming))
  svuint8x4_t svsel[_u8_x4](svcount_t png, svuint8x4_t zn, svuint8x4_t zm);

As described in https://github.com/ARM-software/acle/pull/217

Reviewed By: CarolineConcatto

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


  Commit: 387c49f693c82bdf8b9b0f1ef48a92f51bb781b4
      https://github.com/llvm/llvm-project/commit/387c49f693c82bdf8b9b0f1ef48a92f51bb781b4
  Author: Sander de Smalen <sander.desmalen at arm.com>
  Date:   2023-05-22 (Mon, 22 May 2023)

  Changed paths:
    M llvm/include/llvm/IR/IntrinsicsAArch64.td
    M llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
    M llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
    A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-loads.ll
    A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-stores.ll

  Log Message:
  -----------
  [AArch64][SME2/SVE2p1] Add predicate-as-counter intrinsics for ld1/ldnt1/st1/stnt1

These intrinsics are used to implement multi-vector load/store intrinsics that loads
or stores a tuple of 2 or 4 values, based on a predicate-as-counter operand, e.g.

  __attribute__((arm_streaming))
  svuint8x2_t svld1[_u8]_x2(svcount_t png, const uint8_t *rn);

  __attribute__((arm_streaming))
  void svst1[_u8_x2](svcount_t png, uint8_t *rn, svuint8x2_t zt);

As described in https://github.com/ARM-software/acle/pull/217

Reviewed By: CarolineConcatto

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


Compare: https://github.com/llvm/llvm-project/compare/50f0ee8fbfc1...387c49f693c8


More information about the All-commits mailing list