105 lines
5.3 KiB
Diff
105 lines
5.3 KiB
Diff
|
|
From 47951ef1dc21882215a531472d055c58a7618cb0 Mon Sep 17 00:00:00 2001
|
|||
|
|
From: David Marchand <david.marchand@redhat.com>
|
|||
|
|
Date: Mon, 9 Jan 2023 11:03:37 +0100
|
|||
|
|
Subject: [PATCH] hash: fix GFNI implementation build with GCC 12
|
|||
|
|
MIME-Version: 1.0
|
|||
|
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|
|||
|
|
[ upstream commit fe2c18a0a8b22703dec3add385a371ad819d7872 ]
|
|||
|
|
|
|||
|
|
On a system that has AVX512F and GFNI, compiling fails with:
|
|||
|
|
|
|||
|
|
In file included from /usr/lib/gcc/x86_64-redhat-linux/12/include/immintrin.h:71,
|
|||
|
|
from /usr/lib/gcc/x86_64-redhat-linux/12/include/x86intrin.h:32,
|
|||
|
|
from ../../../git/pub/dpdk.org/main/lib/eal/x86/include/rte_vect.h:31,
|
|||
|
|
from ../../../git/pub/dpdk.org/main/lib/eal/x86/include/rte_memcpy.h:17,
|
|||
|
|
from ../../../git/pub/dpdk.org/main/lib/mempool/rte_mempool.h:48,
|
|||
|
|
from ../../../git/pub/dpdk.org/main/lib/mbuf/rte_mbuf.h:38,
|
|||
|
|
from ../../../git/pub/dpdk.org/main/lib/net/rte_ip.h:33,
|
|||
|
|
from ../../../git/pub/dpdk.org/main/lib/hash/rte_thash.h:25,
|
|||
|
|
from ../../../git/pub/dpdk.org/main/lib/hash/rte_thash.c:7:
|
|||
|
|
In function ‘_mm512_mask_permutexvar_epi8’,
|
|||
|
|
inlined from ‘__rte_thash_gfni’ at
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash_x86_gfni.h:142:17,
|
|||
|
|
inlined from ‘rte_thash_gfni’ at
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash_x86_gfni.h:182:20,
|
|||
|
|
inlined from ‘rte_thash_adjust_tuple’ at
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash.c:784:11:
|
|||
|
|
/usr/lib/gcc/x86_64-redhat-linux/12/include/avx512vbmiintrin.h:97:20:
|
|||
|
|
error: ‘tuple_bytes’ may be used uninitialized [-Werror=maybe-uninitialized]
|
|||
|
|
97 | return (__m512i) __builtin_ia32_permvarqi512_mask ((__v64qi) __B,
|
|||
|
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
|
98 | (__v64qi) __A,
|
|||
|
|
| ~~~~~~~~~~~~~~
|
|||
|
|
99 | (__v64qi) __W,
|
|||
|
|
| ~~~~~~~~~~~~~~
|
|||
|
|
100 | (__mmask64) __M);
|
|||
|
|
| ~~~~~~~~~~~~~~~~
|
|||
|
|
|
|||
|
|
And:
|
|||
|
|
|
|||
|
|
In file included from ../../../git/pub/dpdk.org/main/lib/hash/rte_thash_gfni.h:17,
|
|||
|
|
from ../../../git/pub/dpdk.org/main/lib/hash/rte_thash.h:27:
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash_x86_gfni.h:
|
|||
|
|
In function ‘rte_thash_adjust_tuple’:
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash_x86_gfni.h:91:33:
|
|||
|
|
note: ‘tuple_bytes’ was declared here
|
|||
|
|
91 | __m512i vals, matrixes, tuple_bytes, tuple_bytes_2;
|
|||
|
|
| ^~~~~~~~~~~
|
|||
|
|
In function ‘_mm512_mask_permutexvar_epi8’,
|
|||
|
|
inlined from ‘__rte_thash_gfni’ at
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash_x86_gfni.h:142:17,
|
|||
|
|
inlined from ‘rte_thash_gfni’ at
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash_x86_gfni.h:182:20,
|
|||
|
|
inlined from ‘rte_thash_adjust_tuple’ at
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash.c:784:11:
|
|||
|
|
/usr/lib/gcc/x86_64-redhat-linux/12/include/avx512vbmiintrin.h:97:20:
|
|||
|
|
error: ‘permute_mask’ may be used uninitialized [-Werror=maybe-uninitialized]
|
|||
|
|
97 | return (__m512i) __builtin_ia32_permvarqi512_mask ((__v64qi) __B,
|
|||
|
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
|
98 | (__v64qi) __A,
|
|||
|
|
| ~~~~~~~~~~~~~~
|
|||
|
|
99 | (__v64qi) __W,
|
|||
|
|
| ~~~~~~~~~~~~~~
|
|||
|
|
100 | (__mmask64) __M);
|
|||
|
|
| ~~~~~~~~~~~~~~~~
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash_x86_gfni.h:
|
|||
|
|
In function ‘rte_thash_adjust_tuple’:
|
|||
|
|
../../../git/pub/dpdk.org/main/lib/hash/rte_thash_x86_gfni.h:92:30:
|
|||
|
|
note: ‘permute_mask’ was declared here
|
|||
|
|
92 | __mmask64 load_mask, permute_mask, permute_mask_2;
|
|||
|
|
| ^~~~~~~~~~~~
|
|||
|
|
cc1: all warnings being treated as errors
|
|||
|
|
|
|||
|
|
Set those variables to 0.
|
|||
|
|
|
|||
|
|
Fixes: 4fd8c4cb0de1 ("hash: add new Toeplitz hash implementation")
|
|||
|
|
|
|||
|
|
Signed-off-by: David Marchand <david.marchand@redhat.com>
|
|||
|
|
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
|
|||
|
|
---
|
|||
|
|
lib/hash/rte_thash_x86_gfni.h | 6 ++++--
|
|||
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|||
|
|
|
|||
|
|
diff --git a/lib/hash/rte_thash_x86_gfni.h b/lib/hash/rte_thash_x86_gfni.h
|
|||
|
|
index 657b1862c3..0583f64793 100644
|
|||
|
|
--- a/lib/hash/rte_thash_x86_gfni.h
|
|||
|
|
+++ b/lib/hash/rte_thash_x86_gfni.h
|
|||
|
|
@@ -87,8 +87,10 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
|
|||
|
|
const __m512i shift_8 = _mm512_set1_epi8(8);
|
|||
|
|
__m512i xor_acc = _mm512_setzero_si512();
|
|||
|
|
__m512i perm_bytes = _mm512_setzero_si512();
|
|||
|
|
- __m512i vals, matrixes, tuple_bytes, tuple_bytes_2;
|
|||
|
|
- __mmask64 load_mask, permute_mask, permute_mask_2;
|
|||
|
|
+ __m512i vals, matrixes, tuple_bytes_2;
|
|||
|
|
+ __m512i tuple_bytes = _mm512_setzero_si512();
|
|||
|
|
+ __mmask64 load_mask, permute_mask_2;
|
|||
|
|
+ __mmask64 permute_mask = 0;
|
|||
|
|
int chunk_len = 0, i = 0;
|
|||
|
|
uint8_t mtrx_msk;
|
|||
|
|
const int prepend = 3;
|
|||
|
|
--
|
|||
|
|
2.23.0
|
|||
|
|
|