big-endian power7 testbits is broken - Redmine #1997
[ RUN ] SimdFloatingpointTest.testBits
../src/gromacs/simd/tests/simd_floatingpoint.cpp:392: Failure
Failing SIMD comparison between rSimd_1_2_3 and selectByMask(rSimd_1_2_3, eq)
Ref. values: { 1, 2 }
Test values: { 0, 0 }
[ FAILED ] SimdFloatingpointTest.testBits (0 ms)
This seems to be because vec_cmpeq does a logical comparison of the two zeros, but the test requires a bitwise comparison of the two zeros. I don’t think there is a fix available for gcc on this arch, so probably we need to de-support some set of things here.
(from redmine: issue id 1997, created on 2016-06-28 by mark.j.abraham, closed on 2016-07-04)
- Relations:
- relates #1988 (closed)
- Changesets:
- Revision 49b323e3 by Mark Abraham on 2016-07-04T14:45:38Z:
Fixes for Power7 big-endian
Now compiles and passes all tests in both double and single precision
with gcc 4.9.3, 5.4.0 and 6.1.0 for big-endian VSX.
The change for the code in incrStoreU and decrStoreU addresses an
apparent regression in 6.1.0, where the compiler thinks the type
returned by vec_extract is a pointer-to-float, but my attempts a
reduced test case haven't reproduced the issue.
Added some test cases that might hit more endianness cases in future.
We have not been able to test this on little-endian Power8; there is
a risk the gcc-specific permutations could be endian-sensitive. We'll
test this when we have hardware access, or if somebody runs the tests
for us.
Fixes #1997.
Refs #1988.
Change-Id: Iede0eac22504b22973f1a40d2b0180f10a34b7ed