libstdc++: Simplify calculation of expected value in simd test
Checks
Commit Message
OK for master and all backports (after 11.4 is done)?
tested on powerpc64le-linux-gnu
----------- 8< ------------
This avoids a failure on PR109964.
Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:
* testsuite/experimental/simd/tests/integer_operators.cc:
Compute expected value differently to avoid getting turned into
a vector shift.
---
.../experimental/simd/tests/integer_operators.cc | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
--
──────────────────────────────────────────────────────────────────────────
Dr. Matthias Kretz https://mattkretz.github.io
GSI Helmholtz Centre for Heavy Ion Research https://gsi.de
stdₓ::simd
──────────────────────────────────────────────────────────────────────────
Comments
On Fri, 26 May 2023 at 12:09, Matthias Kretz via Libstdc++ <
libstdc++@gcc.gnu.org> wrote:
> OK for master and all backports (after 11.4 is done)?
>
OK
>
> tested on powerpc64le-linux-gnu
>
> ----------- 8< ------------
>
> This avoids a failure on PR109964.
>
> Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
>
> libstdc++-v3/ChangeLog:
>
> * testsuite/experimental/simd/tests/integer_operators.cc:
> Compute expected value differently to avoid getting turned into
> a vector shift.
> ---
> .../experimental/simd/tests/integer_operators.cc | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
>
> --
> ──────────────────────────────────────────────────────────────────────────
> Dr. Matthias Kretz https://mattkretz.github.io
> GSI Helmholtz Centre for Heavy Ion Research https://gsi.de
> stdₓ::simd
> ──────────────────────────────────────────────────────────────────────────
@@ -179,11 +179,10 @@ for (int s = 1; s < nbits; ++s)
for (int j = 0; j < 100; ++j)
{
const V seq([&](auto i) -> T { return (j + i) % n_promo_bits; });
- COMPARE(V(1) >> seq, V([&](auto i) { return T(T(1) >> seq[i]); }))
- << "seq = " << seq;
- COMPARE(make_value_unknown(V(1)) >> make_value_unknown(seq),
- V([&](auto i) { return T(T(1) >> seq[i]); }))
- << "seq = " << seq;
+ const V expect([&](auto i) { return seq[i] == 0 ? T(1) : T(0); });
+ COMPARE(V(1) >> seq, expect) << "\nseq = " << seq;
+ COMPARE(make_value_unknown(V(1)) >> make_value_unknown(seq), expect)
+ << "\nseq = " << seq;
}
for_constexpr<int, 0, n_promo_bits - 1>([](auto shift_ic) {
constexpr int shift = shift_ic;