On 3/14/19 7:52 AM, Jakub Jelinek wrote: > Hi! > > On the gcc.dg/vect/pr88598-3.c testcase, gen_vec_extract... is called with > operands[1] that is already a subreg - (subreg:V4SF (reg:V4SI 201 [ _31 ]) 0) > and wraps it in another SUBREG, which is invalid in RTL. > > In all the following 4 spots I've verified that the operand's mode is some > 128-bit vector mode and the mode we want to use is another 128-bit vector > mode, so we are just VCEing the operand to another same sized mode, so we can > call gen_lowpart to handle everything for us (there are no worries about big > vs. little endian etc.). > > Paul Hua has kindly bootstrapped/regtested this on mips (mentioned in the > PR), ok for trunk? > > 2019-03-14 Jakub Jelinek <ja...@redhat.com> > > PR target/89378 > * config/mips/mips.c (mips_expand_vec_cond_expr): Use gen_lowpart > instead of gen_rtx_SUBREG. > * config/mips/mips-msa.md (vec_extract<mode><unitmode>): Likewise. Also note my mips64/mips64el-linux toolchains built and tested without regressions. My bootstrap had to restart due to network issues and is still ongoing.
jeff