Skip to content

Build failure on nixos with g++ 14.2.1 w/ -march=znver4 & -mtune=znver4 #1288

@PartyWumpus

Description

@PartyWumpus

As title says, I'm using arch & tune znver4, via a simple nix shell that looks like

let
  pkgs = import <nixpkgs> {
    localSystem = {
      gcc.arch = "znver4";
      gcc.tune = "znver4";
      system = "x86_64-linux";
    };
  };
in
  pkgs.simde

The error looks like:

The Meson build system
Version: 1.7.0
Source dir: /build/source
Build dir: /build/source/build
Build type: native build
Project name: SIMDe
Project version: 0.8.2
C compiler for the host machine: gcc (gcc 14.2.1 "gcc (GCC) 14.2.1 20241116")
C linker for the host machine: gcc ld.bfd 2.43.1
C++ compiler for the host machine: g++ (gcc 14.2.1 "g++ (GCC) 14.2.1 20241116")
C++ linker for the host machine: g++ ld.bfd 2.43.1
Host machine cpu family: x86_64
Host machine cpu: x86_64
Library m found: YES
Compiler for C supports arguments -fopenmp-simd: YES 
Compiler for C++ supports arguments -fopenmp-simd: YES 
Compiler for C supports arguments -Wpsabi: YES 
Compiler for C++ supports arguments -Wpsabi: YES 
Library m found: YES
Did not find pkg-config by name 'pkg-config'
Found pkg-config: NO
Build targets in project: 2002

...

[380/4004] Compiling C++ object test/x86/avx512/shuffle-native-cpp.p/meson-generated_>
FAILED: test/x86/avx512/shuffle-native-cpp.p/meson-generated_.._shuffle.cpp.o 
g++ -Itest/x86/avx512/shuffle-native-cpp.p -Itest/x86/avx512 -I../test/x86/avx512 -I.>
In file included from test/x86/avx512/shuffle.cpp:33:
test/x86/avx512/shuffle.cpp: In function 'int test_simde_mm512_shuffle_epi32()':
../test/x86/avx512/../../../simde/simde-constify.h:71:47: error: invalid conversion f>
   71 |       case 0: result = func_name(__VA_ARGS__, 0); break; \
../simde/x86/avx512/shuffle.h:100:73: note: in definition of macro 'simde_mm512_shuff>
  100 | #  define simde_mm512_shuffle_epi32(a, imm8) _mm512_shuffle_epi32((a), (imm8))
      |                                                                         ^~~~
test/x86/avx512/shuffle.cpp:488:5: note: in expansion of macro 'SIMDE_CONSTIFY_4_'
  488 |     SIMDE_CONSTIFY_4_(simde_mm512_shuffle_epi32, r, (HEDLEY_UNREACHABLE(), a)>
      |     ^~~~~~~~~~~~~~~~~
In file included from /nix/store/shhh1vdqy054y6nwqrjp3ic0nh82kpsd-gcc-14-20241116/lib>
                 from ../test/x86/avx512/../../../simde/simde-features.h:309,
                 from ../test/x86/avx512/../../../simde/simde-common.h:45,
                 from ../test/x86/avx512/../../test.h:5,
                 from ../test/x86/avx512/../test-x86.h:4,
                 from ../test/x86/avx512/test-avx512.h:4,
                 from test/x86/avx512/shuffle.cpp:30:
/nix/store/shhh1vdqy054y6nwqrjp3ic0nh82kpsd-gcc-14-20241116/lib/gcc/x86_64-unknown-li>
 7609 | _mm512_shuffle_epi32 (__m512i __A, _MM_PERM_ENUM __mask)
      |                                    ~~~~~~~~~~~~~~^~~~~~
../test/x86/avx512/../../../simde/simde-constify.h:72:47: error: invalid conversion f>
   72 |       case 1: result = func_name(__VA_ARGS__, 1); break; \
../simde/x86/avx512/shuffle.h:100:73: note: in definition of macro 'simde_mm512_shuff>
  100 | #  define simde_mm512_shuffle_epi32(a, imm8) _mm512_shuffle_epi32((a), (imm8))
      |                                                                         ^~~~
test/x86/avx512/shuffle.cpp:488:5: note: in expansion of macro 'SIMDE_CONSTIFY_4_'
  488 |     SIMDE_CONSTIFY_4_(simde_mm512_shuffle_epi32, r, (HEDLEY_UNREACHABLE(), a)>
      |     ^~~~~~~~~~~~~~~~~
/nix/store/shhh1vdqy054y6nwqrjp3ic0nh82kpsd-gcc-14-20241116/lib/gcc/x86_64-unknown-li>
 7609 | _mm512_shuffle_epi32 (__m512i __A, _MM_PERM_ENUM __mask)
      |                                    ~~~~~~~~~~~~~~^~~~~~
../test/x86/avx512/../../../simde/simde-constify.h:73:47: error: invalid conversion f>
   73 |       case 2: result = func_name(__VA_ARGS__, 2); break; \
../simde/x86/avx512/shuffle.h:100:73: note: in definition of macro 'simde_mm512_shuff>
  100 | #  define simde_mm512_shuffle_epi32(a, imm8) _mm512_shuffle_epi32((a), (imm8))
      |                                                                         ^~~~
test/x86/avx512/shuffle.cpp:488:5: note: in expansion of macro 'SIMDE_CONSTIFY_4_'
  488 |     SIMDE_CONSTIFY_4_(simde_mm512_shuffle_epi32, r, (HEDLEY_UNREACHABLE(), a)>
      |     ^~~~~~~~~~~~~~~~~
/nix/store/shhh1vdqy054y6nwqrjp3ic0nh82kpsd-gcc-14-20241116/lib/gcc/x86_64-unknown-li>
 7609 | _mm512_shuffle_epi32 (__m512i __A, _MM_PERM_ENUM __mask)
      |                                    ~~~~~~~~~~~~~~^~~~~~
../test/x86/avx512/../../../simde/simde-constify.h:74:47: error: invalid conversion f>
   74 |       case 3: result = func_name(__VA_ARGS__, 3); break; \
../simde/x86/avx512/shuffle.h:100:73: note: in definition of macro 'simde_mm512_shuff>
  100 | #  define simde_mm512_shuffle_epi32(a, imm8) _mm512_shuffle_epi32((a), (imm8))
      |                                                                         ^~~~
test/x86/avx512/shuffle.cpp:488:5: note: in expansion of macro 'SIMDE_CONSTIFY_4_'
  488 |     SIMDE_CONSTIFY_4_(simde_mm512_shuffle_epi32, r, (HEDLEY_UNREACHABLE(), a)>
      |     ^~~~~~~~~~~~~~~~~
/nix/store/shhh1vdqy054y6nwqrjp3ic0nh82kpsd-gcc-14-20241116/lib/gcc/x86_64-unknown-li>
 7609 | _mm512_shuffle_epi32 (__m512i __A, _MM_PERM_ENUM __mask)
      |                                    ~~~~~~~~~~~~~~^~~~~~

I can do some further investigation if wanted but just thought it was worth reporting. Not particularly important though, I can just opt out of znver4 -march & -mtune for specifically simde.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions