> -----Original Message----- > From: Andre Vieira (lists) <andre.simoesdiasvie...@arm.com> > Sent: 07 April 2020 11:41 > To: gcc-patches@gcc.gnu.org > Cc: Kyrylo Tkachov <kyrylo.tkac...@arm.com> > Subject: [PATCH][GCC][Arm]: MVE: Fix v[id]wdup's > > Hi, > > This patch fixes v[id]wdup intrinsics. They had two issues: > 1) the predicated versions did not link the incoming inactive vector > parameter to the output > 2) The backend didn't enforce the wrap limit operand be in an odd register. > > 1) was fixed like we did for all other predicated intrinsics > 2) requires a temporary hack where we pass the value in the top end of > DImode operand. The proper fix would be to add a register CLASS but this > interacted badly with other existing targets codegen. We will look to > fix this properly in GCC 11. > > Regression tested on arm-none-eabi. > > Is this OK for trunk?
Argh, not a fan of explicitly matching subregs as they usually break on big-endian, but we've disabled the intrinsics for big-endian for now ☹ So ok for trunk. Thanks, Kyrill > > gcc/ChangeLog: > 2020-04-07 Andre Vieira <andre.simoesdiasvie...@arm.com> > > * config/arm/arm_mve.h: Fix v[id]wdup intrinsics. > * config/arm/mve/md: Fix v[id]wdup patterns.