highway icon indicating copy to clipboard operation
highway copied to clipboard

Test Failures

Open dbermond opened this issue 10 months ago • 2 comments

The git master branch currently gives me the following test failures:

99% tests passed, 10 tests failed out of 3037

Total Test time (real) = 103.96 sec

The following tests FAILED:
        1897 - HwyMulPairwiseTestGroup/HwyMulPairwiseTest.TestAllSatWidenMulPairwiseAccumulate/AVX3_ZEN4  # GetParam() = 64 (ILLEGAL)
        1898 - HwyMulPairwiseTestGroup/HwyMulPairwiseTest.TestAllSatWidenMulPairwiseAccumulate/AVX3_DL  # GetParam() = 128 (ILLEGAL)
        2425 - HwyWidenMulTestGroup/HwyWidenMulTest.TestAllSatWidenMulAccumFixedPoint/AVX3_ZEN4  # GetParam() = 64 (ILLEGAL)
        2426 - HwyWidenMulTestGroup/HwyWidenMulTest.TestAllSatWidenMulAccumFixedPoint/AVX3_DL  # GetParam() = 128 (ILLEGAL)
        2449 - HwyWidenMulTestGroup/HwyWidenMulTest.TestAllReorderWidenMulAccumulate/AVX3_ZEN4  # GetParam() = 64 (ILLEGAL)
        2450 - HwyWidenMulTestGroup/HwyWidenMulTest.TestAllReorderWidenMulAccumulate/AVX3_DL  # GetParam() = 128 (ILLEGAL)
        2457 - HwyWidenMulTestGroup/HwyWidenMulTest.TestAllRearrangeToOddPlusEven/AVX3_ZEN4  # GetParam() = 64 (ILLEGAL)
        2458 - HwyWidenMulTestGroup/HwyWidenMulTest.TestAllRearrangeToOddPlusEven/AVX3_DL  # GetParam() = 128 (ILLEGAL)
        2465 - HwyWidenMulTestGroup/HwyWidenMulTest.TestAllSumOfMulQuadAccumulate/AVX3_ZEN4  # GetParam() = 64 (ILLEGAL)
        2466 - HwyWidenMulTestGroup/HwyWidenMulTest.TestAllSumOfMulQuadAccumulate/AVX3_DL  # GetParam() = 128 (ILLEGAL)
Errors while running CTest

Steps used to build and test:

$ cmake -B build -S highway \
        -G 'Unix Makefiles' \
        -DCMAKE_BUILD_TYPE:STRING='None' \
        -DCMAKE_INSTALL_PREFIX:PATH='/usr' \
        -DBUILD_SHARED_LIBS:BOOL='ON' \
        -DHWY_SYSTEM_GTEST:BOOL='ON' \
        -Wno-dev
$ cmake --build build
$ ctest --test-dir build --output-on-failure

System Information:

  • OS: Arch Linux
  • Highway (sources): git master
  • CMake: 3.31.6
  • Compiler: gcc 14.2.1
  • GTest: 1.15.2

dbermond avatar Feb 25 '25 18:02 dbermond

Thanks for letting us know. Sounds like at least two ops are buggy on these targets, which are unfortunately not well-covered in our CI (running natively, rarely with support for these). I'll fire up SDE next week, am out tomorrow.

jan-wassenberg avatar Feb 27 '25 17:02 jan-wassenberg

Looks like these are partially, or mostly, due to a bug in GCC's intrinsics. _mm512_mask_fpclass_ph_mask calls __builtin_ia32_fpclassph512_mask with an __mmask8which should instead be __mmask32. _mm256_mask_fpclass_ph_mask appears to correctly use mask16.

We can undef this incorrect definition and provide our own.

jan-wassenberg avatar Mar 03 '25 14:03 jan-wassenberg

FWIW, that was fixed in r15-3410-g9b312595f9ac07 in GCC.

thesamesam avatar Jul 21 '25 20:07 thesamesam

Thanks for confirming! Our workaround optimistically checked HWY_COMPILER_GCC_ACTUAL < 1500, glad to see the fix matches that.

jan-wassenberg avatar Jul 22 '25 09:07 jan-wassenberg