Skip to content

investigate gcc 16-20251214 arm64 -ffast-math -march=native test failures #1370

@mr-c

Description

@mr-c

I don't remember if we've run -ffast-math on arm64 before, so these might not be unique to gcc-16

Compiler version

gcc 16.0.0 "gcc (Ubuntu 16-20251214-0ubuntu1~0mistercppa2) 16.0.0 20251214 (experimental) [trunk r16-6108-g427ddf95eef]")

  • Obvious differences, like x86/avx512/fpclass (../test/x86/avx512/fpclass.c:46)
  • sign flips, like "-452.779999 ~= 452.779999" (../test/x86/avx512/range.c:168)
    • all the test/x86/avx512/range{,_round} failures
  • Unclassified, need to extract full logs:
    • x86/svml/native/* (but not emul)
    • x86/sse{,2}/*
    • x86/avx512/xorsign/*

Log extract

test/x86/avx512/fpclass-native-c

not ok 1 fpclass/mm256_fpclass_ps_mask
ok 2 fpclass/mm512_fpclass_ph_mask
not ok 3 fpclass/mm512_fpclass_pd_mask
--- stderr ---
../test/x86/avx512/fpclass.c:46: assertion failed: simde_mm256_fpclass_ps_mask(a, 0x04) == 32 (0 == 32)
../test/x86/avx512/fpclass.c:182: assertion failed: simde_mm512_fpclass_pd_mask(a, 0x04) == 32 (0 == 32)

test/x86/avx512/range-native-c

not ok 1 range/mm_range_ps
not ok 2 range/mm_mask_range_ps
not ok 3 range/mm_maskz_range_ps
not ok 4 range/mm256_range_ps
not ok 5 range/mm256_mask_range_ps
not ok 6 range/mm256_maskz_range_ps
not ok 7 range/mm512_range_ps
not ok 8 range/mm512_mask_range_ps
not ok 9 range/mm512_maskz_range_ps
not ok 10 range/mm_range_pd
not ok 11 range/mm_mask_range_pd
not ok 12 range/mm_maskz_range_pd
not ok 13 range/mm256_range_pd
not ok 14 range/mm256_mask_range_pd
not ok 15 range/mm256_maskz_range_pd
not ok 16 range/mm512_range_pd
not ok 17 range/mm512_mask_range_pd
not ok 18 range/mm512_maskz_range_pd
not ok 19 range/x_mm_range_ss
not ok 20 range/mm_mask_range_ss
ok 21 range/mm_maskz_range_ss
not ok 22 range/x_mm_range_sd
not ok 23 range/mm_mask_range_sd
not ok 24 range/mm_maskz_range_sd
--- stderr ---
../test/x86/avx512/range.c:47: assertion failed: r[0] ~= simde_mm_loadu_ps(test_vec[0].r)[0] (-837.489990 ~= 837.489990)
../test/x86/avx512/range.c:168: assertion failed: r[1] ~= e[1] (-452.779999 ~= 452.779999)
../test/x86/avx512/range.c:251: assertion failed: r[1] ~= e[1] (467.920013 ~= -467.920013)
../test/x86/avx512/range.c:379: assertion failed: r[3] ~= simde_mm256_loadu_ps(test_vec[0].r)[3] (-546.739990 ~= 546.739990)
../test/x86/avx512/range.c:504: assertion failed: r[6] ~= e[6] (-734.270020 ~= 734.270020)
../test/x86/avx512/range.c:618: assertion failed: r[5] ~= e[5] (-848.080017 ~= 848.080017)
../test/x86/avx512/range.c:815: assertion failed: r[1] ~= simde_mm512_loadu_ps(test_vec[0].r)[1] (-647.159973 ~= 647.159973)
../test/x86/avx512/range.c:948: assertion failed: r[3] ~= e[3] (964.989990 ~= -964.989990)
../test/x86/avx512/range.c:1124: assertion failed: r[0] ~= e[0] (439.739990 ~= -439.739990)
../test/x86/avx512/range.c:1291: assertion failed: r[1] ~= simde_mm_loadu_pd(test_vec[0].r)[1] (-609.240000 ~= 609.240000)
../test/x86/avx512/range.c:1433: assertion failed: r[1] ~= e[1] (444.770000 ~= -444.770000)
../test/x86/avx512/range.c:1507: assertion failed: r[0] ~= e[0] (-104.570000 ~= 104.570000)
../test/x86/avx512/range.c:1599: assertion failed: r[1] ~= simde_mm256_loadu_pd(test_vec[0].r)[1] (-758.340000 ~= 758.340000)
../test/x86/avx512/range.c:1720: assertion failed: r[3] ~= e[3] (913.200000 ~= -913.200000)
../test/x86/avx512/range.c:1803: assertion failed: r[2] ~= e[2] (951.080000 ~= -951.080000)
../test/x86/avx512/range.c:1931: assertion failed: r[0] ~= simde_mm512_loadu_pd(test_vec[0].r)[0] (-577.370000 ~= 577.370000)
../test/x86/avx512/range.c:2056: assertion failed: r[3] ~= e[3] (-31.500000 ~= 31.500000)
../test/x86/avx512/range.c:2188: assertion failed: r[5] ~= e[5] (-322.110000 ~= 322.110000)
../test/x86/avx512/range.c:2314: assertion failed: r[0] ~= simde_mm_loadu_ps(test_vec[2].r)[0] (-585.239990 ~= 585.239990)
../test/x86/avx512/range.c:2433: assertion failed: r[0] ~= simde_mm_loadu_ps(test_vec[1].r)[0] (-285.399994 ~= 285.399994)
../test/x86/avx512/range.c:2662: assertion failed: r[0] ~= simde_mm_loadu_pd(test_vec[1].r)[0] (-660.600000 ~= 660.600000)
../test/x86/avx512/range.c:2816: assertion failed: r[0] ~= simde_mm_loadu_pd(test_vec[6].r)[0] (-471.290000 ~= 471.290000)
../test/x86/avx512/range.c:2914: assertion failed: r[0] ~= simde_mm_loadu_pd(test_vec[2].r)[0] (-653.590000 ~= 653.590000)

test/x86/avx512/range_round-native-c

not ok 1 range_round/mm512_range_round_ps
not ok 2 range_round/mm512_mask_range_round_ps
not ok 3 range_round/mm512_maskz_range_round_ps
not ok 4 range_round/mm512_range_round_pd
not ok 5 range_round/mm512_mask_range_round_pd
not ok 6 range_round/mm512_maskz_range_round_pd
not ok 7 range_round/mm_range_round_ss
ok 8 range_round/mm_mask_range_round_ss
not ok 9 range_round/mm_maskz_range_round_ss
not ok 10 range_round/mm_range_round_sd
ok 11 range_round/mm_mask_range_round_sd
ok 12 range_round/mm_maskz_range_round_sd
--- stderr ---
../test/x86/avx512/range_round.c:137: assertion failed: r[1] ~= simde_mm512_loadu_ps(test_vec[0].r)[1] (-357.559998 ~= 357.559998)
../test/x86/avx512/range_round.c:379: assertion failed: r[1] ~= simde_mm512_loadu_ps(test_vec[2].r)[1] (-13.520000 ~= 13.520000)
../test/x86/avx512/range_round.c:574: assertion failed: r[1] ~= simde_mm512_loadu_ps(test_vec[0].r)[1] (941.440002 ~= -941.440002)
../test/x86/avx512/range_round.c:720: assertion failed: r[0] ~= simde_mm512_loadu_pd(test_vec[1].r)[0] (-738.410000 ~= 738.410000)
../test/x86/avx512/range_round.c:881: assertion failed: r[0] ~= simde_mm512_loadu_pd(test_vec[0].r)[0] (-355.520000 ~= 355.520000)
../test/x86/avx512/range_round.c:1040: assertion failed: r[6] ~= simde_mm512_loadu_pd(test_vec[0].r)[6] (670.850000 ~= -670.850000)
../test/x86/avx512/range_round.c:1172: assertion failed: r[0] ~= simde_mm_loadu_ps(test_vec[3].r)[0] (561.609985 ~= -561.609985)
../test/x86/avx512/range_round.c:1461: assertion failed: r[0] ~= simde_mm_loadu_ps(test_vec[7].r)[0] (609.650024 ~= -609.650024)
../test/x86/avx512/range_round.c:1568: assertion failed: r[0] ~= simde_mm_loadu_pd(test_vec[5].r)[0] (-49.160000 ~= 49.160000)

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