[PATCH][GCC][Arm]: MVE: Fix v[id]wdup's

Andre Vieira (lists) andre.simoesdiasvieira@arm.com
Tue Apr 7 14:04:58 GMT 2020


On 07/04/2020 11:57, Christophe Lyon wrote:
> On Tue, 7 Apr 2020 at 12:40, Andre Vieira (lists)
> <andre.simoesdiasvieira@arm.com> wrote:
>> 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.
>>
> Hi Andre,
>
> How did you find problem 1? I suspect you are using an internal
> simulator since qemu does not support MVE yet?
> And you probably have runtime tests to exhibit this failure?
Hi Christophe,

I actually found 1) because I was fixing 2). Though yes, I am trying to 
complement testing using an internal simulator and running tests in 
Arm's CMSIS DSP Library (https://github.com/ARM-software/CMSIS_5) that 
use MVE.

Cheers,
Andre
> Thanks,
>
> Christophe
>
>> Is this OK for trunk?
>>
>> 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.
>>


More information about the Gcc-patches mailing list