mirror of
https://github.com/byteworksinc/ORCALib.git
synced 2024-10-31 21:07:48 +00:00
Optimize 64-bit unsigned shifts.
They now try to shift 16 bits at a time and only go bit-by-bit for the last 15 or fewer bit positions.
This commit is contained in:
parent
7ad54827a3
commit
91f0dcbdb9
42
int64.asm
42
int64.asm
@ -349,14 +349,29 @@ num1 equ 4
|
|||||||
phd
|
phd
|
||||||
tcd
|
tcd
|
||||||
|
|
||||||
loop1 lsr num1+6 do the shift
|
txa
|
||||||
|
loop0 cmp #16 shift by 16s first
|
||||||
|
blt loop1
|
||||||
|
ldy num1+2
|
||||||
|
sty num1
|
||||||
|
ldy num1+4
|
||||||
|
sty num1+2
|
||||||
|
ldy num1+6
|
||||||
|
sty num1+4
|
||||||
|
stz num1+6
|
||||||
|
; sec
|
||||||
|
sbc #16
|
||||||
|
bne loop0
|
||||||
|
bra rt0
|
||||||
|
|
||||||
|
loop1 lsr num1+6 do the remaining shift
|
||||||
ror num1+4
|
ror num1+4
|
||||||
ror num1+2
|
ror num1+2
|
||||||
ror num1
|
ror num1
|
||||||
dex
|
dec a
|
||||||
bne loop1
|
bne loop1
|
||||||
|
|
||||||
pld
|
rt0 pld
|
||||||
rtl rtl
|
rtl rtl
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -419,14 +434,29 @@ num1 equ 4
|
|||||||
phd
|
phd
|
||||||
tcd
|
tcd
|
||||||
|
|
||||||
loop1 asl num1 do the shift
|
txa
|
||||||
|
loop0 cmp #16 shift by 16s first
|
||||||
|
blt loop1
|
||||||
|
ldy num1+4
|
||||||
|
sty num1+6
|
||||||
|
ldy num1+2
|
||||||
|
sty num1+4
|
||||||
|
ldy num1
|
||||||
|
sty num1+2
|
||||||
|
stz num1
|
||||||
|
; sec
|
||||||
|
sbc #16
|
||||||
|
bne loop0
|
||||||
|
bra rt0
|
||||||
|
|
||||||
|
loop1 asl num1 do the remaining shift
|
||||||
rol num1+2
|
rol num1+2
|
||||||
rol num1+4
|
rol num1+4
|
||||||
rol num1+6
|
rol num1+6
|
||||||
dex
|
dec a
|
||||||
bne loop1
|
bne loop1
|
||||||
|
|
||||||
pld
|
rt0 pld
|
||||||
rtl rtl
|
rtl rtl
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user