de-tabify; also speculate 1-byte loads to save a cycle or two

amd_d_nrv2b.S amd_d_nrv2e.S l_lx_elf64amd.S

committer: jreiser <jreiser> 1131943590 +0000
This commit is contained in:
John Reiser
2005-11-14 04:46:30 +00:00
parent b670e8d1ac
commit 2558243c83
3 changed files with 85 additions and 73 deletions
+28 -23
View File
@@ -29,35 +29,40 @@
<jreiser@users.sourceforge.net>
*/
ALIGN(1<<3)
ALIGN(1<<3)
lit_n2b:
movb (%rsi),%al; addq $1,%rsi
movb %al,(%rdi); addq $1,%rdi
incq %rsi; movb %dl,(%rdi)
incq %rdi
top_n2b:
jnextb1y lit_n2b
lea 1(lenq),off # [len= 0] off= 1
movzbl (%rsi),%edx # speculate: literal, or bottom 8 bits of offset
jnextb1y lit_n2b
lea 1(lenq),off # [len= 0] off= 1
offmore_n2b:
getnextb(off)
jnextb0n offmore_n2b
getnextb(off)
jnextb0n offmore_n2b
movzbl (%rsi),%edx
subl $ 3,off; jc len_n2b # use previous offset
shll $ 8,off
orl %edx,off; incq %rsi
xorl $~0,off; jz eof
movslq off,disp # XXX: 2GB
subl $ 3,off; jc len_n2b # use previous offset
shll $ 8,off
orl %edx,off; incq %rsi
xorl $~0,off; jz eof
movslq off,disp # XXX: 2GB
len_n2b:
lea 1(lenq),off # [len= 0] off= 1
getnextb(len); getnextb(len) # two bits; cc set on result
jnz gotlen_n2b # raw 1,2,3 ==> 2,3,4
movl off,len # len= 1, the msb
addl $3-1,off # raw 2.. ==> 5..
lea 1(lenq),off # [len= 0] off= 1
getnextb(len); getnextb(len) # two bits; cc set on result
jnz gotlen_n2b # raw 1,2,3 ==> 2,3,4
movl off,len # len= 1, the msb
addl $3-1,off # raw 2.. ==> 5..
lenmore_n2b:
getnextb(len)
jnextb0n lenmore_n2b
getnextb(len)
jnextb0n lenmore_n2b
gotlen_n2b:
cmpq $-0xd00,disp
adcl off,len # len += off + (disp < -0xd00)
call copy
cmpq $-0xd00,disp
adcl off,len # len += off + (disp < -0xd00)
call copy
bot_n2b: # In: 0==len
jmp top_n2b
/*
vi:ts=8:et:nowrap
*/