https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121867

--- Comment #2 from Jeevitha <jeevitha at gcc dot gnu.org> ---
https://patchwork.sourceware.org/project/gcc/patch/[email protected]/

After enabling GIMPLE folding, the behavior of vec_sl with vector long long
differs from the original test (pr86731-longlong.c).

Before:
Folding was disabled, so the compiler generated the result at runtime using
xxspltib + vupkhsw + vsld. The test expected 2 splats, 2 shifts, and 0 lvx.

After (with folding enabled):
The shift is constant-folded at compile time by modulo reduction. For mzero =
{-1, -1}, the low 6 bits of the shift amount equal 63, producing
{0x8000000000000000, 0x8000000000000000}. Since Power9 and earlier lack a splat
instruction for arbitrary 64-bit values, the constant is placed in memory and
loaded with lxv.

This is the expected behavior, so the testcase was updated accordingly.

Reply via email to