acl: fix build with gcc 5.4.0
authorKonstantin Ananyev <konstantin.ananyev@intel.com>
Thu, 15 Oct 2020 11:53:56 +0000 (12:53 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Thu, 15 Oct 2020 12:31:46 +0000 (14:31 +0200)
gcc 5.4 fails with:
../lib/librte_acl/acl_run_avx512x8.h: In function 'match_process_avx512x8':
../lib/librte_acl/acl_run_avx512x8.h:382:31: error:
pointer targets in passing argument 1 of '_mm256_mask_i32scatter_epi32'
differ in signedness [-Werror=pointer-sign]

Later gcc versions work fine, as for them parameter type was
changed to 'void *'.
Fixed by applying explicit cast for offending argument.

Bugzilla ID: 556
Fixes: b64c2295f7fc ("acl: add 256-bit AVX512 classify method")
Fixes: 45da22e42ec3 ("acl: add 512-bit AVX512 classify method")

Reported-by: Ali Alnubani <alialnu@nvidia.com>
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Ali Alnubani <alialnu@nvidia.com>
lib/librte_acl/acl_run_avx512_common.h

index 1baf79b..fafaf59 100644 (file)
@@ -246,8 +246,8 @@ _F_(match_process)(struct acl_flow_avx512 *flow, uint32_t *fmsk,
        tr_hi[0] = _M_I_(mask_mov_epi32)(tr_hi[0], rmsk[0], _SV_(trhi_idle));
 
        /* save found match indexes */
-       _M_I_(mask_i32scatter_epi32)(flow->matches, rmsk[0], idx[0], res,
-                       sizeof(flow->matches[0]));
+       _M_I_(mask_i32scatter_epi32)((void *)flow->matches, rmsk[0], idx[0],
+                       res, sizeof(flow->matches[0]));
 
        /* update masks and start new flows for matches */
        n = update_flow_mask(flow, fmsk, rmsk);