> -----Original Message-----
> From: Stam Markianos-Wright <stam.markianos-wri...@arm.com>
> Sent: Wednesday, March 29, 2023 11:50 AM
> To: gcc-patches@gcc.gnu.org
> Cc: Kyrylo Tkachov <kyrylo.tkac...@arm.com>
> Subject: arm: Fix MVE vcreate definition
> 
> Hi all,
> 
> I just found a bug that goes back to the initial merge of
> the MVE backend: The vcreate intrinsic has had it's vector
> lanes mixed up, compared to what was intended (as per
> the ACLE) definition. This is also a discrepancy with clang:
> https://godbolt.org/z/4n93e5aqj
> 
> This patches simply switches the operands around and
> makes the tests more specific on the input registers
> (I do not touch the output Q regs as they vary based
> on softfp/hardfp or the input registers when the input
> is a constant, since, in that case, a single register
> is loaded with a constant and then the same register is
> used twice as "vmov q0[2], q0[0], r2, r2" and the reg
> num might also not always be guaranteed).
> 
> No regressions on MVE tesctsuite configurations or in
> the CMSIS-NN testsuite.
> 
> Ok for trunk? (Despite this being late in Stage 4, sorry
> about that!)

Ok, since this is a wrong-code fix.
This needs backports as well, right?
Thanks,
Kyrill

> 
> Thanks,
> Stamatis Markianos-Wright
> 
> gcc/ChangeLog:
> 
>          * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap
> operands.
>            (mve_vcreateq_f<mode>): Swap operands.
> 
> gcc/testsuite/ChangeLog:
> 
>          * gcc.target/arm/mve/intrinsics/vcreateq_f16.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_f32.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_s16.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_s32.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_s64.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_s8.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_u16.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_u32.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_u64.c: Tighten test.
>          * gcc.target/arm/mve/intrinsics/vcreateq_u8.c: Tighten test.

Reply via email to