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

--- Comment #1 from Alex Coplan <acoplan at gcc dot gnu.org> ---
Looks like both loads and stores are wrong in V2DImode:

typedef long long __attribute((vector_size(16))) v2di;
v2di load(v2di *p) { return *p; }
void store(v2di *p, v2di v) { *p = v; }

gives:

load:
        vldr.64 d0, [r0]
        bx      lr
store:
        vstr.64 d0, [r0]
        bx      lr

clang does:

load:
        vldrw.u32       q0, [r0]
        bx      lr
store:
        vstrw.32        q0, [r0]
        bx      lr

It looks like the output code for *mve_mov<mode> needs tweaking.

Reply via email to