Hi  Andre,

On 9/27/24 15:17, Andre Vieira (lists) wrote:
Resending as v2 so CI picks it up.


v2 LGTM

Thanks,

Christophe

This patch refactors and fixes an issue where
arm_mve_dlstp_check_dec_counter
was making an assumption about the form of what a candidate for a dec_insn.
This dec_insn is the instruction that decreases the loop counter inside a
decrementing loop and we expect it to have the following form:
(set (reg CONDCOUNT)
       (plus (reg CONDCOUNT)
             (const_int)))

Where CONDCOUNT is the loop counter, and const int is the negative constant
used to decrement it.

This patch also improves our search for a valid dec_insn.  Before this patch
we'd only look for a dec_insn inside the loop header if the loop latch was
empty.  We now also search the loop header if the loop latch is not
empty but
the last instruction is not a valid dec_insn.  This could potentially be
improved
to search all instructions inside the loop latch.

gcc/ChangeLog:

      * config/arm/arm.cc (check_dec_insn): New helper function containing
      code hoisted from...
      (arm_mve_dlstp_check_dec_counter): ... here. Use check_dec_insn to
      check the validity of the candidate dec_insn.

gcc/testsuite/ChangeLog:

      * gcc.targer/arm/mve/dlstp-loop-form.c: New test.

Reply via email to