After doing a left shift by the number of bits returned by clz,
only bits set to zero can be shifted out, so if the register
was nonzero to start with (which is checked), it can't become
zero here.
lsr x6, x3, #2
lsl x1, x1, x3
ldrb w7, [x5, x6]
- cbz x1, 2f
lsl x1, x1, #4
add w0, w0, w7
cbnz x1, 1b
ret
-2:
- add w0, w0, w7
-0:
- ret
9:
mov w0, #9
+0:
ret
endfunc
.endm
clz x3, x1
lsl x1, x1, x3
ldrb w7, [x5, x3]
- cbz x1, 2f
lsl x1, x1, #1
add w0, w0, w7
cbnz x1, 1b
ret
-2:
- add w0, w0, w7
-0:
- ret
9:
mov w0, #9
+0:
ret
endfunc