highway: unexpected emu128 failures
After a recent highway upgrade https://github.com/libjxl/libjxl/pull/1452, we are observing some unexpected failures in tests with the highway target emu128 on 32 bit architectures, for example
[----------] 1 test from HwyMulTestGroup/HwyMulTest
[ RUN ] HwyMulTestGroup/HwyMulTest.TestAllMulHigh/Emu128
i16x8 expect [0+ ->]:
0x3FFF,0x0FFF,0x03FF,0x00FF,0x003F,0x000F,0x0003,
i16x8 actual [0+ ->]:
0xBFFF,0x0FFF,0xE400,0x00FF,0xF840,0x000F,0xFE04,
Abort at ./third_party/highway/hwy/tests/mul_test.cc:131: Emu128, i16x8 lane 0 mismatch: expected '0x3FFF', got '0xBFFF'.
see here: https://github.com/libjxl/libjxl/runs/6916936967?check_suite_focus=true Also see the discussion on https://github.com/libjxl/libjxl/pull/1500.
Two questions:
- Shouldn’t the tests still pass when setting the tolerance to
0
, as done here: https://github.com/libjxl/libjxl/runs/6917084785?check_suite_focus=true? - Is the
HwyMulTestGroup/HwyMulTest.TestAllMulHigh/Emu128
above something that needs to be fixed upstream?
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 15 (15 by maintainers)
Commits related to this issue
- fix int16 MulHigh for x86-32 - missing cast. Refs #765. PiperOrigin-RevId: 455375073 — committed to google/highway by jan-wassenberg 2 years ago
- fix int16 MulHigh for x86-32 - missing cast. Refs #765. PiperOrigin-RevId: 455375073 — committed to google/highway by jan-wassenberg 2 years ago
- fix int16 MulHigh for x86-32 - missing cast. Refs #765. PiperOrigin-RevId: 455375073 — committed to google/highway by jan-wassenberg 2 years ago
- fix int16 MulHigh for x86-32 - missing cast. Refs #765. PiperOrigin-RevId: 455390276 — committed to google/highway by jan-wassenberg 2 years ago
- Rework the detection of broken gcc for HWY_BROKEN_EMU128. Fixes #765 Multiple architectures were impacted by bug: * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106322 original bug report was repor... — committed to malaterre/highway by malaterre 2 years ago
On the failing “Windows MSYS2 / i686” test, the compiler seems to be mingw-w64-i686-gcc-12.1.0-2. Perhaps it is a bug in gcc 12.1.0-2? I will try with clang instead and also try reverting to HWY_SCALAR on that platform.
Yes, exactly.