return;
}
+#if defined(__aarch64__) && defined(__ARM_NEON)
void
// -----------------------------------------------------------------------------
region_neon_xor(char **src,
unsigned size)
// -----------------------------------------------------------------------------
{
-#if defined(__aarch64__) && defined(__ARM_NEON)
ceph_assert(!(size % EC_ISA_VECTOR_NEON_WORDSIZE));
unsigned char *p = (unsigned char *)parity;
unsigned char *vbuf[256] = { NULL };
vst1q_u64((uint64_t *)(p + 16), d0_2);
p += EC_ISA_VECTOR_NEON_WORDSIZE;
}
-#endif // __aarch64__ && __ARM_NEON
return;
}
+#endif // __aarch64__ && __ARM_NEON
int src_size /* size of the source pointer array */,
unsigned size /* size of the region to xor */);
+#if defined(__aarch64__) && defined(__ARM_NEON)
// -------------------------------------------------------------------------
// compute region XOR like parity = src[0] ^ src[1] ... ^ src[src_size-1]
// using NEON 32-byte operations
char* parity /* 32-byte aligned output pointer containing the parity */,
int src_size /* size of the source pointer array */,
unsigned size /* size of the region to xor */);
-
+#endif // __aarch64__ && __ARM_NEON
#endif // EC_ISA_XOR_OP_H