rrr-8 rrr r5<r-8 rrpr(:r.pr*|r 8 r+ r rr + r +`r rr3Zr5r++~p@+@}dEdSdadod}dtttnthtbt\t< gU~06-@ VPv+X ")*4M VPI`z+ Z\PR!< \Pm \Pd 6Pd VP[,~-@  h+7v,~.wP[46qHK ~,E.]P[+@PI=|,~ h VP  .6P  +7v,~.wP[46 ,E.]P[VP=| ,~  0t-@t  +7v,~_<~&.wP[46(,E.]P[` -@,~-@ h0< -@  .6p VPI  .6p VP[ p VP \Pd :1 ZPR,~,> Pd,PR,^,~     R)~5d:+.]P[,~,>,>,>,> Pv+X:A???>=? Pd+9-@ Pm2V +B VPd+C-@>P[:~,^,^i R-~D,^,^,~/ WP["1|,^,~ Pv+XIMMMMNPM-@7Pm\Pm/P[#,~,> Pd,H,^,~,>p9XS-~S,> ?4x+U,[+S 4 6 : l:,/ ,^,~,~ZPv,~ZPv,X_ 6Pd VP[   VPI VPR@@Pv,~yyydc=E Ae~byyy-@` -@,~-@,~-=+k+l+lU:O \j Zi ViO@h Tk 47@PI,   +U_@f~q VP66i0vK 6K"VPd"VPm,~@@h0T-@ Pd/Pm k6:i+.,>7|+{  ,PR,^5< #76j0<K+  +PR,>aZ_bD~/567 j36 +  %:.hF. &:/pA,^/+PR#, ,^  5}PR,~76j 6:aP[,7+@PI=| ,~ |Q_U~  N?,~,:aP[,7+@PI,~ 6:aP[,7+@PI 6:aP[,7+@PI,~7  6:aP[,7+@PI,~Q:A`+8:aP[,7+@PI5V6,~[ h5]PR2|W~;,~[Q:A`5}PR,~Zh h5}PR,~  .6:aP[,7+@PI`|p+@,~@): 6p:aP[,7+@PI5ZD,~@):1\+OO!E~~J0<0|+M0| 0<+O 6:aP[,7+@PI 6p:aP[,7+@PI5ZH,~ 6,[ 6:aP[,7+@PI,~#  6:aP[,7+@PI Wa(~Y+\ 6+[7  64:U&:X4Z^Q\x,\[x0|7p  6p:aP[,7+@PI,~ :aP[,7+@PI,~,>,x,^ 6:aP[,7+@PI(f*^~h 6:aP[,7+@PI+y,>[,Z,^ 6:aP[,7+@PI 6:aP[,7+@PIZ+Z,>_,Z,^ 6:aP[,7+@PI 6:aP[,7|8:>5~w+@PI^+Z[  ! 6X:aP[,7+@PI`|p+y,~[Q:A`5}PR,~7 6+@,>,>,>,>,>,> V, ,^&$VP[~,^,^,^,^,^,~6"+ 6:aP[,7+@PI"6`+@d3" !+)2" "917 + #3" "+ %,G/*@d)r). ?3|)~,[ 6:aP[,7+@PI #!*( 36\h"i %"$*3$+$"d&2d9$<\ ' 6:aP[,7+@PI1H( =h5|',~?':1~$ 6:aP[,7+@PI=|',~ 67  6+ 5B1 6:aP[,7+@PI 6:aP[,7+@PI 6:aP[,7+@PI6\h"i=|',~ *4H5"I1}m 6~3$ "2"I9 2+9$ D"I"3"I9 5,>,> )@"*!<G\, 6":aP[,7+@PI,^:aP[,7+@PI,^0:2+[d~y[~B&: 6h:aP[,7+@PI 6p:aP[,7+@PI,~ *3"(H=jG,~ 0!!y"_ #SD$85%B & 4-@7O,> 4,Q,^,~riJ~Q  * <1: <` ++ 216+ 3:aP[,7+@PI+T+Z,>+Z+Y+Y`z@+ 5: 8,[ 6:aP[,7+@PI: 9,[ 6:aP[ZC._7~`,7+@PI: 9,[ 6:aP[,7+@PI: :,[,^,~ 8x. :,i,X/ :,~< ;.<6 \`< ; \`< < \`7\+ <`Zm<d<Ptpg#~o \` :h(Z&: Z` :p&: Z` \`O@`,~ `,^ 6:aP[,7+@PI `,^ 6:aP[,7+@PI `/:6+^ `/:6,^ `s%B ~~,^ `+^,C 6:aP[,7+@PI,P 6:aP[,7+@PI,z 6:aP[,7+@PI+ ,t 6:aP[,7+@PI `,^ 6:aP[,7+@PI5UaN~ `,^ 6:aP[,7+@PI `+^,+?,+<,C 6:aP[,7+@PI,O 6:aP[,7+@PI,[ 6:aP[,7+@PI `,^ `qR ~+^,X 6:aP[,7+@PI 6:aP[,7+@PI,C 6:aP[,7+@PI,P 6:aP[,7+@PI `/:6,^ 6:aP[,7+@PI `,^ 6 F+~+:aP[,7+@PI `,^ 6:aP[,7+@PI `,^+?,I 6:aP[,7+@PI,M 6:aP[,7+@PI,[ 6:aP[,7+@PI `,^ 6.%}`F~::aP[,7+@PI `,^ 6:aP[,7+@PI+A 6:aP[,7+@PI7Z+ =7 `  +5 `0:+^ 6:aP[,7+@PI 6h:aP[,7+@PIX/ne5~I,~ `0:+^ 6h:aP[,7+@PI,~ ` h+5 ` h+5 ` hQ:A`:aP[,7+@PI:aP[,7+@PI:aP[,7+@PI[in)~X,~7 >  ?7:`,f +5 `&:2,>,^,^&: 6h:aP[,7+@PI 6p:aP[,7+@PI,~,>,3B *-@ ,^,~,hm!aP~g&: :p,~,> ` `.X6 `/<6`\+m06.: 6w(V$<6. 6\V Xu]V\V ,^,~x ?H q >d~~vH H  @ A B0 C@ DP E` Fp GH H H H H H H H H H H H H 8 H@ I( J( K L LE:Xz~ M0 MH N8 O@ P@ Q R S S T T U U V V W W X0 X8 YH Z@ [0 \@ ]0 ^0 _ ` a a*$uf~ b b c c d` dO,~,>,>,>7 gD$(&$ $D $D $*j @F,^,^,^,~,>,>@3;XU~#,>Z(D&$,>&$,>!*~+(D,^&$ $D $D $*j'+,,> "B,^+"#8(~X2-<KZjy'Ai@Ax|||{pv(4t2dhXx# h/x3 4  q,;,Q,.,^h,~ q r s t u v w+>|+|+" y""*b~5B {*"4B ~,>!"O&B2D *7 I5":~ ",^,~@@ ` d,> 4 6 : ,  ,; ,D 6:aP[,7+@PI,^,~,>,>,{ B $(D D @@1Bpt9~O@,,^,^,~ |, " d,> 4 6 : ,,^ 4,7@",k,>6@",bB6@+ h +,>,>,>Uy?vb~ ,> "BM B` !BM B`  !$ BG*d%!$~ BJ*d&  6@+ [ $H/,/ & $J,/,^,^,^,^,~"z8/Q.&  B.$*f0,~v 9Sx3pgX4v /(B+M2^nx4pjh6` h &@Yux6pn`8` h +:_L;mx8pr~:)z)z" ."&"+M!.x,@*n>,~7@8#,~ 83 BI@@a@@b" "S` !6B8+,+G@@a@@b+P+ + + AsI8~I+ =pI+ + + + + /(B.BaBMBb*lD,R7@"+u,~7"ahBM Ba` B8;7"bh` 8;3"*oo~X@b B8K, B8C` B8k7B8;+^ 8S`N; B8[` B8c,~,k!.x6@8#,u*nc,~   $,;-H~g ;x,56B , %  /,; : ,5,~  1,;,c 6,f,.,e,.  3,; ",[  4,; !,[  J,;,~,7@8;ZUlm:~v+ M  P,;^6":,l 8c,,t  P,;^6":,l 8k,,t`N6@#+ Q,.,~ "8^6,k ,[,t 6:aP[O6Z~,7+@PI6D8S+ a 6:aP[,7+@PI7B8#  h^6v,k ,;,t,~7d,~(. imb+"+"W B 2mo(B,~h6 i+X. 3 %x-,p9~@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9 W%~(@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9@9IW$(7@9@9@9@9* V** V*- Vdwx=pq~@=Z1: +h?+999999999999999999999U8&:xIp~~pI:+hJ9999999999999999"k+)xJRpfHR77+. j1v/ j W+V? AxJUpkU < k: k.0:+Yz l+ :&| kX6_ W+btx\p~H\  %8.`v<.p&:X6hd6p/pb W+~FTbp}dEdSdadod}d>L=mxhp~h < pX7X9,p Xp+%8`z~.`v%6`x~.Xv/,~ttt D& C`wnthtbt\t=Hxyp1~y 6 l4V m0v+ ,>: n /:&:X0vp+ ,>#&8X.8p: h.:p&:`4| o$,>!${   C .$*d ,^,^,~ s0& %+ , 4)[ v ,> ,> +  9,^ 9,^ :,~X#fW@~ X%. z Xx 8|Q8*8* z7*( ;."( {7( ?.$/&(.*'}&& 9( F \+ (]( R ([( _)[( k(Z Z :Q:.$*:4H 9G9"\~ ."   CABFGZ9 9(]( R+ #(]( R ([( _)[( k0H &.(  ( x  { 0Q0Q (  4Q4a  |  |.$"&!&5(<7.F>~ ,= ( xXJ v"*/nXJ wXB xXD w.$"&!&5( v> w= x  + )Z0(Z Z.$)[ * (] 6)[ CD: Z 8Q8|*8/ z2s:I~ ;,~@@   ! ! ! " !  !g>M]~ J ! " ! !  ! " ! ! !  "    /dD9~ Y  |||||xxxxxuuuuuqqqx"9 ~ hqqnnnnn   eoM~ w)Z)Z)Z )Z)Z)Z)Z)Z)Z )Z)Z)Z)Z)Z)Z )Z )Z)Z)Z)Z)Z)Z )Z)Z)Z)Z)Z)ZpT~ )Z )Z)Z)Z)Z)Z)Z )Z )Z)Z)Z)Z)Z)Z )Z)Z)Z)Z)Z)Z )Z)Z @ ir0"~ @@ @@@ @@@@ 7 6 6 6 6 4 6 6 6 7 4 6 6n bf~ $ 7 4 4 6 7 4 4 4 7 4 4 4   hE+u<~ 3     dI\W~ B       0f+ TamX!~ QZ=f P,~,> },^ Y,~,>5$ W/ }+ XZ`d = V&&ab + s,> *xQ*. ~**x (Z.".$ + 1Q*aQ0QFq0j[~ `"2 ~ 2OQ2MP",OnQ,MP  {    8f 6Q6}*6/ + x (Z.".$ =X\ o =X\ q"< ~ 8,^ ,~,>5$ / 8+ Z`d = & 9ab + 1,> *xQ*. 9aBDp~ **x (Z// + 1Q*aQ0Q2 : 2OQ2MP",OnQ,MP  :  ;  ;8f 6Q6}*6/ <+ 6 (Z//< ,>,>    bF+ ,^,^,^,~H kHH3012345678901234tRnJ~ m5678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 This will have to be a very long s7DWTC~ |tring, for purposes of testing the string copying routines. Goal is to first find out if the damn thing actually works, and at what string size itH'f becomes faster to use FSCOPY instead of plain old byte copying. dum te dum...*f'~S q T  aFGGHH p  R  a\*7  |, "Id,> 4 6 :J,+i~b,^ 4 N,;,c 6,f,.,e,.,.,m,m,6,> 4,. P,;,.,^h+@@ T,;!&}*F} F SpF=l~q7DS+o B D!*}  h B i!(}  i D j  j D k!0}X h,/0*px` j` k*hw` i*jt *fp7@ +V,. Z,;  Y@c~,[ \,;,.,~ \ B ]*"RO@  i  j &@, B D F  i  k &@,/$ +, `,; ,j,2 5E1.~,j b,; ,j,2 ,j,.,%+b,~7@ ,d:@,~: ,>,> "@  f,; U,; h,;Z,Z j\Hr& ~,;Z,Z l,; ,[ 6:aP[,7+@PI,.,^,^,~,>,>,>!&~`  3D"D$2B++*f':~,^,^,^+T~-,~,>,>  h."&" m,; n6|,PR o,; p6|,PR,^,^,~ " $2O@" s,; ,[ v,; ,[*&T/~< y,;,.,>,>,@,@,u,^!,^",,.7@],h!(}7@],y },;  U,; ~,;,RaH+,o*hD,>_VzHK 4 ,;,.,^,U,~~  3x%0 #Px5,N,p:xUp +~N  i  j r+!,> PBM BQ QBM BR .  SXBP!*A "(&" &$.P,>,t,@ x 8c B( rd18b~]BM B( Q.Br,@,^ 8c( 1"@R B(_,> 4 6:aP[,7+@PI,^*jX,^,~6@],~ n,;,.,. 6:aP[AKDp~l,7+@PI,~:b,>6@]+u,.,. n,;!"},e*bs j,;,.!*s@@(9@@(*@@(*jv!*}7@],l!(}@@ 7@@ '@@ 3uJ~{*hz!(}7@],o@@6@@'@@!&} .($...$... ,h,> $ $$.$B6B7B9 8_B'B'B* 8 BBB,^HFZx8~ 7@],q*f 6 '" $ 7@],}*h|7@],@@6@@'@@!&} 7" '$ 7@], B6D'*f 6" '$ 7@] 0 /k~,*jx7@],$!&}@@7@@'@@*f!(}@@6@@'@@7@],&!&} . $... 89" 8*$ 7@],'B7D'B6D'*f!- T n~( 6" '$ 7@],4*h7@],?@@6@@'@@!&} 7" '$ 7@],@B6D'*f/ 6" '$ 7@],M!.A@F6T%2%~7@  8_ 8_88 ,hB6*n8 6XX X,^ B  F  J ,. Y,;  U,; \,;,.,2^6":,l Yz?~F,,t ^,;,.,2^6":,l ,,t `,;,.,2^6":,l ,,taH,g`H,k,.,.,.,~4 T_q~U w,;!*} e,;^6},k (U,;,t^6,k (Z,[,t^6":,l (,,t^6":,l (,,t^6":,l&]_l~d (,,t x,;,.*jW,~ 8\8 8_881"@,~,>@*"1B+y!"}6@X,X*bp,^,~"z 5:T3~s$z & Fr  h0Bb F i  i0Dd F j,~,>,>,>,>   h  i  h, ,^,^,^,^,~,~4FW,>,>&}D@0,>,>H=f,^,^,^,^,~C<~F@BPKLHEAKNEW20XMIString-move timing test of XKSMOVE donePOVerifying routine correctness...P doneN r'~U.0T U,;,.,~ --- VERIFY DONE - X errors ---XZxxxxxb0Result-AC difference: Std: `] Test: @a,,-+i( ~d,.,~Arrgh! Routine xe, Src offset hg, Dst offset hi, Length HkGood: 0lHBad: 0nH3Starting timing test, :"inv~s0p timechecks per exper, 8s executions per check.0v 6:aP[,7+@PI,~Routine @|: }4\;p ~*" *"X+IdkR\~End of timing testsFSCOPY Routine SAMPLE Dest 0 Dest 1 Dest 2 Dest 3 Dest 4 Src 0 Src 1 Src 2 Src 3 Src 4 (this `CBzw~>is "Grand Average") Each entry has 6 lines: length offset 0: , ; is time per char, in usec. 1: , ; is }^z~Mbreak-even point in chars. 2: , ; For string lengths above , 3: , ; the routine will be faster than 4: , ; standard BP loop. AVG of all loffs: , Dest Hc d d,;Z,Z e,;,~ Avg doffsPiSourc14H~ke offset pj l,;Z,Z,.,~ n,;,~ 6:aP[,7+@PI^6":,l ,,t 6:aP[,7+@PI^6":,l 8_zu~4~z,,t 6>:aP[,7+@PI,~ 6:aP[,7+@PI^6":,l ,,t 6:aP[,7+@PI^6":,l ,,t,.,~ n /4U~ ,;,~ 6:aP[,7+@PI^6":,l ,,t 6:aP[,7+@PI^6":,l ,,t 6>:aP[,7+@PI,~ 6:aP[,7>x[N:~+@PI^6":,l ,,t 6:aP[,7+@PI^6":,l ,,t,.,.,~Avgs all soffsp" #,;,.,~ n,;KHm2G~',~ 6:aP[,7+@PI^6":,l ,,t 6:aP[,7+@PI^6":,l ,,t 6>:aP[,7+@PI,~ 6:aP[,7+@PIK_=r~6^6":,l ,,t 6:aP[,7+@PI^6":,l ,,t,.,~ n,;,~ 6:aP[,7+@PI^6":,l ,Ez]G~E,t 6:aP[,7+@PI^6":,l ,,t 6>:aP[,7+@PI,~ 6:aP[,7+@PI^6":,l ,,t 6:aP[,7+@PIf$<[O~T^6":,l ,,t,.,~! Routine @X: Avg over all configs0Z usec/charP] usec setup time^ chars avg test strix%3f~cng length (No breakeven point!)a f,;,~ chars breakeven point0h k,;,~Summary of all versions: (time in usec) Routine(~pre # wds Setup time time/char Breakeven point  m chars0w,^,~6$$$Est+]HPUS8xxC$g6~i "IWNh 'W0\|v3pSHZpu]<cpSC"'@U!WUQVNUkqW7)?]Uk%`Ukk-UkpUk$hUkIRUkwUkmDW-P&2V@dU~xUDxc@74A{b+ F}aIW-QutKW--RK_"7R}9[}d}pGm}% v}~?UB?UO @ P@ d@ j@(8xHFNHFNI@ }8uFKFK @ "8v(%FL('FL(@ x)@f*FN1@ k4FM 6}wy7}wh7}wh9v]":v.&=v+8>v,H?v.h?v-+?v+=?v+*Av,GB}wlB}wmCvU E4H)"I5M;M8M@@MfTM9@N+pPu^6IRu^6ASu^6BUw-qYnYwE1xZn1AxZw'`[np[w'`\w'`_w'`cj?dilWMew-KXf~m,h2xi2i~m#j'j&kw-yykw-yylw-yzlw-@tw-z{w-qw-rw-rw- wE |@v~e| w&R,w+eX.w(@.wH2P2wG@3wT `5wST@6wSH8w@U 9wH= ;wEr=wD ?wDH@wZDw`HwMw0Ow<fRw=PUw<LYwy WP WneW7(1GRM^] W7)8VLN&`U}.BSWP7 ^WPGBW74'RWTy  GTtSaFW7(,U,h WPFO*W7)GWTyWuU}-;$|U-60W@>y W7)>VIs0@WTvU}-fc=1U.@VLN `UfU}-;tVH%'9WTyW@>yWTx!VlWP*8VU}.+|nWP7 WP=JyU}.wWTvlHX"WTu`U}.(N/xU}.#W@>vL>LU}.t,lj$PU\{fv vU0U]R w#@Ujn% U^ 0wqPzbR]lW@>yT8bx!wsJW@>vl U> % >UV`K RH|f~U]@.RH|A>U]d.w|<R\|RH|0S{Ic J nP Gc@ h0h0 C- C,;!(a!!RE"u^O["u^$w#N1g#N0rI+N0rN3N0Ah;N0Q|CN1AjKN0LeSN0M"[N17QcN0TIkYhdsM^#"xM]Mg{YhigYh|I .&MQhMOU/MO[40mq&`3mq4iJq<6iJq8WEI`:K&,:eJj~>eJhz@HMLeDQ.NFQtF)84G)8;H^|pI^|;I)^J)^L>U.GMnJ}GPL(RL(^8j6`=%r`lGa*Ga*|bO1X bO1[ecYi:e kL(xuRH|[L(x TvC@ TvC|TvDYiBxcV'4]bE4]c3:J@{`I?"]ckT9 g`p=@1"? OJI} "J}I;`R}I?U}I?YzY(\yt_b74ez!`hyt_lvE$p{b+ vP @yP 8 P t P  V;G pWP3 ` ^V`  hV`p hV`mH iV`= iV`| jV`> jV` kV`A kV`AV`B3RH}qV`GSl;Sk_gUkBIXkSxZW$M@]Naz]kA1mnK)HonK)IpnK)ItnK)JwnK)JxnJw@}e:=2e:=& e:='5a:HMD%HME'HMF+5t_-SMhG6\FD\FJWPGD~N>$2N>#MP"Q,jP6jQ"RNQ7NRlGRlXc)Azh_3 n^],nc* odWudWvd5xdzd6|d6dd}d~d~!d/d 8W%UW% W61$lhREg[mV` xrMf0isMf[th/PyMfyMe$:eR:eQ9M^RH M^RP mpx Yi< k{^k{^k{elvVE?dnKOd5i5j5j5;@]m > a$ >' _>=@Opa$\P  P=@Ycd<cf;<chad2<'d4K<'d6q*l)o<6l,<7l.A9RH|] RH| @@RH|BxRH|B@RH|{W+J[X!W))y !@RH|{@W&tc?` W&SI?qRH|?@W1W{X@W/2I2 RH|AX@W/mKXa@RH|J.~WCJk@U}/rG  g^z RI+5` U}/5V@RN[!@@]BV@Zo_@ OJ#@_qB]B$BRF|w` C8)`RP\ ADRPR` 47 WL: U4Qx+RD8];+2+YKt+ RD85@,U5<,~U5,~--,mgp>QF9+]