Richard Biener via Gcc-patches <gcc-patches@gcc.gnu.org> writes: > The following adjusts the tree.def documentation about VEC_PERM_EXPR > which wasn't adjusted when the restrictions of permutes with constant > mask were relaxed.
I was going to complain about having two copies of the documentation, but then I realised that generic.texi doesn't document VEC_PERM_EXPR. So... oops. > > OK? > > Thanks, > Richard. > > PR middle-end/110541 > * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect > reality. > --- > gcc/tree.def | 19 +++++++++++++------ > 1 file changed, 13 insertions(+), 6 deletions(-) > > diff --git a/gcc/tree.def b/gcc/tree.def > index 1fc2ca7a724..9e1a54ac2f9 100644 > --- a/gcc/tree.def > +++ b/gcc/tree.def > @@ -565,13 +565,20 @@ DEFTREECODE (VEC_COND_EXPR, "vec_cond_expr", > tcc_expression, 3) > > N = length(mask) > foreach i in N: > - M = mask[i] % (2*N) > - A = M < N ? v0[M] : v1[M-N] > + M = mask[i] % (length(v0) + length(v1)) > + A[i] = M < length(v0) ? v0[M] : v1[M - length(v0)] > > - V0 and V1 are vectors of the same type. MASK is an integer-typed > - vector. The number of MASK elements must be the same with the > - number of elements in V0 and V1. The size of the inner type > - of the MASK and of the V0 and V1 must be the same. > + V0 and V1 are vectors of the same type. > + > + When MASK is not constant: > + MASK is an integer-typed vector. The number of MASK elements must > + be the same with the number of elements in V0 and V1. The size of Preexisting, but s/same with/same as/ > + the inner type of the MASK and of the V0 and V1 must be the same. > + > + When MASK is constant: > + MASK is an integer-typed vector. MASK elements outside of > + [0, length(V0) + length(V1) - 1] invoke undefined behavior (the > + modulo operation above doesn't apply). I don't remember the last rule. I thought the modulo did still apply. (But the canonical form is to remove obvious modulo opportunities.) E.g. a VLA reverse-and-rotate pattern might have { N-2, N-3, N-4, ... }. That will wrap at the final position to 2N-1, but that seems OK. LGTM otherwise FWIW. Thanks, Richard