From 6222f8c8be57d511d2ec40523717e20b87fcff9d Mon Sep 17 00:00:00 2001 From: Nitload Date: Thu, 13 Mar 2025 04:49:21 +0800 Subject: [PATCH] Daily update on 20250313-044921 by Nitload Youmu. Additional Message : Parser to TokenFlag.Member, improvement of exiting StgSharp platform Signed-off-by: Nitload --- StgSharp.C/x64/Debug/StgSharp.C.ilk | Bin 2023224 -> 2071216 bytes .../Debug/StgSharp.C.tlog/CL.command.1.tlog | Bin 10872 -> 10872 bytes .../x64/Debug/StgSharp.C.tlog/CL.read.1.tlog | Bin 222988 -> 222762 bytes .../x64/Debug/StgSharp.C.tlog/CL.write.1.tlog | Bin 15460 -> 20482 bytes StgSharp.C/x64/Debug/StgSharpC.log | 142 ++++- StgSharp.C/x64/Debug/hash.obj | Bin 35380 -> 35380 bytes StgSharp.C/x64/Debug/hash.sbr | Bin 2258253 -> 2258751 bytes StgSharp.C/x64/Debug/intrinsic.cod | 547 ++++++++++-------- StgSharp.C/x64/Debug/intrinsic.obj | Bin 43709 -> 43943 bytes StgSharp.C/x64/Debug/intrinsic.sbr | Bin 2259035 -> 2259566 bytes StgSharp.C/x64/Debug/mat2.cod | 205 +++++++ StgSharp.C/x64/Debug/mat2.obj | Bin 38067 -> 40342 bytes StgSharp.C/x64/Debug/mat2.sbr | Bin 2258340 -> 2259168 bytes StgSharp.C/x64/Debug/mat3.cod | 347 +++++++++++ StgSharp.C/x64/Debug/mat3.obj | Bin 43741 -> 47303 bytes StgSharp.C/x64/Debug/mat3.sbr | Bin 2259293 -> 2260344 bytes StgSharp.C/x64/Debug/mat4.cod | 303 ++++++++++ StgSharp.C/x64/Debug/mat4.obj | Bin 43037 -> 46374 bytes StgSharp.C/x64/Debug/mat4.sbr | Bin 2259102 -> 2260029 bytes StgSharp.C/x64/Debug/string.obj | Bin 36127 -> 36127 bytes StgSharp.C/x64/Debug/string.sbr | Bin 2258192 -> 2258690 bytes StgSharp.C/x64/Debug/vc143.idb | Bin 347136 -> 347136 bytes StgSharp.C/x64/Debug/vc143.pdb | Bin 241664 -> 241664 bytes StgSharp.C/x64/Debug/vector_dot.obj | Bin 46694 -> 46694 bytes StgSharp.C/x64/Debug/vector_dot.sbr | Bin 2260084 -> 2260582 bytes StgSharp.Common/Environment/Platform.cs | 18 +- .../net8.0/StgSharp.Common.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Common.sourcelink.json | 2 +- .../net8.0/StgSharp.Model.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Model.sourcelink.json | 2 +- .../Express/Builtin/ExpCollection.cs | 6 + StgSharp.Script/Express/Element/ExpConst.cs | 12 + StgSharp.Script/Express/Element/ExpEntity.cs | 5 + .../Express/Element/ExpFunction.cs | 6 + StgSharp.Script/Express/Element/ExpRule.cs | 6 + StgSharp.Script/Express/Element/ExpType.cs | 8 +- .../ExpAstNode/ExpElementMemberNameNode.cs | 7 +- .../ExpAstNode/ExpInstanceMemberNode.cs | 67 +++ .../ExpAstNode/ExpInstanceReferenceNode.cs | 18 +- .../Express/ExpElementInstanceBase.cs | 10 + StgSharp.Script/Express/ExpElmentSource.cs | 14 + .../ExpNodeGenerator.FunctionCalling.cs | 4 +- StgSharp.Script/Express/ExpNodeGenerator.cs | 44 +- .../Express/ExpSchemaSource.Compile.cs | 2 +- .../net8.0/StgSharp.Script.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Script.sourcelink.json | 2 +- StgSharpDebug/Program.cs | 10 +- .../net8.0/StgSharpDebug.AssemblyInfo.cs | 2 +- .../net8.0/StgSharpDebug.sourcelink.json | 2 +- 49 files changed, 1509 insertions(+), 288 deletions(-) create mode 100644 StgSharp.Script/Express/ExpAstNode/ExpInstanceMemberNode.cs diff --git a/StgSharp.C/x64/Debug/StgSharp.C.ilk b/StgSharp.C/x64/Debug/StgSharp.C.ilk index 2d937e51ce5427abe28fae2f9df163b989343ed2..89ac4bb766b273b58e0b97f9cfb675cc80e168b9 100644 GIT binary patch delta 51741 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%0AJn=FSJo8f}lW#;4HI(e@$#1a>}PPh#AC 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%0D*LnQVgCANJoK` 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 delta 35923 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 FzW^ce?lJ%X diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog index fb20d913f524319b3fe3deeba3d055d2618630fb..b3d79dd17c9b72b4dd384412d736e9a337daf6f3 100644 GIT binary patch delta 88 zcmewn@*`wJ0n6k7eyPoRJZG3UpAo*r4CJwFR#OjR-kims#IkvU^c&{QWi0d9Cl|1= hOV0p$o*+W=ha~F#eh_PU@oI20uB#v{;o8{D_m^ViV a*RV`prNjl6pCrw;d6iNL%VqjEZhSITGf3I(cR z*)EaIWEVP_FHm5z8T+#7t3;X3Oc%&y;@P|_a8k(TBZpl=x5pe{vIu4OWpHE&VKAO9 ipUpILb6k*z|Mq>UOku3kUx_eDP1nd~ngAC(#sUD>E-*R( delta 179 zcmZ2=hPUS&?*_iW=`(gS3T)3xW7G?sdVx`7dP*AOw8;X2LYwcb(_-9wfaMbNb^#{F zcZ`!Koamdpz)5Nw3!@a%A4@pEyM2cslS}Ay zt36Cy+gI#nEMnZOlkefbeL*5q80&T(K}N68&24#g0n>{FnWZok0A0YcJt~dSE_D01 UG$uQci&!S>o#XLDcbj9QtEuP6s#5MtGuE`}TYbFP1 ziEUn@na4QUj+<}u4Ne87$$C;?naz4qIgFDPRM|H3DabH^8UMJ!46e;3DiTbayV&P3 vPL5%jF!_}L&*m={K%4GaWH4^tWw45AvxAii)8q}76DG@<@qn%TVzCDRBEmJZ delta 61 zcmZo#!1$zM!xn?d0j6x5FLN6E0gE>O_ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.dll diff --git a/StgSharp.C/x64/Debug/hash.obj b/StgSharp.C/x64/Debug/hash.obj index 5fefe104b65e202870c35aa73de575b4b9329763..f4e4a97f797d329ed7822c814838bb7439134b25 100644 GIT binary patch delta 91 zcmV-h0Hpu4lmfJr0taM<4FFN$(Xj_=B_MoF(@~QPZF|7N4e~cGsi~5AOPXO8XvLW7 x8VTCoar?88C9*;T1ONb&@itnsplD+U5RpS+;GmV{1U}B*fiHQfV9y}Qj8WaCj)m_~^lWf19`q%rt_p17J z_5S!rlYRSVlbuyeaWzMEsctn_%~PHdsz=RNkEsP}p<1LCt0iiwTBeq(6>6ngrBU6eLuUE(`LKDWy@8B3- zg3H#!YG#{1NSc-3TmGLWYfP1E^~s5PC7S~b0WhoqA7R8_vBXc7_%BK1K|lZjYlt5- zv4eE{=+bqvfR#r^P^XVVb77$nLBdMpi7vr+cF^4sZQ%0pX{3b)7&Zd+UGP^sV3C6T z%>!A`5JAJH>0$@HAc!|Osv8<$*fjiF2fQQ&o4WlXM9{EldRGU%B1PM}p#g?X!@DgU zHpS{7eyBOUS_q(E#OA@*dAb@~1gz1C5 zsT>;vHc}aDl+Xn_1BUR2jWZ09MD*y=bv==Ic=@nxpaF!HND^IwztI72Y7LBKmie2E zKWyZy?}G2^@P96q%x*X|B!f-E`#a!)#M6o@g(f_|h+CR|vxDB8qHTvmLu%MGe4qn< zAqCsIp#g@KerlHvS~~2MZHb4N*PQ|Z7_7;OvqSK=ED;_UFD4277$JawHH3Kw-*y%1 zN9eztM0BS>00J8=Oz?M7$e`{N(e0to&`} z8Ud@;Mk>>#$#Qin>?CEMw^ zIT=dhS>h+1_og(=o6INm?Hi2(}0atYDXHQ*n?LQG_$I476D!Y}pF;Hf E54OX(Qvd(} delta 2841 zcmZXV&u<%55XWbyNwb@fv`yPIP3p9`Qh_2B#dZVYfC}E0(x4O?il9H(xUoYGiIaHU zG(Vbde>{G8TO>fD`8$xfBMxu?At7-tdujms`h<-63c8T3$j~Ent#XhlL42c6`SR521 zVpJRwIWZ;Tm)!4h z|BEIbr->2>2q0h;@slLZkc;~9CHwr_wkp-?LZ#KLuNFPu4{9JGf`pZQ;>+Pzx6%J) z=*r3}U}%70V^A;l>^7LgbnBDj1;8AHl13;?zouzyS1!6cOomgG7z9wTio$>#K4zO74p;fK5JPcEIfQNM0q{9@+hZSFP zU4y9^lra8U01_fdSQky=%i;6e=%Ea)#}5rKYz)e8hu_!+k7Qsy{*f?{G(uVWO-)DR z&!r|)lH-Q}3RY2S{1-G4o#rEHLJkK42v|j^(>$$+AU@7V(})~D1R${S(j0!vY)a1Z zm>IuJhlh07B>j>~?|PKOM*_zIEVjJTxEwqX_)eg{B-8aUhmXUT)iX}06PhZ<6nr#- zmCrebu5`32m{$5J!3PAJ?sOHM0@N@IoG`641s@b_x|P?lz852?5bX*+AlNiC(*eB{ zLxHDTK>!7trYaq~dL`Ob+zLJ**z~ThbwFnfq&vX}1goGRntHW^Iu}v$9VMR?d{D6I zR<#aj%0Rjmd_b^iXf6Ytn4t@X(mx9LpkUL~JjoMuaqGS1{Ah4dWk|~lO#L{Z_q& z01QBjy!GabUal0PybKNCX5k4>nR36;p#wzSdo1ry5eVX{8@>WCZ<+tA{oSY#3ObKgBkSCnK zQo?#@O`SeJMNYYgXhT)rXHRb6*rTS?YjZb_^{ME{k0nQb61U|YM7MC1TTPO;n_JJ_ z$nOvChL${Z`uw_mGtChgPkD-#TCyVJV5wT0$Kuu|ra|ZSEx(x{GxA zZF3*FsID&fj^l8@PUQhr_tVgt4=O%>7C>y?)q(F$aQs?jNyo8yup?`4lBJv2Jfy0B zj_N4xjTc@}4dk-Fh%_7<*^>`Y;LhPqfY6tE4ilwliNm@Ns_4xeM4#u?-XDe5N^Mq! zd4ybm>VnLp85bMQC96Xok7Zn&57TWmGOSB?Ig%u#_MGq7^U)+L8tgHn@KfrRpH7r# Ov~oOAo>jMw)B8V9Toadd_m2 = addmatrix2_avx; +; 120 : context->add_m2 = addmatrix2_avx; 00020 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] @@ -398,7 +401,7 @@ load_intrinsic_512 PROC ; COMDAT 00 00 lea rcx, OFFSET FLAT:addmatrix2_avx 0002e 48 89 08 mov QWORD PTR [rax], rcx -; 117 : context->add_m3 = addmatrix3_512; +; 121 : context->add_m3 = addmatrix3_512; 00031 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] @@ -406,7 +409,7 @@ load_intrinsic_512 PROC ; COMDAT 00 00 lea rcx, OFFSET FLAT:addmatrix3_512 0003f 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 118 : context->add_m4 = addmatrix4_512; +; 122 : context->add_m4 = addmatrix4_512; 00043 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] @@ -414,162 +417,165 @@ load_intrinsic_512 PROC ; COMDAT 00 00 lea rcx, OFFSET FLAT:addmatrix4_512 00051 48 89 48 10 mov QWORD PTR [rax+16], rcx -; 119 : context->transpose_23 = transpose23; +; 123 : context->transpose_23 = transpose23; 00055 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] 0005c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose23 - 00063 48 89 48 68 mov QWORD PTR [rax+104], rcx - -; 120 : context->transpose_24 = transpose24; - - 00067 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR context$[rbp] - 0006e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose24 - 00075 48 89 48 70 mov QWORD PTR [rax+112], rcx - -; 121 : context->transpose_32 = transpose32; - - 00079 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR context$[rbp] - 00080 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose32 - 00087 48 89 48 78 mov QWORD PTR [rax+120], rcx - -; 122 : context->transpose_33 = transpose33; - - 0008b 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR context$[rbp] - 00092 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose33 - 00099 48 89 88 80 00 + 00063 48 89 88 80 00 00 00 mov QWORD PTR [rax+128], rcx -; 123 : context->transpose_34 = transpose34; +; 124 : context->transpose_24 = transpose24; - 000a0 48 8b 85 e0 00 + 0006a 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000a7 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose34 - 000ae 48 89 88 88 00 + 00071 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose24 + 00078 48 89 88 88 00 00 00 mov QWORD PTR [rax+136], rcx -; 124 : context->transpose_42 = transpose42; +; 125 : context->transpose_32 = transpose32; - 000b5 48 8b 85 e0 00 + 0007f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000bc 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose42 - 000c3 48 89 88 90 00 + 00086 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose32 + 0008d 48 89 88 90 00 00 00 mov QWORD PTR [rax+144], rcx -; 125 : context->transpose_43 = transpose43; +; 126 : context->transpose_33 = transpose33; - 000ca 48 8b 85 e0 00 + 00094 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000d1 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose43 - 000d8 48 89 88 98 00 + 0009b 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose33 + 000a2 48 89 88 98 00 00 00 mov QWORD PTR [rax+152], rcx -; 126 : context->transpose_44 = transpose44; +; 127 : context->transpose_34 = transpose34; - 000df 48 8b 85 e0 00 + 000a9 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000e6 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose44 - 000ed 48 89 88 a0 00 + 000b0 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose34 + 000b7 48 89 88 a0 00 00 00 mov QWORD PTR [rax+160], rcx -; 127 : context->normalize_3 = normalize; +; 128 : context->transpose_42 = transpose42; - 000f4 48 8b 85 e0 00 + 000be 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000fb 48 8d 0d 00 00 + 000c5 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose42 + 000cc 48 89 88 a8 00 + 00 00 mov QWORD PTR [rax+168], rcx + +; 129 : context->transpose_43 = transpose43; + + 000d3 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000da 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose43 + 000e1 48 89 88 b0 00 + 00 00 mov QWORD PTR [rax+176], rcx + +; 130 : context->transpose_44 = transpose44; + + 000e8 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000ef 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose44 + 000f6 48 89 88 b8 00 + 00 00 mov QWORD PTR [rax+184], rcx + +; 131 : context->normalize_3 = normalize; + + 000fd 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00104 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:normalize - 00102 48 89 48 60 mov QWORD PTR [rax+96], rcx + 0010b 48 89 48 60 mov QWORD PTR [rax+96], rcx -; 128 : context->det_matrix33 = det_mat3; +; 132 : context->det_matrix33 = det_mat3; - 00106 48 8b 85 e0 00 + 0010f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0010d 48 8d 0d 00 00 + 00116 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:det_mat3 - 00114 48 89 48 20 mov QWORD PTR [rax+32], rcx + 0011d 48 89 48 20 mov QWORD PTR [rax+32], rcx -; 129 : context->det_matrix44 = det_mat4; +; 133 : context->det_matrix44 = det_mat4; - 00118 48 8b 85 e0 00 + 00121 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0011f 48 8d 0d 00 00 + 00128 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:det_mat4 - 00126 48 89 48 28 mov QWORD PTR [rax+40], rcx + 0012f 48 89 48 28 mov QWORD PTR [rax+40], rcx -; 130 : context->dot_31 = dot_31_avx; +; 134 : context->dot_31 = dot_31_avx; - 0012a 48 8b 85 e0 00 + 00133 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00131 48 8d 0d 00 00 + 0013a 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_31_avx - 00138 48 89 48 30 mov QWORD PTR [rax+48], rcx + 00141 48 89 48 30 mov QWORD PTR [rax+48], rcx -; 131 : context->dot_32 = dot_32_avx; +; 135 : context->dot_32 = dot_32_avx; - 0013c 48 8b 85 e0 00 + 00145 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00143 48 8d 0d 00 00 + 0014c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_32_avx - 0014a 48 89 48 38 mov QWORD PTR [rax+56], rcx + 00153 48 89 48 38 mov QWORD PTR [rax+56], rcx -; 132 : context->dot_41 = dot_41_avx; +; 136 : context->dot_41 = dot_41_avx; - 0014e 48 8b 85 e0 00 + 00157 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00155 48 8d 0d 00 00 + 0015e 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_41_avx - 0015c 48 89 48 40 mov QWORD PTR [rax+64], rcx + 00165 48 89 48 40 mov QWORD PTR [rax+64], rcx -; 133 : context->dot_42 = dot_42_avx; +; 137 : context->dot_42 = dot_42_avx; - 00160 48 8b 85 e0 00 + 00169 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00167 48 8d 0d 00 00 + 00170 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_42_avx - 0016e 48 89 48 48 mov QWORD PTR [rax+72], rcx + 00177 48 89 48 48 mov QWORD PTR [rax+72], rcx -; 134 : context->dot_43 = dot_43_avx; +; 138 : context->dot_43 = dot_43_avx; - 00172 48 8b 85 e0 00 + 0017b 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00179 48 8d 0d 00 00 + 00182 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_43_avx - 00180 48 89 48 50 mov QWORD PTR [rax+80], rcx + 00189 48 89 48 50 mov QWORD PTR [rax+80], rcx -; 135 : context->city_hash_simplify = city_hash_simplify_sse; +; 139 : context->city_hash_simplify = city_hash_simplify_sse; - 00184 48 8b 85 e0 00 + 0018d 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0018b 48 8d 0d 00 00 + 00194 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse - 00192 48 89 48 18 mov QWORD PTR [rax+24], rcx + 0019b 48 89 48 18 mov QWORD PTR [rax+24], rcx -; 136 : context->index_pair = index_pair_sse; +; 140 : context->index_pair = index_pair_sse; - 00196 48 8b 85 e0 00 + 0019f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0019d 48 8d 0d 00 00 + 001a6 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:index_pair_sse - 001a4 48 89 48 58 mov QWORD PTR [rax+88], rcx + 001ad 48 89 48 58 mov QWORD PTR [rax+88], rcx -; 137 : } +; 141 : } - 001a8 48 8d a5 c8 00 + 001b1 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] - 001af 5f pop rdi - 001b0 5d pop rbp - 001b1 c3 ret 0 + 001b8 5f pop rdi + 001b9 5d pop rbp + 001ba c3 ret 0 load_intrinsic_512 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -579,7 +585,7 @@ _TEXT SEGMENT context$ = 224 load_intrinsic_avx PROC ; COMDAT -; 90 : { +; 94 : { 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 55 push rbp @@ -592,7 +598,7 @@ load_intrinsic_avx PROC ; COMDAT 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode 0001f 90 npad 1 -; 91 : context->add_m2 = addmatrix2_avx; +; 95 : context->add_m2 = addmatrix2_avx; 00020 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] @@ -600,7 +606,7 @@ load_intrinsic_avx PROC ; COMDAT 00 00 lea rcx, OFFSET FLAT:addmatrix2_avx 0002e 48 89 08 mov QWORD PTR [rax], rcx -; 92 : context->add_m3 = addmatrix3_avx; +; 96 : context->add_m3 = addmatrix3_avx; 00031 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] @@ -608,7 +614,7 @@ load_intrinsic_avx PROC ; COMDAT 00 00 lea rcx, OFFSET FLAT:addmatrix3_avx 0003f 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 93 : context->add_m4 = addmatrix4_avx; +; 97 : context->add_m4 = addmatrix4_avx; 00043 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] @@ -616,162 +622,165 @@ load_intrinsic_avx PROC ; COMDAT 00 00 lea rcx, OFFSET FLAT:addmatrix4_avx 00051 48 89 48 10 mov QWORD PTR [rax+16], rcx -; 94 : context->transpose_23 = transpose23; +; 98 : context->transpose_23 = transpose23; 00055 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] 0005c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose23 - 00063 48 89 48 68 mov QWORD PTR [rax+104], rcx - -; 95 : context->transpose_24 = transpose24; - - 00067 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR context$[rbp] - 0006e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose24 - 00075 48 89 48 70 mov QWORD PTR [rax+112], rcx - -; 96 : context->transpose_32 = transpose32; - - 00079 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR context$[rbp] - 00080 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose32 - 00087 48 89 48 78 mov QWORD PTR [rax+120], rcx - -; 97 : context->transpose_33 = transpose33; - - 0008b 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR context$[rbp] - 00092 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose33 - 00099 48 89 88 80 00 + 00063 48 89 88 80 00 00 00 mov QWORD PTR [rax+128], rcx -; 98 : context->transpose_34 = transpose34; +; 99 : context->transpose_24 = transpose24; - 000a0 48 8b 85 e0 00 + 0006a 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000a7 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose34 - 000ae 48 89 88 88 00 + 00071 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose24 + 00078 48 89 88 88 00 00 00 mov QWORD PTR [rax+136], rcx -; 99 : context->transpose_42 = transpose42; +; 100 : context->transpose_32 = transpose32; - 000b5 48 8b 85 e0 00 + 0007f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000bc 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose42 - 000c3 48 89 88 90 00 + 00086 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose32 + 0008d 48 89 88 90 00 00 00 mov QWORD PTR [rax+144], rcx -; 100 : context->transpose_43 = transpose43; +; 101 : context->transpose_33 = transpose33; - 000ca 48 8b 85 e0 00 + 00094 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000d1 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose43 - 000d8 48 89 88 98 00 + 0009b 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose33 + 000a2 48 89 88 98 00 00 00 mov QWORD PTR [rax+152], rcx -; 101 : context->transpose_44 = transpose44; +; 102 : context->transpose_34 = transpose34; - 000df 48 8b 85 e0 00 + 000a9 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000e6 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:transpose44 - 000ed 48 89 88 a0 00 + 000b0 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose34 + 000b7 48 89 88 a0 00 00 00 mov QWORD PTR [rax+160], rcx -; 102 : context->normalize_3 = normalize; +; 103 : context->transpose_42 = transpose42; - 000f4 48 8b 85 e0 00 + 000be 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000fb 48 8d 0d 00 00 + 000c5 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose42 + 000cc 48 89 88 a8 00 + 00 00 mov QWORD PTR [rax+168], rcx + +; 104 : context->transpose_43 = transpose43; + + 000d3 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000da 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose43 + 000e1 48 89 88 b0 00 + 00 00 mov QWORD PTR [rax+176], rcx + +; 105 : context->transpose_44 = transpose44; + + 000e8 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000ef 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose44 + 000f6 48 89 88 b8 00 + 00 00 mov QWORD PTR [rax+184], rcx + +; 106 : context->normalize_3 = normalize; + + 000fd 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00104 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:normalize - 00102 48 89 48 60 mov QWORD PTR [rax+96], rcx + 0010b 48 89 48 60 mov QWORD PTR [rax+96], rcx -; 103 : context->det_matrix33 = det_mat3; +; 107 : context->det_matrix33 = det_mat3; - 00106 48 8b 85 e0 00 + 0010f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0010d 48 8d 0d 00 00 + 00116 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:det_mat3 - 00114 48 89 48 20 mov QWORD PTR [rax+32], rcx + 0011d 48 89 48 20 mov QWORD PTR [rax+32], rcx -; 104 : context->det_matrix44 = det_mat4; +; 108 : context->det_matrix44 = det_mat4; - 00118 48 8b 85 e0 00 + 00121 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0011f 48 8d 0d 00 00 + 00128 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:det_mat4 - 00126 48 89 48 28 mov QWORD PTR [rax+40], rcx + 0012f 48 89 48 28 mov QWORD PTR [rax+40], rcx -; 105 : context->dot_31 = dot_31_avx; +; 109 : context->dot_31 = dot_31_avx; - 0012a 48 8b 85 e0 00 + 00133 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00131 48 8d 0d 00 00 + 0013a 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_31_avx - 00138 48 89 48 30 mov QWORD PTR [rax+48], rcx + 00141 48 89 48 30 mov QWORD PTR [rax+48], rcx -; 106 : context->dot_32 = dot_32_avx; +; 110 : context->dot_32 = dot_32_avx; - 0013c 48 8b 85 e0 00 + 00145 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00143 48 8d 0d 00 00 + 0014c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_32_avx - 0014a 48 89 48 38 mov QWORD PTR [rax+56], rcx + 00153 48 89 48 38 mov QWORD PTR [rax+56], rcx -; 107 : context->dot_41 = dot_41_avx; +; 111 : context->dot_41 = dot_41_avx; - 0014e 48 8b 85 e0 00 + 00157 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00155 48 8d 0d 00 00 + 0015e 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_41_avx - 0015c 48 89 48 40 mov QWORD PTR [rax+64], rcx + 00165 48 89 48 40 mov QWORD PTR [rax+64], rcx -; 108 : context->dot_42 = dot_42_avx; +; 112 : context->dot_42 = dot_42_avx; - 00160 48 8b 85 e0 00 + 00169 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00167 48 8d 0d 00 00 + 00170 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_42_avx - 0016e 48 89 48 48 mov QWORD PTR [rax+72], rcx + 00177 48 89 48 48 mov QWORD PTR [rax+72], rcx -; 109 : context->dot_43 = dot_43_avx; +; 113 : context->dot_43 = dot_43_avx; - 00172 48 8b 85 e0 00 + 0017b 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00179 48 8d 0d 00 00 + 00182 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_43_avx - 00180 48 89 48 50 mov QWORD PTR [rax+80], rcx + 00189 48 89 48 50 mov QWORD PTR [rax+80], rcx -; 110 : context->city_hash_simplify = city_hash_simplify_sse; +; 114 : context->city_hash_simplify = city_hash_simplify_sse; - 00184 48 8b 85 e0 00 + 0018d 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0018b 48 8d 0d 00 00 + 00194 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse - 00192 48 89 48 18 mov QWORD PTR [rax+24], rcx + 0019b 48 89 48 18 mov QWORD PTR [rax+24], rcx -; 111 : context->index_pair = index_pair_sse; +; 115 : context->index_pair = index_pair_sse; - 00196 48 8b 85 e0 00 + 0019f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0019d 48 8d 0d 00 00 + 001a6 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:index_pair_sse - 001a4 48 89 48 58 mov QWORD PTR [rax+88], rcx + 001ad 48 89 48 58 mov QWORD PTR [rax+88], rcx -; 112 : } +; 116 : } - 001a8 48 8d a5 c8 00 + 001b1 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] - 001af 5f pop rdi - 001b0 5d pop rbp - 001b1 c3 ret 0 + 001b8 5f pop rdi + 001b9 5d pop rbp + 001ba c3 ret 0 load_intrinsic_avx ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -824,156 +833,184 @@ load_intrinsic_sse PROC ; COMDAT 00 00 mov rax, QWORD PTR context$[rbp] 0005c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose23 - 00063 48 89 48 68 mov QWORD PTR [rax+104], rcx + 00063 48 89 88 80 00 + 00 00 mov QWORD PTR [rax+128], rcx ; 70 : context->transpose_24 = transpose24; - 00067 48 8b 85 e0 00 + 0006a 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0006e 48 8d 0d 00 00 + 00071 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose24 - 00075 48 89 48 70 mov QWORD PTR [rax+112], rcx + 00078 48 89 88 88 00 + 00 00 mov QWORD PTR [rax+136], rcx ; 71 : context->transpose_32 = transpose32; - 00079 48 8b 85 e0 00 + 0007f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00080 48 8d 0d 00 00 + 00086 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose32 - 00087 48 89 48 78 mov QWORD PTR [rax+120], rcx + 0008d 48 89 88 90 00 + 00 00 mov QWORD PTR [rax+144], rcx ; 72 : context->transpose_33 = transpose33; - 0008b 48 8b 85 e0 00 + 00094 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00092 48 8d 0d 00 00 + 0009b 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose33 - 00099 48 89 88 80 00 - 00 00 mov QWORD PTR [rax+128], rcx + 000a2 48 89 88 98 00 + 00 00 mov QWORD PTR [rax+152], rcx ; 73 : context->transpose_34 = transpose34; - 000a0 48 8b 85 e0 00 + 000a9 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000a7 48 8d 0d 00 00 + 000b0 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose34 - 000ae 48 89 88 88 00 - 00 00 mov QWORD PTR [rax+136], rcx + 000b7 48 89 88 a0 00 + 00 00 mov QWORD PTR [rax+160], rcx ; 74 : context->transpose_42 = transpose42; - 000b5 48 8b 85 e0 00 + 000be 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000bc 48 8d 0d 00 00 + 000c5 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose42 - 000c3 48 89 88 90 00 - 00 00 mov QWORD PTR [rax+144], rcx + 000cc 48 89 88 a8 00 + 00 00 mov QWORD PTR [rax+168], rcx ; 75 : context->transpose_43 = transpose43; - 000ca 48 8b 85 e0 00 + 000d3 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000d1 48 8d 0d 00 00 + 000da 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose43 - 000d8 48 89 88 98 00 - 00 00 mov QWORD PTR [rax+152], rcx + 000e1 48 89 88 b0 00 + 00 00 mov QWORD PTR [rax+176], rcx ; 76 : context->transpose_44 = transpose44; - 000df 48 8b 85 e0 00 + 000e8 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000e6 48 8d 0d 00 00 + 000ef 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:transpose44 - 000ed 48 89 88 a0 00 - 00 00 mov QWORD PTR [rax+160], rcx + 000f6 48 89 88 b8 00 + 00 00 mov QWORD PTR [rax+184], rcx ; 77 : context->normalize_3 = normalize; - 000f4 48 8b 85 e0 00 + 000fd 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 000fb 48 8d 0d 00 00 + 00104 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:normalize - 00102 48 89 48 60 mov QWORD PTR [rax+96], rcx + 0010b 48 89 48 60 mov QWORD PTR [rax+96], rcx ; 78 : context->det_matrix33 = det_mat3; - 00106 48 8b 85 e0 00 + 0010f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0010d 48 8d 0d 00 00 + 00116 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:det_mat3 - 00114 48 89 48 20 mov QWORD PTR [rax+32], rcx + 0011d 48 89 48 20 mov QWORD PTR [rax+32], rcx ; 79 : context->det_matrix44 = det_mat4; - 00118 48 8b 85 e0 00 + 00121 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0011f 48 8d 0d 00 00 + 00128 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:det_mat4 - 00126 48 89 48 28 mov QWORD PTR [rax+40], rcx + 0012f 48 89 48 28 mov QWORD PTR [rax+40], rcx ; 80 : context->dot_31 = dot_31_sse; - 0012a 48 8b 85 e0 00 + 00133 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00131 48 8d 0d 00 00 + 0013a 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_31_sse - 00138 48 89 48 30 mov QWORD PTR [rax+48], rcx + 00141 48 89 48 30 mov QWORD PTR [rax+48], rcx ; 81 : context->dot_32 = dot_32_sse; - 0013c 48 8b 85 e0 00 + 00145 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00143 48 8d 0d 00 00 + 0014c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_32_sse - 0014a 48 89 48 38 mov QWORD PTR [rax+56], rcx + 00153 48 89 48 38 mov QWORD PTR [rax+56], rcx ; 82 : context->dot_41 = dot_41_sse; - 0014e 48 8b 85 e0 00 + 00157 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00155 48 8d 0d 00 00 + 0015e 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_41_sse - 0015c 48 89 48 40 mov QWORD PTR [rax+64], rcx + 00165 48 89 48 40 mov QWORD PTR [rax+64], rcx ; 83 : context->dot_42 = dot_42_sse; - 00160 48 8b 85 e0 00 + 00169 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00167 48 8d 0d 00 00 + 00170 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_42_sse - 0016e 48 89 48 48 mov QWORD PTR [rax+72], rcx + 00177 48 89 48 48 mov QWORD PTR [rax+72], rcx ; 84 : context->dot_43 = dot_43_sse; - 00172 48 8b 85 e0 00 + 0017b 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 00179 48 8d 0d 00 00 + 00182 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:dot_43_sse - 00180 48 89 48 50 mov QWORD PTR [rax+80], rcx + 00189 48 89 48 50 mov QWORD PTR [rax+80], rcx ; 85 : context->city_hash_simplify = city_hash_simplify_sse; - 00184 48 8b 85 e0 00 + 0018d 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0018b 48 8d 0d 00 00 + 00194 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse - 00192 48 89 48 18 mov QWORD PTR [rax+24], rcx + 0019b 48 89 48 18 mov QWORD PTR [rax+24], rcx ; 86 : context->index_pair = index_pair_sse; - 00196 48 8b 85 e0 00 + 0019f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR context$[rbp] - 0019d 48 8d 0d 00 00 + 001a6 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:index_pair_sse - 001a4 48 89 48 58 mov QWORD PTR [rax+88], rcx + 001ad 48 89 48 58 mov QWORD PTR [rax+88], rcx -; 87 : } +; 87 : context->sub_m2 = submatrix2_sse; - 001a8 48 8d a5 c8 00 + 001b1 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 001b8 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:submatrix2_sse + 001bf 48 89 48 68 mov QWORD PTR [rax+104], rcx + +; 88 : context->sub_m3 = submatrix3_sse; + + 001c3 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 001ca 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:submatrix3_sse + 001d1 48 89 48 70 mov QWORD PTR [rax+112], rcx + +; 89 : context->sub_m4 = submatrix4_sse; + + 001d5 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 001dc 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:submatrix4_sse + 001e3 48 89 48 78 mov QWORD PTR [rax+120], rcx + +; 90 : +; 91 : } + + 001e7 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] - 001af 5f pop rdi - 001b0 5d pop rbp - 001b1 c3 ret 0 + 001ee 5f pop rdi + 001ef 5d pop rbp + 001f0 c3 ret 0 load_intrinsic_sse ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI diff --git a/StgSharp.C/x64/Debug/intrinsic.obj b/StgSharp.C/x64/Debug/intrinsic.obj index 4c75db74b139dcbbc5e60698bff64341f32c4c01..41057624c48a4b5bf0477a21e609a58d01d51c52 100644 GIT binary patch delta 3341 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 delta 3506 zcmZuzO>b0H7(Vws7ycL2XbQ)qvWhUR0aa zpxUCgs-)VcUQ*lDj;~W|F8dFgR?Zq1e>SZ~Jzw=^YF;s&5s6VaY;B!ynwIkbE$Im7 zKJd4O@g&a3f&m8@u$u9RjKjjg_~AeE{L{4Z6BCtuqh6ZNxSn^i2qv6h!ZJ_zZ_78H zV*l5{&d<$*3?Im_A<=oz{`qohV2f2O6fzQV2E~E{4A`&+TaFq=AlB+QgJQwqgMuGT(Q3Wbk)*F>O%xk0q+$lN z&>eO;!)4Ee{9BCh)ZqZ0}<9ij_}`>$Asf|u?ITXMqK#7h7FngwdFfcr5@}c z8?oU78Mc%Bt|8y|jr_@&G+D|I2WYUGrsY3wD8X9Y9%oP-IKY6_482xQL={q)opA=` zhr{;uPgt8RPj*mtMe?&hTF3yq-2JTX-t$Egf6VbR2(^Zr9S(#?8x&YldRj^R+47wJ z#D?UPHDp+skcBo_u>8&;>wH(Lbd<_`CA2|;ji>?eGNG289Ai>5-6J4aE zn&i7#oJ_fsr5cfaG7vr%k#+(<<_a;;@;$?<~T!@?#ffIEuM$V#f zX3_InLk|<(2uB4D33g)FS2NS8p z&J-6{ro0h_svRLrX(hTZ`Q29|5@;X8o z@Z%`dXj!jC7rqPGZFyVdRtYit^m2jA;gXR}k+X%EYd>tHlI`(Es>jlJ>ygnpETvCG zu2+bwE$hUILqdM4Tk|dJ!0GqWdq#x(Ogk2|gL^@KsU3?gYwXamF<~?LH4eRP<25A2 zh<2}BBOGMUSt)V7{cj_+Y4EyUy0E6AwNcz}56vQO4mDU4?~CF~Z5MHWN%LV%e4TKR zEFsrpKS^;5>v*bIn08BE9@_*>Y!g^r3_)&%5I4D0yheSt&?wca?qt4FDldqH>=zC~ z4(5}P8-%mC*J9hY?S$No(f5lDH?4B}@7dID>rQ*eTxzp_2i<>LvgD8{vd0piqkvkq zQJlwSqw44(Ul9&VfN%*pEF6}OZnn%AKNL>LEN=7AKVtm&4hi|Ha441T|GM$BJ`^SQ zi?vLVkO%bCjl6!RyrXDx%6FH`O2~u4LEHJgX~~>{c)0OxNN+z1K4c&skbM8qi#H)3 zbA)(R$u|web4eaC5YHe!vF>sbNnkvl*cmsv#G{CCC*a!#{)*A?_Mx{AUc6)ocLCyA zLO2A7M+V_uKs+7@aT80t3J4DZo-`0=zC2~%sg{+Lrw!)$Y0ESEDcolumn[0]), ALIGN256(right->column[0])); + + 00035 b8 10 00 00 00 mov eax, 16 + 0003a 48 6b c0 00 imul rax, rax, 0 + 0003e 49 8b 8d 58 01 + 00 00 mov rcx, QWORD PTR right$[r13] + 00045 48 03 c8 add rcx, rax + 00048 48 8b c1 mov rax, rcx + 0004b c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 0004f b8 10 00 00 00 mov eax, 16 + 00054 48 6b c0 00 imul rax, rax, 0 + 00058 49 8b 8d 50 01 + 00 00 mov rcx, QWORD PTR left$[r13] + 0005f 48 03 c8 add rcx, rax + 00062 48 8b c1 mov rax, rcx + 00065 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 00069 c5 f4 5c c0 vsubps ymm0, ymm1, ymm0 + 0006d c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 56 : _mm256_storeu_ps(&ans->m[0][0], temp); + + 00072 b8 08 00 00 00 mov eax, 8 + 00077 48 6b c0 00 imul rax, rax, 0 + 0007b 49 8b 8d 60 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 00082 48 03 c8 add rcx, rax + 00085 48 8b c1 mov rax, rcx + 00088 b9 04 00 00 00 mov ecx, 4 + 0008d 48 6b c9 00 imul rcx, rcx, 0 + 00091 48 03 c1 add rax, rcx + 00094 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00099 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 57 : } + + 0009d 49 8d a5 30 01 + 00 00 lea rsp, QWORD PTR [r13+304] + 000a4 5f pop rdi + 000a5 5d pop rbp + 000a6 41 5d pop r13 + 000a8 c3 ret 0 +submatrix2_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat2.c ; COMDAT transpose24 _TEXT SEGMENT t0$ = 16 @@ -456,6 +556,111 @@ transpose23 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat2.c +; COMDAT submatrix2_sse +_TEXT SEGMENT +temp0$ = 16 +temp1$ = 64 +left$ = 320 +right$ = 328 +ans$ = 336 +submatrix2_sse PROC ; COMDAT + +; 45 : { + +$LN3: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 55 push rbp + 00010 57 push rdi + 00011 48 81 ec 48 01 + 00 00 sub rsp, 328 ; 00000148H + 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__5972891A_mat2@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 46 : __m128 temp0 = _mm_sub_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + + 0002a b8 10 00 00 00 mov eax, 16 + 0002f 48 6b c0 00 imul rax, rax, 0 + 00033 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR right$[rbp] + 0003a 48 03 c8 add rcx, rax + 0003d 48 8b c1 mov rax, rcx + 00040 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00043 b8 10 00 00 00 mov eax, 16 + 00048 48 6b c0 00 imul rax, rax, 0 + 0004c 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00053 48 03 c8 add rcx, rax + 00056 48 8b c1 mov rax, rcx + 00059 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0005c 0f 5c c8 subps xmm1, xmm0 + 0005f 0f 28 c1 movaps xmm0, xmm1 + 00062 0f 29 45 10 movaps XMMWORD PTR temp0$[rbp], xmm0 + +; 47 : __m128 temp1 = _mm_sub_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + + 00066 b8 10 00 00 00 mov eax, 16 + 0006b 48 6b c0 01 imul rax, rax, 1 + 0006f 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR right$[rbp] + 00076 48 03 c8 add rcx, rax + 00079 48 8b c1 mov rax, rcx + 0007c 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007f b8 10 00 00 00 mov eax, 16 + 00084 48 6b c0 01 imul rax, rax, 1 + 00088 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 0008f 48 03 c8 add rcx, rax + 00092 48 8b c1 mov rax, rcx + 00095 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00098 0f 5c c8 subps xmm1, xmm0 + 0009b 0f 28 c1 movaps xmm0, xmm1 + 0009e 0f 29 45 40 movaps XMMWORD PTR temp1$[rbp], xmm0 + +; 48 : +; 49 : _mm_storeu_ps(&ans->m[0][0], temp0); + + 000a2 b8 08 00 00 00 mov eax, 8 + 000a7 48 6b c0 00 imul rax, rax, 0 + 000ab 48 8b 8d 50 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000b2 48 03 c8 add rcx, rax + 000b5 48 8b c1 mov rax, rcx + 000b8 b9 04 00 00 00 mov ecx, 4 + 000bd 48 6b c9 00 imul rcx, rcx, 0 + 000c1 48 03 c1 add rax, rcx + 000c4 0f 28 45 10 movaps xmm0, XMMWORD PTR temp0$[rbp] + 000c8 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 50 : _mm_storeu_ps(&ans->m[0][1], temp1); + + 000cb b8 08 00 00 00 mov eax, 8 + 000d0 48 6b c0 00 imul rax, rax, 0 + 000d4 48 8b 8d 50 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000db 48 03 c8 add rcx, rax + 000de 48 8b c1 mov rax, rcx + 000e1 b9 04 00 00 00 mov ecx, 4 + 000e6 48 6b c9 01 imul rcx, rcx, 1 + 000ea 48 03 c1 add rax, rcx + 000ed 0f 28 45 40 movaps xmm0, XMMWORD PTR temp1$[rbp] + 000f1 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 51 : } + + 000f4 48 8d a5 28 01 + 00 00 lea rsp, QWORD PTR [rbp+296] + 000fb 5f pop rdi + 000fc 5d pop rbp + 000fd c3 ret 0 +submatrix2_sse ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat2.c ; COMDAT addmatrix2_avx _TEXT SEGMENT temp$ = 32 diff --git a/StgSharp.C/x64/Debug/mat2.obj b/StgSharp.C/x64/Debug/mat2.obj index 8e00bbdd1380cb0b8b19f9365dfd80195ca845f0..a38e2615c56aa5505897a9cd565db7e949e85863 100644 GIT binary patch delta 2312 zcmZXVe@s(X6vxkd)dnf0RHX`4S_)KU6cohY+w_lt3}s@B3UebBoj;&0Qd)jGl|r3M z%vKLE#zozT%R;tg)5ag0iipA{%EUM~w=9YpoH2{CMMdV+o%`;ywsMm9&i8%JIrp4* z-+QgUMcjEzj9lf7hy3do*CcEN2orpfvErQJzGSoV(r|zht8b}EJXYeXF^k!yzGk!7 zRqE?9E4xbpX4-rYP0EEffQL4W6HLl*JAmlGERx9%fQe;j7fk9oWdJKSfMmmbPxQ(L zy0DZ>74ynz8K+cXbpjMsunMKK0svjOljJcMK$ja^NnUjW+^xi0Bz08)+0_^+nv`!> z12}7NnrIR~slh_gto*VD;7AR6iCpHSkI3JgXlkV#LoL87wNg$FCj~@SbK>CyiR|O# z1Sj1@eyc^d!lWD^`K%WAk{nS7psmABMVvBB0MOU@?J+-A}M|JLQt8Q(_t~;?K ze!sfmv0s~1|At~1?Z>m6LVy2ywV>*xom9bOI(K4N>2aaM-%%NMXzo6ZgPa_To=w?rC3 z`eC}`@G=W6IG##a!(?))bp0OrH1f^lr;tBKKArr1@)_jW04M3-12DyJl{0p$C;hLN znP^+^nlm0f8y*?j0_jZgc{yYAwo!Vxfcu@ZXeX&eFq|UFmuHISbH?&dp~00D{R1fl z&@%+C!btUCfh#HI$3TQD7P-P0Cb;6G&jzAgv1l)LyJGMwS44DIAj%bs-lk|$G}{K= zk1H1GXZ@C*4@9_Pkw+4vQ@~D>q8B;H&Pb$rOLS&$R^R2p!m6Xmi@tWecGGH|v~l-6 zobR4tytb?J!uFpO`J;>e2ye1o_-5NV?OWNeCg+u}U((z&-;{=%-E*VjEoo2AcAQ?f z?cIZ!s>K`IvCVCa8n&{xb@!6Tnr~BemCaXr9R6PS8I`VuT8eaxFMD$>ALrt)(=#xy zK6YFLVTH)%W_!v^1@uz|r~MJLvA^D^drB9q_WGs87kKTK;-^Kd7Uz1DIwRfO^GdZ; z8J7}2gDPVM4eqPY92G^i3Nb1uO@n{dCkR?pc{26v-BgHUgQ8k#5zO0z`IV#4?n&9C z2BS0qz+5&hnI=FM$V3|;%VnYpkTo)a0C5c=o+0E@nGDAVp3K>5>Z*jq1$p!-aMKJS z+95>62wEHUxT3)*9Kt<~6L5cnQ9K`kw;Ij(7s(qDnCdm-)JCIaQ0}OsDg~rgt+G~F zNs^7BgZ5C;09MstwHmDr`b`=(7MT=>)Up>9V~Hw6wxEKJD&_S%{Na4}e&P)RFPT|h zN2&_x97CBeI{)&>Hc}%!A87$BY0z5c$hA^t$PBSk?eiJN#w^>U!LyBe%Obf#iidR5 z59y|5_h~7XE2MZxk8vSAmMxFEr^N!V-cl)7Nb!&!?04_Q9et27<-UsbDE?5ckm4ad z;zD|S@t=5ze?bzEpbkpN*W-Z5iv}_1C<8$+1>Q#Y@HmDNq;0ZYeo6Gs`MhKb2U_y zTkXy=hjVp$Mv$HgL1|WZ6@H8dVuBE>OqAZCME1wjG#ckMWu+v#?3L^6s~CFTf@*^j KgD85NEdK+i8}xDj delta 1300 zcmZXSZD>o4%|uiP64X>y_1}1g&MD(&9^J=^RM4*<_Y=);UZY(lL%dX#Fau!OSMdf#jO>nwRdJpteo7U) zJ@Kom^t}h*l_&mOk>nPD;T9|q6zMAAl~$}FeAr5RdC^Ol^a3pOVWp@@>wN(AZP-Y- zs|{eU9}g4$><5?#;03~a0f1x>r$j|8X~);1Dpj-tRJWsQP{c-Vykx@MoZ#kHGK1V) zb7a7J!+g72)oM!~2t|{<&k7%VhU$LlE!mjiK9lb*>nk5^tglKA{h0k{ z&7uw3X7$hpg8+b4b=x#oi!7KDbchLDG$*jL&4-EBPlXX&?RVmG?_}YCo-)b=R?XcX zjPT3A*LY;lMe6Vdo!IP47GBaj7-hl)&D>2g(sK7@3V1nW6GpU~A-hnh>Gh2G3EZ(0 zG^$@O(DpY&#i#dvCoCS+%Ng-=WLZY_loLxQC|%OP_UAitV#$q^qe&k_MD)J1#&F7H2Jv1}OK<v6m2qo5mQ&W zKhJs0->|p5XZw3?v@Dakn@=CQojf_8TcN=QWa)D&yE1VQkUb!iv6*xfd}TP)WB zJOVr1v9h2KR${#HAZm=42T_djATK69n3$O8vri<(2NI3{bIzQzGrJFxbiSGM|GwY( zzB%*t%w5ll=HEn>206;nh^xS~x=71Kn!xI^42?h@0*-QpfGL(CNS zidkZ|m?P$jd1Aik5DUaYu}CcbEIwuDiXW;D$B}kkqQ9z6d30MLTPfwo5}9&2N3mXL zuCn|Z0)xY4y!L%QzRK$+$?_jHf2-7meMP$)!@upD{J;j%SN^khRTIJ;{MX`umzHK07Z z?5QT$jli{kcg9;iXn!7-C^UrUvUN6}d_42Qh-?E0KwwQGm#x=C&;|>_ zglq!{AYc`t+F(N@$70_Z$W=1vfux6c3=t1o&#;j=W;chd>;BNQO9fp64InH>5_7oh znI?Ei1lG$B4X}rkA?4X+o0{mQ5n3-lG|;e7cykln8G3f6ZfJmE`3)~z__IxPSA^Du zLjw&PO}(WFel!B>x}gDv4PZ}QxNNJYgT7f6dZa1YHxPiqDhz$&vgb4r>>iJW3E4If zK)@!59Isc3RAu zYnXMDomE2^1A>)ZuWA9bqXF6)KxRY7Sne4(g{i>?>P1WGR2U-_Y#7QntW`F+DU%9g zK(OJP+9@H=sjpSeQaTmJpkTw)P(!MG0GVwRV?eNBsL%ivEELzNAb^4mQx%fWeWZ4I zI6luCQ4!LzQR4l7D__NT^2LGNSY{-fF9m%84O2U(na(^aY#M`u3&iA9; zARz{p?IHdL-hk6r(=N3$WC{sld#(6NAYyN0`>Z+^s3~ImNwRx=r$1lWof*uQ2Q%e- zVPq)3eK)ZK#DCM1@52r2T~fa5lEggg+8=h|e}^3;{)?s#=w(WFBL0w7y+B2whpl)} ziz$S@YQ;l=h)7|@!-0q*UegPS8#oePNMc8b|ExN~~ZQX%UN<@e+=V2;{VIHtBF zwP44rSPeu(R;}mb1R#D|F^QXVV@J)s;EaCFukQ;CD;2xrskm+ks;qBc>E&supK-=Ok? zRMzrNq_Ru3o8|b7_3!Cg;Nv*h3{&I#x)h_&B7O-Wh-S0vmvi(bV%gl_vbL!b?|b02 z8sL9^T*$8&^Xo$X=#cmQMX01N!zF!XN?K-a^lQ5YfH;ELL&kO0u7Po3IWPkU!xH-P zs_)6lyBaEAt}6dd?IY%Ak$!VP!&VM!ik4?r3bOETLWO@DF8rD)e1%=h>$*I&2Plqc N_6TvraX4JJ?LSbt8;1Y@ delta 2849 zcma);OK%%h6vxlpI*BJ~N|Tl}4NV(d2>}v_*lreGpn`8pNFjv=5cI*swI_*bY$qPq z&7)=dxI8>95``l30r&tc_yR0o0UIP1NJvPqW`&TtU;+H^+?ne;&Zbi4WX}Jb-#zD^ zd3b*Rt8IPtXWP0VEWyMskrI8PUkr$}u*IMl61&B)*drbhd&P(t75l_~@u(OR2gJBI zC?>>X;*gjWhs6;wB_97KGw`1OL)$7?i}ZKfYBq{BZ>{dR*&L-$L$E{3zinImdw7f! z{|@IrDdK@iM-=Xjp)f`kYXR@R9Ro4vGy z{x?AvTN{9(0fvo1)$HsJm<49(W7Ao{%nu}uP?COG(b%qRx-aMsCnqropkPA^1G3qi zt|y7KNyu?R00A4mSf^Oc?DNOMeAqZw{tIC^`?`bma_%|9|){OQo$ttY<51ps$J+= z1?6H0J|I|mWmAE#s0%%%vbvOdF5rWLHA`LWDK(=@DF{9wSXD|@a*~iw$0I5m?Fv39 zSd&^zQuMrrR4Mp?U`?plv#A%OO~sYq+kW~q{+YYF)I*)plqv-urC?2{+yl);kbEo2 zO9dYgtO>b*d|U*5f#)@)O2G#OYf?)+rOs+dJrnQ&!J5!2$s6d+z$#Umo6btnTXDQf zb#1lMsjp{j9|17ZvMTY?gE0G@z^c^B?uN5gtTdv1KtrOmY@G^eqH}@ec_pV(!#lX< zRZ7?^B;>%d2Jt`e(i=HJ=fj8Bsb-0JTD%a6IiFZls~00RPwWawc5!FdOPj=6#D7zZ z7cl|#>XN?$Ibv6J=#m-AW62HTzbLAt=9Zf#=5K1X9I0q@ON*`&^GMy+;!-3c^O_cy zBN0tpSA)a`E}MfS_CE2SRST&gs|d=I@C;r@?^7*s4&p^ zdOb5f%;o*T+ElQKTAjsa=1_lHpHI%VaNpda!XVMrz*<;1N$hUuZ3NZ}Z@ry8Hbd-_ zP}mFwdC#*iLSZYg=1-oPC%Z5}v>mRDr+XU@0@kz#SxS9z;1!={eYnF!aU(%J6r z>99IQu5Giu`r|0gM#5Gf;sZ&3Ey?C?cU$%03ZvK2xYv(WuSn%M*#1~=t5#$E0CC_P z*=)RfdQhDrmrdwXbUmrMmY;Pv((EvG-fd-OE(d|N>Mk|I$=wO8MrC*F4Pd zNL>F@)OV|E7$YE#WHuFt?x_$48HX~&u>uFfj;hmpo&Q>ySLZ%63Vv=DydM{QlKAX# YOJ21v)w09^aU`>+h$D?dx9!3I0R)aE)c^nh diff --git a/StgSharp.C/x64/Debug/mat3.cod b/StgSharp.C/x64/Debug/mat3.cod index 2ce0d7d0..dd9a4665 100644 --- a/StgSharp.C/x64/Debug/mat3.cod +++ b/StgSharp.C/x64/Debug/mat3.cod @@ -144,6 +144,9 @@ msvcjmc ENDS PUBLIC addmatrix3_sse PUBLIC addmatrix3_avx PUBLIC addmatrix3_512 +PUBLIC submatrix3_sse +PUBLIC submatrix3_avx +PUBLIC submatrix3_512 PUBLIC transpose32 PUBLIC transpose33 PUBLIC transpose34 @@ -175,6 +178,24 @@ $pdata$addmatrix3_512 DD imagerel $LN3 pdata ENDS ; COMDAT pdata pdata SEGMENT +$pdata$submatrix3_sse DD imagerel $LN3 + DD imagerel $LN3+355 + DD imagerel $unwind$submatrix3_sse +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$submatrix3_avx DD imagerel $LN3 + DD imagerel $LN3+240 + DD imagerel $unwind$submatrix3_avx +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$submatrix3_512 DD imagerel $LN3 + DD imagerel $LN3+133 + DD imagerel $unwind$submatrix3_512 +pdata ENDS +; COMDAT pdata +pdata SEGMENT $pdata$transpose32 DD imagerel $LN3 DD imagerel $LN3+205 DD imagerel $unwind$transpose32 @@ -263,6 +284,27 @@ $unwind$transpose32 DD 025051801H xdata ENDS ; COMDAT xdata xdata SEGMENT +$unwind$submatrix3_512 DD 02d062801H + DD 011a231fH + DD 070130036H + DD 0d0115012H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$submatrix3_avx DD 02d062801H + DD 011a231fH + DD 070130030H + DD 0d0115012H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$submatrix3_sse DD 025051d01H + DD 0118231dH + DD 07011002fH + DD 05010H +xdata ENDS +; COMDAT xdata +xdata SEGMENT $unwind$addmatrix3_512 DD 02d062801H DD 011a231fH DD 070130036H @@ -912,6 +954,311 @@ transpose32 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT submatrix3_512 +_TEXT SEGMENT +temp$ = 64 +left$ = 432 +right$ = 440 +ans$ = 448 +submatrix3_512 PROC ; COMDAT + +; 125 : { + +$LN3: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 41 55 push r13 + 00011 55 push rbp + 00012 57 push rdi + 00013 48 81 ec b0 01 + 00 00 sub rsp, 432 ; 000001b0H + 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32] + 0001f 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96] + 00024 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H + 00028 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__58B0E32D_mat3@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 126 : __m512 temp = _mm512_sub_ps(_mm512_loadu_ps(left), _mm512_loadu_ps(right)); + + 00035 49 8b 85 b8 01 + 00 00 mov rax, QWORD PTR right$[r13] + 0003c 62 f1 7c 48 10 + 00 vmovups zmm0, ZMMWORD PTR [rax] + 00042 49 8b 85 b0 01 + 00 00 mov rax, QWORD PTR left$[r13] + 00049 62 f1 7c 48 10 + 08 vmovups zmm1, ZMMWORD PTR [rax] + 0004f 62 f1 74 48 5c + c0 vsubps zmm0, zmm1, zmm0 + 00055 62 f1 7c 48 11 + 45 01 vmovups ZMMWORD PTR temp$[rbp], zmm0 + +; 127 : _mm512_mask_store_ps(ans, 0x0fff, temp); + + 0005c b8 ff 0f 00 00 mov eax, 4095 ; 00000fffH + 00061 c5 f8 92 c8 kmovw k1, ax + 00065 49 8b 85 c0 01 + 00 00 mov rax, QWORD PTR ans$[r13] + 0006c 62 f1 7c 48 10 + 45 01 vmovups zmm0, ZMMWORD PTR temp$[rbp] + 00073 62 f1 7c 49 11 + 00 vmovups ZMMWORD PTR [rax] {k1}, zmm0 + +; 128 : } + + 00079 49 8d a5 90 01 + 00 00 lea rsp, QWORD PTR [r13+400] + 00080 5f pop rdi + 00081 5d pop rbp + 00082 41 5d pop r13 + 00084 c3 ret 0 +submatrix3_512 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT submatrix3_avx +_TEXT SEGMENT +temp0$ = 32 +temp1$ = 96 +left$ = 384 +right$ = 392 +ans$ = 400 +submatrix3_avx PROC ; COMDAT + +; 116 : { + +$LN3: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 41 55 push r13 + 00011 55 push rbp + 00012 57 push rdi + 00013 48 81 ec 80 01 + 00 00 sub rsp, 384 ; 00000180H + 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32] + 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64] + 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H + 00028 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__58B0E32D_mat3@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 117 : __m256 temp0 = _mm256_sub_ps(ALIGN256(left->part), ALIGN256(right->part)); + + 00035 49 8b 85 88 01 + 00 00 mov rax, QWORD PTR right$[r13] + 0003c c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00040 49 8b 85 80 01 + 00 00 mov rax, QWORD PTR left$[r13] + 00047 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 0004b c5 f4 5c c0 vsubps ymm0, ymm1, ymm0 + 0004f c5 fc 11 45 20 vmovups YMMWORD PTR temp0$[rbp], ymm0 + +; 118 : __m128 temp1 = _mm_sub_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + 00054 b8 10 00 00 00 mov eax, 16 + 00059 48 6b c0 02 imul rax, rax, 2 + 0005d 49 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR right$[r13] + 00064 48 03 c8 add rcx, rax + 00067 48 8b c1 mov rax, rcx + 0006a 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0006d b8 10 00 00 00 mov eax, 16 + 00072 48 6b c0 02 imul rax, rax, 2 + 00076 49 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR left$[r13] + 0007d 48 03 c8 add rcx, rax + 00080 48 8b c1 mov rax, rcx + 00083 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00086 0f 5c c8 subps xmm1, xmm0 + 00089 0f 28 c1 movaps xmm0, xmm1 + 0008c 0f 29 45 60 movaps XMMWORD PTR temp1$[rbp], xmm0 + +; 119 : +; 120 : _mm256_storeu_ps(&ans->m[0][0], temp0); + + 00090 b8 0c 00 00 00 mov eax, 12 + 00095 48 6b c0 00 imul rax, rax, 0 + 00099 49 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 000a0 48 03 c8 add rcx, rax + 000a3 48 8b c1 mov rax, rcx + 000a6 b9 04 00 00 00 mov ecx, 4 + 000ab 48 6b c9 00 imul rcx, rcx, 0 + 000af 48 03 c1 add rax, rcx + 000b2 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp0$[rbp] + 000b7 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 121 : _mm_storeu_ps(&ans->m[0][2], temp1); + + 000bb b8 0c 00 00 00 mov eax, 12 + 000c0 48 6b c0 00 imul rax, rax, 0 + 000c4 49 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 000cb 48 03 c8 add rcx, rax + 000ce 48 8b c1 mov rax, rcx + 000d1 b9 04 00 00 00 mov ecx, 4 + 000d6 48 6b c9 02 imul rcx, rcx, 2 + 000da 48 03 c1 add rax, rcx + 000dd 0f 28 45 60 movaps xmm0, XMMWORD PTR temp1$[rbp] + 000e1 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 122 : } + + 000e4 49 8d a5 60 01 + 00 00 lea rsp, QWORD PTR [r13+352] + 000eb 5f pop rdi + 000ec 5d pop rbp + 000ed 41 5d pop r13 + 000ef c3 ret 0 +submatrix3_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT submatrix3_sse +_TEXT SEGMENT +temp0$ = 16 +temp1$ = 64 +temp2$ = 112 +left$ = 368 +right$ = 376 +ans$ = 384 +submatrix3_sse PROC ; COMDAT + +; 105 : { + +$LN3: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 55 push rbp + 00010 57 push rdi + 00011 48 81 ec 78 01 + 00 00 sub rsp, 376 ; 00000178H + 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__58B0E32D_mat3@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 106 : __m128 temp0 = _mm_sub_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + + 0002a b8 10 00 00 00 mov eax, 16 + 0002f 48 6b c0 00 imul rax, rax, 0 + 00033 48 8b 8d 78 01 + 00 00 mov rcx, QWORD PTR right$[rbp] + 0003a 48 03 c8 add rcx, rax + 0003d 48 8b c1 mov rax, rcx + 00040 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00043 b8 10 00 00 00 mov eax, 16 + 00048 48 6b c0 00 imul rax, rax, 0 + 0004c 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00053 48 03 c8 add rcx, rax + 00056 48 8b c1 mov rax, rcx + 00059 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0005c 0f 5c c8 subps xmm1, xmm0 + 0005f 0f 28 c1 movaps xmm0, xmm1 + 00062 0f 29 45 10 movaps XMMWORD PTR temp0$[rbp], xmm0 + +; 107 : __m128 temp1 = _mm_sub_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + + 00066 b8 10 00 00 00 mov eax, 16 + 0006b 48 6b c0 01 imul rax, rax, 1 + 0006f 48 8b 8d 78 01 + 00 00 mov rcx, QWORD PTR right$[rbp] + 00076 48 03 c8 add rcx, rax + 00079 48 8b c1 mov rax, rcx + 0007c 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007f b8 10 00 00 00 mov eax, 16 + 00084 48 6b c0 01 imul rax, rax, 1 + 00088 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 0008f 48 03 c8 add rcx, rax + 00092 48 8b c1 mov rax, rcx + 00095 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00098 0f 5c c8 subps xmm1, xmm0 + 0009b 0f 28 c1 movaps xmm0, xmm1 + 0009e 0f 29 45 40 movaps XMMWORD PTR temp1$[rbp], xmm0 + +; 108 : __m128 temp2 = _mm_sub_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + 000a2 b8 10 00 00 00 mov eax, 16 + 000a7 48 6b c0 02 imul rax, rax, 2 + 000ab 48 8b 8d 78 01 + 00 00 mov rcx, QWORD PTR right$[rbp] + 000b2 48 03 c8 add rcx, rax + 000b5 48 8b c1 mov rax, rcx + 000b8 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000bb b8 10 00 00 00 mov eax, 16 + 000c0 48 6b c0 02 imul rax, rax, 2 + 000c4 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 000cb 48 03 c8 add rcx, rax + 000ce 48 8b c1 mov rax, rcx + 000d1 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000d4 0f 5c c8 subps xmm1, xmm0 + 000d7 0f 28 c1 movaps xmm0, xmm1 + 000da 0f 29 45 70 movaps XMMWORD PTR temp2$[rbp], xmm0 + +; 109 : +; 110 : _mm_storeu_ps(&ans->m[0][0], temp0); + + 000de b8 0c 00 00 00 mov eax, 12 + 000e3 48 6b c0 00 imul rax, rax, 0 + 000e7 48 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000ee 48 03 c8 add rcx, rax + 000f1 48 8b c1 mov rax, rcx + 000f4 b9 04 00 00 00 mov ecx, 4 + 000f9 48 6b c9 00 imul rcx, rcx, 0 + 000fd 48 03 c1 add rax, rcx + 00100 0f 28 45 10 movaps xmm0, XMMWORD PTR temp0$[rbp] + 00104 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 111 : _mm_storeu_ps(&ans->m[0][1], temp1); + + 00107 b8 0c 00 00 00 mov eax, 12 + 0010c 48 6b c0 00 imul rax, rax, 0 + 00110 48 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00117 48 03 c8 add rcx, rax + 0011a 48 8b c1 mov rax, rcx + 0011d b9 04 00 00 00 mov ecx, 4 + 00122 48 6b c9 01 imul rcx, rcx, 1 + 00126 48 03 c1 add rax, rcx + 00129 0f 28 45 40 movaps xmm0, XMMWORD PTR temp1$[rbp] + 0012d 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 112 : _mm_storeu_ps(&ans->m[0][2], temp2); + + 00130 b8 0c 00 00 00 mov eax, 12 + 00135 48 6b c0 00 imul rax, rax, 0 + 00139 48 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00140 48 03 c8 add rcx, rax + 00143 48 8b c1 mov rax, rcx + 00146 b9 04 00 00 00 mov ecx, 4 + 0014b 48 6b c9 02 imul rcx, rcx, 2 + 0014f 48 03 c1 add rax, rcx + 00152 0f 28 45 70 movaps xmm0, XMMWORD PTR temp2$[rbp] + 00156 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 113 : } + + 00159 48 8d a5 58 01 + 00 00 lea rsp, QWORD PTR [rbp+344] + 00160 5f pop rdi + 00161 5d pop rbp + 00162 c3 ret 0 +submatrix3_sse ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c ; COMDAT addmatrix3_512 _TEXT SEGMENT temp$ = 64 diff --git a/StgSharp.C/x64/Debug/mat3.obj b/StgSharp.C/x64/Debug/mat3.obj index 53bb1a6f5e004b383b16ea71d8804120c981a20d..381a9bcd98b0c196b2010ad8e55f10c84e817aaf 100644 GIT binary patch delta 3680 zcmZWr3se->8NM?M>jDD7b-`r_EGxS}6a*Emu{LND6E#Y-X`)7>ix?#e?6N#nWRc}z zz^$7fkw;G2BTX&!QSG)No>&{(V~92nEWs0>fCd7_R5594>oMtn?;VESIET6acfap{ z&3yn@d&JHWF*vJw7FphZe$&CdgsgW5OQKWbe$1?v0to5Ma=&O4Bl6ta%wk)f`+!+A zTixf(>O?Cc`>gKojOuno$u@`T!gRM38^lCMubNT2nj2K zQwU8(gk%@PAVPOBAyY~qL^P@wl@OvUg;@yal@fAn8@wVKgFoL!NY@U+9*z5fq&Ach z@^%@kc>>|_ovh}?orIh%XEm>u6Y{{pYMLqtsoh0u2EVzBkiJTu#}D?1l3L>=q{j(I zvEDGkkt(==P+v_*P7QpIu%d>L)3sn$p+hYpYhQtD8yV* zd?^YfT{v>?Gm1QC^NXl&dcjg5=Ca~TQ6TvON6rmV1cwWc1PvqdBe*4G0J4gDVyF*q zlcGSAWXf-a_5`6v0IvfW*-;@aAGXqLIMS;YK66ee^3M2~@ZlS_$ zR=BMc$xAd(SObsdJs}Lk+PtI?^8`%EAA4aYH08bZ3|xUV)89`()P|vc)fiJ7UKK` zOo4aZu@^1gZpV9QvABb-8{TWyKrdq607ZP?I7j!b7tZEqV(F>&xj1gN&kb1fVQ9kX z(8Q;$@Vz}6Qfz+kiQR^6r57ZH7<}8>UT|(xHkNr56VY{e49#mee--T(v(Bf}4$11e=YmK!@eR!J`@gu`IdStG_-0gjMx}tW32{HYOD@A-sIY*bY z-}7AACVCS8v~!UVb6xSJD3E-PBj@PZz3z!})KK5wR4f-_ZYaJKabM0+-y1No(xm$e zk&5`?$dLxoe_>grDg2hAa6}bBfZdgG`mYspx2s@MWo-Dr6qO^Yh6#{S85e$A zkvO7~p5+X`qevW4DOP~LW7LQuaYUs=0Un@qSCKfPQYw`uL56d@?i)qsh{|)o>NM%T zRTPe>G9P~L%nn+FA0m*IIA09WRi+pJt$1=oJu~RXq8)p_M2Mun?Er%NXJ30o= z|9sx5?0LJ>d)r$4?=S!CT~jd#)$2W})q8`(t1!8U@72hT^Stn1hHH<&w3^5$dZbn2 zJsjz-(kG1g$*?$&p`IoSRn#VLR!=$mOJtQ=wX(O3ix|f?CtPPU|2^vt1V(PPAssvXWR=unv2G$tv(|B~jN2@Te$V`~R zINiNB<6j(T8qKxPK<5|6cP z@x*!+m*E3B4~z2YA(7=7{r(I0awhNt&H`Bv+7Oo>Ni2_d50Y;W8!U1x^YrN<*{6qV4LL3zJN|z^eCSi2O$y~aEXt>cX>h4I zNvf6gX*8=(ofI&(BuUM(p2GF~v2&RUueBsS(Jt$$Os6H!AVa@wjJb}?^9tjAAEv_v ztRaNbI6|i5>)XQ&h;B`iBw44|9rgTz4RMQ>uBH();b?0Fl(mLSGi9HdV?Hl%pEUGI z3Ro=bY4AnsWX&wKVoLq3~19B+rsJ&EsS7|GpecL4J10jCFSVM&dQK6qV4a yXXEc?2q|7Xb&F%yHSWi3VQz7DZWg6se!JE?h$f30lSfOYrB3(C<#D#J68;a0T@6zJ delta 2081 zcmZXReN0nV7>D0;TQ9XxSuL$Vi|q<+#aLunm@#J4Ibkq|lWEks=){kynS5CJbfSV3 z9Rk|DN_0_?Rzx<@xQ0#VG%;>7I_Jj(b$&%QaPFTu{?KUVmc6H^xv=ykJ@>iK?|siX z_w?L=bhk&+Ev*|1cmHl*ezguD-KR542V~z^r#vYN;P=J8Id*A6fp4u-I$PlLJEg2b z-vy_fQwY#i=zC(9&lAlk!qLnwFD?R@UyNCVHN^m))mTVaw;JG}2b&2mc>rE2!PA79 zB>nen+!Xjlrnl}+$yU#8 zi<>)cPuj_avnD_9+8KK)D=9PBnOc*{STMb4C5!H%+l_{FntRYz9f#wqrs4DADXcsA z>T1TUKPoXNEgYv=xNkXyTcYsM`U!Z{bBx;Z*Q7G*1*MIX7Ov1NTsJ3bTO5oojbl`A zE6Zip^GZD@E%ebW+(S;-P~I8MJJrxY^A(&{(PO<#Bu>sr3p;2QZWkxoBO#bqS-^~< zaX#InnSN^cfaa^gYipVGCO?;0gOe8Q6ba`HlNP2bE=zGM6t{{Ks%r1kr}Wk8nf0Qw zBqwoW!toos7>ui1&OdwI<{W1INvY+eg_|@BcZXB3Z_8$0yQ)5qSuZKIoJ6f~y!H~_ z+3GM}CsNTD0tnI&^`fc4VY;Ctf_U-=U|vItiEk>J1o3D9aAISM=@%su#G_|`osIFh zwK2wcONj;XnBn0@hw-+O2;#|bd_W05tk_KuPxNSOS{a={H_2cgy(i+1CdZt+N~IuP zX{8z!JqO3ngd~TIYa!#WHfG$<>hC$0Fh0ro>-WwtzB}$}zQ5IkvD;Q)`?f{F3ELOx z@bzb=gBQBR*+) z&!Gn!NTHS9jtM=$pqP1KW5mz*o8Mm=ev4J|vakWg)JK?I5$0foIg7T|cMw}g(swLu zO~%`;DQwiIez*B%xO5c%Fi0z2nqQJH4jGTxls^jR@glDn%oA|C-;Hj+#*h%vn}|25 z*P;_EB}Vj`(H3yyDe5&x^jdI5z&$P}+-r&GP2xs+fo49gKP?!Ey$39q8_-~e-!|;Q zyMbOke$!@VYp~4kQh#};aw6s(u&_Ej?RO2^^2A(jz_$*X*=HyR!tt4ag>~YLfNR*j z9R*EByhZUDY!0|Esolo9@gC8#cAL3Be5e%Km@dmRco`1d-|n9LIGj5|IX|9$1OPwk zph+V$Q!!~nF4T!Jhur2|%K328@Be>@3ujZlJe<2k?kQQ4l9M~1cZ|V3ly3~@V+Qlt zB2UG>L+;_t;XD-+JCZeHd6hJi;pF@}&Xyb9J))L&?p^XW4cez-w=Ic!MAL2XN A3;+NC diff --git a/StgSharp.C/x64/Debug/mat3.sbr b/StgSharp.C/x64/Debug/mat3.sbr index 7a18a6b98ecdeee4594a6e646b0701da23c2a402..ab01fc182473d5f38ffb5038900d5e7fc7526ac0 100644 GIT binary patch delta 4872 zcma)=Ymi(;703HFn`CZag*7IIgbikWQYDhznTSd(61JlYD}fk6@HI|$hwQAovs*j6 zVZ-YNXn`Hx5E;-9q91(V2Vdw1-&h(gQN*$owJJWUe17nOrItmNmcP?|`_8>P(Xwj$ z%=?9#M*Se(HPp5>{Y@w-|>8+T3o0#Tk~_R`bZfv0A!>i9%rWC z;2BSQ#=r863Jd@kNXK|m7-LHOhaquB?Wi_6Nt_9RmeW81VImFdgc0kDd)R9N+mUOB zmsu7JGBOb5GuD^%kmCZm^Y7`QwFwwxWRX1HL+)>P_cw$M1{ql-zo~~jP$2uT!QxUf z&PS1bX%Bm2fxUBhgrvb(8d)Uo^W?N9Hn+QHS{4=nETm&m5J{{r%hr?Q*_x+F82~^* zhJ|8%xo4zhur1G!G5~;qbPQJp`wMGqZ%32$#VR#WPOxW+J+iyP0cG$WhQ#&K+}Tyq zssV$DG%ONEtl!c@KBqwT+Ybgg;Uh5RGuBu1u+J^9{q}>wMi$9e_K=5jXBXlIgN!s! zCi%eM+QZ&iVEe$qU?Yo5U)4i?ZGr6L27`=D$%%W2_0^u8*3GWmkyfN`0H7fqjk<~T z+dLz^Jub{Mq-+3SARWVfA>W=wCdMk=CF|Fc;~t1(3WI> z=GLDGa}1D~TfEj+dA%a@>PgHYA*JeFERYVZB3+%5!iCOU?hHQitf^J3cV;ZV6mynB z=1GlJdsR!53QIAEgv=*3Eu=ABGt!V> z3IG-|&stP+?(?0;=7zQ=^Ugw~UQ%Y_A5OQ}jvCF$`f_!?)>ugE0t{Co^$|5%Qfi5> zPHUptX!15~wi*+Z8xS@~eVsDD;te>kTOD>cLv?mU>FYD_+7#q&(>G-3a*9@zzEKJH z`gSzYSUgglsD!d~p%3BqcGR3( zn5`umqX)X+%wYHQ!4~`w95+72d>y>(6J34S+uhJbid#D}l zx$>%!ov&8^AlJWs)Bz8-qkVfX+oxh#`w{0kDUCnEiujDz>ox8=k>0SR*Q(KI zx1wRldc%|V5wSECqo*kKesY;xT9~LSnSB6aZQ)RTQI+&MCAV^4q&^6^Lm4b(=omb4 zibqk5IE6k{8Mp>h1FBCeOygLe?qlTbQ_^R+80k>DF`m3}kuFA}`cNUp4?|2skOLve zkN6-lH4MEW;2#AaR)RTvW57QKPV8d4DPSK5D|>9SGOT0pYOvI27N=YIYKt1@1`_!V z`uu2uN_v~i@Be7Cr00_S9xLSc38Dz;ogG5^Bp_#ir3{^H4~kErAitn^alk(fPJUwi zl7M{%jQj+9nKGFb<%_?gJQ@(YdKH`w^mIqzCtyph{T|64S?eul0 z=J{LX)HpQdC*Q_Zv&Bl6hm^ld1ohc@suz;MSnm(2?|GHsbc62ALHCr`aZEwQ?*zOX z{7KU0c(3HHA!k;{iq{$YLe{68-mcnLM4(y6PV>;%w=9bHA}m^s}SUZWVW)ogUioUw+@p4_*oO znOv|x$p`z>5bUHfuixW>J>i3;DIf@prNhO{fD?r8K|>%V-EcwlC$6lEmC*0@4_Vwl z014^mxsZO559ya7r0K9nzs|M~lEGNNC#ZhoRl{7YK{pe0zx6sQA*hmIR52%RRhP#^T4guby5`v3Z;g8Y|3BL8zP^1tLGe>Ox; Z^O_dR-+g#$lYwQhmhKfhgCdUC{|9w=fvW%j delta 3872 zcma)9S#wlH6z+QnWNz3&B3oF3g-eN&%m5Z{z%&?%6*i%i#mO+4kkL$*nIR-BUY2&5 z3p}Xc@Zhcw>Vx7^<@R9tpbz?Dl@C@~#e;uAt0>C{^*i0uoqH3ts7jyQ^PThcS-Pih z-#`AWde?rddZ(4ANKH`LuCjehd`AyZ6-$5fO zW=X695>HHjYo7%m`dRr$;H=PXM4mYKrdXBe5W}La!%Z$)K4W0UF#P$0KwJ zUMxE}uX&Lkq|pBS8ZZHZ2`Lf84xe^RVmH^a#n$;jv-XFyzWm>(os;|*$D)~z14A&# zIC+;L*Bjmv=|zeg4gf4ju+TEy@!f_}-@q%P6z&HAP#|?6y@B_*47nGpq6}_005BkJ zYCb(0W31K<54hv(4;B89Flj%7kY2MaRF>YWg3w|{4 zdcuLdbr7B>9eAV;B8gL`ktpD)Xd?wZE#yxoh5pbR7%UaDL4V8j6`P;W=j-Mk(%nok?Ow38yDL<4on42{S(H zOqG}^C472Lq#J8jhg%oUl)OKvD$>3XBem{I>(Xfn_uSGkf_-ydq??2|7J7U3Y!!4t zYonpJdEaC0>(&dpsDUvJ@Sdm38aN($U0Zi_2|wK^#0fn!e%&YVL%^JV6HV1;2;Vvq zGz~j^(~Z1}`MsQ;BE(7T^TDH~Twbtt3iV}6NAeYsphm&RbAu<&09-31Jb920JkW-- zFtlp}O&1be30Db}X2ewAr`aY)yoM4qN9TA0FMqxXa8~DHIVwaAY?5gsQ;eK}l!mcN5F zwx1~IE3WA1zJ!w*wUuM7OM;2t7ytcv!QUGk<=xQh&-YgJn!Sgb3P<{k@;(-2po~a6 zZOI=XgM4uayA>n}XWC^=9~zUy>RQ`wYrAS}SSD-2wGy*S%tw38Blxt>JYKE+&6V8v zw+?^&a3vo_D)~5C$tSiF+%!8jdVKPI=1Kue!kZ4-bU)XoU@!4ha(BGRTi` z!rJ2E75TnPP)@He>D_F<@#-I1`o{wc-}dbA`NNAd|00t4mnQQKW)Z%!spGnK|7M-~ U*Cur#!IJPMY;w3s;J)AV4+sA@_W%F@ diff --git a/StgSharp.C/x64/Debug/mat4.cod b/StgSharp.C/x64/Debug/mat4.cod index ea95ee60..054c0071 100644 --- a/StgSharp.C/x64/Debug/mat4.cod +++ b/StgSharp.C/x64/Debug/mat4.cod @@ -144,6 +144,9 @@ msvcjmc ENDS PUBLIC addmatrix4_sse PUBLIC addmatrix4_avx PUBLIC addmatrix4_512 +PUBLIC submatrix4_sse +PUBLIC submatrix4_avx +PUBLIC submatrix4_512 PUBLIC transpose42 PUBLIC transpose43 PUBLIC transpose44 @@ -176,6 +179,24 @@ $pdata$addmatrix4_512 DD imagerel $LN3 pdata ENDS ; COMDAT pdata pdata SEGMENT +$pdata$submatrix4_sse DD imagerel $LN3 + DD imagerel $LN3+356 + DD imagerel $unwind$submatrix4_sse +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$submatrix4_avx DD imagerel $LN3 + DD imagerel $LN3+206 + DD imagerel $unwind$submatrix4_avx +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$submatrix4_512 DD imagerel $LN3 + DD imagerel $LN3+97 + DD imagerel $unwind$submatrix4_512 +pdata ENDS +; COMDAT pdata +pdata SEGMENT $pdata$transpose42 DD imagerel $LN3 DD imagerel $LN3+227 DD imagerel $unwind$transpose42 @@ -259,6 +280,27 @@ $unwind$transpose42 DD 025051801H xdata ENDS ; COMDAT xdata xdata SEGMENT +$unwind$submatrix4_512 DD 025051d01H + DD 0118231dH + DD 07011001dH + DD 05010H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$submatrix4_avx DD 025051d01H + DD 0118231dH + DD 07011001dH + DD 05010H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$submatrix4_sse DD 025051d01H + DD 0118231dH + DD 07011001dH + DD 05010H +xdata ENDS +; COMDAT xdata +xdata SEGMENT $unwind$addmatrix4_512 DD 025051d01H DD 0118231dH DD 07011001dH @@ -949,6 +991,267 @@ transpose42 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT submatrix4_512 +_TEXT SEGMENT +left$ = 224 +right$ = 232 +ans$ = 240 +submatrix4_512 PROC ; COMDAT + +; 101 : { + +$LN3: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 55 push rbp + 00010 57 push rdi + 00011 48 81 ec e8 00 + 00 00 sub rsp, 232 ; 000000e8H + 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__5DFFF5A8_mat4@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 102 : ans->stream = _mm512_sub_ps(ALIGN512(left->stream), ALIGN512(right->stream)); + + 0002a 48 8b 85 e8 00 + 00 00 mov rax, QWORD PTR right$[rbp] + 00031 62 f1 7c 48 10 + 00 vmovups zmm0, ZMMWORD PTR [rax] + 00037 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR left$[rbp] + 0003e 62 f1 7c 48 10 + 08 vmovups zmm1, ZMMWORD PTR [rax] + 00044 62 f1 74 48 5c + c0 vsubps zmm0, zmm1, zmm0 + 0004a 48 8b 85 f0 00 + 00 00 mov rax, QWORD PTR ans$[rbp] + 00051 62 f1 7c 48 11 + 00 vmovups ZMMWORD PTR [rax], zmm0 + +; 103 : } + + 00057 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 0005e 5f pop rdi + 0005f 5d pop rbp + 00060 c3 ret 0 +submatrix4_512 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT submatrix4_avx +_TEXT SEGMENT +left$ = 224 +right$ = 232 +ans$ = 240 +submatrix4_avx PROC ; COMDAT + +; 95 : { + +$LN3: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 55 push rbp + 00010 57 push rdi + 00011 48 81 ec e8 00 + 00 00 sub rsp, 232 ; 000000e8H + 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__5DFFF5A8_mat4@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 96 : ans->half[0] = _mm256_sub_ps(ALIGN256(left->half[0]), ALIGN256(right->half[0])); + + 0002a b8 20 00 00 00 mov eax, 32 ; 00000020H + 0002f 48 6b c0 00 imul rax, rax, 0 + 00033 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 0003a 48 03 c8 add rcx, rax + 0003d 48 8b c1 mov rax, rcx + 00040 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00044 b8 20 00 00 00 mov eax, 32 ; 00000020H + 00049 48 6b c0 00 imul rax, rax, 0 + 0004d 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00054 48 03 c8 add rcx, rax + 00057 48 8b c1 mov rax, rcx + 0005a c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 0005e c5 f4 5c c0 vsubps ymm0, ymm1, ymm0 + 00062 b8 20 00 00 00 mov eax, 32 ; 00000020H + 00067 48 6b c0 00 imul rax, rax, 0 + 0006b 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00072 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0 + +; 97 : ans->half[1] = _mm256_sub_ps(ALIGN256(left->half[1]), ALIGN256(right->half[1])); + + 00077 b8 20 00 00 00 mov eax, 32 ; 00000020H + 0007c 48 6b c0 01 imul rax, rax, 1 + 00080 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 00087 48 03 c8 add rcx, rax + 0008a 48 8b c1 mov rax, rcx + 0008d c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00091 b8 20 00 00 00 mov eax, 32 ; 00000020H + 00096 48 6b c0 01 imul rax, rax, 1 + 0009a 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 000a1 48 03 c8 add rcx, rax + 000a4 48 8b c1 mov rax, rcx + 000a7 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 000ab c5 f4 5c c0 vsubps ymm0, ymm1, ymm0 + 000af b8 20 00 00 00 mov eax, 32 ; 00000020H + 000b4 48 6b c0 01 imul rax, rax, 1 + 000b8 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000bf c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0 + +; 98 : } + + 000c4 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 000cb 5f pop rdi + 000cc 5d pop rbp + 000cd c3 ret 0 +submatrix4_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT submatrix4_sse +_TEXT SEGMENT +left$ = 224 +right$ = 232 +ans$ = 240 +submatrix4_sse PROC ; COMDAT + +; 87 : { + +$LN3: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 55 push rbp + 00010 57 push rdi + 00011 48 81 ec e8 00 + 00 00 sub rsp, 232 ; 000000e8H + 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__5DFFF5A8_mat4@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 88 : ans->column[0] = _mm_sub_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + + 0002a b8 10 00 00 00 mov eax, 16 + 0002f 48 6b c0 00 imul rax, rax, 0 + 00033 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 0003a 48 03 c8 add rcx, rax + 0003d 48 8b c1 mov rax, rcx + 00040 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00043 b8 10 00 00 00 mov eax, 16 + 00048 48 6b c0 00 imul rax, rax, 0 + 0004c 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00053 48 03 c8 add rcx, rax + 00056 48 8b c1 mov rax, rcx + 00059 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0005c 0f 5c c8 subps xmm1, xmm0 + 0005f 0f 28 c1 movaps xmm0, xmm1 + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 00 imul rax, rax, 0 + 0006b 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00072 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 89 : ans->column[1] = _mm_sub_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + + 00076 b8 10 00 00 00 mov eax, 16 + 0007b 48 6b c0 01 imul rax, rax, 1 + 0007f 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 00086 48 03 c8 add rcx, rax + 00089 48 8b c1 mov rax, rcx + 0008c 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0008f b8 10 00 00 00 mov eax, 16 + 00094 48 6b c0 01 imul rax, rax, 1 + 00098 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 0009f 48 03 c8 add rcx, rax + 000a2 48 8b c1 mov rax, rcx + 000a5 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000a8 0f 5c c8 subps xmm1, xmm0 + 000ab 0f 28 c1 movaps xmm0, xmm1 + 000ae b8 10 00 00 00 mov eax, 16 + 000b3 48 6b c0 01 imul rax, rax, 1 + 000b7 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000be 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 90 : ans->column[2] = _mm_sub_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + 000c2 b8 10 00 00 00 mov eax, 16 + 000c7 48 6b c0 02 imul rax, rax, 2 + 000cb 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 000d2 48 03 c8 add rcx, rax + 000d5 48 8b c1 mov rax, rcx + 000d8 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000db b8 10 00 00 00 mov eax, 16 + 000e0 48 6b c0 02 imul rax, rax, 2 + 000e4 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 000eb 48 03 c8 add rcx, rax + 000ee 48 8b c1 mov rax, rcx + 000f1 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000f4 0f 5c c8 subps xmm1, xmm0 + 000f7 0f 28 c1 movaps xmm0, xmm1 + 000fa b8 10 00 00 00 mov eax, 16 + 000ff 48 6b c0 02 imul rax, rax, 2 + 00103 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 0010a 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 91 : ans->column[3] = _mm_sub_ps(ALIGN(left->column[3]), ALIGN(right->column[3])); + + 0010e b8 10 00 00 00 mov eax, 16 + 00113 48 6b c0 03 imul rax, rax, 3 + 00117 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 0011e 48 03 c8 add rcx, rax + 00121 48 8b c1 mov rax, rcx + 00124 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00127 b8 10 00 00 00 mov eax, 16 + 0012c 48 6b c0 03 imul rax, rax, 3 + 00130 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00137 48 03 c8 add rcx, rax + 0013a 48 8b c1 mov rax, rcx + 0013d 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00140 0f 5c c8 subps xmm1, xmm0 + 00143 0f 28 c1 movaps xmm0, xmm1 + 00146 b8 10 00 00 00 mov eax, 16 + 0014b 48 6b c0 03 imul rax, rax, 3 + 0014f 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00156 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 92 : } + + 0015a 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 00161 5f pop rdi + 00162 5d pop rbp + 00163 c3 ret 0 +submatrix4_sse ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c ; COMDAT addmatrix4_512 _TEXT SEGMENT left$ = 224 diff --git a/StgSharp.C/x64/Debug/mat4.obj b/StgSharp.C/x64/Debug/mat4.obj index c43d9eb156a84ab53331ba4e8894c5a4e2f1f650..64267dcf9ec080da9fc781a8e1947ac91c52becb 100644 GIT binary patch delta 3653 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 CCe^3_ diff --git a/StgSharp.C/x64/Debug/mat4.sbr b/StgSharp.C/x64/Debug/mat4.sbr index 110145a0c9dd79ae2ae1eedd61531953c2296bd8..ae6409ffab51f3b5f6ec8f42eb8038ae600b0a58 100644 GIT binary patch delta 4551 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 diff --git a/StgSharp.C/x64/Debug/string.obj b/StgSharp.C/x64/Debug/string.obj index e234fb65e8488c6ab58f9244f32a418d105f8770..4034acb2afe7277d086371336f84c2332b881d41 100644 GIT binary patch delta 95 zcmV-l0HFV$ngXAi0taM<4**f&(Xj`vB_MoF(@~QPZF|7N4e~cGsi~5AOPXO8XvLW7 z8VTCoar?8?C9*;T1ONb&kU?6La03dn?r3ZX5XM!19ZDX2yFTM#VJUr@@3U%gwHuiL BDE0sV delta 95 zcmV-l0HFV$ngXAi0taM<4*+goxv>YXB_Pz9^&jtRwM(IyBuE5Tr4&~zoG!awQ$PH* zl@Gl}9YwR%C9*;T0ssJ$kU?6La03dn?r3ZX5KGEzxIyj+@%B!-5J(lUptEXmwHrAu BCu#ry diff --git a/StgSharp.C/x64/Debug/string.sbr b/StgSharp.C/x64/Debug/string.sbr index 5e86d9adc6a580c4082710a19f7440f25c1529bb..b3c221db04fa03951d92b863430467c544be77df 100644 GIT binary patch delta 3243 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 hgoVqeZ64Zb)`b{B-&`JDI}mF#TFFO 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 AC;$Ke diff --git a/StgSharp.C/x64/Debug/vc143.pdb b/StgSharp.C/x64/Debug/vc143.pdb index d0b707253a80b2a01ed7c7055669c586064a5916..b53a993392f51f1851f4eea1ed627fcf618b591c 100644 GIT binary patch delta 971 zcmZ`%OKcKR6uoaAbZ7-;kWyMqErt}5MhF8_YK$g8T-6O5SDFxv^^@3^Fwo%2uB@pn z8V5TrNc^NxS1Jz4=t>r@Oq<4CV>Ghr#)YCwHFyVT9WZ^#$;><$;a94Hk-#FRJ53v9yBx?JFaOk~2P9Oz5K=ug0r6~pmpw-gNS}m$8P!D#H z!hc>B>f79__!$dxlu=^|Kbhgs?J7uxi|P3Y{QS|hxhUvdw!=k@T(QH6$jJ|qF8O-W zYP${jTxLPaE=qIhh`g0_%N1nr8`!A)2ieV}b?lje6(i8jbtk>hgHpr&eaOg~`BSfK#&oY~On;762XS3N=mO$;vpp$}#Z02C8;C!8~q+ z2g@OWeERkDib)#`lNYugeLYMp1cfZ6{ILo)R6lu4^cDNbhcGAxk09qjP$kIIJH)EI z;pv3MhRiTRZPd$dzbyc84&h$~c=V2eU7Tj21hDj*!mR*>=T!ziepYikmsv%;Ks+m+ z6wy2>X7?>|Y9vl2i~E2Os(C20C3E4OjFlzUm0z~YNBLbj}xoehmF`&96WK_O4vIc`i^Yq sJF?B0^pR?&6g7GOo4&~~{f+MQXVBc)nZDSbzFFS~p_=ebdH!t-%mUMSCNN8I8Ul5i1F;CiJX45yLO>CtjgHFv J%O)@@0034fTps`c diff --git a/StgSharp.C/x64/Debug/vector_dot.obj b/StgSharp.C/x64/Debug/vector_dot.obj index e2bb6b52a1704bfef82c6721ea7cf9c88f7320a9..e202fa54897fdd6583ae277d18bba3535c42aedb 100644 GIT binary patch delta 85 zcmV-b0IL7y>;mTO0taM;mTO0taMA8OpKpSb3ZrC&$a<u61T0ii zybD9qLN4n2%9*)0bur?Kk2U{~(V$i-_E!f7s-?~>$N)fwRKyR_7}k;|2yYWSV?=6M2FoN9B=hK?e>HY{)cwaT9xz zV-s1&4Gd(+G;S-kRE&Kz#xgfXM1#zXgWgiDfK5Onpa*-%WQ65Rz`JckndPl~&TJcCAVLZZ zVq3_sY9gPNkfV{DNk2faAuW@BL%yPkeNMs#S*ITu$dGCB)lK9MZ|x}Vh~7hhU_++a z*EF$br`USi00S8^O}@5?JSRoganFeq8>%#WrDmIbGuKR_!QbV06>AXp@sYgHz{Itxotz{=)oK^F<-6BTlTi& zj|kl$4Acs_4zppIn^LAk%TG*TEWmMdmo0D~)%d;`n3*3YeE+7<&DiUYop zi9@*GCd^~Q>KrKabuzxmf$I&JW&Ab=juS{*G;MR7@O-NSH)}8l%R3Di&0|{(3RCG!w;B*Z z+@XqXwiIjyg0pC?*#( zaZr1{$2$=Us5$sOPPHSY0&9m;-Rr9;2lqPF&Xg*P{O@$ST`3(r?sBT#z6$3b-|bZQ zrBn#*5w^CuMWP#i4j zx?%|nY4nH5^^92$V?cNe$MP1IZ{h3_?9ky6+BJ9?$~~njf_kLhUd^;c-DWq~;}3nj z3XtA=M&0~Tj6LejnGx_<91NFwY6BJ3dmN+m!!>VZ0?z{G0v0^fT^~BuLQ@m7aTYUB z{XjJ{<$s;NbQn`OPd3K)R4TrwZG0y&vGAfG-x9EA;-JtwFtmCd&Tkk~;}f0s**J)5 zeS=KEv4AO`!~`(aEHs%3_~mU{gG7fRpXQy=t$aGm2lLoso#%hMX5589w+_wYxnv$F zAP9LrHIWzWMB16avw*#T1)rh2K6Gjmg!oQN#WzdEhpS1QDjlX?LLd8J1r8hU8lek} z!g(;k2*8ALSW-1uXfQOuz>}i-|U<1hUG{RuI9; z>ZSUhL)aZfvwM$pjnS<}LBHM@^c$(5-?TxW#{`}Q%mplXhwl1N)yaU3{dR)2CLFuZq!DFv{4aJ!;5KQ z81dfJ&cMrv9InzYMYhwt%IITbK#HXHq%P&~K;y>vB$dKXZ3=I8Dg4|^VMPByfDPsF zi>4gH6-S9{a`=_aA%^5-Cg4W^6X5Z+Og&N;jo+%Y9EGHB)US;|7vy39+6cc`72gUA zi-2syE<-Jdk4s&{w(?<>p|Z|U?nosmRj8DquNyOTFv-vY=)bWkTF*o`MuxqBi2%+= znxPF1P<{VKoMU}1p#QFRsraRUzH1EV`y?Q!57~H7eA4F{mgWa<$>?7!Fd_ISw_*{! z52S%Bs!Yw2{cM*ELsC_0;9mf*DOa%d;DH*|p%_EJUUgA{8q;6($i|%XAX6<$kEWpt zjfhS~r|$(tC0Wqeqe?@yqi=wE5&l)Po>3?Io>3c;W0ZkDZ#Sb1*hV$o1oTnADOc(W GANvovPvk8C delta 4584 zcma)ATZ~ji5UtxRvUd@XH!LjTDyaKm+?|0SMgmNOVKIyH5_vcby8{gDi<#MFm)AvU z)EU4CM#sm8`k{Uh<0Hlx(I^@*3MM9gn3(v%kAHq?h%v-?s{8hxzB5Ki=$c!n>r_=& z-`icwuh&c7AAgp-Q*&h-S%PY#C^ecB`@Xeq~A+kF`wx#3=R~s9SLe&3&7V>UMzX? z5;P%6evRiJ4C9*1NP+ctNU7K1fuMQTGZYFV_-0btQvEkYfL1pj&mGauGS*K zEC66ZY8L9@i_R!FW;D7Ct{#8@6#UpgzF2E0Vfn_p6fPeCFd#KUm+zrikcnllCtFOT zb{qj3%pt1*x`_A2j(`)J;?y9Ca&xtTfe9%Q#13Dqi?NwJBStpW1_m;uCGxK?9QsKrqz!-9@bkZ!1S4QXje z>IfGF9VAGXv=gKN>DpS*vWR6uK?e)cWo2qswK80l4Fw$}NOw`YYDlXsX-e9J0st1I zyj(dy(Apeyh8BGM@b>^629U1XY>nHlh-AD%2MN+8?XDrMk4WbAhwe89Yw_cg3%S0*-rVldFhk5C7)#MdGJ8!E9xHpf{+{eedN7mAhlapl$Wk1j zR3p*WvR5c{r*r){Z~F_mZY(zd1|vw3CwUb|-sI)9O@FNEz77(F2;3fm2@=H!+!2CF z5<|q)o&T0NiD8nz7~dIG!JJ!s<|hIY2cx-N?pzW+M@ar;Xx*lGiFOjB5!e%g$n#JH zW(}Bx<>3h29fGht5`lXF2K-54Nk>g3v4Z_>B}p73`J+jpx9s%~sqz0i+qlKm_5&1a2WC6 z(QgtBlxh%k1n=AM2%n>P+jHI70$$-Gl}SUbvjUu?|9igjahn=LbktcfF>tKx4QIQH z19`3SWz`SYqLCz?CCnu(gl|+A8gHTIs@VjKg;3>-q1M?!N0gsAGoa(cgLJ-rRymy$ zwfU)7ekW~yQ%QC%^->KUmC9baXJBYoFODi0^AOXb*)kfCV&5Q1IF>LK(@6r;!$LDj z!mpTRW>9F~7jvBBzERA@NwfTht|Y#pcpayz>j<*Cw5MYWIb#>nLK4ps_7WCio>5(B zejSAT?ug~LK<9@Wi{ArWnWoOrQRl_HY1KQE?=?>FY&AiX-?>n@N zb^zEhNO!}a^4edkUHj{?wZCE4o+62733CYx{$qtz7s6j7RcMJZL+9_Bbh;+S0!?_8 z1*mdi6uTF-8TDO8)TVLM!7F&Pb_H+6R`9l60h(HFf$?ph*HC(}h#Q*!$hG)XNh?M2G5h2AUlJFyeNf5#tL1cYlTh@DVtHbehBqKtEa!wj<8l(YU%|OuGh!)^@1z0C#u&cwq6J+awOqL0+S$$eWV{*#Sr`Ttmus!^&2D5 zCA%0fM%Vz?6E@LDMpBQ;+#@JQrzuDBzj{z^Nx2*sYRmCytQ?=&a-gefLll@xSV-X9 zP1Qo^rP|8l9ka^koDe!$eU~P}{eh1CfpqUGsGQKn+JwH0CG?d|2#pl~frgFv#@QeK z4*{4k{B3-Hcm}Sx%?jV=%XWVdl3T10z5;k}F5g2E9(Zscg%}d{T1D>^ntpF0hvqyF zGB;5C7!EW|0n@oda=kobtT=W_&xmr|;1o&t*TZ@~9rt|3@SctHo+GY+9pWs>$ GetEnumerator(); + public override bool TryGetMember( string name, out ExpNode memberNode ) + { + memberNode = ExpNode.Empty; + return false; + } + IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); diff --git a/StgSharp.Script/Express/Element/ExpConst.cs b/StgSharp.Script/Express/Element/ExpConst.cs index f1266505..4235dcae 100644 --- a/StgSharp.Script/Express/Element/ExpConst.cs +++ b/StgSharp.Script/Express/Element/ExpConst.cs @@ -33,6 +33,7 @@ using System.Collections; using System.Collections.Frozen; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq.Expressions; using System.Runtime.CompilerServices; using System.Text; @@ -88,6 +89,17 @@ namespace StgSharp.Script.Express return _constants.TryGetValue( name, out instance ); } + public override bool TryGetMember( string name, out ExpNode memberNode ) + { + if( _constants.TryGetValue( name, + out ExpElementInstanceBase? node ) ) { + memberNode = node; + return true; + } + memberNode = ExpNode.Empty; + return false; + } + internal void AddConstant( string name, ExpElementInstanceBase value ) { _constants.Add( name, value ); diff --git a/StgSharp.Script/Express/Element/ExpEntity.cs b/StgSharp.Script/Express/Element/ExpEntity.cs index d9938390..11db5689 100644 --- a/StgSharp.Script/Express/Element/ExpEntity.cs +++ b/StgSharp.Script/Express/Element/ExpEntity.cs @@ -63,5 +63,10 @@ namespace StgSharp.Script.Express throw new NotImplementedException(); } + public override bool TryGetMember( string name, out ExpNode memberNode ) + { + throw new NotImplementedException(); + } + } } diff --git a/StgSharp.Script/Express/Element/ExpFunction.cs b/StgSharp.Script/Express/Element/ExpFunction.cs index 14fc9460..1a9febfe 100644 --- a/StgSharp.Script/Express/Element/ExpFunction.cs +++ b/StgSharp.Script/Express/Element/ExpFunction.cs @@ -75,5 +75,11 @@ namespace StgSharp.Script.Express throw new NotImplementedException(); } + public override bool TryGetMember( string name, out ExpNode memberNode ) + { + memberNode = ExpNode.Empty; + return false; + } + } } diff --git a/StgSharp.Script/Express/Element/ExpRule.cs b/StgSharp.Script/Express/Element/ExpRule.cs index 8981452e..a704e734 100644 --- a/StgSharp.Script/Express/Element/ExpRule.cs +++ b/StgSharp.Script/Express/Element/ExpRule.cs @@ -84,5 +84,11 @@ namespace StgSharp.Script.Express throw new NotImplementedException(); } + public override bool TryGetMember( string name, out ExpNode memberNode ) + { + memberNode = ExpNode.Empty; + return false; + } + } } diff --git a/StgSharp.Script/Express/Element/ExpType.cs b/StgSharp.Script/Express/Element/ExpType.cs index 12aa9f54..7db4f475 100644 --- a/StgSharp.Script/Express/Element/ExpType.cs +++ b/StgSharp.Script/Express/Element/ExpType.cs @@ -77,7 +77,7 @@ namespace StgSharp.Script.Express throw new NotImplementedException(); } - public override ExpNode CreateInstanceNode() + public override ExpElementInstanceNode CreateInstanceNode() { throw new NotImplementedException(); } @@ -87,6 +87,12 @@ namespace StgSharp.Script.Express return type == null || type == ExpVoidType.Only; } + public override bool TryGetMember( string name, out ExpNode memberNode ) + { + memberNode = ExpNode.Empty; + return false; + } + private class ExpVoidType : ExpTypeSource { diff --git a/StgSharp.Script/Express/ExpAstNode/ExpElementMemberNameNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpElementMemberNameNode.cs index 69c8fdb5..2ce463be 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpElementMemberNameNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpElementMemberNameNode.cs @@ -39,7 +39,12 @@ namespace StgSharp.Script.Express public class ExpElementMemberNameNode : ExpNode { - public ExpElementMemberNameNode( Token source ) : base( source ) { } + public ExpElementMemberNameNode( Token source ) + : base( source ) + { + _nodeFlag = ExpNodeFlag.Name_Operator; + CodeConvertTemplate = source.Value; + } public override ExpNode Left => Empty; diff --git a/StgSharp.Script/Express/ExpAstNode/ExpInstanceMemberNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpInstanceMemberNode.cs new file mode 100644 index 00000000..d971767c --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpInstanceMemberNode.cs @@ -0,0 +1,67 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpInstanceMemberNode.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using CommunityToolkit.HighPerformance.Helpers; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public class ExpInstanceMemberNode : ExpNode + { + + private ExpElementInstanceBase _instance; + private ExpElementMemberNameNode _memberName; + private ExpNode _member; + + public ExpInstanceMemberNode( + Token source, + ExpElementInstanceBase instance, + ExpElementMemberNameNode memberName ) + : base( source ) + { + _instance = instance; + _memberName = memberName; + _instance.TryGetMember( + memberName.CodeConvertTemplate, out _member ); + } + + public override ExpNode Left => _instance; + + public override ExpNode Right => _memberName; + + public override IExpElementSource EqualityTypeConvert => _member.EqualityTypeConvert; + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpInstanceReferenceNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpInstanceReferenceNode.cs index 63290c5a..e89e08f4 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpInstanceReferenceNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpInstanceReferenceNode.cs @@ -39,12 +39,22 @@ namespace StgSharp.Script.Express public class ExpInstanceReferenceNode : ExpNode { - public override ExpNode Left => throw new NotImplementedException(); + private ExpElementInstanceBase _instance; - public override ExpNode Right => throw new NotImplementedException(); + public ExpInstanceReferenceNode( + Token source, + ExpElementInstanceBase instance ) + : base( source ) + { + _instance = instance; + _nodeFlag = ( _instance._nodeFlag | ( ExpNodeFlag.Name_Any | ExpNodeFlag.Collection_Any ) ); + } - public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( - ); + public override ExpNode Left => Empty; + + public override ExpNode Right => Empty; + + public override IExpElementSource EqualityTypeConvert => _instance.EqualityTypeConvert; } } diff --git a/StgSharp.Script/Express/ExpElementInstanceBase.cs b/StgSharp.Script/Express/ExpElementInstanceBase.cs index 2c1486d8..fe21ece8 100644 --- a/StgSharp.Script/Express/ExpElementInstanceBase.cs +++ b/StgSharp.Script/Express/ExpElementInstanceBase.cs @@ -87,5 +87,15 @@ namespace StgSharp.Script.Express } } + public ExpInstanceReferenceNode MakeReference( Token t ) + { + return new ExpInstanceReferenceNode( t, this ); + } + + public bool TryGetMember( string name, out ExpNode node ) + { + return EqualityTypeConvert.TryGetMember( name, out node ); + } + } } diff --git a/StgSharp.Script/Express/ExpElmentSource.cs b/StgSharp.Script/Express/ExpElmentSource.cs index 9198451c..39b91ee0 100644 --- a/StgSharp.Script/Express/ExpElmentSource.cs +++ b/StgSharp.Script/Express/ExpElmentSource.cs @@ -56,6 +56,8 @@ namespace StgSharp.Script.Express public void Analyse(); + public bool TryGetMember( string name, out ExpNode memberNode ); + } public abstract class ExpInstantiableElement : IExpElementSource @@ -102,6 +104,8 @@ namespace StgSharp.Script.Express return element == null || element == ExpVoidElement.Only; } + public abstract bool TryGetMember( string name, out ExpNode memberNode ); + private sealed class ExpVoidElement : ExpInstantiableElement { @@ -125,6 +129,14 @@ namespace StgSharp.Script.Express return default!; } + public override bool TryGetMember( + string name, + out ExpNode memberNode ) + { + memberNode = ExpNode.Empty; + return false; + } + } } @@ -156,5 +168,7 @@ namespace StgSharp.Script.Express public abstract ExpNode MakeReference( params object[] options ); + public abstract bool TryGetMember( string name, out ExpNode memberNode ); + } } diff --git a/StgSharp.Script/Express/ExpNodeGenerator.FunctionCalling.cs b/StgSharp.Script/Express/ExpNodeGenerator.FunctionCalling.cs index bb63cc74..9a1dd5eb 100644 --- a/StgSharp.Script/Express/ExpNodeGenerator.FunctionCalling.cs +++ b/StgSharp.Script/Express/ExpNodeGenerator.FunctionCalling.cs @@ -85,9 +85,9 @@ namespace StgSharp.Script.Express break; case TokenFlag.Member: - // case1: name of a instance, make ref copy + // case1: name of a _instance, make ref copy // case2: name of a function, make a function call - // case3: unknown, make a instance member node, check while link + // case3: unknown, make a _instance member node, check while link break; default: break; diff --git a/StgSharp.Script/Express/ExpNodeGenerator.cs b/StgSharp.Script/Express/ExpNodeGenerator.cs index 8f2dd3f5..92bf56c7 100644 --- a/StgSharp.Script/Express/ExpNodeGenerator.cs +++ b/StgSharp.Script/Express/ExpNodeGenerator.cs @@ -37,6 +37,8 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using ExpKeyWord = StgSharp.Script.Express.ExpCompile.KeyWord; + namespace StgSharp.Script.Express { public partial class ExpNodeGenerator @@ -58,6 +60,8 @@ namespace StgSharp.Script.Express _cache = new CompileStack(); } + /**/ + /// /// Append a token to top of cache. This method will automatically convert token to node if /// meets separators or operators. @@ -65,6 +69,7 @@ namespace StgSharp.Script.Express public void AppendToken( Token expToken ) { switch( expToken.Flag ) { + // operand, check precedence and push case TokenFlag.Symbol_Unary or TokenFlag.Symbol_Binary: int cmp = -1; processPrecedence: @@ -76,17 +81,37 @@ namespace StgSharp.Script.Express } _cache.PushOperand( expToken ); break; + + // literal, construxt and ppush case TokenFlag.Number or TokenFlag.String: _cache.PushOperand( expToken ); break; + + // instance ref, make ref and push + // function call, push as operator + // keyword, call TryParseKeyWord method to process + // name of member in instance, parse as MemberNameNode case TokenFlag.Member: if( _context.TryGetFunction( expToken.Value, out _ ) ) { _cache.PushOperator( expToken ); - } else { } + } else if( _local.TryGetMember( + expToken.Value, out ExpNode? node ) ) { + if( node is ExpElementInstanceBase instance ) { + _cache.PushOperand( + instance.MakeReference( expToken ) ); + return; // ref of an instance + } + } else if( TryParseKeyWord( expToken ) ) { + return; + } else { + _cache.PushOperand( + new ExpElementMemberNameNode( expToken ) ); + } break; case TokenFlag.Separator_Single: //a , ; found // if operator stack is not empty, convert all operators to node until meet a same separator // or OperandAheadOfSeparator property is less than certain value + _cache.PushOperator( expToken ); break; case TokenFlag.Separator_Left: //a ( [ { found // check if the last token is a function name, loop block or branch @@ -110,6 +135,8 @@ namespace StgSharp.Script.Express if( _cache.PopOperand( out Token t, out ExpNode? n ) ) { return n; } else { } + + throw new NotImplementedException(); } /// @@ -134,5 +161,20 @@ namespace StgSharp.Script.Express } } + private bool TryParseKeyWord( Token t ) + { + if( t.Value == ExpKeyWord.True ) { + _cache.PushOperand( new ExpBoolNode( t, true ) ); + return true; + } else if( t.Value == ExpKeyWord.False ) { + _cache.PushOperand( new ExpBoolNode( t, false ) ); + return true; + } else if( true ) { + throw new NotImplementedException(); + } + return false; + } + + /**/ } } diff --git a/StgSharp.Script/Express/ExpSchemaSource.Compile.cs b/StgSharp.Script/Express/ExpSchemaSource.Compile.cs index bbb4549f..1eb0652a 100644 --- a/StgSharp.Script/Express/ExpSchemaSource.Compile.cs +++ b/StgSharp.Script/Express/ExpSchemaSource.Compile.cs @@ -56,7 +56,7 @@ namespace StgSharp.Script.Express case ExpressCompileOption.Translate: return Compile_Translate( option ); case ExpressCompileOption.Compile: - throw new NotImplementedException(); + throw new NotSupportedException(); default: throw new ArgumentException(); } diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs index 0e41da8d..551235f5 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+16b813646d8a2326551f05c69f727a292a719222")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9647c2c68a768a1d0a5a05cc1279d046403c4641")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json index 45061ece..fdd23080 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/16b813646d8a2326551f05c69f727a292a719222/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/9647c2c68a768a1d0a5a05cc1279d046403c4641/*"}} \ No newline at end of file diff --git a/StgSharpDebug/Program.cs b/StgSharpDebug/Program.cs index b0b3bd5d..bb99008e 100644 --- a/StgSharpDebug/Program.cs +++ b/StgSharpDebug/Program.cs @@ -65,6 +65,8 @@ namespace StgSharp ExpSchemaSource schemaSource = new ExpSchemaSource(); schemaSource.ReadSchema( reader ); + ExpSchema schema = schemaSource.Compile( + ExpressCompileOption.Translate ); /**/ /* @@ -97,16 +99,18 @@ namespace StgSharp return; } catch( Exception ex ) { - Console.WriteLine( ex.Message ); + Console.WriteLine( ex ); /* StgSharp.WriteLog($"{ex}", LogType.Error); if( true ) { } Dialogue.PostError( ex ); /**/ - Environment.Exit( -1 ); + StgSharp.Terminate( -1 ); /**/ } - finally { } + finally { + StgSharp.Terminate( 0 ); + } } } diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs index f57a0433..f718f56a 100644 --- a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+825e68853cd1738287eecc8a4390ee9c78550308")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9647c2c68a768a1d0a5a05cc1279d046403c4641")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json index 48222c59..fdd23080 100644 --- a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/825e68853cd1738287eecc8a4390ee9c78550308/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/9647c2c68a768a1d0a5a05cc1279d046403c4641/*"}} \ No newline at end of file