From e74ff6a5a4caa5f3c32d25c7c44ed96058e48d67 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sat, 11 Feb 2006 07:06:35 +0000 Subject: [PATCH] committed OP_FLOAT_CMP --- amxmodx/JIT/amxexecn.o | Bin 12672 -> 12800 bytes amxmodx/JIT/amxexecn.obj | Bin 12282 -> 12426 bytes amxmodx/JIT/amxjitsn.o | Bin 40592 -> 40944 bytes amxmodx/JIT/amxjitsn.obj | Bin 42614 -> 43004 bytes amxmodx/amx.cpp | 53 +++++++++++++++++++++++++++++---------- amxmodx/amxexecn.asm | 21 +++++++++++++++- amxmodx/amxjitsn.asm | 22 +++++++++++++++- amxmodx/optimizer.cpp | 5 +++- amxmodx/optimizer.h | 4 ++- 9 files changed, 88 insertions(+), 17 deletions(-) diff --git a/amxmodx/JIT/amxexecn.o b/amxmodx/JIT/amxexecn.o index a0e949ee321dfdc8ed55279204069ad180d4793f..fbfe37b8b9356578018c226612b5ec89496d50cf 100755 GIT binary patch delta 1209 zcmY*YYe*DP6ux(N#(k*VElefc@G-54E=5+f8HA-pwU*TqS%#URRI5lCMNiocYMHW@ zTR(aiBt-;8^Q#~zXe~5J5`QE_{;DLRBqYRY`tI!N&R#fkzVCeZ+%t2|ozAAtJr|Et zJ$j-@ew<0ju4s3W#pR0jdgy}aSh2U$MM(Y(LedB!nUoL-9w9OhW`#|y+XaL?;MKH9 zuJs~=w*s{To#mG)FPoW8NJW(*9kBb}u#g0%N;chtke!9coo4Y14_F?0mx)-wNa$su zGO&o0gM@%caHojO$-UO*rS}}>Q?7s+B{r!Wq`{GJkDU(G#mk*c+1Rf2S=Z5w2^+Hg zIQ)Wa=LPbdhIa_4LB*xE=J|q(#Li{g3DG@jo)YenBK7P~cvOl^MluxIcYf~+W6OnW z$Prsu_@$&S63>bbC5wd~iNiaTTo&#IisUJDk{_0fwU|7cx^AGeIP&*j-Q)PqPIvJi zX@%MQ6Txxa6NyCzO5O`;t5$4#LYo>ff@CkZ2xfF;Z5)Xnqh%Ffk(jkjs;LNyo|Os} z9|EqS}9`FgDwZFncD72*`90VigP>5LQrj!Fi_uDcIFj7@7zi6^KZ`jS?euO0!ltc zr1}-~Soe&c;q~b&=o)@Ky?-v6{Gp23VbbvEr;(eiO3uRVWgF#O;rz0=)>=zOA$99O zx_B5~HE>Vhn2%t!|Gr`*fH2s{*mQVpZ1S!cAff(fY=;gluQ8s zGI0lf1}|(%&jDUy;)TF|6E6kcZQ_f8kC^yM;I1TJNoqmvCIe&#@G}!{0Uj{%1Hhk6 z{3xdd^XG;U5e*W{MJz-G&x=!oUlm-dE*NtLLwZPBTTz#r zxN%rd6}F|j>l4;r`c-2J;daL)Pt`M&e*e&;NGJw1}U zgIDvD9#gInq5k|!k714G=e-!^iygs!0U@*xAv0_aj1YmHOPw%{Fe{_qjZlGIz#h}@ z076!l0EB`FrC9;9z@{CcNViDFt>Mo!^BtH>EUFhIE6skbGiO-T@FuvQYf&v>o@PwI zBytcEqC8>8rZ?AZENHwLN^`MVVjP%OVnFUA-`28oR=jkjRBo^?@S?I{yo4Rg7Rc^_ z!>4~(nA_A6dIf?U7X>-d9FB{GKHdgF^~%j+c8*9fx|iJ`(yrtX@xs)t87*Ww1tILY zspBY*quEbHKFQZeN_5i9Ft3mjn`m}W`Cw|p!UVJw&ieaL_1d=R{ZY1UZadIj7XPST zX;xbDEpw|&>9D-RBd4MFwJ!{CrnRH3gm`nIS59EktT9P?BXQm=!d>_Ra2IK22kuN- zskuLa*W6Wh#^xJ-%e87JUvQ??c~U~)hsUwayqY-z;7!{f1bb*T?2;C;W%F zR=r^du-;0zYS155G%(RVM7KbclLT%uyiOlJV^j94_#WG|$6O+JqGBuDjoc%Ocvtmq zTw}3@v$&N#ZCF%tj#k`Mey1wzDqpl+RjIPr=rQ2;tVj$4>zs)$#LyCu{sT>I1@R0vZDRTE}ky{;1;# zcFx`9ngE6WJNXch0X^VcDY%Pv#sWF!54QU?Pk|M~!>A0NgW(FC<(;<+8 CSLwF^ diff --git a/amxmodx/JIT/amxexecn.obj b/amxmodx/JIT/amxexecn.obj index ec565eb52fbc93395ec6f2c6d794cd8f8c035b02..9d3e301055ec2b2d5fbd6a9cc9ae2c5fee7ebad0 100755 GIT binary patch delta 1189 zcmY+DUr19?9LLYy&UJTl^R8Mta-!vJB5DzawMNR)igf0xkrm3E^AFWpwI)WgJp@AcsURrGib#?~Dtl66EPv*X57+VNG>9Iy4B0;PW*vZ6^}# z1C`4`bT$Y$%sHO(Q4E%db+R20$Hx{8+2UuyF?XxBQ07eqyx^miV8w9(1bAsckxJwZ zy#GpE`(kL-G-pLkQeuyBNYE z?0|*_1w3^4kpo`*$Sd#^gMwK+W=nxf`5ei?t4pr}haejtdyK`6^y!QU7Ct&oGe-m~ zAG<{wv5nN>719~JiZNfyp@r~|KeAmv&tDiOH`q1#N0;EDY>!XGr^;VbX}|QIy~hOn z(DF$Z7%f6308bU8^X=bAZ=C!Rbl6#PV&(rs?KColS-Azg09>@qs^}K zj9RHW57VoqI^$qv*BPU#QYQgc`2;hQ-a|~K^^vn&b%l#E<%FxjYX0wTSGilYNt3WLa0v} z_;hASC!h_0PG=C1S|GzJ;s$b4MOuM8P>}$TDTVmL-I2a<2z?^XvcgThzMi1J_Y|V- mhCiR02!$ZRrXuH5WJu~SThJMyBRkwJF0Ze?*+Y)3zx)qidI0GF delta 1054 zcmY+DT}TvB6vyvf@4B;o&01TE8kvo|ELjqPv{{H{LAKf|k`&51s7bL&En7qonj6$M zg~}!0qM#Q8>A`vODPN2b4KbvJDC#BbLsBS%q^AGf)mi7l%$)Q4pL@=oGiUCpe?qwd zY9rI*-;Y(f3E487Ti{P*6VgQpIh=zV7R6Ocf*t$1)Tjzu=wbzJgq%RkNM6bx8gB2a z_?AUTb)CW@lK+)F@E)GV9EJx-l4Gwe;v|>o*xs#zwInx8%L8_JaaMp0En>r}bF;YU zkr9|h>rpmQi0#E9Fwt9MG-htf#Bp>_$3*m-G>tz~F zAhw1T_Ta*#9}jtO6uK5xT-v3QB)I>>!86$|76s?c%!|vNt%`I}rBIHw>Q`79bzRF8 zS=sNuhR3-i-|pd0?Pc5R*5NP16Q7FD`R0XGslT(2)6PR|^XpUyFZu3eDNA$`jd8<^ zPi6G7hU&2B3==Aj33XN;Sj~XCkXAp#Ppb*O?C`121vA_BM0m+MBPnaW&Ruw$>s%MA zS?3}=-xOU)ouSR5HS!zMfjvcnnV&NUUc*MXfq6-%TCwqjbWUCZME}uy|Dt^75wCT& z(_8$pvu&Fqloq8_D^aw7qR=(N^QD8kvTA544`$8kb=f|eZ(#HcaZ5f8L)J%gcH8I# zpUErU;Q~Ywl1VVy>sH~0rGL$f+4)0vm0ip;<#XDT{xmmPeqa_~Pix#)oa diff --git a/amxmodx/JIT/amxjitsn.o b/amxmodx/JIT/amxjitsn.o index 701585c0aa74349484246380106150cb2d1bb0cf..8090ed547202b0637c5936be21b54b8df4b4746c 100755 GIT binary patch delta 11185 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 delta 10827 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 Z9Em(@ldPJ3TBSn6o^~QU|3cvT23Qo9qU+G zTH49(mR4Av3DeR#)}gYFmZ!+HtgJk0sb$Uk{Pvpttl1&p``7#VydU_u#_xXCv({c~ z-}hcK`W#+Z}F3g}~uA@vh8CQtIjM1*-VBf>pXBl@h)Jl8Nh@m)P*dbs}` z+)bu}+skLr7w+>@@&D>Xd~9o1aA{Xhbf2IDkat}k z-PIl4$8&4n$X`4YA|g-B@HjhnddJn%6EaF0z{ev0ck}mk(wu3I>u=aHdD6s;z&?2r zBl^}H?CPuNaL!O9-gc)j}i1+&>ul_B0{%e8KGBS`aZ6i z-PLe)@Dz1*#~Nnc-?ww`NK5k+^>F_$@`O97Z?-2P#GMrG-YrvM?$}KC#H{Sd*`YOC zBd)(;nqx~{Flze#Uv(YjzpbNg3ccg#mby@xcvU98shJ&O%=vLkovfkn*Nln^bsilR z6;j!;cHoGSKUW^uGAb?9xp!2Wsr&`XCtKVf4}J5&>W-a$aLqpU`xg9HdF=O2AG(5r zzKh?obm>yh1+}w6YTgcU_x211p-VqvS=0{eSUb8`+U9TD9eEE*szJdk7~AtW~17g+Y(W1u@v){*>XdgC&{QSc`tO~JFd>7VvoDp*ZdH=_m}M8 z(v!aZb=RO(TiQ0}wvGA!n~nKQY|*mobuca@^(PG?T}c{28b`_?$=N{FS5ESfK5u8` z9wZ$m{YvtY+T-x1>N}g%mo%6(nv_NIM2D=7#Js(i;$x#6a^0h9wuBy8GwOUfdvvdf zf#kc`b654GVP}bXl9)4FHvio+*NAyu%jO!(yiUx|w`~5Kn7to~sS`e=ts#GItFLE? zocBUHqPd=sg>s@>9TtSTJL6;H8UA8Ty2xVvtp-I&q3fiOHLoUx{L96h*Xo zS>l~6UOAyQUvF@b^zu$|FKp3m)*O7MxL+3cdT}?qExNfa?iF)m%Vuti-LcJkyWyjS znz=2?uHyYm%VxDLI>cmcAE($BE3o;wLu7r|91p4*;Jqi%-(-98^%Vc2kX|*%LtK&G zO=9lc+(K678K~X6|1@eb%4L-4T~{ zRsFnQi`i;;(-j&OCR^V{-fq~dHe!c4b*tUSYmT==Wmk!-h03rg2Uqp?P7zzPyD6?6 zJ+Tqkj;k*AE)XYHT{E*i6p0zPNAsQ)U$f2g1i7!>35WM1v7y7KuFg89slNEc+iYLl zQRqtux_k)^WzE}ahmDX1_V*@<4K<#6&h9PlprGH(1ETL@?`-i}ooTYIx*NO?wQP9P z`??r#{5I#-q=x&vpGm&89Gc|U&N}Jt;PtiYIY;*LLAV|AUXG9Eca^k_vc;LT?mdw$ zg$kt5bSY#V0Gn)iuy5<&-%?lKFaD+Cms^)po;cw5AAJVP9JWb`H(M>Cjwge?2gTX! z0`YXfy_mNL+S-EW9C&2TV_@@+7H^N{+Uh<$?``Q?!2GsJAI)h6?z+1Fs7VNl=< zpO!kTwbx`z`qsY{sS0Xi!b8m_|6kN#pLIy!tox(s8?o`6dZX-A-+h7fvV{s}v{u2w zRw{V1#R^6?wAz9LtyR!k3nFn|ZGIV`1@l|!LUC&q+}TP6&$L#-U9D7bu(b+mTB%?V zcEc8z!QxgbC~K{PC9PEOLTeS=(@F)0TC1Q|D)9EgjZpIkhcx#GA2nusN4IJ^knPQB z)pR^tE}NFZ=UpP^W>3esY!c^d;;d`gxz}{=6X)KRod-#<$lh?Wfva%NA4$D1TZYi>-rn_D(~D2+QPGyG1B&E73;GjE%*b(q&F=bwcF z=i#G;0_NSY6!6A~vDr<2b7T1C0}*F*5ZtI;N#__eapS}RG)6iS(VDTC{eQ(rzs*3bJ@ipgqSBF<)S zX~uY;Z!v$Y%yE~@@e}b`TV#_~`uK>beNUK!@zH|W+|IoN#AKbBnrt4vkdEH*;%K(* z@!sMV^T$ium%-w_Pkha{{T}NmvRTY;v~2c>*}G3n&9}X)JPKXi10#~&Gw{*;+EurB zzMhM5LNV{~Vx-L2(<-ynDpM_GW}Q}d+!e{(q#8FS5|PO)IZo;FIG7V$?`navR{2bYWzlQ&945} z)#_h`E}D-W{=8aHvt9CD)4Qeq?;aPjD><~-*xe^0%bVM(b(UqVZPhx?veva~oncwO z5-V=@PrZmf8yDhlXcu&U<2B9siVgSvhj-s*cw&vzA^XxjlR|6u25;WmE_CPI9l;oS z-(6~;o^c_&Pkx48Pr1Q8Fk<(>h#Tr;znJF8zF`agxBdAr<&zKdf1l5dW9P$2MM$%d zWX$0T{4d|Acn+x%=@?Qs=;27CkgAZLLV6l$ESfKWgOH{m$=zT${P9TDNNbTcK-+_~ z3mk$nLy)E+Ek=^v>1!kzCHoQS0$jW%Bi)WP2GfN|&x3a(oq>zIAxKk^YLVVR+J&A@ z!8QG@NGp&wAvGd};397%QW4U_Nbe#252+_sNg`4W(hEqRAsM(ni$l5z=>?>NNQ1E1 zmLa`>bO>oEcDqWX^+-pNuErhRETmVFjw79qYy7cDGm-8^dL3y$Qg>YcUx_ps={BTQ zNdH1Qj?^2M$$vq*0qJ(6l}PnS`;gk>y73aEbfkGmk0WhCI*QaES6Aba%8`~MZASVI z>1?=cNS$zox*TZ&(v3*Vk={c32I)K;xl@p8 zkTxUr$D!{C{*S@`*CUl7Eks(5B&rTj}#qTS|JIw3fb?scj>@$J~#p?InFfI!OA16oP$CwX~~@{6p_x^dVhD zx{5Rsq)H@GOC#lxWDi!pIn?Hn{ziI`zGtbuNZLYrhrT`3z9bzXouDrivsXQmZ$>D( zkklW9e^{5psEs5|Afrjvsz)6`%GZlpACmqR^Dz3Nn43Y$W^N9(n@BYzH+}a~dz7?}^a_1mYTHP= zNng#tmxUjemZ(j3x!`W~S6FzGqc zdiu6g`;^qk+@Gig;d?%+A00ue%{{4IN*cu6(bSSjnarI*t(tT@bC*zCMfwMG*HL?! zByUDh?R$^DFR2|NonUULd`rn(Gv|`}f>htGpcX}nWA63TN=Z)U&Y`x1w2ZlrPh0SP+LHHfV6_X zb=2M@ZD;NtYCn>WGWR64cKB|a>RV6Jd89$4t3axK@zkb}rZd+`?M~8S(xap`AXVQ6 zYTHTglNw21gH(whsRiMic&hasNxexIf>enssEsAXlctcSgH(wMYBeM`>0#1iAXVZ; zYFkO~lJ=1Hf>epa)Y{`4gsLB1NavF-2B{KPQ5#1}BuyjbgH#C@wYx~Qq?M#6K&r&c z)V7n}CpD732B{LiQ0s(mKB|6nCtXCk6r@UALv1`Mm6S^=1gR3$)I6knNvlaufm8|k z2EA&_4$_CDeWdR|s>BIuUGPm!RrXAf%DsTv5YlkwMpK(ex}Lc=QmY`%CoQ7yergYq zo+Z6R-y77nl0G5rq3>I2Kavc5(^U1X14#9)2ep2r0nELMS}bV-b2F%Ak%~zb^v$Mr zJ83ED0s0=Jww|<+xo=V1LHeAukG{jyPLR6bd$j(w3Q|2km)bzmmCPMQEs2!D+-cM* zNVAxG2eo@ie`oG0YA=!Mn7f(UN2J}%-B0Zp>38OKz&Cc=Idfy}*@S_)|* zb7xSiCf&~5d#F7|dXl+y)ZQgEF!xJpM@T1_+YR3pS8YCv6hXQSr1};`Z5%0!G>yIr zYV%2pn7fqPMNykXP)7Kf_byt1sL+S@oJsL>uucR2}CQ_S5 z%4cplH5chl(qj5nP4q;`VjV{TXc=0o-EERbq_ zZ)%s5hB7yX+9c9c=9W{NN4kr-4^exT^b&L5qV^xsf0_FOH6N)xe(j{%EU&W@>R`yr z!4%2+W)#UQWE9D302Ij&BNfRzUKGh|2^7h%I~B=qHWkS)F%`*ABo)a|9~H^(<`k_V z$l6sKBNa3VDq`ssG(g4yx(h$-x(g@OM z(il<krXTUa-c9LK|q^QrYC z4I}-9zVXyjNI9gL^xaHt4rvK#8GVmYTTj}^+|AV9Cw)ZPMf#3(2&8&+oLcAw>@Vp; zQh$&tF@oB)q!iLb`U00`dsb!D~NH@|qhuS>S-$)PA_Y}3~N%f?+>HCD*XQUrUN9YUgYxOOZ zbS|kcNcDFRwd+W+%uS+p1F4);Mc-}I?k24uJx<@#)Yg;UBK?cLkEnf4`ik^3={Jz- z#~Bw{{XLu1pL97$`Tj~RnlzDgJ$+@=oTP;$4}A|)dycf8xn64TklrUXlD-D1_8p=2 z8>w4A_6?+beW~>)T|>GS)XtD&QyR5Nq(V{|sGaGXPwg(!gQS(9cBXFwwYNz-nEM&E zA4o@-8+0-ILFx@^XVyG`+FwXxn43;5pH$4;Tc|B2-N)P&)E*(8S$h;$WmMP7+RWVdsC_}&&)lQb zPLR6vxB7M_NcAm}+F;Tc(m49EsZAqQkY>^6p|+ItIB6|?uTk4U`jEMwQ#(ZZg}Lo7 zvHH=O)Q8j$r200D+GtV~DT9;^QYCJrRzaFiT14LpYR{84Fn2q(Pf3l;JwWY8QqZMV zk2;cilP(1Ldqiy+i1gR3AQu~2)gw%e3)sHS9 zRpLBqgGs|k<4B1hRbnc&a#9uPE>bN>m3V~OI?^ko?WFfXs>J8i{zp1S>J(}9qdQ2I zxRBbFq!Fa?q*Rb9F`b%|G@Ilh-3wAB9;3E_^crag=|hkzv6tG{UBB132JpDFR6j_2}qULPwg1#cjk7!-0DXkQa_L? zdj+*9QXF$9Q=3XEBf03CN9|71a?+#pJwt6B=}pph`aY)iDd`~TFnuSfoiWhrWf(~H z?LulpN!Kvf2eM5M1kZFd|5oG4~p338WO}PNh~xaxr%ywZD@dVea$P>Pc@i_dnFWCH=%) zV~Ew}vq<3}wYDOujUq)cH=SBOshGL9QmZBXjk#;6y+Yc=-1n$`LE6vU6V(17^%!dP z;~bD`{UB;rl43~X>6=QejO1eO9BNBQ%b2^8+8WX;q)qhgp!NajE7G_0{X#ADN~=d_ zfK-pdsa-}I!rT$m#*-}Ed{9(Pf>f3^a^P^>3xtY@fo$R zNC!y2l8j+iiEbcuv^a|tLAs2-QPiTSB~#0!RzU4WYSq+kr?!yV-${=!_Z4dYCjCS@ zMrwbx)%sqf^FeB9452ob6wlmg)bdDGq+97*LTwf4AIx1x?Pbz7(tGrMN^L*sd*&Xe z_6N20!`U~|`5=GasEsAXGxvIGr6ebF@1(Yz^eA&*q_&0h4s&-?`=0ba=4M@^+SkFD zN}5i}Cl!)PNEIX(shTv0G?%o1w1~8rw3M`rv>c?i_7$X6q&1|qq-RO%NE=9Xq)nuH z(pJ)T(hgDsX(wqHX%DH9w2yRvbdYq2bd+?QbdqF@u$DmxDU{Te)Pod83Mcg;^(94+ z29O4lhLDDlMvz96#*ku2@uWmjDk+ncMVd;QPRb`0l1fMwBp0cgG>0^ow1BjTw3xJ% zw2ZWzw1TvXw1%{n^ekx|X#=T_w24$t+Dh6^+Cgd{?Ii6Y?IAUi_K^;d4w4R$j*^a( zPLhm~-2O|leG>kNYG@3Mq6hn$9C6ZD}nWQYzRMK=( zKBoZ~E2dSGPZAV|SM61(^umFfSqq8iJj zoG*iec3~b8%UJ&n&dGI_msGh#k@o-xn^|&pkUy=Qi7A)~XfUY?|e@@>eKQ zmsXN6B@NJu15+JrN(H7m+LU>i3biTsVycr(c^p%nZOV(7>S9ysG1b+kypO3KHs!yV zlHTeT9>mmHHsvIy&bBGtuyDd`%6U+F+LTBrvW9fc!=d!DDREH3ZAuoD-Zo_>6nqUP zpdNWsGrpJ*pxg;X*14Y7{ZQ=d;vZ1#OZ8PK_N5`egfzwk*0Wobxt4-0)8T|5e`;Qi z+#IL1_4*ZwuI((CX`lN6+uR-b1-Vr-1J{ltuShn8fc7|MRGM4AUe1off*kSaCFUqB zxmgqpqFe28x^5JuZ=hn<9HEsNB{?(E4LooSSYn6KLOdJ_P)i#ADvLzT)Jjf?xwmCek^HkzYN|~+AIfx_G5|`xO}Pq6p-s6CN{LMw4@J7G zw}gpMOE%q+_L^VZ@(Df@m}3PtayjzWjI6!jK`bvi>T*L$TSuUtA1 zun#)0ZHUqX$={wrwN?Yyvcu^@7XsI^+ByQ(az#~cNl~7&udb&o$5k||z^T_VvW#2M zX1$gjC^ajm(y7<7!)0y=@+c-?iAiYGVKzm6cRRwStb`(e*hI`dPrVP_uDk+IjNhY< zv|FK6*%bLz?wvNJ5sDn|q-Is>5R{i~N-#3swJB#PtJxNX=i)yMjRYwDp~z7i)%j~4 z3MJE~NSM_rHf21Nc{XJ-l)G$70hH%$N+pyHREixX&PR(e5^@Vi>+2Ss8LXk{=I3Aw8k`K7ePD$q(C6bZAdl}soS%Rno+P$aaj zQc_YKi3u@TW{d-+U@s`juSUcIdSp*2M=6Pc5a@B_%B7XAc{ZjbMuJurU`oR0YGnzg zB!+@kM7u+K8kg^+>-Z!PTYY_w^FB zLn|AgNcdZ=Y=$z_rpT}DCC-QP6ypT%EOg{a{99e>Kk!H#5T&4BsS`8e0~A%tFeD1D zF0~J(ByxyWezGb4c{wE#uJ*|9`z6+hRyv@UcI8Yc5*1f_&VwS+NwgwcK@Z&UC`GoY z%&6!I61_wzaum(UyU~znxb(!wMx~n3O)L*CmvJ2>p>LHU>uU&VzKx13jr5dgGaian zs-m(y4-rQKJ?XKyNRW6bmZ!47g}Nm2tx`}AJjrG}l>kqfVMxSVdZMEearKM~M9Y(x zQ-aG^32UnqY2j$JaI8%k2Sp;Z1eS6XNqk$@Jbq$Qsu{t>@)TE;uLlO^$p0ZoeN{KG3J+WyjUJN}2H^CzTWVI(5CW$9Q zPnnqHy~)~>7@LtH@n+~LDR4Rs2?HDGNi*Zo1b9%7M0(Ypxb)0)iC06<%t}|KA;DY& zJZO)^v(X-DkG#WJDY7n7vE(J*4Lwe2kc4E_^<*T*rb#@UK+jEvL|xVO$k9mRFvJZO--Pne#J_(T!HV42$O_ORf_aIA8nR+K3cg6ibPA*%56|2-j7!9h9YrNwekQIi3g;W)leits#fG( z91<@`D{@Sg*r-a8BS6x`L^Ga{Qg8$)twQG|I;!@>Bup~n4bhWdG|Mm~JgQQpU)xc$ z#3RzmPAIdeU|thtUJ|d!s;A1Fm&8U@ig;vR63>Vpb6yf0RoDClYL<9MTKOJ|L`7vi zQ86(p9+Fj0PJTXG*{er@Cu8DR6)(y1IID8uk$9*|k$(MxnkAl+R)TO$m5``PL7StJ zF)xX?q?BSuPMOS0VxrQMg3ZT_$7Ffrp5HJY3G`%%N#ZqGo@&!1kx^Msate-_^;C)- zW#w|r{DKPFlN=kT;yqdQloiZ`M}ng&MdsWEy^wfNmZzv}Rzamp;-hk2ScZ=1OQ@h< z`T34KLqenKdU~QBi6>>%BioN7PeP(@vH(p4yOb_)iqCsN8(*+B@c?kKGjMY6p4qWm0O@l z=u@SjJ#u(9<7FwO*da$c?8|{3IXs*3v@DN#cs3;HDeIBLvl(y8@|cHbL*ktVcuU=4ng)2#Ac-fYJ<=cvW~vlfq6@L)CEl1;?u8=pOSQ5B zio_$+%33HAuT(4Rp_JPcFBFMXsy*AG++$Ndf+EpMl?UrRAvs#bJ5x%rqo@p*Hikqh z4fHrNBpzCT2hTVqK&j1>Ao0=yJw=AZCsm5{{lA#I#8cDC0VoooR4ek9A&Ix9mEWOA zlv1Uj%`vfPv&3UlN--X*Nt-1?X`siEA@48@@Sx2SnAGM;ka%u^o+4u(70fFsWm1M2 z@6Ga*md|qHE)tKeSxNa-1ufa^Mm7iW1eq=9pjL>#3jJ}NQO zj3;M#3e6{@PtzmIup_P(U$H5@nkW}Rk(hK=J-OvoW%*8tHL4V;=W=)?UY%C1fg;gG zty0d}&dP$DB#Nl^jD@E^6)Ye0E7pv8r#w&+6Ov=i2za`byy;2e;b~Qktw?f%yQx-z`h6>L3Hy63`3OnJ!s4jIcJQ96REAq}LiN&XtwNNB@s8-fP zkyw3Nc>{_>4b{rKP$ZV0Rz87pKNT#ErZ*)99My*FOmOrsV`B=uKWN+f`e+$ zaVQciP${T+Y$CQ3b&b72rqFp^<>0Ob;!@;#J6R2;ZztEwzB<9q5-C*irC9;v4T?mu#E z%GprlotwH;1QdCis+A#7WL!!sW1!5pDalaWRAv?AR1d}c9-<<1&w)oGlHwowHLD=s z^vL@=l_DM&JQAH$D|4Z|Zc`RR*=|!FfU?7;JPxJNraTWt;+^6j<}OD%X<=uq8l}kG zUxP>9`l*$-p-6O8t?Y!-&!&6n zNIlEo$)aLD<;R8hR4U?m6rK{B@*I>3o3aUt%cksrQf*T{gEGgadun55ku%|9TPfKZmf93K%PpfKz4#gPT5eMe+`q1{DP5qfvMJ$EthYF* zeYqbL>unB7k$diE{iW2}8Dmpo<<Dindmy(_orJFw~Ha#ODC7Ic{2^%LJ zppcLp6Pv}UnAous<2aR&9I#v_VzIJy3U%HIT@Xjlo}PST5bwsvom8;QloW&M#z7)yj*6*qI`+ASq229G-v4F71PjMZDRT%7u4xh%Ehj6lEB9NpJh0cD(yz)}gS ze9TyfnwN}f;&F|srpJ!6>Z~l7!5T&O*C(=7o5*Z~Wau`itbj6XLv#xENB>On%FCQC zYc4876;T=f`QZ6My1xLP98_9NDV?s32QjYqN@$1pef~*1=2*^DaQI+ zh%;k>)j(5L?K5Tn+LI9$zuO#<@oyoftlXv?=(e^fGed2G{vj4~Pev2W($Q$G8su@{ zdc>L#v>X|h=rkQ7OEP!+it-Ap zy~zG@v1#mW!A-iermWni?04gljlW5FR%5kDL}eAx@5F-=zY|YLET@RdDWW)w9rB<7 zcczY6IVDwcxG<;H;n;t5BTFS4J2qO1eD!Dm&rh{1n~yn_G&TiKI^=K?l^ho1Btu}XrjO?V$s5oieIGpq{9r8H87~j__&v7~ANj@{=8NQVvkMEg*c`*Ys z(;4z8-YOwa;aMUxg}SR;%jxFjmsO%tp4CVuHb)%wV&tO0QBaLlg{yFN5y2^SyXtV2 zoBJZh<^C+_b&4wjxwUm*|5oFo_^O_Ngp^cLezW0-j-QYel^&OntOisK$(6nSPnqUO zs^paxl;-5+$rzjiyHCQnY*`1m`gP#mwTXnUZQyFgf!<}va+P}uTqNb^+BWP{gK^q- z6_sH(@Yl-?$eNElcVVX5hH-pUPoC6ftS8Me)|myaq@3z#T()J%Hw$s?W}D6{FRj3Z zqPlhTUyzkmmEz96vS`L^3{+H_%QA2h%Q3I;Mn`E*<;)^ny~vfVo|d&`PO8qD0}K9p zI(fJu=wCqQeVzG~Pu=2~h>Kj)Qdy95qms>MYUXxWULhBnB}KSkf=6wQf71RBTW-mX diff --git a/amxmodx/amx.cpp b/amxmodx/amx.cpp index 1ab05032..ec5dd749 100755 --- a/amxmodx/amx.cpp +++ b/amxmodx/amx.cpp @@ -272,6 +272,7 @@ typedef enum { OP_FLOAT_SUB, OP_FLOAT_TO, OP_FLOAT_ROUND, + OP_FLOAT_CMP, /* ----- */ OP_NUM_OPCODES } OPCODE; @@ -698,6 +699,7 @@ static int amx_BrowseRelocate(AMX *amx) case OP_FLOAT_SUB: case OP_FLOAT_TO: case OP_FLOAT_ROUND: + case OP_FLOAT_CMP: break; case OP_CALL: /* opcodes that need relocation */ @@ -1764,14 +1766,15 @@ static const void * const amx_opcodelist[] = { &&op_jump_pri, &&op_switch, &&op_casetbl, &&op_swap_pri, &&op_swap_alt, &&op_pushaddr, &&op_nop, &&op_sysreq_d, &&op_symtag, &&op_break, &&op_float_mul, &&op_float_div, - &&op_float_add, &&op_float_sub, &&op_float_to, &&op_float_round}; + &&op_float_add, &&op_float_sub, &&op_float_to, &&op_float_round, + &&op_float_cmp}; AMX_HEADER *hdr; AMX_FUNCSTUB *func; unsigned char *code, *data; cell pri,alt,stk,frm,hea; cell reset_stk, reset_hea, *cip; cell offs, offs2; - REAL fnum; + REAL fnum, fnum2; ucell codesize; int num,i; @@ -2658,6 +2661,18 @@ static const void * const amx_opcodelist[] = { fnum = ceil(fnum); pri = (cell)fnum; NEXT(cip); + op_float_cmp: + offs = *(cell *)(data + (int)stk + sizeof(cell)*1); + offs2 = *(cell *)(data + (int)stk + sizeof(cell)*2); + fnum = amx_ctof(offs); + fnum2 = amx_ctof(offs2); + if (fnum == fnum2) + pri = 0; + else if (fnum > fnum2) + pri = 1; + else + pri = -1; + NEXT(cip); op_break: if (amx->debug!=NULL) { /* store status */ @@ -2743,7 +2758,7 @@ int AMXAPI amx_Exec(AMX *amx, cell *retval, int index) #else OPCODE op; cell offs, offs2; - REAL fnum; + REAL fnum, fnum2; int num; #endif assert(amx!=NULL); @@ -3634,31 +3649,31 @@ int AMXAPI amx_Exec(AMX *amx, cell *retval, int index) break; case OP_NOP: break; - case OP_FLOAT_MUL: + case OP_FLOAT_MUL: offs = *(cell *)(data + (int)stk + sizeof(cell)*1); offs2 = *(cell *)(data + (int)stk + sizeof(cell)*2); fnum = amx_ctof(offs) * amx_ctof(offs2); pri = amx_ftoc(fnum); - break; - case OP_FLOAT_ADD: + break; + case OP_FLOAT_ADD: offs = *(cell *)(data + (int)stk + sizeof(cell)*1); offs2 = *(cell *)(data + (int)stk + sizeof(cell)*2); fnum = amx_ctof(offs) + amx_ctof(offs2); pri = amx_ftoc(fnum); - break; - case OP_FLOAT_SUB: + break; + case OP_FLOAT_SUB: offs = *(cell *)(data + (int)stk + sizeof(cell)*1); offs2 = *(cell *)(data + (int)stk + sizeof(cell)*2); fnum = amx_ctof(offs) - amx_ctof(offs2); pri = amx_ftoc(fnum); - break; - case OP_FLOAT_DIV: + break; + case OP_FLOAT_DIV: offs = *(cell *)(data + (int)stk + sizeof(cell)*1); offs2 = *(cell *)(data + (int)stk + sizeof(cell)*2); fnum = amx_ctof(offs) / amx_ctof(offs2); pri = amx_ftoc(fnum); - break; - case OP_FLOAT_TO: + break; + case OP_FLOAT_TO: offs = *(cell *)(data + (int)stk + sizeof(cell)*1); fnum = (float)offs; pri = amx_ftoc(fnum); @@ -3669,12 +3684,24 @@ int AMXAPI amx_Exec(AMX *amx, cell *retval, int index) fnum = amx_ctof(offs); if (!offs2) fnum = (REAL)floor(fnum + 0.5); - else if (offs2 == 1) + else if (offs2 == 1) fnum = floor(fnum); else fnum = ceil(fnum); pri = (cell)fnum; break; + case OP_FLOAT_CMP: + offs = *(cell *)(data + (int)stk + sizeof(cell)*1); + offs2 = *(cell *)(data + (int)stk + sizeof(cell)*2); + fnum = amx_ctof(offs); + fnum2 = amx_ctof(offs2); + if (fnum == fnum2) + pri = 0; + else if (fnum > fnum2) + pri = 1; + else + pri = -1; + break; case OP_BREAK: assert((amx->flags & AMX_FLAG_BROWSE)==0); if (amx->debug!=NULL) { diff --git a/amxmodx/amxexecn.asm b/amxmodx/amxexecn.asm index 7b56fe04..d0f16e14 100755 --- a/amxmodx/amxexecn.asm +++ b/amxmodx/amxexecn.asm @@ -1485,7 +1485,19 @@ OP_FLOAT_ROUND: fldcw [esp] pop ebp GO_ON - + +OP_FLOAT_CMP: + add esi, 4 + fld dword [edi+ecx+8] + fld dword [edi+ecx+4] + fucompp + fnstsw ax + sahf + cmovz eax, [g_flags+4] + cmovg eax, [g_flags+8] + cmovl eax, [g_flags+0] + GO_ON + OP_BREAK: mov ebp,amx ; get amx into ebp add esi,4 @@ -1580,6 +1592,12 @@ Start_DATA lodb_and DD 0ffh, 0ffffh, 0, 0ffffffffh + GLOBAL g_flags +g_flags: + DD -1 + DD 0 + DD 1 + GLOBAL amx_opcodelist GLOBAL _amx_opcodelist amx_opcodelist: @@ -1727,3 +1745,4 @@ _amx_opcodelist DD OP_INVALID DD OP_FLOAT_SUB DD OP_FLOAT_TO DD OP_FLOAT_ROUND + DD OP_FLOAT_CMP \ No newline at end of file diff --git a/amxmodx/amxjitsn.asm b/amxmodx/amxjitsn.asm index f2ac86c8..c6571257 100755 --- a/amxmodx/amxjitsn.asm +++ b/amxmodx/amxjitsn.asm @@ -1941,7 +1941,7 @@ OP_FLOAT_TO: CHECKCODESIZE j_float_to OP_FLOAT_ROUND: - GO_ON j_float_round, OP_INVALID + GO_ON j_float_round, OP_FLOAT_CMP j_float_round: ;get the float control word push 0 @@ -1974,6 +1974,19 @@ OP_FLOAT_ROUND: fldcw [esp] pop ebp CHECKCODESIZE j_float_round + +OP_FLOAT_CMP: + GO_ON j_float_cmp, OP_INVALID + j_float_cmp: + fld dword [esi+8] + fld dword [esi+4] + fucompp + fnstsw ax + sahf + cmovz eax, [g_flagsjit+4] + cmovg eax, [g_flagsjit+8] + cmovl eax, [g_flagsjit+0] + CHECKCODESIZE j_float_cmp OP_INVALID: ; break from the compiler with an error code mov eax,AMX_ERR_INVINSTR @@ -2403,6 +2416,12 @@ jit_switch DD JIT_OP_SWITCH ; The table for the browser/relocator function. ; +global g_flagsjit +g_flagsjit: + DD -1 + DD 0 + DD 1 + global amx_opcodelist_jit, _amx_opcodelist_jit amx_opcodelist_jit: @@ -2551,5 +2570,6 @@ _amx_opcodelist_jit: DD OP_FLOAT_SUB ; DA DD OP_FLOAT_TO ; DA DD OP_FLOAT_ROUND ; DA + DD OP_FLOAT_CMP ; DA END diff --git a/amxmodx/optimizer.cpp b/amxmodx/optimizer.cpp index 6bd95e46..d89645cc 100644 --- a/amxmodx/optimizer.cpp +++ b/amxmodx/optimizer.cpp @@ -9,6 +9,7 @@ #define OP_FLOAT_SUB 141 #define OP_FLOAT_TO 142 #define OP_FLOAT_ROUND 143 +#define OP_FLOAT_CMP 144 cell op_trans_table[N_Total_FloatOps] = { @@ -17,7 +18,8 @@ cell op_trans_table[N_Total_FloatOps] = OP_FLOAT_ADD, OP_FLOAT_SUB, OP_FLOAT_TO, - OP_FLOAT_ROUND + OP_FLOAT_ROUND, + OP_FLOAT_CMP }; void OnBrowseRelocate(AMX *amx, cell *oplist, cell *cip) @@ -87,6 +89,7 @@ void _Setup_Optimizer_Stage2(AMX *amx, cell *oplist, cell *cip) FIND_NATIVE("floatsub", N_Float_Sub); FIND_NATIVE("float", N_Float_To); FIND_NATIVE("floatround", N_Float_Round); + FIND_NATIVE("floatcmp", N_Float_Cmp); //we don't do these yet because of radix stuff >:\ //FIND_NATIVE("floatsin", N_Float_Sin); //FIND_NATIVE("floatcos", N_Float_Cos); diff --git a/amxmodx/optimizer.h b/amxmodx/optimizer.h index 7e482e3e..57c46c25 100644 --- a/amxmodx/optimizer.h +++ b/amxmodx/optimizer.h @@ -11,7 +11,9 @@ enum N_Float_Sub, N_Float_To, N_Float_Round, - N_Total_FloatOps + N_Float_Cmp, + /* ------------ */ + N_Total_FloatOps, }; struct optimizer_s