From 1b6ddcc7133ef9808914e6968640667ecb46ca8e Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Tue, 23 Apr 2019 15:21:57 -0700 Subject: [PATCH] nvme: Use AVX 512 instruction to copy SQE Change-Id: I54521ad7af0ac51cbf5e54b019ab3e8f03ee90b8 Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/451782 Tested-by: SPDK CI Jenkins Reviewed-by: Ziye Yang Reviewed-by: Shuhei Matsumoto Reviewed-by: Paul Luse Reviewed-by: Jim Harris --- lib/nvme/nvme_pcie.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index e29b49eca..81529de7f 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -1088,7 +1088,12 @@ static inline void nvme_pcie_copy_command(struct spdk_nvme_cmd *dst, const struct spdk_nvme_cmd *src) { /* dst and src are known to be non-overlapping and 64-byte aligned. */ -#if defined(__AVX__) +#if defined(__AVX512F__) + __m512i *d512 = (__m512i *)dst; + const __m512i *s512 = (const __m512i *)src; + + _mm512_stream_si512(d512, _mm512_load_si512(s512)); +#elif defined(__AVX__) __m256i *d256 = (__m256i *)dst; const __m256i *s256 = (const __m256i *)src;