The diff looks weird, but this only removes the first if (TARGET_HAVE_MVE... ) block and updates the variable 'addr' which is only used in the consecutive(TARGET_HAVE_MVE ..) blocks. So it doesn't change NEON codegen.

It's unfortunate the diff looks so complicated :(

Cheers,
Andre

On 07/04/2020 11:52, Kyrylo Tkachov wrote:

-----Original Message-----
From: Andre Vieira (lists) <andre.simoesdiasvie...@arm.com>
Sent: 07 April 2020 11:35
To: gcc-patches@gcc.gnu.org; Kyrylo Tkachov <kyrylo.tkac...@arm.com>
Subject: [PATCH][GCC][Arm]: MVE: Fix constant load pattern

Hi,

This patch fixes the constant load pattern for MVE, this was not
accounting correctly for label + offset cases.

Added test that ICE'd before and removed the scan assemblers for the
mve_vector* tests as they were too fragile.

Bootstrapped on arm-linux-gnueabihf and regression tested on arm-none-
eabi.

Is this OK for trunk?
This makes me a bit nervous as it touches the common output_move_neon code ☹ 
but it looks like it mostly shuffles things around.
Ok for trunk but please watch out for fallout.
Thanks,
Kyrill

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

          * config/arm/arm.c (output_move_neon): Deal with label + offset
cases.
          * config/arm/mve.md (*mve_mov<mode>): Handle const vectors.

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

          * gcc.target/arm/mve/intrinsics/mve_load_from_array.c: New test.
          * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Remove
scan-assembler.
          * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
          * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
          * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.

Reply via email to