From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3DA69A034C; Sat, 20 Aug 2022 12:30:43 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 17D7B40693; Sat, 20 Aug 2022 12:30:42 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 34ADB40223 for ; Sat, 20 Aug 2022 12:30:41 +0200 (CEST) Received: from dkrd2.smartsharesys.local ([192.168.4.12]) by smartserver.smartsharesystems.com with Microsoft SMTPSVC(6.0.3790.4675); Sat, 20 Aug 2022 12:30:39 +0200 From: =?UTF-8?q?Morten=20Br=C3=B8rup?= To: bruce.richardson@intel.com, konstantin.v.ananyev@yandex.ru Cc: dev@dpdk.org, =?UTF-8?q?Morten=20Br=C3=B8rup?= Subject: [PATCH] x86: rte_mov256 was missing for AVX2 Date: Sat, 20 Aug 2022 12:30:32 +0200 Message-Id: <20220820103032.119741-1-mb@smartsharesystems.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 20 Aug 2022 10:30:39.0306 (UTC) FILETIME=[E46462A0:01D8B47F] X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The rte_mov256 function was missing for AVX2. Does nobody build test for AVX2 and check the compiler output? Signed-off-by: Morten Brørup --- lib/eal/x86/include/rte_memcpy.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/eal/x86/include/rte_memcpy.h b/lib/eal/x86/include/rte_memcpy.h index b678b5c942..d4d7a5cfc8 100644 --- a/lib/eal/x86/include/rte_memcpy.h +++ b/lib/eal/x86/include/rte_memcpy.h @@ -371,6 +371,23 @@ rte_mov128(uint8_t *dst, const uint8_t *src) rte_mov32((uint8_t *)dst + 3 * 32, (const uint8_t *)src + 3 * 32); } +/** + * Copy 256 bytes from one location to another, + * locations should not overlap. + */ +static __rte_always_inline void +rte_mov256(uint8_t *dst, const uint8_t *src) +{ + rte_mov32((uint8_t *)dst + 0 * 32, (const uint8_t *)src + 0 * 32); + rte_mov32((uint8_t *)dst + 1 * 32, (const uint8_t *)src + 1 * 32); + rte_mov32((uint8_t *)dst + 2 * 32, (const uint8_t *)src + 2 * 32); + rte_mov32((uint8_t *)dst + 3 * 32, (const uint8_t *)src + 3 * 32); + rte_mov32((uint8_t *)dst + 4 * 32, (const uint8_t *)src + 4 * 32); + rte_mov32((uint8_t *)dst + 5 * 32, (const uint8_t *)src + 5 * 32); + rte_mov32((uint8_t *)dst + 6 * 32, (const uint8_t *)src + 6 * 32); + rte_mov32((uint8_t *)dst + 7 * 32, (const uint8_t *)src + 7 * 32); +} + /** * Copy 128-byte blocks from one location to another, * locations should not overlap. -- 2.17.1