mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 19:29:26 +02:00
* small optimization
This commit is contained in:
parent
a04f05b002
commit
a8690ca041
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user