https://gcc.gnu.org/bugzilla/show_bug.cgi?id=18438
--- Comment #10 from Maxim Kuvyrkov <mkuvyrkov at gcc dot gnu.org> --- (In reply to Maxim Kuvyrkov from comment #9) > which then becomes for aarch64: > .L4: > ld2 {v0.2d - v1.2d}, [x1] > add w2, w2, 1 > cmp w2, w7 > eor v0.16b, v2.16b, v0.16b > umov x4, v0.d[1] > st1 {v0.d}[0], [x1] > add x1, x1, 32 > str x4, [x1, -16] > bcc .L4 IIUC, umov x4, v0.d[1] st1 {v0.d}[0], [x1] str x4, [x1, -16] could become just st2 {v0.d - v1.2d}, [x1]