Hi All,

The following patch has been bootstrapped and regtested on
powerpc64le-linux and powerpc64-linux.

The vec-permute-ext-runnable.c test uses byte indices in the control
vector that happen to match the little-endian representation of the
vector double values. On Power10 big-endian targets, the same byte
indices select different bytes within the vector double representation
and therefore produce 0.0 instead of the expected -4.0.

Update the permutation indices to make the test endian-correct.

2026-08-26  Jeevitha Palanisamy  <[email protected]>

gcc/testsuite/
        PR target/127030
        * gcc.target/powerpc/vec-permute-ext-runnable.c: Fix the
        byte permutation indices for big-endian targets.

diff --git a/gcc/testsuite/gcc.target/powerpc/vec-permute-ext-runnable.c 
b/gcc/testsuite/gcc.target/powerpc/vec-permute-ext-runnable.c
index f8332652b47..d6bed5120b9 100644
--- a/gcc/testsuite/gcc.target/powerpc/vec-permute-ext-runnable.c
+++ b/gcc/testsuite/gcc.target/powerpc/vec-permute-ext-runnable.c
@@ -269,7 +269,7 @@ main (int argc, char *argv [])
   vsrc_b_d = (vector double) { 2.0, -4.0 };
   vsrc_c_uchar = (vector unsigned char) { 0x0, 0x1, 0x2, 0x3,
                                          0x4, 0x5, 0x6, 0x7,
-                                         0x1A, 0x1B, 0x1C, 0x1B,
+                                         0x18, 0x19, 0x1A, 0x1B,
                                          0x1C, 0x1D, 0x1E, 0x1F };
   vresult_d = (vector double) { 0.0, 0.0 };
   expected_vresult_d = (vector double) { 1.0, -4.0 };

Reply via email to