Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compile error when building via zig build #394

Closed
lambdadog opened this issue Oct 23, 2024 · 5 comments · Fixed by #396
Closed

Compile error when building via zig build #394

lambdadog opened this issue Oct 23, 2024 · 5 comments · Fixed by #396
Labels

Comments

@lambdadog
Copy link

lambdadog commented Oct 23, 2024

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
Copy link
Author

lambdadog commented Oct 23, 2024

Ah, seems this may be related to a Zig issue: ziglang/zig#20414

Not for certain, still combing through everything.

@ebiggers
Copy link
Owner

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
Copy link
Author

lambdadog commented Oct 23, 2024

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
Copy link
Author

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
Copy link
Owner

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.

ebiggers added a commit that referenced this issue Oct 23, 2024
libdeflate failed to build with -mno-evex512 with clang 18+ or gcc 14+
because that flag causes the evex512 feature (which is new in those
compiler versions) to have to be explicitly added to functions that use
AVX512 with 512-bit vectors.  Add this feature where appropriate.

For the same compiler versions, also add no-evex512 to the functions
that use AVX512 + 256-bit vectors so that they are ready for AVX10/256.

Resolves #394
@ebiggers ebiggers added the bug label Oct 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants