Add armv4t assembly macros for division by 10^x, x=[1,9]

This commit is contained in:
Myles Busig 2024-03-25 17:11:49 -06:00
parent cf77d1041d
commit bd1efb0bf9

View File

@ -15,6 +15,54 @@
lsrs \rd, $3
.endm
.macro udiv100 rd, rx, rt
ldr \rt, =0x51EB851F
umull \rt, \rd, \rx, \rt
lsrs \rd, $5
.endm
.macro udiv1000 rd, rx, rt
ldr \rt, =0x10624DD3
umull \rt, \rd, \rx, \rt
lsrs \rd, $6
.endm
.macro udiv10000 rd, rx, rt
ldr \rt, =0xD1B71759
umull \rt, \rd, \rx, \rt
lsrs \rd, $13
.endm
.macro udiv100000 rd, rx, rt
ldr \rt, =0x29f17
umull \rt, \rd, \rx, \rt
lsrs \rd, $2
.endm
.macro udiv1000000 rd, rx, rt
ldr \rt, =0x431BDE83
umull \rt, \rd, \rx, \rt
lsrs \rd, $18
.endm
.macro udiv10000000 rd, rx, rt
ldr \rt, =0x6B5FCA6B
umull \rt, \rd, \rx, \rt
lsrs \rd, $22
.endm
.macro udiv100000000 rd, rx, rt
ldr \rt, =0x55E63B89
umull \rt, \rd, \rx, \rt
lsrs \rd, $25
.endm
.macro udiv1000000000 rd, rx, rt
ldr \rt, =0x44b82fa1
umull \rt, \rd, \rx, \rt
lsrs \rd, $28
.endm
/*
* Calculates rx % 10 and places the result in rd. Clobbers the value of
* temporary register rt