Current upstream trunk gives the following:
ands r3, r2, #1 push {r4, r5} itt ne ldrbne r5, [r1, #0] @ zero_extendqisi2 addne r1, r1, #1 ands r2, r2, #2 it ne ldrhne r4, [r1, #0] cbz r3, .L4 strb r5, [r0, #0] adds r0, r0, #1 .L4: cbz r2, .L1 strh r4, [r0, #0] @ movhi .L1: pop {r4, r5} bx lr
The unnecessary temporaries still exist, *and* it now fails to do the auto-increment correctly as well. :(
Current upstream trunk gives the following:
ands r3, r2, #1
push {r4, r5}
itt ne
ldrbne r5, [r1, #0] @ zero_extendqisi2
addne r1, r1, #1
ands r2, r2, #2
it ne
ldrhne r4, [r1, #0]
cbz r3, .L4
strb r5, [r0, #0]
adds r0, r0, #1
.L4:
cbz r2, .L1
strh r4, [r0, #0] @ movhi
.L1:
pop {r4, r5}
bx lr
The unnecessary temporaries still exist, *and* it now fails to do the auto-increment correctly as well. :(