mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 07:06:08 +02:00
* small optimization
This commit is contained in:
parent
a04f05b002
commit
a8690ca041
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
asm
|
asm
|
||||||
{ load the begin of the string in the data cache }
|
{ load the begin of the string in the data cache }
|
||||||
dcbt r0,r3
|
dcbt 0,r3
|
||||||
{ load result address in r9 }
|
{ load result address in r9 }
|
||||||
li r0,__RESULT@l
|
li r0,__RESULT@l
|
||||||
addis r0,__RESULT@ha
|
addis r0,__RESULT@ha
|
||||||
@ -34,14 +34,14 @@ LStrPasLoop:
|
|||||||
stbu r10,1(r0)
|
stbu r10,1(r0)
|
||||||
bdnzf cr0*4+eq, LStrPasLoop
|
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 }
|
{ get remaining count for length }
|
||||||
mfctr r10
|
mfctr r10
|
||||||
{ if we stopped because of a terminating #0, decrease the length by 1 }
|
{ if r10 was zero (-> stopped because of zero byte), then r4 will be 32 }
|
||||||
mfcr r4
|
{ (32 leading zero bits) -> shr 31 = 1, otherwise this will be zero }
|
||||||
|
srwi r4,r4,31
|
||||||
subfic r10,r10,255
|
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
|
sub r10,r10,r4
|
||||||
|
|
||||||
{ store length }
|
{ store length }
|
||||||
@ -50,7 +50,10 @@ end ['r0','r3','r4','r10','cr0','ctr'];
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* conversion to compilerproc and to structure used by i386 rtl
|
||||||
* some bugfixes
|
* some bugfixes
|
||||||
* powerpc.inc is almost complete (only fillchar/word/dword, get_frame etc
|
* powerpc.inc is almost complete (only fillchar/word/dword, get_frame etc
|
||||||
|
Loading…
Reference in New Issue
Block a user