[previous successful output omitted]
CC: ../../src/utils/twtstr.nim
CC: jebp.nim
In file included from /home/runxiyu/ext/chawan/adapter/img/jebp.c:4:
/home/runxiyu/ext/chawan/adapter/img/jebp.h: In function ‘jebp__sum_pred_dct’:
/home/runxiyu/ext/chawan/adapter/img/jebp.h:2168:9: note: use ‘-flax-vector-conversions’ to permit conversions between vectors with differing element types or numbers of subparts
2168 | v_pred32 = vreinterpret_u8_u32(v_pred8);
| ^~~~~~~~
/home/runxiyu/ext/chawan/adapter/img/jebp.h:2168:40: error: incompatible type for argument 1 of ‘vreinterpret_u8_u32’
2168 | v_pred32 = vreinterpret_u8_u32(v_pred8);
| ^~~~~~~
| |
| uint8x8_t
In file included from /home/runxiyu/ext/chawan/adapter/img/jebp.h:482:
/usr/lib/gcc/aarch64-redhat-linux/14/include/arm_neon.h:33:9: note: expected ‘__Uint32x2_t’ but argument is of type ‘uint8x8_t’
33 | #pragma GCC aarch64 "arm_neon.h"
| ^~~
Error: execution of an external compiler program 'gcc -c -w -fmax-errors=3 -flto=auto -fno-strict-aliasing -I/home/runxiyu/ext/chawan/adapter/img -fpermissive -O3 -fno-strict-aliasing -fno-ident -fno-math-errno -I/home/runxiyu/ext/nim-2.0.8/lib -I/home/runxiyu/ext/chawan/adapter/img -o /home/runxiyu/ext/chawan/.obj/release/jebp/@mjebp.c.o /home/runxiyu/ext/chawan/adapter/img/jebp.c' failed with exit code: 1
Thanks for reporting.
Could I just disable jebp if I don't need webp support? (I personally like webp, but this seems like a weird issue to deal with)
Yeah, just remove
$(OUTDIR_CGI_BIN)/jebp
from the Makefile'sall:
section.(I wish we had a better way to pick which modules you want before building, but we don't. I also wish we had a flag to enable/disable SIMD in all modules, but we don't.)
I'm not sure what uint8x8_t is at all, it seems to be some ARM "Neon" types
Looking at the NEON docs, it seems vreinterpret_u8_u32 is being used to cast the u8 vector into a u32 vector, but the code has SRCtype and DSTtype mixed up. I don't have a way to test this right now, but could you please try replacing the
vreinterpret_u8_u32
with avreinterpret_u32_u8
and see if it fixes anything?
The above fix worked in my test environment, so I checked it in. Please let me know if it's still broken for you.