Hi Andre,

On 7/26/24 16:05, Andre Vieira (lists) wrote:

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.

I think this lacks some verb? (eg .... what a candidate for a dec_insn "is" or "should look like" or .... ?)

> -  if (!NONDEBUG_INSN_P (dec_insn))
> +  if (!check_dec_insn(dec_insn, condcount))
missing space before '('


> -    return NULL;
> +    if (!check_dec_insn(dec_insn, condcount))
same



It also makes sure that if it does not initially encounter a 'set' in such a
form it tries to find another set that could be the right one.

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.


Regression tested mve.exp for arm-none-eabi with -mcpu=cortex-m85.

I manually tried to exercise the testcase with a cross-compiler, and found the same issue as the Linaro CI should have reported (there was a temporary breakage).

You can find detailed logs from Linaro in gcc.log.1.xz under https://ci.linaro.org/job/tcwg_gcc_check--master-arm-precommit/8357/artifact/artifacts/artifacts.precommit/00-sumfiles/

Basically the testcase fails to compile with loads of
dlstp-loop-form.c:6:9: warning: 'pure' attribute on function returning 'void' [-Wattributes]
then

dlstp-loop-form.c:7:37: error: unknown type name 'float16x8_t'; did you mean 'int16x8_t'?
dlstp-loop-form.c: In function 'n':
dlstp-loop-form.c:18:8: error: subscripted value is neither array nor pointer nor vector dlstp-loop-form.c:21:13: error: passing 'e' {aka 'int'} to argument 2 of 'vfmsq_m', which expects an MVE vector type

Why would the test pass for you?

Thanks,

Christophe

OK for trunk?

Kind regards,
Andre Vieira

Reply via email to