~bptato/chawan#14: 
Error building jebp on aarch64 Fedora

#Output

[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

#System environment

  • Fedora Linux Asahi Remix 40
  • aarch64 (Apple M1), with 16k pages

#Questions

  • 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)
  • I'm not sure what uint8x8_t is at all, it seems to be some ARM "Neon" types
Status
RESOLVED FIXED
Submitter
~runxiyu
Assigned to
No-one
Submitted
a month ago
Updated
a month ago
Labels
No labels applied.

~bptato a month ago

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's all: 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 a vreinterpret_u32_u8 and see if it fixes anything?

~bptato REPORTED FIXED a month ago

The above fix worked in my test environment, so I checked it in. Please let me know if it's still broken for you.

Register here or Log in to comment, or comment via email.