Test Failures
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
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.
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.
FWIW, that was fixed in r15-3410-g9b312595f9ac07 in GCC.
Thanks for confirming! Our workaround optimistically checked HWY_COMPILER_GCC_ACTUAL < 1500, glad to see the fix matches that.