[all-commits] [llvm/llvm-project] f33588: [AArch64][SVE2.1] Add intrinsics for quadword load...
Momchil Velikov via All-commits
all-commits at lists.llvm.org
Tue Nov 21 07:35:13 PST 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: f33588380886e1bda124b213a90b7c8163ca3d3b
https://github.com/llvm/llvm-project/commit/f33588380886e1bda124b213a90b7c8163ca3d3b
Author: Momchil Velikov <momchil.velikov at arm.com>
Date: 2023-11-21 (Tue, 21 Nov 2023)
Changed paths:
M clang/include/clang/Basic/arm_sve.td
M clang/lib/CodeGen/CGBuiltin.cpp
A clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ld1_single.c
A clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_loads.c
A clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_st1_single.c
A clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_store.c
M llvm/include/llvm/IR/IntrinsicsAArch64.td
M llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
M llvm/lib/Target/AArch64/AArch64ISelLowering.h
M llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
M llvm/lib/Target/AArch64/SVEInstrFormats.td
A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-gather-loads-128bit-unscaled-offset.ll
A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-ld1-single.ll
A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-multivec-loads.ll
A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-multivec-stores.ll
A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-scatter-stores-128bit-unscaled-offset.ll
A llvm/test/CodeGen/AArch64/sve2p1-intrinsics-st1-single.ll
Log Message:
-----------
[AArch64][SVE2.1] Add intrinsics for quadword loads/stores with unscaled offset (#70474)
This patch adds a set of SVE2.1 quadword load/store intrisics:
* Contiguous zero-extending load to quadword (single vector)
sv<type>_t svld1uwq[_<typ>](svbool_t, const <type>_t *ptr);
sv<type>_t svld1uwq_vnum[_<typ>](svbool_t, const <type> *ptr, int64_t vnum);
sv<type>_t svld1udq[_<typ>](svbool_t, const <type>_t *ptr);
sv<type>_t svld1udq_vnum[_<typ>](svbool_t, const <type>_t *ptr, int64_t vnum);
* Contiguous truncating store of single vector operand
void svst1uwq[_<typ>](svbool_t, const <type>_t *ptr, sv<type>_t data);
void svst1uwq_vnum[_<typ>](svbool_t, const <type>_t *ptr, int64_t vnum, sv<type>_t data);
void svst1udq[_<typ>](svbool_t, const <type>_t *ptr, sv<type>_t data);
void svst1udq_vnum[_<typ>](svbool_t, const <type>_t *ptr, int64_t vnum, sv<type>_t data);
* Gather load quadword
sv<type>_t svld1q_gather[_u64base]_<typ>(svbool_t pg, svuint64_t zn);
sv<type>_t svld1q_gather[_u64base]_offset_<typ>(svbool_t pg, svuint64_t zn, int64_t offset);
* Scatter store quadword
void svst1q_scatter[_u64base][_<typ>](svbool_t pg, svuint64_t zn, sv<type>_t data);
void svst1q_scatter[_u64base]_offset[_<typ>](svbool_t pg, svuint64_t zn, int64_t offset, sv<type>_t data);
* Contiguous load two, three or four quadword structures.
sv<type>x2_t svld2q[_<typ>](svbool_t pg, const <type>_t *rn);
sv<type>x2_t svld2q_vnum[_<typ>](svbool_t pg, const <type>_t *rn, uint64_t vnum);
sv<type>x3_t svld3q[_<typ>](svbool_t pg, const <type>_t *rn);
sv<type>x3_t svld3q_vnum[_<typ>](svbool_t pg, const <type>_t *rn, uint64_t vnum);
sv<type>x4_t svld4q[_<typ>](svbool_t pg, const <type>_t *rn);
sv<type>x4_t svld4q_vnum[_<typ>](svbool_t pg, const <type>_t *rn, uint64_t vnum);
* Contiguous store two, three or four quadword structures.
void svst2q[_<typ>](svbool_t pg, <type>_t *rn, sv<type>x2_t zt);
void svst2q_vnum[_<typ>](svbool_t pg, <type>_t *rn, int64_t vnum, sv<type>x2_t zt);
void svst3q[_<typ>](svbool_t pg, <type>_t *rn, sv<type>x3_t zt);
void svst3q_vnum[_<typ>](svbool_t pg, <type>_t *rn, int64_t vnum, sv<type>x3_t zt);
void svst4q[_<typ>](svbool_t pg, <type>_t *rn, sv<type>x4_t zt);
void svst4q_vnum[_<typ>](svbool_t pg, <type>_t *rn, int64_t vnum, sv<type>x4_t zt);
ACLE spec: https://github.com/ARM-software/acle/pull/257
Co-authored-by: Caroline Concatto <caroline.concatto at arm.com>
Co-authored-by: Hassnaa Hamdi <hassnaa.hamdi at arm.com>
More information about the All-commits
mailing list