On 10 September 2015 at 16:02, James Greenhalgh <james.greenha...@arm.com> wrote: > > On Wed, Sep 09, 2015 at 10:28:28AM +0100, Christophe Lyon wrote: >> On 9 September 2015 at 10:31, James Greenhalgh <james.greenha...@arm.com> >> wrote: >> > >> > Hi, >> > >> > This patch clears up some remaining confusion in the vector lane orderings >> > for the two intrinsics mentioned in the title. >> > >> > Bootstrapped on aarch64-none-linux-gnu and regression tested for >> > aarch64_be-none-elf with no issues. >> > >> >> Does this actually fix an existing testcase? > > Yes, of course, sorry - that was a useless introduction to the patch! > > First, I've updated the patch with a testcase, which fails for me on > aarch64_be-none-elf but not aarch64-*-*. > > The issue is that the RTL folding routines will happily fold through > a vec_concat or a vec_select, which we have given the wrong operands > to when in BYTES_BIG_ENDIAN mode. The fix is similar to that which we > have elsewhere in aarch64-simd.md, which is to split out the big > and little endian forms of the patterns which need vec_concat, and > to build a vec_par_cnst_*_half mask for the patterns which need > vec_select. This keeps us in the GCC-view of lane ordering. > > There is test coverage that these patterns do the right thing for the > vectorizer (I know, because I initially typoed s/le/be and saw tests > gcc.dg/vect fall over), and the new testcase adds coverage for the > expansion path through intrinsics. > > I've rebased on top of Alan's patch, which goes halfway to fixing the > issue, but which didn't fix the float_truncate patterns, which had an > incorrect vec_concat. That simplifies the patch considerably. > > Rechecked on aarch64_be-none-elf and aarch64-none-linux-gnu with no > issues. > > OK?
The testcase should be modified so that it is skipped on arm* targets. Christophe. > > Thanks, > James > > --- > gcc/ > > 2015-09-09 James Greenhalgh <james.greenha...@arm.com> > > * config/aarch64/aarch64-simd.md > > (aarch64_float_truncate_hi_v4sf): Rewrite as an expand. > (aarch64_float_truncate_hi_v4sf_le): New. > (aarch64_float_truncate_hi_v4sf_be): Likewise. > > gcc/testsuite/ > > 2015-09-09 James Greenhalgh <james.greenha...@arm.com> > > * gcc.target/aarch64/advsimd-intrinsics/vcvt_high_1.c: New. >