forked from len0rd/rockbox
Shave off another 4 instructions (8 bytes).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18970 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
a85e2cd991
commit
66f496cb88
1 changed files with 11 additions and 15 deletions
|
|
@ -98,10 +98,9 @@ getoff_n2e:
|
||||||
getnextb(cnt)
|
getnextb(cnt)
|
||||||
jnextb0 off_n2e
|
jnextb0 off_n2e
|
||||||
|
|
||||||
mov cnt, tmp
|
mov #-4, tmp ! T=1 on entry, so this does
|
||||||
|
addc cnt, tmp ! tmp = cnt - 3, T = (cnt >= 3)
|
||||||
mov #0, len ! cnt and len share a reg!
|
mov #0, len ! cnt and len share a reg!
|
||||||
add #-3, tmp
|
|
||||||
cmp/pz tmp
|
|
||||||
bf offprev_n2e ! cnt was 2
|
bf offprev_n2e ! cnt was 2
|
||||||
mov.b @src+, off ! low 7+1 bits
|
mov.b @src+, off ! low 7+1 bits
|
||||||
shll8 tmp
|
shll8 tmp
|
||||||
|
|
@ -112,19 +111,18 @@ getoff_n2e:
|
||||||
bt eof_n2e
|
bt eof_n2e
|
||||||
shar off
|
shar off
|
||||||
bt lenlast_n2e
|
bt lenlast_n2e
|
||||||
bra lenmore_n2e
|
bf lenmore_n2e ! always taken if the preceding bt isn't
|
||||||
mov #1, len
|
|
||||||
|
|
||||||
offprev_n2e:
|
offprev_n2e:
|
||||||
jnextb1 lenlast_n2e
|
jnextb1 lenlast_n2e
|
||||||
mov #1, len
|
|
||||||
lenmore_n2e:
|
lenmore_n2e:
|
||||||
|
mov #1, len
|
||||||
jnextb1 lenlast_n2e
|
jnextb1 lenlast_n2e
|
||||||
len_n2e:
|
len_n2e:
|
||||||
getnextb(len)
|
getnextb(len)
|
||||||
jnextb0 len_n2e
|
jnextb0 len_n2e
|
||||||
bra gotlen_n2e
|
bra gotlen_n2e
|
||||||
add #6-2, len
|
mov #6-2, tmp
|
||||||
|
|
||||||
get1_n2e: ! in: T bit set
|
get1_n2e: ! in: T bit set
|
||||||
mov.b @src+, bits ! SH1 sign-extends on load
|
mov.b @src+, bits ! SH1 sign-extends on load
|
||||||
|
|
@ -135,19 +133,17 @@ get1_n2e: ! in: T bit set
|
||||||
|
|
||||||
lenlast_n2e:
|
lenlast_n2e:
|
||||||
getnextb(len) ! 0,1,2,3
|
getnextb(len) ! 0,1,2,3
|
||||||
add #2, len
|
mov #2, tmp
|
||||||
gotlen_n2e:
|
gotlen_n2e:
|
||||||
cmp/gt off, wrnk
|
cmp/gt off, wrnk ! too far away, so minimum match length is 3
|
||||||
movt tmp ! too far away, so minimum match length is 3
|
addc tmp, len
|
||||||
add tmp, len
|
|
||||||
copy_n2e:
|
copy_n2e:
|
||||||
mov.b @(off,dst), tmp
|
|
||||||
add #-1, len
|
add #-1, len
|
||||||
|
mov.b @(off,dst), tmp
|
||||||
|
tst len, len
|
||||||
mov.b tmp, @dst
|
mov.b tmp, @dst
|
||||||
add #1, dst
|
add #1, dst
|
||||||
tst len, len
|
|
||||||
bf copy_n2e
|
bf copy_n2e
|
||||||
bra top_n2e
|
bt top_n2e ! always taken if the preceding bf isn't
|
||||||
nop
|
|
||||||
|
|
||||||
.size ucl_nrv2e_decompress_8, .-ucl_nrv2e_decompress_8
|
.size ucl_nrv2e_decompress_8, .-ucl_nrv2e_decompress_8
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue