mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-24 19:28:53 +03:00
ABD raidz NEON support
Port NEON implementation of RAID-Z functions to ABD. Signed-off-by: Roomain Dolbeau <romain.dolbeau@atos.net>
This commit is contained in:
committed by
Brian Behlendorf
parent
65d71d4212
commit
88cc2352ea
@@ -25,10 +25,36 @@
|
||||
#include <sys/isa_defs.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#if 0 // defined(__aarch64__)
|
||||
#if defined(__aarch64__)
|
||||
|
||||
#include "vdev_raidz_math_aarch64_neon_common.h"
|
||||
|
||||
#define SYN_STRIDE 4
|
||||
|
||||
#define ZERO_STRIDE 4
|
||||
#define ZERO_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define ZERO_D 0, 1, 2, 3
|
||||
|
||||
#define COPY_STRIDE 4
|
||||
#define COPY_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define COPY_D 0, 1, 2, 3
|
||||
|
||||
#define ADD_STRIDE 4
|
||||
#define ADD_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define ADD_D 0, 1, 2, 3
|
||||
|
||||
#define MUL_STRIDE 4
|
||||
#define MUL_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define MUL_D 0, 1, 2, 3
|
||||
|
||||
#define GEN_P_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
@@ -39,15 +65,12 @@
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_8_9() \
|
||||
GEN_X_DEFINE_10_11() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define GEN_PQ_STRIDE 4
|
||||
#define GEN_PQ_D 0, 1, 2, 3
|
||||
#define GEN_PQ_P 4, 5, 6, 7
|
||||
#define GEN_PQ_Q 8, 9, 10, 11
|
||||
#define GEN_PQ_C 4, 5, 6, 7
|
||||
|
||||
#define GEN_PQR_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
@@ -55,69 +78,115 @@
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_31() \
|
||||
GEN_X_DEFINE_32() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define GEN_PQR_STRIDE 2
|
||||
#define GEN_PQR_D 0, 1
|
||||
#define GEN_PQR_P 2, 3
|
||||
#define GEN_PQR_Q 4, 5
|
||||
#define GEN_PQR_R 6, 7
|
||||
#define GEN_PQR_STRIDE 4
|
||||
#define GEN_PQR_D 0, 1, 2, 3
|
||||
#define GEN_PQR_C 4, 5, 6, 7
|
||||
|
||||
#define REC_P_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define REC_P_STRIDE 4
|
||||
#define REC_P_X 0, 1, 2, 3
|
||||
|
||||
#define REC_Q_DEFINE() \
|
||||
#define SYN_Q_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define REC_Q_STRIDE 4
|
||||
#define REC_Q_X 0, 1, 2, 3
|
||||
#define SYN_Q_STRIDE 4
|
||||
#define SYN_Q_D 0, 1, 2, 3
|
||||
#define SYN_Q_X 4, 5, 6, 7
|
||||
|
||||
#define REC_R_DEFINE() \
|
||||
#define SYN_R_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define REC_R_STRIDE 4
|
||||
#define REC_R_X 0, 1, 2, 3
|
||||
#define SYN_R_STRIDE 4
|
||||
#define SYN_R_D 0, 1, 2, 3
|
||||
#define SYN_R_X 4, 5, 6, 7
|
||||
|
||||
#define SYN_PQ_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define SYN_PQ_STRIDE 4
|
||||
#define SYN_PQ_D 0, 1, 2, 3
|
||||
#define SYN_PQ_X 4, 5, 6, 7
|
||||
|
||||
#define REC_PQ_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_31() \
|
||||
GEN_X_DEFINE_32() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define REC_PQ_STRIDE 2
|
||||
#define REC_PQ_X 0, 1
|
||||
#define REC_PQ_Y 2, 3
|
||||
#define REC_PQ_D 4, 5
|
||||
#define REC_PQ_T 4, 5
|
||||
|
||||
#define REC_PR_DEFINE() REC_PQ_DEFINE()
|
||||
#define SYN_PR_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define SYN_PR_STRIDE 4
|
||||
#define SYN_PR_D 0, 1, 2, 3
|
||||
#define SYN_PR_X 4, 5, 6, 7
|
||||
|
||||
#define REC_PR_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_31() \
|
||||
GEN_X_DEFINE_32() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define REC_PR_STRIDE 2
|
||||
#define REC_PR_X 0, 1
|
||||
#define REC_PR_Y 2, 3
|
||||
#define REC_PR_D 4, 5
|
||||
#define REC_PR_T 4, 5
|
||||
|
||||
#define REC_QR_DEFINE() REC_PQ_DEFINE()
|
||||
#define SYN_QR_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define SYN_QR_STRIDE 4
|
||||
#define SYN_QR_D 0, 1, 2, 3
|
||||
#define SYN_QR_X 4, 5, 6, 7
|
||||
|
||||
#define REC_QR_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_31() \
|
||||
GEN_X_DEFINE_32() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define REC_QR_STRIDE 2
|
||||
#define REC_QR_X 0, 1
|
||||
#define REC_QR_Y 2, 3
|
||||
#define REC_QR_D 4, 5
|
||||
#define REC_QR_T 4, 5
|
||||
|
||||
#define SYN_PQR_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
#define SYN_PQR_STRIDE 4
|
||||
#define SYN_PQR_D 0, 1, 2, 3
|
||||
#define SYN_PQR_X 4, 5, 6, 7
|
||||
|
||||
#define REC_PQR_DEFINE() \
|
||||
GEN_X_DEFINE_0_3() \
|
||||
GEN_X_DEFINE_4_5() \
|
||||
GEN_X_DEFINE_6_7() \
|
||||
GEN_X_DEFINE_8_9() \
|
||||
GEN_X_DEFINE_16() \
|
||||
GEN_X_DEFINE_17() \
|
||||
GEN_X_DEFINE_31() \
|
||||
GEN_X_DEFINE_32() \
|
||||
GEN_X_DEFINE_33_36()
|
||||
@@ -125,7 +194,6 @@
|
||||
#define REC_PQR_X 0, 1
|
||||
#define REC_PQR_Y 2, 3
|
||||
#define REC_PQR_Z 4, 5
|
||||
#define REC_PQR_D 6, 7
|
||||
#define REC_PQR_XS 6, 7
|
||||
#define REC_PQR_YS 8, 9
|
||||
|
||||
@@ -154,7 +222,7 @@ const raidz_impl_ops_t vdev_raidz_aarch64_neon_impl = {
|
||||
#endif /* defined(__aarch64__) */
|
||||
|
||||
|
||||
#if 0 // defined(__aarch64__)
|
||||
#if defined(__aarch64__)
|
||||
|
||||
const uint8_t
|
||||
__attribute__((aligned(256))) gf_clmul_mod_lt[4*256][16] = {
|
||||
|
||||
Reference in New Issue
Block a user