From 34921a6fa036268937d371da2532c069cd9e0486 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Fri, 5 Jul 2019 12:54:24 +0100 Subject: [PATCH] raw/ioat: fix icc build When using _mm_set_epi64() rather than _mm_set_epi64x() intrinsic, ICC tries to use the x87 floating point registers, leading to warnings about not properly clearing value when switching between x87 and SSE/AVX modes. error #13203: No EMMS instruction before call to function Fix this by using the set64x() intrinsic. Fixes: 0a92e63fc4cd ("raw/ioat: add local API to perform copies") Signed-off-by: Bruce Richardson Acked-by: Harry van Haaren Tested-by: Anatoly Burakov --- drivers/raw/ioat/rte_ioat_rawdev.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/raw/ioat/rte_ioat_rawdev.h b/drivers/raw/ioat/rte_ioat_rawdev.h index 3babb822da..7a89632e77 100644 --- a/drivers/raw/ioat/rte_ioat_rawdev.h +++ b/drivers/raw/ioat/rte_ioat_rawdev.h @@ -124,8 +124,7 @@ rte_ioat_enqueue_copy(int dev_id, phys_addr_t src, phys_addr_t dst, desc->src_addr = src; desc->dest_addr = dst; - ioat->hdls[write] = _mm_set_epi64((__m64)((uint64_t)dst_hdl), - (__m64)((uint64_t)src_hdl)); + ioat->hdls[write] = _mm_set_epi64x((int64_t)dst_hdl, (int64_t)src_hdl); rte_prefetch0(&ioat->desc_ring[ioat->next_write & mask]); ioat->enqueued++; -- 2.20.1