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.