XNNPACK icon indicating copy to clipboard operation
XNNPACK copied to clipboard

In function ‘xnn_u8_vclamp_ukernel__neon_u64’: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type

Open jameshilliard opened this issue 11 months ago • 4 comments

I'm seeing these warnings(error actually on some compiler variants) using a gcc based aarch64 toolchain with cmake:

/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c: In function ‘xnn_u8_vclamp_ukernel__neon_u64’:
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c:24:47: warning: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type [-Wincompatible-pointer-types]
   const uint8x16_t voutput_max = vld1q_dup_u8(&params->scalar.max);
                                               ^
In file included from /home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c:8:0:
/home/buildroot/buildroot/output/per-package/xnnpack/host/opt/ext-toolchain/lib/gcc/aarch64-linux-gnu/7.3.1/include/arm_neon.h:17429:1: note: expected ‘const uint8_t * {aka const unsigned char *}’ but argument is of type ‘const uint32_t * {aka const unsigned int *}’
 vld1q_dup_u8 (const uint8_t* __a)
 ^~~~~~~~~~~~
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c:25:47: warning: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type [-Wincompatible-pointer-types]
   const uint8x16_t voutput_min = vld1q_dup_u8(&params->scalar.min);
                                               ^
In file included from /home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c:8:0:
/home/buildroot/buildroot/output/per-package/xnnpack/host/opt/ext-toolchain/lib/gcc/aarch64-linux-gnu/7.3.1/include/arm_neon.h:17429:1: note: expected ‘const uint8_t * {aka const unsigned char *}’ but argument is of type ‘const uint32_t * {aka const unsigned int *}’
 vld1q_dup_u8 (const uint8_t* __a)
 ^~~~~~~~~~~~
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c: In function ‘xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16’:
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c:31:47: warning: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type [-Wincompatible-pointer-types]
   const uint8x16_t voutput_max = vld1q_dup_u8(&params->scalar.max);
                                               ^
In file included from /home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c:11:0:
/home/buildroot/buildroot/output/per-package/xnnpack/host/opt/ext-toolchain/lib/gcc/aarch64-linux-gnu/7.3.1/include/arm_neon.h:17429:1: note: expected ‘const uint8_t * {aka const unsigned char *}’ but argument is of type ‘const uint32_t * {aka const unsigned int *}’
 vld1q_dup_u8 (const uint8_t* __a)
 ^~~~~~~~~~~~
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c:32:47: warning: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type [-Wincompatible-pointer-types]
   const uint8x16_t voutput_min = vld1q_dup_u8(&params->scalar.min);
                                               ^
In file included from /home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c:11:0:
/home/buildroot/buildroot/output/per-package/xnnpack/host/opt/ext-toolchain/lib/gcc/aarch64-linux-gnu/7.3.1/include/arm_neon.h:17429:1: note: expected ‘const uint8_t * {aka const unsigned char *}’ but argument is of type ‘const uint32_t * {aka const unsigned int *}’
 vld1q_dup_u8 (const uint8_t* __a)
 ^~~~~~~~~~~~

jameshilliard avatar Jan 28 '25 14:01 jameshilliard

Can confirm this error with GCC 14.

giordano avatar Mar 18 '25 21:03 giordano

Can confirm this error with GCC 14.

Same

prusnak avatar Mar 24 '25 22:03 prusnak

Same here. I got this error by using the x86_64 cross toolchain downloaded from arm developer. The version of gcc is: aarch64-linux-gnu-gcc (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 14.2.1 20241119

I work around this issue by add "-Wno-incompatible-pointer-types" to CFLAGS. https://github.com/hank7z7/XNNPACK/commit/46ce3145bd2be412956b43e4c459f578d7b11e3e

hank7z7 avatar Apr 16 '25 18:04 hank7z7

I work around this issue by add "-Wno-incompatible-pointer-types" to CFLAGS.

It is better to use -Wno-error=incompatible-pointer-types, so the warning is still shown but not treated as an error. This is what I used when packaging torch for nixpkgs.

prusnak avatar Apr 16 '25 18:04 prusnak