arm: MVE: Fix v[id]wdup's
authorAndre Simoes Dias Vieira <andre.simoesdiasvieira@arm.com>
Tue, 7 Apr 2020 14:06:37 +0000 (15:06 +0100)
committerAndre Vieira <andre.simoesdiasvieira@arm.com>
Tue, 7 Apr 2020 14:44:51 +0000 (15:44 +0100)
commit9ce780efc4a8f47cf1fbba8e0494e65e87b0749c
tree7eeec3628a5539049a2d9eda8941a05747355d13
parentb094133c1c5bf21ccd60c344de6f4a798140e61b
arm: MVE: Fix v[id]wdup's

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.

gcc/ChangeLog:
2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* config/arm/arm_mve.h: Fix v[id]wdup intrinsics.
* config/arm/mve/md: Fix v[id]wdup patterns.
gcc/ChangeLog
gcc/config/arm/arm_mve.h
gcc/config/arm/mve.md