https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51509
Allan Jensen <linux at carewolf dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |linux at carewolf dot com --- Comment #6 from Allan Jensen <linux at carewolf dot com> --- I have run into a similar problem with vld3 and vst4. uint8x16x3_t tmp = vld3q_u8(src); vst4q_u8((uint8_t *)dst, {tmp.val[2], tmp.val[1], tmp.val[0], fullVector}); produces: 70: 4cdf4061 ld3 {v1.16b-v3.16b}, [x3], #48 74: 4e083c04 mov x4, v0.d[0] 78: 4e183c05 mov x5, v0.d[1] 7c: 6f000400 mvni v0.4s, #0x0 80: 4e083c4a mov x10, v2.d[0] 84: 4e183c4b mov x11, v2.d[1] 88: aa0403e2 mov x2, x4 8c: aa0503e1 mov x1, x5 90: 4e083c24 mov x4, v1.d[0] 94: 4e183c25 mov x5, v1.d[1] 98: a90007e2 stp x2, x1, [sp] 9c: 3d800fe0 str q0, [sp,#48] a0: a9012fea stp x10, x11, [sp,#16] a4: aa0403e6 mov x6, x4 a8: a90217e6 stp x6, x5, [sp,#32] ac: 4c4023e0 ld1 {v0.16b-v3.16b}, [sp] b0: 4c9f0000 st4 {v0.16b-v3.16b}, [x0], #64 But if I add -fno-split-wide-types it compiles to: 68: 4cdf4064 ld3 {v4.16b-v6.16b}, [x3], #48 6c: 4f000400 movi v0.4s, #0x0 70: 6f000403 mvni v3.4s, #0x0 74: 4ea51ca1 mov v1.16b, v5.16b 78: 4ea41c82 mov v2.16b, v4.16b 7c: 4c9f0000 st4 {v0.16b-v3.16b}, [x0], #64 This happens with both 4.9 and 5.1 that I have tried.