https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122793
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Even
static void
foo (unsigned char *d, unsigned char *s, int e, int f)
{
for (int i = 0; i < 4; i++)
{
d[0] = s[-2];
d[5] = (s[5] + s[6]) * 2 - (s[4] + s[7]);
d[6] = (s[6] + s[7]) * 2 - (s[5] + s[8]);
d[7] = (s[7] + s[8]) * 2 - (s[6] + s[9]);
d += e;
s += f;
}
}
unsigned char s[128] = { 2 }, d[128];
int
main ()
{
foo (d, s + 2, 16, 16);
if (d[5] != 0)
__builtin_abort ();
}
And the r15-4113 to r15-4114 difference in vect dump is then:
--- pr122793.c.180t.vect.r15-4113 2025-12-05 14:53:36.898953828 -0500
+++ pr122793.c.180t.vect.r15-4114 2025-12-05 14:53:43.572020773 -0500
@@ -193,12 +193,12 @@ int main ()
_118 = VEC_PERM_EXPR <_106, vect__6.12_48, { 0, 1, 2, 6 }>;
_119 = VEC_PERM_EXPR <_108, vect__6.16_20, { 1, 2, 6, 7 }>;
_120 = VEC_PERM_EXPR <vect__6.17_16, _112, { 0, 4, 5, 6 }>;
- _124 = VEC_PERM_EXPR <vect__6.9_54, vect__6.13_46, { 1, 2, 3, 5 }>;
- _125 = VEC_PERM_EXPR <vect__6.13_46, vect__6.17_16, { 2, 3, 5, 6 }>;
- _126 = VEC_PERM_EXPR <vect__6.17_16, vect__6.21_67, { 3, 5, 6, 7 }>;
- _97 = VEC_PERM_EXPR <vect__6.9_54, vect__6.13_46, { 0, 1, 2, 4 }>;
- _98 = VEC_PERM_EXPR <vect__6.13_46, vect__6.17_16, { 1, 2, 4, 5 }>;
- _99 = VEC_PERM_EXPR <vect__6.17_16, vect__6.21_67, { 2, 4, 5, 6 }>;
+ _124 = VEC_PERM_EXPR <vect__6.7_58, vect__6.11_50, { 1, 2, 3, 5 }>;
+ _125 = VEC_PERM_EXPR <vect__6.11_50, vect__6.15_24, { 2, 3, 5, 6 }>;
+ _126 = VEC_PERM_EXPR <vect__6.15_24, vect__6.19_3, { 3, 5, 6, 7 }>;
+ _97 = VEC_PERM_EXPR <vect__6.7_58, vect__6.11_50, { 0, 1, 2, 4 }>;
+ _98 = VEC_PERM_EXPR <vect__6.11_50, vect__6.15_24, { 1, 2, 4, 5 }>;
+ _99 = VEC_PERM_EXPR <vect__6.15_24, vect__6.19_3, { 2, 4, 5, 6 }>;
_70 = VEC_PERM_EXPR <vect__6.8_56, vect__6.9_54, { 3, 4, 5, 5 }>;
_71 = VEC_PERM_EXPR <vect__6.9_54, vect__6.9_54, { 1, 1, 1, 1 }>;
_72 = VEC_PERM_EXPR <vect__6.12_48, vect__6.13_46, { 3, 4, 5, 5 }>;
so clearly the same permutations and everything else, except the first two
arguments of some of the permutations are messed up.