https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108443

            Bug ID: 108443
           Summary: arm: MVE wrongly re-interprets predicate constants
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: avieira at gcc dot gnu.org
  Target Milestone: ---

compiling:
$ cat t.c
#include <arm_mve.h>

uint32x4_t foo (uint32_t *a)
{
  mve_pred16_t p = 0x00cc;
  return vldrwq_z_u32 (a, p);
}

with:

$ arm-none-eabi-gcc -march=armv8.1-m.main+mve -mfloat-abi=hard -O2 -S 
will yield:
foo:
        mov     r3, #-4   @ movhi
        vmsr     p0, r3 @ movhi
        vpst
        vldrwt.32       q0, [r0]
        bx      lr

That leads to a P0 mask of 0xFFFC and not 0x00CC as it should be.
  • [Bug target/108443] New: arm: M... avieira at gcc dot gnu.org via Gcc-bugs

Reply via email to