stmfd sp!, {r4-r10,lr} @ R14 is also called LR
adr r5, 5f
ands r4, r1, #3
stmfd sp!, {r4-r10,lr} @ R14 is also called LR
adr r5, 5f
ands r4, r1, #3
add r5, r5, r4, lsl #2
bic r1, r1, #3
ldrne pc, [r5]
add r5, r5, r4, lsl #2
bic r1, r1, #3
ldrne pc, [r5]
bne 4b
ldmfd sp!, {r4-r10,pc} @@ update PC with LR content.
5:
bne 4b
ldmfd sp!, {r4-r10,pc} @@ update PC with LR content.
5:
.word 2b
.word 3b
.word 4b
.word 2b
.word 3b
.word 4b
stmfd sp!, {r4-r10,lr} @ R14 is also called LR
adr r5, 5f
ands r4, r1, #3
stmfd sp!, {r4-r10,lr} @ R14 is also called LR
adr r5, 5f
ands r4, r1, #3
add r5, r5, r4, lsl #2
bic r1, r1, #3
ldrne pc, [r5]
add r5, r5, r4, lsl #2
bic r1, r1, #3
ldrne pc, [r5]
bne 4b
ldmfd sp!, {r4-r10,pc} @@ update PC with LR content.
5:
bne 4b
ldmfd sp!, {r4-r10,pc} @@ update PC with LR content.
5:
.word 2b
.word 3b
.word 4b
.word 2b
.word 3b
.word 4b
adr r5, 5f
ands r4, r1, #3
mov r3, r3, lsr #1
adr r5, 5f
ands r4, r1, #3
mov r3, r3, lsr #1
add r5, r5, r4, lsl #2
bic r1, r1, #3
ldrne pc, [r5]
add r5, r5, r4, lsl #2
bic r1, r1, #3
ldrne pc, [r5]
ldmfd sp!, {r4-r11,pc}
5:
ldmfd sp!, {r4-r11,pc}
5:
.word 2b
.word 3b
.word 4b
.word 2b
.word 3b
.word 4b
adr r5, 5f
ands r4, r1, #3
mov r3, r3, lsr #1
adr r5, 5f
ands r4, r1, #3
mov r3, r3, lsr #1
add r5, r5, r4, lsl #2
bic r1, r1, #3
ldrne pc, [r5]
add r5, r5, r4, lsl #2
bic r1, r1, #3
ldrne pc, [r5]
bne 6b
ldmfd sp!, {r4-r11,pc}
5:
bne 6b
ldmfd sp!, {r4-r11,pc}
5:
.word 2b
.word 3b
.word 4b
.endfunc
.word 2b
.word 3b
.word 4b
.endfunc
@ ----------------------------------------------------------------
@ ----------------------------------------------------------------
+.macro RND_XY2_IT align, rnd
@ l1= (a & 0x03030303) + (b & 0x03030303) ?(+ 0x02020202)
@ h1= ((a & 0xFCFCFCFCUL) >> 2) + ((b & 0xFCFCFCFCUL) >> 2)
.if \align == 0
@ l1= (a & 0x03030303) + (b & 0x03030303) ?(+ 0x02020202)
@ h1= ((a & 0xFCFCFCFCUL) >> 2) + ((b & 0xFCFCFCFCUL) >> 2)
.if \align == 0
.elseif \align == 3
ADJ_ALIGN_DOUBLEWORD_D 3, r4, r5, r5, r6, r7
.endif
.elseif \align == 3
ADJ_ALIGN_DOUBLEWORD_D 3, r4, r5, r5, r6, r7
.endif
- ldr r14, [r12, #0] @ 0x03030303
tst r3, #1
and r8, r4, r14
and r9, r5, r14
and r10, r6, r14
and r11, r7, r14
tst r3, #1
and r8, r4, r14
and r9, r5, r14
and r10, r6, r14
and r11, r7, r14
- ldreq r14, [r12, #16] @ 0x02020202/0x01010101
+ andeq r14, r14, r14, \rnd #1
add r8, r8, r10
add r9, r9, r11
addeq r8, r8, r14
addeq r9, r9, r14
add r8, r8, r10
add r9, r9, r11
addeq r8, r8, r14
addeq r9, r9, r14
- ldr r14, [r12, #20] @ 0xFCFCFCFC >> 2
+ ldr r14, =0xfcfcfcfc >> 2
and r4, r14, r4, lsr #2
and r5, r14, r5, lsr #2
and r6, r14, r6, lsr #2
and r4, r14, r4, lsr #2
and r5, r14, r5, lsr #2
and r6, r14, r6, lsr #2
-.macro RND_XY2_EXPAND align
- RND_XY2_IT \align
+.macro RND_XY2_EXPAND align, rnd
+ RND_XY2_IT \align, \rnd
+ RND_XY2_IT \align, \rnd
ldmfd sp!, {r4-r7}
add r4, r4, r8
add r5, r5, r9
add r6, r6, r10
add r7, r7, r11
ldmfd sp!, {r4-r7}
add r4, r4, r8
add r5, r5, r9
add r6, r6, r10
add r7, r7, r11
- ldr r14, [r12, #24] @ 0x0F0F0F0F
and r4, r14, r4, lsr #2
and r5, r14, r5, lsr #2
add r4, r4, r6
and r4, r14, r4, lsr #2
and r5, r14, r5, lsr #2
add r4, r4, r6
bic r1, r1, #3
ldrne pc, [r5]
1:
bic r1, r1, #3
ldrne pc, [r5]
1:
.word 2b
.word 3b
.word 4b
.word 2b
.word 3b
.word 4b
- .word 0x02020202
- .word 0xFCFCFCFC >> 2
- .word 0x0F0F0F0F
bic r1, r1, #3
ldrne pc, [r5]
1:
bic r1, r1, #3
ldrne pc, [r5]
1:
.word 2b
.word 3b
.word 4b
.word 2b
.word 3b
.word 4b
- .word 0x01010101
- .word 0xFCFCFCFC >> 2
- .word 0x0F0F0F0F