* small optimization

This commit is contained in:
Jonas Maebe 2001-09-28 13:23:44 +00:00
parent a04f05b002
commit a8690ca041

View File

@ -16,7 +16,7 @@
asm
{ load the begin of the string in the data cache }
dcbt r0,r3
dcbt 0,r3
{ load result address in r9 }
li r0,__RESULT@l
addis r0,__RESULT@ha
@ -34,14 +34,14 @@ LStrPasLoop:
stbu r10,1(r0)
bdnzf cr0*4+eq, LStrPasLoop
{ if we stopped because of a terminating #0, decrease the length by 1 }
cntlzw r4,r10
{ get remaining count for length }
mfctr r10
{ if we stopped because of a terminating #0, decrease the length by 1 }
mfcr r4
{ if r10 was zero (-> stopped because of zero byte), then r4 will be 32 }
{ (32 leading zero bits) -> shr 31 = 1, otherwise this will be zero }
srwi r4,r4,31
subfic r10,r10,255
{ put "equal" condition bit of cr0 in bit position 31 (= rightmost) }
{ and clear other bits }
rlwinm r4,r4,cr0*4+eq+1,31,31
sub r10,r10,r4
{ store length }
@ -50,7 +50,10 @@ end ['r0','r3','r4','r10','cr0','ctr'];
{
$Log$
Revision 1.1 2001-09-27 15:30:29 jonas
Revision 1.2 2001-09-28 13:23:44 jonas
* small optimization
Revision 1.1 2001/09/27 15:30:29 jonas
* conversion to compilerproc and to structure used by i386 rtl
* some bugfixes
* powerpc.inc is almost complete (only fillchar/word/dword, get_frame etc