James Greenhalgh <james.greenha...@arm.com> writes: > On Thu, Jan 04, 2018 at 11:27:56AM +0000, Richard Sandiford wrote: >> Ping**2 > > This is OK.
Thanks. > It took me a while to get the hang of the interface - a worked example > in the comment in vec-perm-indices.c would probably have been helpful. > It took until your code for REV for this to really make sense to me; so > perhaps that make for a good example. Yeah, good idea. Is the following OK? Tested on aarch64-linux-gnu. Thanks, Richard 2018-01-09 Richard Sandiford <richard.sandif...@linaro.org> gcc/ * vec-perm-indices.c (vec_perm_indices::series_p): Give examples of usage. Index: gcc/vec-perm-indices.c =================================================================== --- gcc/vec-perm-indices.c 2018-01-03 11:12:55.709763763 +0000 +++ gcc/vec-perm-indices.c 2018-01-09 15:46:40.004232873 +0000 @@ -114,7 +114,18 @@ vec_perm_indices::rotate_inputs (int del } /* Return true if index OUT_BASE + I * OUT_STEP selects input - element IN_BASE + I * IN_STEP. */ + element IN_BASE + I * IN_STEP. For example, the call to test + whether a permute reverses a vector of N elements would be: + + series_p (0, 1, N - 1, -1) + + which would return true for { N - 1, N - 2, N - 3, ... }. + The calls to test for an interleaving of elements starting + at N1 and N2 would be: + + series_p (0, 2, N1, 1) && series_p (1, 2, N2, 1). + + which would return true for { N1, N2, N1 + 1, N2 + 1, ... }. */ bool vec_perm_indices::series_p (unsigned int out_base, unsigned int out_step,