ebiggers / libdeflate

Heavily optimized library for DEFLATE/zlib/gzip compression and decompression
MIT License
1.02k stars 169 forks source link

Compile error when building via zig build #394

Closed lambdadog closed 2 days ago

lambdadog commented 2 days ago

I'm not entirely sure if this is an issue for upstream, but since libdeflate advertises that it's able to be built via just copying the source files into your project, I was hoping you might able to advise/determine whether an upstream fix is needed.

The primary relevant error seems to be always_inline function '<compiler intrinsic>' requires target feature 'evex512', but would be inlined into function '<function>' that is compiled without support for 'evex512' (see error log attached below for specific examples) and indeed, if the project is built with zig build -Dcpu=baseline+evex512 it compiles without issue.

I'm not an expert when it comes to working with cpu-specific features, but it seems to me that perhaps "evex512" needs to be added to some _target_attribute lists (such as here? I'm not exactly sure why building with clang via zig build would cause this issue to show up when libdeflate (aiui) builds with clang normally without issues, however, which is making me not particularly confident in my answer.

Error log ``` /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:197:21: error: always_inline function '_mm512_set1_epi8' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' const vec_t ones = VSET1_8(1); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:116:23: note: expanded from macro 'VSET1_8' # define VSET1_8(a) _mm512_set1_epi8(a) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:197:21: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI const vec_t ones = VSET1_8(1); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:116:23: note: expanded from macro 'VSET1_8' # define VSET1_8(a) _mm512_set1_epi8(a) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:224:23: error: always_inline function '_mm512_setzero_si512' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' const vec_t zeroes = VSETZERO(); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:118:23: note: expanded from macro 'VSETZERO' # define VSETZERO() _mm512_setzero_si512() ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:224:23: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI const vec_t zeroes = VSETZERO(); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:118:23: note: expanded from macro 'VSETZERO' # define VSETZERO() _mm512_setzero_si512() ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:259:17: error: always_inline function '_mm512_load_si512' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' vec_t mults = VLOAD(raw_mults); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:110:21: note: expanded from macro 'VLOAD' # define VLOAD(p) _mm512_load_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:259:17: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI vec_t mults = VLOAD(raw_mults); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:110:21: note: expanded from macro 'VLOAD' # define VLOAD(p) _mm512_load_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:280:20: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' vec_t data_a = VLOADU(p + 0*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:111:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:280:20: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI vec_t data_a = VLOADU(p + 0*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:111:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:281:20: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' vec_t data_b = VLOADU(p + 1*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:111:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:281:20: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI vec_t data_b = VLOADU(p + 1*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:111:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:282:20: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' vec_t data_c = VLOADU(p + 2*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:111:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:282:20: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI vec_t data_c = VLOADU(p + 2*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:111:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:283:20: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' vec_t data_d = VLOADU(p + 3*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:111:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:283:20: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI vec_t data_d = VLOADU(p + 3*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:111:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:295:14: error: always_inline function '_mm512_dpbusd_epi32' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' v_s2 = VDPBUSD(v_s2, data_a, mults); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:109:28: note: expanded from macro 'VDPBUSD' # define VDPBUSD(a, b, c) _mm512_dpbusd_epi32((a), (b), (c)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:295:14: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI v_s2 = VDPBUSD(v_s2, data_a, mults); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:109:28: note: expanded from macro 'VDPBUSD' # define VDPBUSD(a, b, c) _mm512_dpbusd_epi32((a), (b), (c)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:296:14: error: always_inline function '_mm512_dpbusd_epi32' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' v_s2_b = VDPBUSD(v_s2_b, data_b, mults); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:109:28: note: expanded from macro 'VDPBUSD' # define VDPBUSD(a, b, c) _mm512_dpbusd_epi32((a), (b), (c)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:296:14: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI v_s2_b = VDPBUSD(v_s2_b, data_b, mults); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:109:28: note: expanded from macro 'VDPBUSD' # define VDPBUSD(a, b, c) _mm512_dpbusd_epi32((a), (b), (c)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:297:14: error: always_inline function '_mm512_dpbusd_epi32' requires target feature 'evex512', but would be inlined into function 'adler32_x86_avx512_vl512_vnni' that is compiled without support for 'evex512' v_s2_c = VDPBUSD(v_s2_c, data_c, mults); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c:128: # include "x86/adler32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_impl.h:102: # include "adler32_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/adler32_template.h:109:28: note: expanded from macro 'VDPBUSD' # define VDPBUSD(a, b, c) _mm512_dpbusd_epi32((a), (b), (c)) ^ :1:1: error: too many errors emitted, stopping now /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:197:25: error: always_inline function '_mm512_set_epi64' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' const vec_t mults_8v = MULTS_8V; ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:97:21: note: expanded from macro 'MULTS_8V' # define MULTS_8V MULTS(CRC32_X4063_MODG, CRC32_X4127_MODG) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:96:24: note: expanded from macro 'MULTS' # define MULTS(a, b) _mm512_set_epi64(a, b, a, b, a, b, a, b) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:197:25: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI const vec_t mults_8v = MULTS_8V; ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:97:21: note: expanded from macro 'MULTS_8V' # define MULTS_8V MULTS(CRC32_X4063_MODG, CRC32_X4127_MODG) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:96:24: note: expanded from macro 'MULTS' # define MULTS(a, b) _mm512_set_epi64(a, b, a, b, a, b, a, b) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:198:25: error: always_inline function '_mm512_set_epi64' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' const vec_t mults_4v = MULTS_4V; ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:98:21: note: expanded from macro 'MULTS_4V' # define MULTS_4V MULTS(CRC32_X2015_MODG, CRC32_X2079_MODG) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:96:24: note: expanded from macro 'MULTS' # define MULTS(a, b) _mm512_set_epi64(a, b, a, b, a, b, a, b) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:198:25: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI const vec_t mults_4v = MULTS_4V; ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:98:21: note: expanded from macro 'MULTS_4V' # define MULTS_4V MULTS(CRC32_X2015_MODG, CRC32_X2079_MODG) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:96:24: note: expanded from macro 'MULTS' # define MULTS(a, b) _mm512_set_epi64(a, b, a, b, a, b, a, b) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:199:25: error: always_inline function '_mm512_set_epi64' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' const vec_t mults_2v = MULTS_2V; ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:99:21: note: expanded from macro 'MULTS_2V' # define MULTS_2V MULTS(CRC32_X991_MODG, CRC32_X1055_MODG) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:96:24: note: expanded from macro 'MULTS' # define MULTS(a, b) _mm512_set_epi64(a, b, a, b, a, b, a, b) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:199:25: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI const vec_t mults_2v = MULTS_2V; ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:99:21: note: expanded from macro 'MULTS_2V' # define MULTS_2V MULTS(CRC32_X991_MODG, CRC32_X1055_MODG) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:96:24: note: expanded from macro 'MULTS' # define MULTS(a, b) _mm512_set_epi64(a, b, a, b, a, b, a, b) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:200:25: error: always_inline function '_mm512_set_epi64' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' const vec_t mults_1v = MULTS_1V; ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:100:21: note: expanded from macro 'MULTS_1V' # define MULTS_1V MULTS(CRC32_X479_MODG, CRC32_X543_MODG) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:96:24: note: expanded from macro 'MULTS' # define MULTS(a, b) _mm512_set_epi64(a, b, a, b, a, b, a, b) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:200:25: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI const vec_t mults_1v = MULTS_1V; ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:100:21: note: expanded from macro 'MULTS_1V' # define MULTS_1V MULTS(CRC32_X479_MODG, CRC32_X543_MODG) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:96:24: note: expanded from macro 'MULTS' # define MULTS(a, b) _mm512_set_epi64(a, b, a, b, a, b, a, b) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:251:13: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' v0 = VXOR(VLOADU(p), M128I_TO_VEC(x0)); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:93:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:251:13: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI v0 = VXOR(VLOADU(p), M128I_TO_VEC(x0)); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:93:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:251:24: error: always_inline function '_mm512_castsi128_si512' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' v0 = VXOR(VLOADU(p), M128I_TO_VEC(x0)); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:95:27: note: expanded from macro 'M128I_TO_VEC' # define M128I_TO_VEC(a) _mm512_castsi128_si512(a) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:251:24: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI v0 = VXOR(VLOADU(p), M128I_TO_VEC(x0)); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:95:27: note: expanded from macro 'M128I_TO_VEC' # define M128I_TO_VEC(a) _mm512_castsi128_si512(a) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:251:8: error: always_inline function '_mm512_xor_si512' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' v0 = VXOR(VLOADU(p), M128I_TO_VEC(x0)); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:94:23: note: expanded from macro 'VXOR' # define VXOR(a, b) _mm512_xor_si512((a), (b)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:251:8: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI v0 = VXOR(VLOADU(p), M128I_TO_VEC(x0)); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:94:23: note: expanded from macro 'VXOR' # define VXOR(a, b) _mm512_xor_si512((a), (b)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:256:8: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' v1 = VLOADU(p + 1*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:93:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:256:8: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI v1 = VLOADU(p + 1*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:93:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:261:8: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' v2 = VLOADU(p + 2*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:93:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:261:8: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI v2 = VLOADU(p + 2*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:93:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:262:8: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'crc32_x86_vpclmulqdq_avx512_vl512' that is compiled without support for 'evex512' v3 = VLOADU(p + 3*VL); ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/crc32.c:228: # include "x86/crc32_impl.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126:12: note: in file included from /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_impl.h:126: # include "crc32_pclmul_template.h" ^ /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/x86/crc32_pclmul_template.h:93:22: note: expanded from macro 'VLOADU' # define VLOADU(p) _mm512_loadu_si512((const void *)(p)) ```
lambdadog commented 2 days ago

Ah, seems this may be related to a Zig issue: https://github.com/ziglang/zig/issues/20414

Not for certain, still combing through everything.

ebiggers commented 2 days ago

What is the command that you are using to build lib/adler32.c, i.e. which compiler options are you using? You mentioned that you are using clang --- which version of it?

lambdadog commented 2 days ago

Version:

Alpine clang version 18.1.8
Target: x86_64-alpine-linux-musl
Thread model: posix
InstalledDir: /usr/bin

The actual specific underlying command used is a zig clang invocation, which zig implements by directly calling into the clang main function, so /usr/bin/zig clang can just be mentally replaced with clang-18.

/usr/bin/zig clang /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942/lib/adler32.c --no-default-config -fno-caret-diagnostics -target x86_64-unknown-linux-musl -nostdinc -fno-spell-checking -isystem /usr/lib/zig/include -isystem /usr/include -Xclang -target-cpu -Xclang x86-64 -Xclang -target-feature -Xclang -16bit-mode -Xclang -target-feature -Xclang -32bit-mode -Xclang -target-feature -Xclang -3dnow -Xclang -target-feature -Xclang -3dnowa -Xclang -target-feature -Xclang +64bit -Xclang -target-feature -Xclang -adx -Xclang -target-feature -Xclang -aes -Xclang -target-feature -Xclang -allow-light-256-bit -Xclang -target-feature -Xclang -amx-bf16 -Xclang -target-feature -Xclang -amx-complex -Xclang -target-feature -Xclang -amx-fp16 -Xclang -target-feature -Xclang -amx-int8 -Xclang -target-feature -Xclang -amx-tile -Xclang -target-feature -Xclang -avx -Xclang -target-feature -Xclang -avx10.1-256 -Xclang -target-feature -Xclang -avx10.1-512 -Xclang -target-feature -Xclang -avx2 -Xclang -target-feature -Xclang -avx512bf16 -Xclang -target-feature -Xclang -avx512bitalg -Xclang -target-feature -Xclang -avx512bw -Xclang -target-feature -Xclang -avx512cd -Xclang -target-feature -Xclang -avx512dq -Xclang -target-feature -Xclang -avx512er -Xclang -target-feature -Xclang -avx512f -Xclang -target-feature -Xclang -avx512fp16 -Xclang -target-feature -Xclang -avx512ifma -Xclang -target-feature -Xclang -avx512pf -Xclang -target-feature -Xclang -avx512vbmi -Xclang -target-feature -Xclang -avx512vbmi2 -Xclang -target-feature -Xclang -avx512vl -Xclang -target-feature -Xclang -avx512vnni -Xclang -target-feature -Xclang -avx512vp2intersect -Xclang -target-feature -Xclang -avx512vpopcntdq -Xclang -target-feature -Xclang -avxifma -Xclang -target-feature -Xclang -avxneconvert -Xclang -target-feature -Xclang -avxvnni -Xclang -target-feature -Xclang -avxvnniint16 -Xclang -target-feature -Xclang -avxvnniint8 -Xclang -target-feature -Xclang -bmi -Xclang -target-feature -Xclang -bmi2 -Xclang -target-feature -Xclang -branchfusion -Xclang -target-feature -Xclang -ccmp -Xclang -target-feature -Xclang -cf -Xclang -target-feature -Xclang -cldemote -Xclang -target-feature -Xclang -clflushopt -Xclang -target-feature -Xclang -clwb -Xclang -target-feature -Xclang -clzero -Xclang -target-feature -Xclang +cmov -Xclang -target-feature -Xclang -cmpccxadd -Xclang -target-feature -Xclang -crc32 -Xclang -target-feature -Xclang -cx16 -Xclang -target-feature -Xclang +cx8 -Xclang -target-feature -Xclang -egpr -Xclang -target-feature -Xclang -enqcmd -Xclang -target-feature -Xclang -ermsb -Xclang -target-feature -Xclang -evex512 -Xclang -target-feature -Xclang -f16c -Xclang -target-feature -Xclang -false-deps-getmant -Xclang -target-feature -Xclang -false-deps-lzcnt-tzcnt -Xclang -target-feature -Xclang -false-deps-mulc -Xclang -target-feature -Xclang -false-deps-mullq -Xclang -target-feature -Xclang -false-deps-perm -Xclang -target-feature -Xclang -false-deps-popcnt -Xclang -target-feature -Xclang -false-deps-range -Xclang -target-feature -Xclang -fast-11bytenop -Xclang -target-feature -Xclang -fast-15bytenop -Xclang -target-feature -Xclang -fast-7bytenop -Xclang -target-feature -Xclang -fast-bextr -Xclang -target-feature -Xclang -fast-gather -Xclang -target-feature -Xclang -fast-hops -Xclang -target-feature -Xclang -fast-lzcnt -Xclang -target-feature -Xclang -fast-movbe -Xclang -target-feature -Xclang -fast-scalar-fsqrt -Xclang -target-feature -Xclang -fast-scalar-shift-masks -Xclang -target-feature -Xclang -fast-shld-rotate -Xclang -target-feature -Xclang -fast-variable-crosslane-shuffle -Xclang -target-feature -Xclang -fast-variable-perlane-shuffle -Xclang -target-feature -Xclang -fast-vector-fsqrt -Xclang -target-feature -Xclang -fast-vector-shift-masks -Xclang -target-feature -Xclang -faster-shift-than-shuffle -Xclang -target-feature -Xclang -fma -Xclang -target-feature -Xclang -fma4 -Xclang -target-feature -Xclang -fsgsbase -Xclang -target-feature -Xclang -fsrm -Xclang -target-feature -Xclang +fxsr -Xclang -target-feature -Xclang -gfni -Xclang -target-feature -Xclang -harden-sls-ijmp -Xclang -target-feature -Xclang -harden-sls-ret -Xclang -target-feature -Xclang -hreset -Xclang -target-feature -Xclang -idivl-to-divb -Xclang -target-feature -Xclang +idivq-to-divl -Xclang -target-feature -Xclang -invpcid -Xclang -target-feature -Xclang -kl -Xclang -target-feature -Xclang -lea-sp -Xclang -target-feature -Xclang -lea-uses-ag -Xclang -target-feature -Xclang -lvi-cfi -Xclang -target-feature -Xclang -lvi-load-hardening -Xclang -target-feature -Xclang -lwp -Xclang -target-feature -Xclang -lzcnt -Xclang -target-feature -Xclang +macrofusion -Xclang -target-feature -Xclang +mmx -Xclang -target-feature -Xclang -movbe -Xclang -target-feature -Xclang -movdir64b -Xclang -target-feature -Xclang -movdiri -Xclang -target-feature -Xclang -mwaitx -Xclang -target-feature -Xclang -ndd -Xclang -target-feature -Xclang -no-bypass-delay -Xclang -target-feature -Xclang -no-bypass-delay-blend -Xclang -target-feature -Xclang -no-bypass-delay-mov -Xclang -target-feature -Xclang -no-bypass-delay-shuffle -Xclang -target-feature -Xclang +nopl -Xclang -target-feature -Xclang -pad-short-functions -Xclang -target-feature -Xclang -pclmul -Xclang -target-feature -Xclang -pconfig -Xclang -target-feature -Xclang -pku -Xclang -target-feature -Xclang -popcnt -Xclang -target-feature -Xclang -ppx -Xclang -target-feature -Xclang -prefer-128-bit -Xclang -target-feature -Xclang -prefer-256-bit -Xclang -target-feature -Xclang -prefer-mask-registers -Xclang -target-feature -Xclang -prefer-movmsk-over-vtest -Xclang -target-feature -Xclang -prefer-no-gather -Xclang -target-feature -Xclang -prefer-no-scatter -Xclang -target-feature -Xclang -prefetchi -Xclang -target-feature -Xclang -prefetchwt1 -Xclang -target-feature -Xclang -prfchw -Xclang -target-feature -Xclang -ptwrite -Xclang -target-feature -Xclang -push2pop2 -Xclang -target-feature -Xclang -raoint -Xclang -target-feature -Xclang -rdpid -Xclang -target-feature -Xclang -rdpru -Xclang -target-feature -Xclang -rdrnd -Xclang -target-feature -Xclang -rdseed -Xclang -target-feature -Xclang -retpoline -Xclang -target-feature -Xclang -retpoline-external-thunk -Xclang -target-feature -Xclang -retpoline-indirect-branches -Xclang -target-feature -Xclang -retpoline-indirect-calls -Xclang -target-feature -Xclang -rtm -Xclang -target-feature -Xclang -sahf -Xclang -target-feature -Xclang -sbb-dep-breaking -Xclang -target-feature -Xclang -serialize -Xclang -target-feature -Xclang -seses -Xclang -target-feature -Xclang -sgx -Xclang -target-feature -Xclang -sha -Xclang -target-feature -Xclang -sha512 -Xclang -target-feature -Xclang -shstk -Xclang -target-feature -Xclang +slow-3ops-lea -Xclang -target-feature -Xclang +slow-incdec -Xclang -target-feature -Xclang -slow-lea -Xclang -target-feature -Xclang -slow-pmaddwd -Xclang -target-feature -Xclang -slow-pmulld -Xclang -target-feature -Xclang -slow-shld -Xclang -target-feature -Xclang -slow-two-mem-ops -Xclang -target-feature -Xclang -slow-unaligned-mem-16 -Xclang -target-feature -Xclang -slow-unaligned-mem-32 -Xclang -target-feature -Xclang -sm3 -Xclang -target-feature -Xclang -sm4 -Xclang -target-feature -Xclang -soft-float -Xclang -target-feature -Xclang +sse -Xclang -target-feature -Xclang +sse2 -Xclang -target-feature -Xclang -sse3 -Xclang -target-feature -Xclang -sse4.1 -Xclang -target-feature -Xclang -sse4.2 -Xclang -target-feature -Xclang -sse4a -Xclang -target-feature -Xclang -sse-unaligned-mem -Xclang -target-feature -Xclang -ssse3 -Xclang -target-feature -Xclang -tagged-globals -Xclang -target-feature -Xclang -tbm -Xclang -target-feature -Xclang -tsxldtrk -Xclang -target-feature -Xclang -tuning-fast-imm-vector-shift -Xclang -target-feature -Xclang -uintr -Xclang -target-feature -Xclang -use-glm-div-sqrt-costs -Xclang -target-feature -Xclang -use-slm-arith-costs -Xclang -target-feature -Xclang -usermsr -Xclang -target-feature -Xclang -vaes -Xclang -target-feature -Xclang -vpclmulqdq -Xclang -target-feature -Xclang +vzeroupper -Xclang -target-feature -Xclang -waitpkg -Xclang -target-feature -Xclang -wbnoinvd -Xclang -target-feature -Xclang -widekl -Xclang -target-feature -Xclang +x87 -Xclang -target-feature -Xclang -xop -Xclang -target-feature -Xclang -xsave -Xclang -target-feature -Xclang -xsavec -Xclang -target-feature -Xclang -xsaveopt -Xclang -target-feature -Xclang -xsaves -fsanitize=undefined -fsanitize-trap=undefined -fno-sanitize=function -mred-zone -fno-omit-frame-pointer -fstack-protector-strong --param ssp-buffer-size=4 -D_DEBUG -O0 -funwind-tables -gdwarf-4 -gdwarf32 -MD -MV -MF /home/lambdadog/devel/omen-mc/libdeflate/.zig-cache/tmp/ac7a60d856364858-adler32.o.d -I /home/lambdadog/.cache/zig/p/12203648ce8079997389a2bd39f847ae9dad666594173d499a061e813234c4c8a942 -std=c99 -Wall -Wdeclaration-after-statement -Wimplicit-fallthrough -Wmissing-field-initializers -Wmissing-prototypes -Wpedantic -Wshadow -Wstrict-prototypes -Wundef -Wvla -c -o /home/lambdadog/devel/omen-mc/libdeflate/.zig-cache/tmp/ac7a60d856364858-adler32.o --serialize-diagnostics /home/lambdadog/devel/omen-mc/libdeflate/.zig-cache/tmp/ac7a60d856364858-adler32.o.diag

lambdadog commented 2 days ago

Hmm, looking at the diff between the -Dcpu=baseline vs -Dcpu=baseline+evex512 invocations and googling around for some supplementary info (https://internals.rust-lang.org/t/evex512-in-rust/21239) it looks like it's possible that Clang has a default equivalent to -target-feature +evex512, but since Zig explicitly supplies the target features based on its own logic, it's passing -target-feature -evex512 unless evex512 support is specifically specified.

ebiggers commented 2 days ago

You really should ask the Zig developers to deobfuscate the compiler command lines they use. But yes, -Xclang -target-feature -Xclang -evex512 is causing the problem. That causes the compiler to behave in a non-backwards-compatible way where it can no longer compile code that uses 512-bit vectors. -mno-evex512 would have the same effect and also fail with gcc.

This can be handled in libdeflate by adding evex512 to the target attribute lists for the functions that use 512-bit vectors, but only for clang >= 18 and gcc >= 14 which support that attribute.

It is annoying, but in order to add AVX10/256 support the same compiler versions are going to need no-evex512 in some of the functions that use 256-bit vectors anyway. So I will probably handle that at the same time.

It may be a good idea to ask the Zig developers to stop explicitly disabling evex512 too, though, given that it causes this non-backwards-compatible behavior.