@cimplify/sdk 0.108.0 → 0.110.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/advanced.d.mts +4 -3
- package/dist/advanced.d.ts +4 -3
- package/dist/advanced.js +24 -24
- package/dist/advanced.mjs +5 -5
- package/dist/animation-4EXBXRVX.js +27 -0
- package/dist/animation-6DICNWUP.mjs +6 -0
- package/dist/audio-DhvyjqdA.d.mts +249 -0
- package/dist/audio-m0w8cnxq.d.ts +249 -0
- package/dist/avatars.d.mts +110 -0
- package/dist/avatars.d.ts +110 -0
- package/dist/avatars.js +82 -0
- package/dist/avatars.mjs +5 -0
- package/dist/backend-gUCzs5Kg.d.mts +3866 -0
- package/dist/backend-gUCzs5Kg.d.ts +3866 -0
- package/dist/{catalogue-B4eLL8Mi.d.ts → catalogue-CPTMyBUz.d.mts} +109 -221
- package/dist/catalogue-DzrTXP3v.d.mts +541 -0
- package/dist/catalogue-DzrTXP3v.d.ts +541 -0
- package/dist/{catalogue-OT89_Ifs.d.mts → catalogue-OTuS5zp-.d.ts} +109 -221
- package/dist/chunk-22BD3RHN.mjs +1809 -0
- package/dist/chunk-25T4JHEA.mjs +21 -0
- package/dist/chunk-2AQ237Y4.js +508 -0
- package/dist/chunk-2IC4H6OV.mjs +48 -0
- package/dist/chunk-2LHLG4OB.mjs +71 -0
- package/dist/chunk-2O2CG465.js +1709 -0
- package/dist/chunk-2Q4DTHXK.js +316 -0
- package/dist/chunk-2QTQ6BUH.mjs +46 -0
- package/dist/chunk-2UN4SFLR.mjs +100 -0
- package/dist/chunk-2V75I7K3.js +454 -0
- package/dist/chunk-2V7IL4HC.js +10 -0
- package/dist/chunk-34XBXUMW.js +296 -0
- package/dist/chunk-3C4C654I.js +71 -0
- package/dist/chunk-3DAD2LDF.mjs +72 -0
- package/dist/chunk-3GXH2NFD.mjs +4 -0
- package/dist/chunk-3O47ZFW3.js +961 -0
- package/dist/chunk-3OY3VYNF.mjs +11 -0
- package/dist/chunk-3S6WPBZL.js +2936 -0
- package/dist/chunk-3TUOUP5T.js +399 -0
- package/dist/chunk-3VEH23I5.mjs +1380 -0
- package/dist/chunk-3ZYSAW2T.mjs +263 -0
- package/dist/chunk-4ANVF274.js +103 -0
- package/dist/chunk-4C7I3ELN.js +388 -0
- package/dist/chunk-4DYKAYFO.mjs +8 -0
- package/dist/chunk-4ZDR72SG.js +329 -0
- package/dist/chunk-52YS45RR.js +1066 -0
- package/dist/chunk-5325XSCH.js +107 -0
- package/dist/chunk-5AD5X6AV.js +13 -0
- package/dist/chunk-5BYDGGWO.mjs +197 -0
- package/dist/chunk-5C3C7VDM.mjs +55 -0
- package/dist/chunk-5HFMY3D7.js +660 -0
- package/dist/chunk-5LH2QN3T.js +1862 -0
- package/dist/chunk-5PJEXSOW.js +44 -0
- package/dist/chunk-5SXDH3Y7.js +90 -0
- package/dist/chunk-5YFBGGCK.mjs +502 -0
- package/dist/chunk-5YWN6H5Q.mjs +133 -0
- package/dist/chunk-66QP3SMN.js +402 -0
- package/dist/chunk-6DAEZKIG.mjs +385 -0
- package/dist/chunk-6DATW7TB.mjs +420 -0
- package/dist/{chunk-JRGK3NXR.mjs → chunk-6ETDAU62.mjs} +72 -212
- package/dist/chunk-6H254EVP.mjs +178 -0
- package/dist/chunk-6PFNJPBJ.mjs +820 -0
- package/dist/chunk-6PJWXIFX.mjs +357 -0
- package/dist/chunk-6SWKWCMS.js +80 -0
- package/dist/chunk-6VVXXX7S.js +808 -0
- package/dist/chunk-6WUBSMTX.js +1403 -0
- package/dist/chunk-73SGZLAQ.mjs +35 -0
- package/dist/chunk-76L2V6KD.mjs +4 -0
- package/dist/chunk-7AAIAVAA.js +1531 -0
- package/dist/chunk-7ARSJPV3.mjs +93 -0
- package/dist/chunk-7BHW5GTC.mjs +1234 -0
- package/dist/chunk-7DQSDKDU.js +6 -0
- package/dist/chunk-7IQQQENP.mjs +401 -0
- package/dist/chunk-7KFTYENS.js +11357 -0
- package/dist/chunk-7SM6XSPZ.js +3171 -0
- package/dist/chunk-7SXOHAIR.mjs +28 -0
- package/dist/chunk-A2MAX6S4.js +90 -0
- package/dist/chunk-A33OORT7.mjs +1530 -0
- package/dist/{chunk-U6ACF76H.mjs → chunk-A36JRXXH.mjs} +1075 -1845
- package/dist/chunk-A7BU3BK4.js +52 -0
- package/dist/chunk-A7MQSN2V.mjs +77 -0
- package/dist/chunk-A7V4L2IT.mjs +416 -0
- package/dist/chunk-AABEK6XU.js +226 -0
- package/dist/chunk-AGV33FWC.mjs +5005 -0
- package/dist/chunk-AHNR3BXI.js +108 -0
- package/dist/chunk-AQ5RLBU2.mjs +286 -0
- package/dist/chunk-AQOE6WCG.js +1270 -0
- package/dist/chunk-ATAWRACV.mjs +62 -0
- package/dist/chunk-ATCURNUV.js +14 -0
- package/dist/chunk-AWPV33OO.js +6 -0
- package/dist/chunk-AYJPHKYV.js +337 -0
- package/dist/chunk-AZ5BGWHB.js +162 -0
- package/dist/chunk-AZAXD44P.js +1373 -0
- package/dist/chunk-BBGKQIJJ.mjs +406 -0
- package/dist/chunk-BP4JLSUA.js +1453 -0
- package/dist/{chunk-SUCE7FWA.mjs → chunk-BTUSVHIE.mjs} +539 -978
- package/dist/chunk-BU6OK542.mjs +818 -0
- package/dist/chunk-CVSRWM6W.js +418 -0
- package/dist/chunk-CYBMFMJD.mjs +247 -0
- package/dist/chunk-DDJLDOUX.mjs +217 -0
- package/dist/{chunk-V32BCG7M.js → chunk-DFZWHNRG.js} +75 -215
- package/dist/chunk-DJ2C7AVG.js +644 -0
- package/dist/chunk-DS2VU4WW.mjs +102 -0
- package/dist/chunk-DSAG7T5P.js +7290 -0
- package/dist/chunk-E2QPPH7I.js +327 -0
- package/dist/chunk-E65WCTIG.mjs +1187 -0
- package/dist/{chunk-33VCYWVL.mjs → chunk-E6QQKDNE.mjs} +30 -42
- package/dist/chunk-ECDK6QBF.mjs +981 -0
- package/dist/chunk-EIB4OWVQ.mjs +620 -0
- package/dist/chunk-EQUZYCGO.js +250 -0
- package/dist/chunk-F3UJ6ZRM.mjs +313 -0
- package/dist/chunk-F63N2ZTQ.js +7023 -0
- package/dist/chunk-F6XRYEM3.mjs +26 -0
- package/dist/chunk-FE6VCE4K.js +5030 -0
- package/dist/chunk-FLWD6GRR.js +1372 -0
- package/dist/chunk-FQBFWJBS.mjs +110 -0
- package/dist/chunk-FXVJ2HFU.js +26 -0
- package/dist/chunk-FZMQMQBW.js +312 -0
- package/dist/chunk-G3EEC44R.js +53 -0
- package/dist/{chunk-KG3WT4PR.mjs → chunk-GCKWKLZF.mjs} +73 -104
- package/dist/chunk-GCX7TY4D.mjs +6826 -0
- package/dist/chunk-GDB6TCSD.js +450 -0
- package/dist/chunk-GDCV4IWO.mjs +21 -0
- package/dist/chunk-GDZT5LZ5.js +170 -0
- package/dist/chunk-GHPUYD4I.mjs +213 -0
- package/dist/chunk-GHS6MIL6.mjs +1432 -0
- package/dist/chunk-GPS2THCL.mjs +11 -0
- package/dist/{chunk-EV2EVOYS.js → chunk-GTJWQAGU.js} +31 -42
- package/dist/chunk-GVTI6UJQ.mjs +130 -0
- package/dist/chunk-GXKI64OT.mjs +1138 -0
- package/dist/chunk-GYDYF2WX.js +275 -0
- package/dist/chunk-GYLP6UG4.mjs +705 -0
- package/dist/chunk-H3OQKK6X.js +1158 -0
- package/dist/chunk-H5DFSCJ6.js +40 -0
- package/dist/chunk-HAGEIC2L.mjs +186 -0
- package/dist/chunk-HAJ4JRFO.js +293 -0
- package/dist/chunk-HDR72GB6.js +188 -0
- package/dist/chunk-HF5HPS4T.mjs +40 -0
- package/dist/chunk-HK6LOFDS.js +218 -0
- package/dist/chunk-HMWYTXCY.mjs +143 -0
- package/dist/chunk-HPCSRCMA.js +89 -0
- package/dist/chunk-HSEO6TPU.js +247 -0
- package/dist/chunk-I5FOHCLH.js +132 -0
- package/dist/chunk-IDLW4NWA.mjs +85 -0
- package/dist/chunk-IIDZ5WUX.js +61 -0
- package/dist/chunk-IR74FJHU.js +2332 -0
- package/dist/chunk-IRVFYAKP.mjs +100 -0
- package/dist/{chunk-XBL3TMPC.mjs → chunk-IZDWAL53.mjs} +1795 -3287
- package/dist/chunk-J2KZXIU3.js +51 -0
- package/dist/chunk-J2U6PJSO.js +91 -0
- package/dist/chunk-J5AJNY2N.js +283 -0
- package/dist/chunk-J6KQZ4FO.mjs +821 -0
- package/dist/{chunk-OWW5GUSB.js → chunk-JGBCIKJV.js} +7 -6
- package/dist/chunk-JKGTBMU7.mjs +25 -0
- package/dist/chunk-JR3TNEQC.js +422 -0
- package/dist/chunk-JURRXY2J.mjs +29 -0
- package/dist/chunk-K3HW5I2A.mjs +317 -0
- package/dist/chunk-K46SMZ66.mjs +103 -0
- package/dist/chunk-K4UDGE3Z.mjs +6 -0
- package/dist/chunk-KDQOR4QQ.mjs +350 -0
- package/dist/chunk-KDTVOLHI.mjs +288 -0
- package/dist/chunk-KGHJH5KJ.mjs +35 -0
- package/dist/chunk-KIZOA5LX.mjs +140 -0
- package/dist/chunk-KK6HYVBI.mjs +242 -0
- package/dist/chunk-KMKWGXMK.js +856 -0
- package/dist/chunk-KPA6K5IB.js +80 -0
- package/dist/chunk-KU7O4IXU.mjs +260 -0
- package/dist/chunk-KVFNRJOR.mjs +11142 -0
- package/dist/chunk-KZJRSXHK.js +2432 -0
- package/dist/chunk-LHWPRUJL.js +79 -0
- package/dist/chunk-LIV3KXJG.mjs +369 -0
- package/dist/chunk-LKV4LACG.js +21 -0
- package/dist/chunk-LUY45X3U.mjs +263 -0
- package/dist/chunk-LYEZZEEF.mjs +17 -0
- package/dist/chunk-M5EXQZYY.mjs +1519 -0
- package/dist/chunk-ME6HGG4I.mjs +1338 -0
- package/dist/chunk-MEXP6DA6.js +31 -0
- package/dist/chunk-MG52AW3H.js +902 -0
- package/dist/chunk-MIPO6F72.js +334 -0
- package/dist/{chunk-5QW7CQBA.js → chunk-MKIJQL5Q.js} +211 -321
- package/dist/chunk-MN3YETVN.mjs +17 -0
- package/dist/chunk-MOBSBXVE.mjs +2391 -0
- package/dist/chunk-MOMOZEUM.mjs +88 -0
- package/dist/chunk-MRFUNRAP.js +62 -0
- package/dist/chunk-MTIHEW2M.js +433 -0
- package/dist/chunk-N4RGGDEL.mjs +73 -0
- package/dist/chunk-NH654HAT.js +10 -0
- package/dist/chunk-NHJUGZUR.mjs +253 -0
- package/dist/chunk-NMQT4HG3.mjs +757 -0
- package/dist/chunk-NPSYB6DC.mjs +906 -0
- package/dist/chunk-NW2GPMSO.js +857 -0
- package/dist/chunk-NXKQOQ6L.js +76 -0
- package/dist/chunk-NXLAZIJZ.js +309 -0
- package/dist/chunk-NYWNA5CF.js +148 -0
- package/dist/chunk-NZTKLY2W.js +1442 -0
- package/dist/chunk-O2ICABUD.js +36 -0
- package/dist/chunk-OIVVQQ22.js +862 -0
- package/dist/chunk-OKC2B4O3.mjs +312 -0
- package/dist/chunk-OLWFPDBK.js +2220 -0
- package/dist/chunk-OMTVH334.js +3779 -0
- package/dist/chunk-OQRVEM56.mjs +362 -0
- package/dist/chunk-OXMIBOD4.js +337 -0
- package/dist/chunk-PBL6YL5L.mjs +288 -0
- package/dist/chunk-PDOELNNQ.js +97 -0
- package/dist/chunk-PDQJY2GZ.js +136 -0
- package/dist/chunk-PKOZXD2Q.js +1274 -0
- package/dist/chunk-PPF2BYFL.mjs +2191 -0
- package/dist/chunk-PQTQKNKD.js +539 -0
- package/dist/chunk-PRSR4FAV.mjs +81 -0
- package/dist/chunk-PTRNO5UD.js +95 -0
- package/dist/chunk-Q2Y3VMKH.js +2000 -0
- package/dist/chunk-QCZOE65N.js +96 -0
- package/dist/chunk-QDYFLATW.mjs +52 -0
- package/dist/chunk-QQABGCMM.js +22 -0
- package/dist/chunk-QS6TRHMR.js +345 -0
- package/dist/chunk-R56P64LB.mjs +208 -0
- package/dist/chunk-RCQ2MPBV.js +428 -0
- package/dist/chunk-RFVRPYR2.mjs +856 -0
- package/dist/chunk-RKBLPGPV.js +11521 -0
- package/dist/chunk-RM2V4IND.mjs +327 -0
- package/dist/chunk-RQXN5A34.mjs +613 -0
- package/dist/chunk-RUVGVNOF.mjs +2687 -0
- package/dist/chunk-SAFJIGYB.mjs +165 -0
- package/dist/chunk-SKQFLBDD.js +263 -0
- package/dist/chunk-SMK6JU2F.mjs +2092 -0
- package/dist/{chunk-UVRPC2P7.js → chunk-SNNEOS5Z.js} +1984 -3476
- package/dist/chunk-SPCRQ6NO.mjs +1246 -0
- package/dist/chunk-SWX4SALA.mjs +19 -0
- package/dist/{chunk-JVODCGFP.mjs → chunk-SYEO2WV4.mjs} +128 -238
- package/dist/chunk-T2QQMX2N.js +10 -0
- package/dist/chunk-T3AFF3L7.mjs +57 -0
- package/dist/chunk-T6Z2EXYL.js +712 -0
- package/dist/chunk-T7LOXGYX.js +118 -0
- package/dist/chunk-TJCAE7RC.mjs +1315 -0
- package/dist/chunk-TJI3K6RP.js +137 -0
- package/dist/chunk-TL2SVO4P.mjs +55 -0
- package/dist/chunk-TM63CYGN.mjs +399 -0
- package/dist/chunk-TU5RYTYU.mjs +13 -0
- package/dist/chunk-TVJZ4GPS.js +1553 -0
- package/dist/chunk-TWM6DLYF.js +371 -0
- package/dist/chunk-U63OC4TQ.js +30 -0
- package/dist/{chunk-L5GKVQVJ.js → chunk-U6BVSJZ6.js} +25 -57
- package/dist/chunk-U6UVWEAK.mjs +792 -0
- package/dist/chunk-UCEPNO6N.mjs +11048 -0
- package/dist/{chunk-ANT574FD.js → chunk-UCR5HRYM.js} +74 -105
- package/dist/chunk-UG5BTOTF.mjs +334 -0
- package/dist/chunk-UGH37BQW.mjs +157 -0
- package/dist/chunk-V7ZRH3PY.mjs +271 -0
- package/dist/chunk-VBGHBL3E.mjs +1394 -0
- package/dist/chunk-VRBDAS5I.js +920 -0
- package/dist/chunk-VVE3Y76O.js +230 -0
- package/dist/chunk-W65JIRI4.mjs +1182 -0
- package/dist/chunk-WHYKAT7G.js +62 -0
- package/dist/{chunk-YOIVZ6OA.mjs → chunk-WIZRUIZB.mjs} +25 -57
- package/dist/chunk-WKWTDZS7.js +385 -0
- package/dist/chunk-WLMINRC4.mjs +78 -0
- package/dist/chunk-WOF3AD3J.js +22 -0
- package/dist/chunk-WWKMOA76.js +1262 -0
- package/dist/chunk-X5A5FOWW.js +615 -0
- package/dist/chunk-X6CN6KQF.mjs +192 -0
- package/dist/chunk-XD2PMH46.mjs +517 -0
- package/dist/chunk-XJA2NGTI.mjs +88 -0
- package/dist/chunk-XJIHN3BY.mjs +8 -0
- package/dist/chunk-XK6UDWJS.js +203 -0
- package/dist/chunk-XPG3N5CF.mjs +415 -0
- package/dist/chunk-XVZ2NKSU.mjs +74 -0
- package/dist/chunk-XYP45OLE.js +117 -0
- package/dist/chunk-XZSDGZX6.mjs +301 -0
- package/dist/chunk-Y2EMGN4T.mjs +120 -0
- package/dist/chunk-Y3XWP5XW.mjs +298 -0
- package/dist/chunk-Y4K22JL6.js +228 -0
- package/dist/chunk-Y65LXQGA.mjs +3164 -0
- package/dist/chunk-Y66WVMO5.mjs +87 -0
- package/dist/chunk-Y7JWLB25.mjs +7280 -0
- package/dist/chunk-YCDXAJKU.js +175 -0
- package/dist/chunk-YRDQCCIS.js +152 -0
- package/dist/chunk-YV52DGSA.js +111 -0
- package/dist/chunk-YXGZQPUD.js +94 -0
- package/dist/chunk-Z3A3AFVU.mjs +102 -0
- package/dist/chunk-ZCY6YKKP.mjs +475 -0
- package/dist/chunk-ZEQHXVU5.js +215 -0
- package/dist/chunk-ZF7JCXCI.js +284 -0
- package/dist/chunk-ZJBRUH6V.js +29 -0
- package/dist/chunk-ZMIL4ZOA.js +365 -0
- package/dist/chunk-ZR5ULMN2.mjs +337 -0
- package/dist/chunk-ZXREOYOW.js +87 -0
- package/dist/{client-BSP9U1O1.d.mts → client-CX_WR0-J.d.mts} +2 -2
- package/dist/client-Dytx_ZTC.d.ts +230 -0
- package/dist/{client-B878xeAP.d.ts → client-dqOhP9Nc.d.ts} +2 -2
- package/dist/client-hTKbCuhG.d.mts +230 -0
- package/dist/clock-B-UAjkKa.d.mts +5 -0
- package/dist/clock-B-UAjkKa.d.ts +5 -0
- package/dist/config-BlXQluJR.d.mts +36 -0
- package/dist/config-BlXQluJR.d.ts +36 -0
- package/dist/courier-Cnn-edJ4.d.ts +95 -0
- package/dist/courier-FmGfkvIN.d.mts +95 -0
- package/dist/crowd-DdHFbqKK.d.ts +186 -0
- package/dist/crowd-hOVSAmA3.d.mts +186 -0
- package/dist/danfo-BEBapFlX.d.mts +146 -0
- package/dist/danfo-UQ_PTIIx.d.ts +146 -0
- package/dist/{elements-Bty6Qs_N.d.mts → elements-DdsRig-2.d.mts} +1548 -257
- package/dist/{elements-Bty6Qs_N.d.ts → elements-DdsRig-2.d.ts} +1548 -257
- package/dist/engines/godot.d.mts +56 -0
- package/dist/engines/godot.d.ts +56 -0
- package/dist/engines/godot.js +28 -0
- package/dist/engines/godot.mjs +3 -0
- package/dist/engines/wasm.d.mts +11 -0
- package/dist/engines/wasm.d.ts +11 -0
- package/dist/engines/wasm.js +178 -0
- package/dist/engines/wasm.mjs +176 -0
- package/dist/fallback-CrG_lTFk.d.mts +270 -0
- package/dist/fallback-CrG_lTFk.d.ts +270 -0
- package/dist/fallback-KDB4Y2CE.mjs +6 -0
- package/dist/fallback-Y26TQENE.js +19 -0
- package/dist/features-CZB4rmcD.d.mts +118 -0
- package/dist/features-CZB4rmcD.d.ts +118 -0
- package/dist/fit-BWiE7rgA.d.mts +44 -0
- package/dist/fit-DK0oT7zO.d.ts +44 -0
- package/dist/five-a-side-Bv1AOUy3.d.mts +115 -0
- package/dist/five-a-side-EC51SJY1.d.ts +115 -0
- package/dist/fluid-ARr0qUIL.d.ts +939 -0
- package/dist/fluid-DLlEj2cs.d.mts +939 -0
- package/dist/game/conformance.d.mts +84 -0
- package/dist/game/conformance.d.ts +84 -0
- package/dist/game/conformance.js +1025 -0
- package/dist/game/conformance.mjs +994 -0
- package/dist/game/heap.d.mts +40 -0
- package/dist/game/heap.d.ts +40 -0
- package/dist/game/heap.js +48 -0
- package/dist/game/heap.mjs +7 -0
- package/dist/game/kit/canvas.d.mts +240 -0
- package/dist/game/kit/canvas.d.ts +240 -0
- package/dist/game/kit/canvas.js +3566 -0
- package/dist/game/kit/canvas.mjs +1039 -0
- package/dist/game/kit/courier.d.mts +17 -0
- package/dist/game/kit/courier.d.ts +17 -0
- package/dist/game/kit/courier.js +66 -0
- package/dist/game/kit/courier.mjs +49 -0
- package/dist/game/kit/danfo.d.mts +11 -0
- package/dist/game/kit/danfo.d.ts +11 -0
- package/dist/game/kit/danfo.js +109 -0
- package/dist/game/kit/danfo.mjs +44 -0
- package/dist/game/kit/engine.d.mts +29 -0
- package/dist/game/kit/engine.d.ts +29 -0
- package/dist/game/kit/engine.js +183 -0
- package/dist/game/kit/engine.mjs +30 -0
- package/dist/game/kit/five-a-side.d.mts +11 -0
- package/dist/game/kit/five-a-side.d.ts +11 -0
- package/dist/game/kit/five-a-side.js +86 -0
- package/dist/game/kit/five-a-side.mjs +41 -0
- package/dist/game/kit/frontier.d.mts +344 -0
- package/dist/game/kit/frontier.d.ts +344 -0
- package/dist/game/kit/frontier.js +435 -0
- package/dist/game/kit/frontier.mjs +14 -0
- package/dist/game/kit/genesis.d.mts +752 -0
- package/dist/game/kit/genesis.d.ts +752 -0
- package/dist/game/kit/genesis.js +380 -0
- package/dist/game/kit/genesis.mjs +15 -0
- package/dist/game/kit/ludo.d.mts +15 -0
- package/dist/game/kit/ludo.d.ts +15 -0
- package/dist/game/kit/ludo.js +87 -0
- package/dist/game/kit/ludo.mjs +42 -0
- package/dist/game/kit/runner.d.mts +12 -0
- package/dist/game/kit/runner.d.ts +12 -0
- package/dist/game/kit/runner.js +83 -0
- package/dist/game/kit/runner.mjs +46 -0
- package/dist/game/kit/shootout.d.mts +13 -0
- package/dist/game/kit/shootout.d.ts +13 -0
- package/dist/game/kit/shootout.js +122 -0
- package/dist/game/kit/shootout.mjs +57 -0
- package/dist/game/kit/slots.d.mts +392 -0
- package/dist/game/kit/slots.d.ts +392 -0
- package/dist/game/kit/slots.js +215 -0
- package/dist/game/kit/slots.mjs +6 -0
- package/dist/game/kit/tycoon.d.mts +16 -0
- package/dist/game/kit/tycoon.d.ts +16 -0
- package/dist/game/kit/tycoon.js +145 -0
- package/dist/game/kit/tycoon.mjs +44 -0
- package/dist/game/kit/word.d.mts +11 -0
- package/dist/game/kit/word.d.ts +11 -0
- package/dist/game/kit/word.js +78 -0
- package/dist/game/kit/word.mjs +41 -0
- package/dist/game/kit/worlds.d.mts +18 -0
- package/dist/game/kit/worlds.d.ts +18 -0
- package/dist/game/kit/worlds.js +74 -0
- package/dist/game/kit/worlds.mjs +49 -0
- package/dist/game/kit.d.mts +53 -0
- package/dist/game/kit.d.ts +53 -0
- package/dist/game/kit.js +2610 -0
- package/dist/game/kit.mjs +101 -0
- package/dist/game/prepared.d.mts +14 -0
- package/dist/game/prepared.d.ts +14 -0
- package/dist/game/prepared.js +81 -0
- package/dist/game/prepared.mjs +32 -0
- package/dist/game-Bx8onkhX.d.mts +1451 -0
- package/dist/game-fgQy2YIm.d.ts +1451 -0
- package/dist/game-theme-CBTw1b_d.d.mts +35 -0
- package/dist/game-theme-Dg-ict5A.d.ts +35 -0
- package/dist/game.d.mts +3546 -0
- package/dist/game.d.ts +3546 -0
- package/dist/game.js +4455 -0
- package/dist/game.mjs +50 -0
- package/dist/graphics-C6YjWYvP.d.ts +5 -0
- package/dist/graphics-Dk2yQnYN.d.mts +5 -0
- package/dist/guest-DrsA00XD.d.mts +732 -0
- package/dist/guest-wIdfoT05.d.ts +732 -0
- package/dist/hit-stop-BKkVwTq7.d.mts +43 -0
- package/dist/hit-stop-D-8pPYnM.d.ts +43 -0
- package/dist/hot-Crn9XpHJ.d.ts +29 -0
- package/dist/hot-DH3nOhQD.d.mts +29 -0
- package/dist/{index-CQStGb3B.d.mts → index-6gkHMGAq.d.mts} +2 -2
- package/dist/index-B8ybCKJI.d.ts +41 -0
- package/dist/{index-DJwXmoaP.d.ts → index-B98Xac8e.d.ts} +2 -2
- package/dist/{index-B7oA_1XI.d.ts → index-B_ByTtIT.d.ts} +2 -2
- package/dist/index-DHjNHb1c.d.mts +41 -0
- package/dist/{index-DhUSTAhT.d.mts → index-DbAN_VQE.d.mts} +2 -2
- package/dist/index.d.mts +134 -24
- package/dist/index.d.ts +134 -24
- package/dist/index.js +407 -248
- package/dist/index.mjs +184 -58
- package/dist/interactives-authoring.d.mts +231 -0
- package/dist/interactives-authoring.d.ts +231 -0
- package/dist/interactives-authoring.js +1743 -0
- package/dist/interactives-authoring.mjs +1704 -0
- package/dist/interactives-canvas.global.js +148 -0
- package/dist/interactives-guest.d.mts +20 -0
- package/dist/interactives-guest.d.ts +20 -0
- package/dist/interactives-guest.js +63 -0
- package/dist/interactives-guest.json +1 -0
- package/dist/interactives-guest.mjs +61 -0
- package/dist/interactives-jsc.global.js +9357 -0
- package/dist/interactives-meters.d.mts +93 -0
- package/dist/interactives-meters.d.ts +93 -0
- package/dist/interactives-meters.js +252 -0
- package/dist/interactives-meters.mjs +68 -0
- package/dist/interactives-production.d.mts +430 -0
- package/dist/interactives-production.d.ts +430 -0
- package/dist/interactives-production.js +1231 -0
- package/dist/interactives-production.mjs +1170 -0
- package/dist/interactives-record.d.mts +112 -0
- package/dist/interactives-record.d.ts +112 -0
- package/dist/interactives-record.js +302 -0
- package/dist/interactives-record.mjs +295 -0
- package/dist/interactives-runtime.d.mts +61 -0
- package/dist/interactives-runtime.d.ts +61 -0
- package/dist/interactives-runtime.js +442 -0
- package/dist/interactives-runtime.mjs +25 -0
- package/dist/interactives-studio-kernel.global.js +1 -0
- package/dist/interactives-studio.d.mts +806 -0
- package/dist/interactives-studio.d.ts +806 -0
- package/dist/interactives-studio.js +5741 -0
- package/dist/interactives-studio.mjs +5651 -0
- package/dist/interactives-tick.d.mts +90 -0
- package/dist/interactives-tick.d.ts +90 -0
- package/dist/interactives-tick.js +203 -0
- package/dist/interactives-tick.mjs +6 -0
- package/dist/interactives-web.d.mts +762 -0
- package/dist/interactives-web.d.ts +762 -0
- package/dist/interactives-web.js +5000 -0
- package/dist/interactives-web.mjs +4628 -0
- package/dist/interactives.d.mts +2430 -0
- package/dist/interactives.d.ts +2430 -0
- package/dist/interactives.js +5723 -0
- package/dist/interactives.mjs +4333 -0
- package/dist/juice-CoHxlpKA.d.ts +42 -0
- package/dist/juice-DQztFS43.d.mts +42 -0
- package/dist/launch-T2f4_Di4.d.mts +151 -0
- package/dist/launch-d6oreMzR.d.ts +151 -0
- package/dist/library-DXYaMFhi.d.mts +69 -0
- package/dist/library-DXYaMFhi.d.ts +69 -0
- package/dist/link-BUTqGmyi.d.mts +38 -0
- package/dist/link-BUTqGmyi.d.ts +38 -0
- package/dist/lint.js +104 -204
- package/dist/lint.mjs +103 -203
- package/dist/local-D8_I6UeL.d.mts +6967 -0
- package/dist/local-VZkqsCzR.d.ts +6967 -0
- package/dist/lockstep-BLf6dglI.d.mts +321 -0
- package/dist/lockstep-D50Ia0JW.d.ts +321 -0
- package/dist/ludo-B8ClkDqr.d.ts +205 -0
- package/dist/ludo-BOuohQ-M.d.mts +205 -0
- package/dist/mock/cli.mjs +200 -56
- package/dist/mock/library.js +200 -56
- package/dist/mock/library.mjs +200 -56
- package/dist/mock/msw.js +200 -56
- package/dist/mock/msw.mjs +200 -56
- package/dist/native-BodxSh03.d.mts +16 -0
- package/dist/native-DUHMT8gA.d.ts +16 -0
- package/dist/network-ZXLD7l1b.d.mts +19 -0
- package/dist/network-ZXLD7l1b.d.ts +19 -0
- package/dist/online-XeymeM9s.d.ts +381 -0
- package/dist/online-d7W_Al9a.d.mts +381 -0
- package/dist/params-DxFb5G_U.d.mts +155 -0
- package/dist/params-DxFb5G_U.d.ts +155 -0
- package/dist/play-BRRlfLhX.d.ts +940 -0
- package/dist/play-ClrMd_e8.d.mts +940 -0
- package/dist/policy-CCw8tXLm.d.mts +3078 -0
- package/dist/policy-CMqOSQIu.d.ts +3078 -0
- package/dist/ports-B_0v_P3A.d.mts +13 -0
- package/dist/ports-CGU_3e_0.d.ts +13 -0
- package/dist/prefetch-BHnicOQj.d.ts +117 -0
- package/dist/prefetch-CBXgYacv.d.mts +117 -0
- package/dist/{price-CSztR02F.d.mts → price-BOzexBww.d.mts} +1 -1
- package/dist/{price-C_vasx9A.d.ts → price-C1h9sPxE.d.ts} +1 -1
- package/dist/protocol-C8qbpUbT.d.mts +242 -0
- package/dist/protocol-C8qbpUbT.d.ts +242 -0
- package/dist/rapier-AZHT4YI7.js +7886 -0
- package/dist/rapier-ODEPCQA6.mjs +7792 -0
- package/dist/react.d.mts +157 -15
- package/dist/react.d.ts +157 -15
- package/dist/react.js +5564 -5904
- package/dist/react.mjs +5451 -5808
- package/dist/runner-CQcLL7By.d.ts +189 -0
- package/dist/runner-D46Yj-wE.d.mts +189 -0
- package/dist/runtime-BRWfkf_q.d.mts +51 -0
- package/dist/runtime-DyuBMkKM.d.ts +51 -0
- package/dist/scheduling-D2ajXpMC.d.ts +224 -0
- package/dist/scheduling-DSRbbaZb.d.mts +224 -0
- package/dist/schema-BrWxzKp6.d.mts +63 -0
- package/dist/schema-BrWxzKp6.d.ts +63 -0
- package/dist/server/evict.js +34 -37
- package/dist/server/evict.mjs +34 -37
- package/dist/server/tanstack.d.mts +49 -3
- package/dist/server/tanstack.d.ts +49 -3
- package/dist/server/tanstack.js +169 -117
- package/dist/server/tanstack.mjs +166 -118
- package/dist/{server-Dckg4Vdr.d.ts → server-D29IIuDV.d.ts} +136 -130
- package/dist/{server-B6dW7-Lj.d.mts → server-DQMWPnc8.d.mts} +136 -130
- package/dist/server.d.mts +45 -5
- package/dist/server.d.ts +45 -5
- package/dist/server.js +171 -227
- package/dist/server.mjs +165 -225
- package/dist/session-grant-CJ27DwrT.d.mts +19 -0
- package/dist/session-grant-CJ27DwrT.d.ts +19 -0
- package/dist/shootout-BJZeX6FG.d.ts +140 -0
- package/dist/shootout-tcZd1Rxt.d.mts +140 -0
- package/dist/state-replica-stMtdkVD.d.mts +42 -0
- package/dist/state-replica-stMtdkVD.d.ts +42 -0
- package/dist/studio-CowqWqez.d.mts +14 -0
- package/dist/studio-CowqWqez.d.ts +14 -0
- package/dist/styles.css +1 -1
- package/dist/template-AhCdB1kW.d.mts +190 -0
- package/dist/template-BkEGVTQj.d.ts +190 -0
- package/dist/terrain-BMxEc6Oc.d.ts +429 -0
- package/dist/terrain-C-XC1Oui.d.mts +429 -0
- package/dist/testing/msw.d.mts +28 -4
- package/dist/testing/msw.d.ts +28 -4
- package/dist/testing/msw.js +15 -21
- package/dist/testing/msw.mjs +15 -21
- package/dist/testing/suite.d.mts +6 -5
- package/dist/testing/suite.d.ts +6 -5
- package/dist/testing/suite.js +89 -124
- package/dist/testing/suite.mjs +81 -116
- package/dist/testing.d.mts +27 -1227
- package/dist/testing.d.ts +27 -1227
- package/dist/testing.js +127 -131
- package/dist/testing.mjs +19 -23
- package/dist/tick-transport-C8QEh8Uw.d.mts +50 -0
- package/dist/tick-transport-UjHY3xK1.d.ts +50 -0
- package/dist/timeline-protocol-hp6e8zFB.d.mts +47 -0
- package/dist/timeline-protocol-hp6e8zFB.d.ts +47 -0
- package/dist/tokens-DhanQRQS.d.mts +21 -0
- package/dist/tokens-K8yxwd6G.d.ts +21 -0
- package/dist/tree-C-Io2Hbx.d.mts +35 -0
- package/dist/tree-CP_qSW4H.d.ts +35 -0
- package/dist/tycoon-B5KHk2Xx.d.mts +255 -0
- package/dist/tycoon-hmHo-3HX.d.ts +255 -0
- package/dist/types-BQkxPwZP.d.mts +219 -0
- package/dist/types-D_f6UUxM.d.ts +219 -0
- package/dist/ui-DwHicuFv.d.mts +563 -0
- package/dist/ui-hi7S2YcH.d.ts +563 -0
- package/dist/{sign-in-DQlIdqsi.d.mts → url-52ndUruG.d.mts} +15 -1
- package/dist/{sign-in-DQlIdqsi.d.ts → url-52ndUruG.d.ts} +15 -1
- package/dist/utils.d.mts +3 -3
- package/dist/utils.d.ts +3 -3
- package/dist/utils.js +37 -37
- package/dist/utils.mjs +4 -4
- package/dist/vars-Dc_PrhBK.d.mts +511 -0
- package/dist/vars-Dc_PrhBK.d.ts +511 -0
- package/dist/vm-IUARFFAI.mjs +63 -0
- package/dist/vm-N7L6MGGH.js +65 -0
- package/dist/weave-delivery-CW-Kstut.d.mts +360 -0
- package/dist/weave-delivery-CW-Kstut.d.ts +360 -0
- package/dist/web-Dss74a7v.d.ts +883 -0
- package/dist/web-f9ZQPoyw.d.mts +883 -0
- package/dist/web-transport-C7MkBL0a.d.ts +19 -0
- package/dist/web-transport-aYEqXMd9.d.mts +19 -0
- package/dist/weight-CPGjsgjV.d.ts +92 -0
- package/dist/weight-tF1ODR1p.d.mts +92 -0
- package/dist/word-BcX9Jcmv.d.mts +70 -0
- package/dist/word-C7sVPLHm.d.ts +70 -0
- package/dist/world-PvILHDR1.d.ts +2285 -0
- package/dist/world-qekkXjJv.d.mts +2285 -0
- package/dist/worlds-Br2Pb0Cs.d.ts +109 -0
- package/dist/worlds-D5ydYr7d.d.mts +109 -0
- package/engines/c/cimplify.h +108 -0
- package/engines/c/cimplify.lib.js +11 -0
- package/engines/godot/addons/cimplify/cimplify.gd +97 -0
- package/engines/rust/interactives-ctx/Cargo.toml +9 -0
- package/engines/rust/interactives-ctx/src/lib.rs +189 -0
- package/package.json +189 -3
- package/vendor/rapier3d-compat/LICENSE +201 -0
- package/vendor/rapier3d-compat/PATCHES.md +61 -0
- package/dist/chunk-2P4KXFB6.js +0 -274
- package/dist/chunk-3G6RQLXK.mjs +0 -21
- package/dist/chunk-3V4DVXV3.mjs +0 -254
- package/dist/chunk-EDK3LNM6.js +0 -2436
- package/dist/chunk-F7J3HK27.js +0 -4549
- package/dist/chunk-U4MW6PYU.mjs +0 -23
- package/dist/chunk-XREIZ56K.js +0 -26
|
@@ -0,0 +1,2092 @@
|
|
|
1
|
+
import { GameError } from './chunk-XJIHN3BY.mjs';
|
|
2
|
+
import { __export } from './chunk-25T4JHEA.mjs';
|
|
3
|
+
|
|
4
|
+
// src/game/kernel/fmath.ts
|
|
5
|
+
var fmath_exports = {};
|
|
6
|
+
__export(fmath_exports, {
|
|
7
|
+
FMATH_CONSTANTS: () => FMATH_CONSTANTS,
|
|
8
|
+
acos: () => acos,
|
|
9
|
+
asin: () => asin,
|
|
10
|
+
atan: () => atan,
|
|
11
|
+
atan2: () => atan2,
|
|
12
|
+
cos: () => cos,
|
|
13
|
+
exp: () => exp,
|
|
14
|
+
exp2: () => exp2,
|
|
15
|
+
f32Bits: () => f32Bits,
|
|
16
|
+
f32From: () => f32From,
|
|
17
|
+
log: () => log,
|
|
18
|
+
log2: () => log2,
|
|
19
|
+
pow: () => pow,
|
|
20
|
+
sin: () => sin,
|
|
21
|
+
tan: () => tan
|
|
22
|
+
});
|
|
23
|
+
var f64 = new Float64Array(1), w64 = new Uint32Array(f64.buffer), f32 = new Float32Array(1), w32 = new Uint32Array(f32.buffer), fround = Math.fround;
|
|
24
|
+
function f32Bits(x) {
|
|
25
|
+
return f32[0] = x, w32[0];
|
|
26
|
+
}
|
|
27
|
+
function f32From(bits) {
|
|
28
|
+
return w32[0] = bits >>> 0, f32[0];
|
|
29
|
+
}
|
|
30
|
+
function f64From(hi, lo) {
|
|
31
|
+
return w64[0] = lo >>> 0, w64[1] = hi >>> 0, f64[0];
|
|
32
|
+
}
|
|
33
|
+
function lowWord(x) {
|
|
34
|
+
return f64[0] = x, w64[0];
|
|
35
|
+
}
|
|
36
|
+
function d(hex) {
|
|
37
|
+
return f64From(Number.parseInt(hex.slice(0, 8), 16), Number.parseInt(hex.slice(8), 16));
|
|
38
|
+
}
|
|
39
|
+
var EXP2_TABLE = [
|
|
40
|
+
"3ff0000000000000",
|
|
41
|
+
"3fefd9b0d3158574",
|
|
42
|
+
"3fefb5586cf9890f",
|
|
43
|
+
"3fef9301d0125b51",
|
|
44
|
+
"3fef72b83c7d517b",
|
|
45
|
+
"3fef54873168b9aa",
|
|
46
|
+
"3fef387a6e756238",
|
|
47
|
+
"3fef1e9df51fdee1",
|
|
48
|
+
"3fef06fe0a31b715",
|
|
49
|
+
"3feef1a7373aa9cb",
|
|
50
|
+
"3feedea64c123422",
|
|
51
|
+
"3feece086061892d",
|
|
52
|
+
"3feebfdad5362a27",
|
|
53
|
+
"3feeb42b569d4f82",
|
|
54
|
+
"3feeab07dd485429",
|
|
55
|
+
"3feea47eb03a5585",
|
|
56
|
+
"3feea09e667f3bcd",
|
|
57
|
+
"3fee9f75e8ec5f74",
|
|
58
|
+
"3feea11473eb0187",
|
|
59
|
+
"3feea589994cce13",
|
|
60
|
+
"3feeace5422aa0db",
|
|
61
|
+
"3feeb737b0cdc5e5",
|
|
62
|
+
"3feec49182a3f090",
|
|
63
|
+
"3feed503b23e255d",
|
|
64
|
+
"3feee89f995ad3ad",
|
|
65
|
+
"3feeff76f2fb5e47",
|
|
66
|
+
"3fef199bdd85529c",
|
|
67
|
+
"3fef3720dcef9069",
|
|
68
|
+
"3fef5818dcfba487",
|
|
69
|
+
"3fef7c97337b9b5f",
|
|
70
|
+
"3fefa4afa2a490da",
|
|
71
|
+
"3fefd0765b6e4540"
|
|
72
|
+
], EXP2_HI = EXP2_TABLE.map((h) => Number.parseInt(h.slice(0, 8), 16)), EXP2_LO = EXP2_TABLE.map((h) => Number.parseInt(h.slice(8), 16)), EXP2_POLY = [d("3fac6af84b912394"), d("3fcebfce50fac4f3"), d("3fe62e42ff0c52d6")], EXP_POLY = [d("3ebc6af84b912394"), d("3f2ebfce50fac4f3"), d("3f962e42ff0c52d6")], INV_LN2_N = d("40471547652b82fe"), SHIFT = d("4338000000000000"), SHIFT_SCALED = d("42e8000000000000"), EXP_LOW = -104, EXP_HIGH = 89, EXP2_LOW = -151, EXP2_HIGH = 129, INV_C = [
|
|
73
|
+
"3ff661ec79f8f3be",
|
|
74
|
+
"3ff571ed4aaf883d",
|
|
75
|
+
"3ff49539f0f010b0",
|
|
76
|
+
"3ff3c995b0b80385",
|
|
77
|
+
"3ff30d190c8864a5",
|
|
78
|
+
"3ff25e227b0b8ea0",
|
|
79
|
+
"3ff1bb4a4a1a343f",
|
|
80
|
+
"3ff12358f08ae5ba",
|
|
81
|
+
"3ff0953f419900a7",
|
|
82
|
+
"3ff0000000000000",
|
|
83
|
+
"3fee608cfd9a47ac",
|
|
84
|
+
"3feca4b31f026aa0",
|
|
85
|
+
"3feb2036576afce6",
|
|
86
|
+
"3fe9c2d163a1aa2d",
|
|
87
|
+
"3fe886e6037841ed",
|
|
88
|
+
"3fe767dcf5534862"
|
|
89
|
+
].map(d), LOG_C = [
|
|
90
|
+
"bfd57bf7808caade",
|
|
91
|
+
"bfd2bef0a7c06ddb",
|
|
92
|
+
"bfd01eae7f513a67",
|
|
93
|
+
"bfcb31d8a68224e9",
|
|
94
|
+
"bfc6574f0ac07758",
|
|
95
|
+
"bfc1aa2bc79c8100",
|
|
96
|
+
"bfba4e76ce8c0e5e",
|
|
97
|
+
"bfb1973c5a611ccc",
|
|
98
|
+
"bfa252f438e10c1e",
|
|
99
|
+
"0000000000000000",
|
|
100
|
+
"3faaa5aa5df25984",
|
|
101
|
+
"3fbc5e53aa362eb4",
|
|
102
|
+
"3fc526e57720db08",
|
|
103
|
+
"3fcbc2860d224770",
|
|
104
|
+
"3fd1058bc8a07ee1",
|
|
105
|
+
"3fd4043057b6ee09"
|
|
106
|
+
].map(d), LOG2_C = [
|
|
107
|
+
"bfdefec65b963019",
|
|
108
|
+
"bfdb0b6832d4fca4",
|
|
109
|
+
"bfd7418b0a1fb77b",
|
|
110
|
+
"bfd39de91a6dcf7b",
|
|
111
|
+
"bfd01d9bf3f2b631",
|
|
112
|
+
"bfc97c1d1b3b7af0",
|
|
113
|
+
"bfc2f9e393af3c9f",
|
|
114
|
+
"bfb960cbbf788d5c",
|
|
115
|
+
"bfaa6f9db6475fce",
|
|
116
|
+
"0000000000000000",
|
|
117
|
+
"3fb338ca9f24f53d",
|
|
118
|
+
"3fc476a9543891ba",
|
|
119
|
+
"3fce840b4ac4e4d2",
|
|
120
|
+
"3fd40645f0c6651c",
|
|
121
|
+
"3fd88e9c2c1b9ff8",
|
|
122
|
+
"3fdce0a44eb17bcc"
|
|
123
|
+
].map(d), LN2 = d("3fe62e42fefa39ef"), LOG_POLY = ["bfd00ea348b88334", "3fd5575b0be00b6a", "bfdffffef20a4123"].map(d), LOG2_POLY = ["bfd712b6f70a7e4d", "3fdecabf496832e0", "bfe715479ffae3de", "3ff715475f35c8b8"].map(d), POW_POLY = ["3fd27616c9496e0b", "bfd71969a075c67a", "3fdec70a6ca7badd", "bfe7154748bef6c8", "3ff71547652ab82b"].map(d), POW_SIGN_BIAS = 65536, POW_OVERFLOW = d("405fffffffd1d571"), POW_SATURATE = d("405fffffffa3aae2"), POW_UNDERFLOW = -150, LOG_OFF = 1060306944, SUBNORMAL_SCALE = 8388608, SUBNORMAL_BIAS = 23 << 23, MIN_NORMAL = 8388608, INFINITY_BITS = 2139095040, ONE_BITS = 1065353216, SIGN = 2147483648, ABS = 2147483647, EXPONENT_MASK = 4286578688, F32_MAX = f32From(2139095039), HPI_INV = d("41645f306dc9c883"), HPI = d("3ff921fb54442d18"), PI63 = d("3c1921fb54442d18"), COS_C1 = d("bfdffffffd0c621c"), COS_C2 = d("3fa55553e1068f19"), COS_C3 = d("bf56c087e89a359d"), COS_C4 = d("3ef99343027bf8c3"), SIN_S1 = d("bfc555545995a603"), SIN_S2 = d("3f81107605230bc4"), SIN_S3 = d("bf2994eb3774cf24"), QUADRANT_SIGN = [1, -1, -1, 1], LARGE_TOP = 1071, QUADRANT_ROUND = 8388608, INV_PIO4 = [
|
|
124
|
+
162,
|
|
125
|
+
41721,
|
|
126
|
+
10680707,
|
|
127
|
+
2734261102,
|
|
128
|
+
4186140238,
|
|
129
|
+
2205044292,
|
|
130
|
+
1850622997,
|
|
131
|
+
1313084713,
|
|
132
|
+
1142237692,
|
|
133
|
+
355073063,
|
|
134
|
+
704390999,
|
|
135
|
+
4230436817,
|
|
136
|
+
660066805,
|
|
137
|
+
1473377588,
|
|
138
|
+
3522507997,
|
|
139
|
+
4113882560,
|
|
140
|
+
886948059,
|
|
141
|
+
3720403810,
|
|
142
|
+
3235603093,
|
|
143
|
+
3680671129,
|
|
144
|
+
1653971260,
|
|
145
|
+
2509847619,
|
|
146
|
+
2570863504,
|
|
147
|
+
1011060801
|
|
148
|
+
], QUARTER_PI = Math.PI / 4, HALF_PI = Math.PI / 2, TAN_PI_8 = d("3fda827999fcef34"), ATAN_TERMS = 14, ATAN_COEFFS = Array.from({ length: (14) }, (_, k) => (k % 2 === 0 ? 1 : -1) * (1 / (2 * k + 1))), U64 = (1n << 64n) - 1n, U32 = (1n << 32n) - 1n;
|
|
149
|
+
function clampTo(x, low2, high2) {
|
|
150
|
+
return Number.isNaN(x) ? low2 : Math.min(Math.max(x, low2), high2);
|
|
151
|
+
}
|
|
152
|
+
function exp2Table(xd, shift, poly2, signBias) {
|
|
153
|
+
let shifted = xd + shift, ki = lowWord(shifted), kd = shifted - shift, r = xd - kd, i = ki & 31, hi = EXP2_HI[i] + (ki + signBias >>> 0 << 15) >>> 0, s = f64From(hi, EXP2_LO[i]), z = poly2[0] * r + poly2[1], r2 = r * r, y = poly2[2] * r + 1;
|
|
154
|
+
return (z * r2 + y) * s;
|
|
155
|
+
}
|
|
156
|
+
function exp(x) {
|
|
157
|
+
return Number.isNaN(x) ? Number.NaN : fround(exp2Table(INV_LN2_N * clampTo(x, (-104), (89)), SHIFT, EXP_POLY, 0));
|
|
158
|
+
}
|
|
159
|
+
function exp2(x) {
|
|
160
|
+
return Number.isNaN(x) ? Number.NaN : fround(exp2Table(clampTo(x, (-151), (129)), SHIFT_SCALED, EXP2_POLY, 0));
|
|
161
|
+
}
|
|
162
|
+
function normalized(ix) {
|
|
163
|
+
let abs = (ix & (2147483647)) >>> 0;
|
|
164
|
+
return abs >= (8388608) ? abs : f32Bits(fround(f32From(abs) * (8388608))) - SUBNORMAL_BIAS >>> 0;
|
|
165
|
+
}
|
|
166
|
+
function split(ix) {
|
|
167
|
+
let tmp = ix - (1060306944) >>> 0, i = tmp >>> 19 & 15, top = (tmp & (4286578688)) >>> 0, k = (top | 0) >> 23, z = f32From(ix - top >>> 0);
|
|
168
|
+
return [i, k, z * INV_C[i] - 1];
|
|
169
|
+
}
|
|
170
|
+
function logSpecial(x, y) {
|
|
171
|
+
let ix = f32Bits(x);
|
|
172
|
+
return ix << 1 >>> 0 ? ix === (2139095040) ? x : (ix & (2147483648)) !== 0 || ix << 1 >>> 0 >= (2139095040) << 1 >>> 0 ? Number.NaN : y : Number.NEGATIVE_INFINITY;
|
|
173
|
+
}
|
|
174
|
+
function log(x) {
|
|
175
|
+
let [i, k, r] = split(normalized(f32Bits(x))), y0 = LOG_C[i] + k * LN2, r2 = r * r, y = LOG_POLY[1] * r + LOG_POLY[2];
|
|
176
|
+
return y = LOG_POLY[0] * r2 + y, y = y * r2 + (y0 + r), logSpecial(fround(x), fround(y));
|
|
177
|
+
}
|
|
178
|
+
function log2(x) {
|
|
179
|
+
let [i, k, r] = split(normalized(f32Bits(x))), y0 = LOG2_C[i] + k, r2 = r * r, y = LOG2_POLY[1] * r + LOG2_POLY[2];
|
|
180
|
+
y = LOG2_POLY[0] * r2 + y;
|
|
181
|
+
let p = LOG2_POLY[3] * r + y0;
|
|
182
|
+
return y = y * r2 + p, logSpecial(fround(x), fround(y));
|
|
183
|
+
}
|
|
184
|
+
function powLog2(ix) {
|
|
185
|
+
let [i, k, r] = split(ix), y0 = LOG2_C[i] + k, r2 = r * r, y = POW_POLY[0] * r + POW_POLY[1], p = POW_POLY[2] * r + POW_POLY[3], r4 = r2 * r2, q = POW_POLY[4] * r + y0;
|
|
186
|
+
return q = p * r2 + q, y * r4 + q;
|
|
187
|
+
}
|
|
188
|
+
function integerKind(iy) {
|
|
189
|
+
let e = iy >>> 23 & 255;
|
|
190
|
+
if (e < 127) return 0;
|
|
191
|
+
if (e > 150) return 2;
|
|
192
|
+
let shift = 150 - e;
|
|
193
|
+
return (shift === 0 ? 0 : (iy & (1 << shift >>> 0) - 1) >>> 0) !== 0 ? 0 : (iy & 1 << shift >>> 0) !== 0 ? 1 : 2;
|
|
194
|
+
}
|
|
195
|
+
function zeroInfNan(i) {
|
|
196
|
+
return (i << 1 >>> 0) - 1 >>> 0 >= ((2139095040) << 1 >>> 0) - 1 >>> 0;
|
|
197
|
+
}
|
|
198
|
+
function pow(xIn, yIn) {
|
|
199
|
+
let x = fround(xIn), y = fround(yIn), ix = f32Bits(x), iy = f32Bits(y), ax = ix << 1 >>> 0 >>> 1;
|
|
200
|
+
if (zeroInfNan(iy))
|
|
201
|
+
return !(iy << 1 >>> 0) || ix === (1065353216) ? 1 : ix << 1 >>> 0 > (2139095040) << 1 >>> 0 || iy << 1 >>> 0 > (2139095040) << 1 >>> 0 ? Number.NaN : ax === (1065353216) ? 1 : ax < (1065353216) == ((iy & (2147483648)) === 0) ? 0 : fround(y * y);
|
|
202
|
+
let yint = integerKind(iy), negative = (ix & (2147483648)) !== 0, odd = negative && yint === 1;
|
|
203
|
+
if (zeroInfNan(ix)) {
|
|
204
|
+
if (Number.isNaN(x)) return Number.NaN;
|
|
205
|
+
let square = fround(x * x), x2 = odd ? -square : square;
|
|
206
|
+
return (iy & (2147483648)) !== 0 ? fround(1 / x2) : x2;
|
|
207
|
+
}
|
|
208
|
+
if (negative && yint === 0) return Number.NaN;
|
|
209
|
+
let ylogx = y * powLog2(normalized(ix)), signed = (magnitude) => odd ? -magnitude : magnitude;
|
|
210
|
+
return ylogx > POW_OVERFLOW ? signed(Number.POSITIVE_INFINITY) : ylogx > POW_SATURATE ? signed(F32_MAX) : ylogx <= (-150) ? signed(0) : fround(exp2Table(clampTo(ylogx, (-151), (129)), SHIFT_SCALED, EXP2_POLY, odd ? (65536) : 0));
|
|
211
|
+
}
|
|
212
|
+
function poly(x, n, flip, s) {
|
|
213
|
+
let xs = x * s, x2 = x * x, x3 = x2 * xs, x4 = x2 * x2, x5 = x3 * x2, x6 = x4 * x2, c2 = COS_C3 * flip + x2 * (COS_C4 * flip), s1 = SIN_S2 + x2 * SIN_S3, c1 = flip + x2 * (COS_C1 * flip), sv = xs + x3 * SIN_S1, cv = c1 + x4 * (COS_C2 * flip), sine = sv + x5 * s1, cosine = cv + x6 * c2;
|
|
214
|
+
return (n & 1) !== 0 ? [cosine, sine] : [sine, cosine];
|
|
215
|
+
}
|
|
216
|
+
function sincosWide(xIn) {
|
|
217
|
+
let x = fround(xIn), bits = f32Bits(x);
|
|
218
|
+
if ((bits >>> 20 & 2047) < (1071)) {
|
|
219
|
+
let n2 = (x * HPI_INV | 0) + (8388608) >> 24;
|
|
220
|
+
return poly(x - n2 * HPI, n2, (n2 & 2) !== 0 ? -1 : 1, QUADRANT_SIGN[n2 & 3]);
|
|
221
|
+
}
|
|
222
|
+
if (!Number.isFinite(x)) return [Number.NaN, Number.NaN];
|
|
223
|
+
let sign = bits >>> 31, at = bits >>> 26 & 15, shift = bits >>> 23 & 7, m = BigInt((bits & 16777215 | 8388608) << shift >>> 0), res0 = m * BigInt(INV_PIO4[at]) & U32, res1 = m * BigInt(INV_PIO4[at + 4]), res = (m * BigInt(INV_PIO4[at + 8]) >> 32n | res0 << 32n) & U64;
|
|
224
|
+
res = res + res1 & U64;
|
|
225
|
+
let n = (res + (1n << 61n) & U64) >> 62n;
|
|
226
|
+
res = res - (n << 62n) & U64;
|
|
227
|
+
let signedRes = res >= 1n << 63n ? res - (1n << 64n) : res, reduced2 = Number(signedRes) * PI63, quadrant = Number(n) + sign | 0;
|
|
228
|
+
return poly(reduced2, Number(n), (quadrant & 2) !== 0 ? -1 : 1, QUADRANT_SIGN[quadrant & 3]);
|
|
229
|
+
}
|
|
230
|
+
function sin(x) {
|
|
231
|
+
return fround(sincosWide(x)[0]);
|
|
232
|
+
}
|
|
233
|
+
function cos(x) {
|
|
234
|
+
return fround(sincosWide(x)[1]);
|
|
235
|
+
}
|
|
236
|
+
function tan(x) {
|
|
237
|
+
let [s, c] = sincosWide(x);
|
|
238
|
+
return fround(s / c);
|
|
239
|
+
}
|
|
240
|
+
function atanUnit(t) {
|
|
241
|
+
let big = t > TAN_PI_8, u = big ? (t - 1) / (t + 1) : t, u2 = u * u, p = 0;
|
|
242
|
+
for (let k = (14) - 1; k >= 0; k--) p = ATAN_COEFFS[k] + u2 * p;
|
|
243
|
+
return (big ? QUARTER_PI : 0) + u * p;
|
|
244
|
+
}
|
|
245
|
+
function atan2Wide(y, x) {
|
|
246
|
+
if (Number.isNaN(x) || Number.isNaN(y)) return Number.NaN;
|
|
247
|
+
let ax = Math.abs(x), ay = Math.abs(y), high2 = Math.max(ax, ay), low2 = Math.min(ax, ay), t = high2 === 0 ? 0 : low2 === Number.POSITIVE_INFINITY ? 1 : low2 / high2, v = atanUnit(t);
|
|
248
|
+
return ay > ax && (v = HALF_PI - v), (x < 0 || Object.is(x, -0)) && (v = Math.PI - v), y < 0 || Object.is(y, -0) ? -v : v;
|
|
249
|
+
}
|
|
250
|
+
function atan2(y, x) {
|
|
251
|
+
return fround(atan2Wide(fround(y), fround(x)));
|
|
252
|
+
}
|
|
253
|
+
function atan(x) {
|
|
254
|
+
return fround(atan2Wide(fround(x), 1));
|
|
255
|
+
}
|
|
256
|
+
function asin(xIn) {
|
|
257
|
+
let x = fround(xIn);
|
|
258
|
+
return Math.abs(x) > 1 ? Number.NaN : fround(atan2Wide(x, Math.sqrt((1 - x) * (1 + x))));
|
|
259
|
+
}
|
|
260
|
+
function acos(xIn) {
|
|
261
|
+
let x = fround(xIn);
|
|
262
|
+
return Math.abs(x) > 1 ? Number.NaN : fround(atan2Wide(Math.sqrt((1 - x) * (1 + x)), x));
|
|
263
|
+
}
|
|
264
|
+
var FMATH_CONSTANTS = {
|
|
265
|
+
EXP2_HI,
|
|
266
|
+
EXP2_LO,
|
|
267
|
+
EXP2_POLY,
|
|
268
|
+
EXP_POLY,
|
|
269
|
+
INV_LN2_N,
|
|
270
|
+
SHIFT,
|
|
271
|
+
SHIFT_SCALED,
|
|
272
|
+
EXP_LOW: (-104),
|
|
273
|
+
EXP_HIGH: (89),
|
|
274
|
+
EXP2_LOW: (-151),
|
|
275
|
+
EXP2_HIGH: (129),
|
|
276
|
+
INV_C,
|
|
277
|
+
LOG_C,
|
|
278
|
+
LOG2_C,
|
|
279
|
+
LN2,
|
|
280
|
+
LOG_POLY,
|
|
281
|
+
LOG2_POLY,
|
|
282
|
+
POW_POLY,
|
|
283
|
+
POW_SIGN_BIAS: (65536),
|
|
284
|
+
POW_OVERFLOW,
|
|
285
|
+
POW_SATURATE,
|
|
286
|
+
POW_UNDERFLOW: (-150),
|
|
287
|
+
LOG_OFF: (1060306944),
|
|
288
|
+
SUBNORMAL_SCALE: (8388608),
|
|
289
|
+
SUBNORMAL_BIAS,
|
|
290
|
+
MIN_NORMAL: (8388608),
|
|
291
|
+
INFINITY_BITS: (2139095040),
|
|
292
|
+
ONE_BITS: (1065353216),
|
|
293
|
+
F32_MAX,
|
|
294
|
+
HPI_INV,
|
|
295
|
+
HPI,
|
|
296
|
+
PI63,
|
|
297
|
+
COS_C1,
|
|
298
|
+
COS_C2,
|
|
299
|
+
COS_C3,
|
|
300
|
+
COS_C4,
|
|
301
|
+
SIN_S1,
|
|
302
|
+
SIN_S2,
|
|
303
|
+
SIN_S3,
|
|
304
|
+
LARGE_TOP: (1071),
|
|
305
|
+
QUADRANT_ROUND: (8388608),
|
|
306
|
+
INV_PIO4,
|
|
307
|
+
QUARTER_PI,
|
|
308
|
+
HALF_PI,
|
|
309
|
+
TAN_PI_8,
|
|
310
|
+
ATAN_COEFFS
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
// src/game/kernel/isa.ts
|
|
314
|
+
var isa_exports = {};
|
|
315
|
+
__export(isa_exports, {
|
|
316
|
+
ACCESS_ARRAY: () => (65536),
|
|
317
|
+
ACCESS_HIGH: () => (4096),
|
|
318
|
+
ACCESS_INDEXED: () => ACCESS_INDEXED,
|
|
319
|
+
ACCESS_NEIGHBOUR: () => (1024),
|
|
320
|
+
ACCESS_POOL: () => ACCESS_POOL,
|
|
321
|
+
ACCESS_READ: () => (256),
|
|
322
|
+
ACCESS_SCRATCH: () => (2048),
|
|
323
|
+
ACCESS_SPAWN: () => (8192),
|
|
324
|
+
ACCESS_TABLE: () => ACCESS_TABLE,
|
|
325
|
+
ACCESS_TABLE_MASK: () => (15),
|
|
326
|
+
ACCESS_TABLE_SHIFT: () => (19),
|
|
327
|
+
ACCESS_WRITE: () => (512),
|
|
328
|
+
ARG_FMAX: () => (1),
|
|
329
|
+
ARG_FMIN: () => (0),
|
|
330
|
+
ARG_IMAX: () => (3),
|
|
331
|
+
ARG_IMIN: () => (2),
|
|
332
|
+
ARG_UMAX: () => (5),
|
|
333
|
+
ARG_UMIN: () => (4),
|
|
334
|
+
ATTACH_AUDIO: () => (5),
|
|
335
|
+
ATTACH_CHEMISTRY_GRID: () => (7),
|
|
336
|
+
ATTACH_SPAWN_TABLE: () => (9),
|
|
337
|
+
ATTACH_UI: () => (4),
|
|
338
|
+
ATTACH_VOXELS: () => (6),
|
|
339
|
+
CELL_WRAP: () => CELL_WRAP,
|
|
340
|
+
CHANNEL_WORDS: () => (4),
|
|
341
|
+
CROSS_BLOCK: () => (256),
|
|
342
|
+
CROSS_OP: () => CROSS_OP,
|
|
343
|
+
CURVE_BEZIER: () => (3),
|
|
344
|
+
CURVE_HEADER: () => (4),
|
|
345
|
+
CURVE_HERMITE: () => (2),
|
|
346
|
+
CURVE_LINEAR: () => (1),
|
|
347
|
+
CURVE_MAX_CHANNELS: () => (4),
|
|
348
|
+
CURVE_MAX_KEYS: () => (256),
|
|
349
|
+
CURVE_STEP: () => (0),
|
|
350
|
+
DATA_FLOAD: () => (12290),
|
|
351
|
+
DATA_KEYOF: () => (12288),
|
|
352
|
+
DATA_LIST: () => (12304),
|
|
353
|
+
DATA_LIST_MAX: () => (4096),
|
|
354
|
+
DATA_PGET: () => (12305),
|
|
355
|
+
DATA_PICK: () => (12336),
|
|
356
|
+
DATA_PSET: () => (12306),
|
|
357
|
+
DATA_REPORT_HEADER: () => (70),
|
|
358
|
+
DATA_ROWOF: () => (12289),
|
|
359
|
+
DATA_ROWS: () => (12291),
|
|
360
|
+
DATA_SEND: () => (12320),
|
|
361
|
+
DATA_TABLES: () => (16),
|
|
362
|
+
DATA_TALLIES: () => (64),
|
|
363
|
+
DATA_TALLY: () => (12307),
|
|
364
|
+
DEFAULT_EVENT_CAPACITY: () => (4096),
|
|
365
|
+
DST_BITS: () => (8),
|
|
366
|
+
EVENT_HEADER_WORDS: () => (2),
|
|
367
|
+
EVENT_STRIDE: () => (10),
|
|
368
|
+
FIELD_MAX: () => (64),
|
|
369
|
+
FLAG_GROUPS: () => (2),
|
|
370
|
+
FLAG_NEIGHBOURS: () => (1),
|
|
371
|
+
GRAPH_EMPTY: () => (4294967295),
|
|
372
|
+
GROUP_DEFAULT: () => (1),
|
|
373
|
+
GROUP_WORDS: () => (4),
|
|
374
|
+
H_ARGS: () => (5),
|
|
375
|
+
H_CONSTANTS: () => (6),
|
|
376
|
+
H_EVENTS: () => (14),
|
|
377
|
+
H_FLAGS: () => (2),
|
|
378
|
+
H_GROUPS: () => (9),
|
|
379
|
+
H_INSTRUCTIONS: () => (8),
|
|
380
|
+
H_LOOPS: () => (7),
|
|
381
|
+
H_MAGIC: () => (0),
|
|
382
|
+
H_POSITION_X: () => (11),
|
|
383
|
+
H_POSITION_Y: () => (12),
|
|
384
|
+
H_POSITION_Z: () => (13),
|
|
385
|
+
H_REGISTERS: () => (3),
|
|
386
|
+
H_SLOTS: () => (4),
|
|
387
|
+
H_STATE: () => (10),
|
|
388
|
+
H_VERSION: () => (1),
|
|
389
|
+
INSTRUCTION_WORDS: () => (4),
|
|
390
|
+
KERNEL_CALLS_FEATURE: () => KERNEL_CALLS_FEATURE,
|
|
391
|
+
KERNEL_CALL_EXPORT_NAMES: () => KERNEL_CALL_EXPORT_NAMES,
|
|
392
|
+
KERNEL_DATA_EXPORT_NAMES: () => KERNEL_DATA_EXPORT_NAMES,
|
|
393
|
+
KERNEL_EXPORT_NAMES: () => KERNEL_EXPORT_NAMES,
|
|
394
|
+
KERNEL_EXTENDED_FEATURE: () => KERNEL_EXTENDED_FEATURE,
|
|
395
|
+
KERNEL_FEATURE: () => KERNEL_FEATURE,
|
|
396
|
+
KERNEL_GATHER_FEATURE: () => KERNEL_GATHER_FEATURE,
|
|
397
|
+
KERNEL_ISA_BASE: () => (1),
|
|
398
|
+
KERNEL_ISA_CALLS: () => (2),
|
|
399
|
+
KERNEL_ISA_EXTENDED: () => (4),
|
|
400
|
+
KERNEL_ISA_VERSION: () => (4),
|
|
401
|
+
KERNEL_ISA_WRITES: () => (3),
|
|
402
|
+
KERNEL_LIBRARY_PATH: () => KERNEL_LIBRARY_PATH,
|
|
403
|
+
KERNEL_MLP_FEATURE: () => KERNEL_MLP_FEATURE,
|
|
404
|
+
KERNEL_MOE_FEATURE: () => KERNEL_MOE_FEATURE,
|
|
405
|
+
KERNEL_QUERY_RANK_FEATURE: () => KERNEL_QUERY_RANK_FEATURE,
|
|
406
|
+
KERNEL_SCAN_FEATURE: () => KERNEL_SCAN_FEATURE,
|
|
407
|
+
KERNEL_SIMD_FEATURE: () => KERNEL_SIMD_FEATURE,
|
|
408
|
+
KERNEL_STAGE_EXPORT_NAMES: () => KERNEL_STAGE_EXPORT_NAMES,
|
|
409
|
+
KERNEL_WRITES_FEATURE: () => KERNEL_WRITES_FEATURE,
|
|
410
|
+
KERNEL_WRITE_EXPORT_NAMES: () => KERNEL_WRITE_EXPORT_NAMES,
|
|
411
|
+
KIND_BOOL: () => (3),
|
|
412
|
+
KIND_F32: () => (0),
|
|
413
|
+
KIND_I32: () => (1),
|
|
414
|
+
KIND_U32: () => (2),
|
|
415
|
+
LIBRARY_HEADER_WORDS: () => (4),
|
|
416
|
+
LIBRARY_MAGIC: () => (827083587),
|
|
417
|
+
LOOKUP_OP: () => LOOKUP_OP,
|
|
418
|
+
LOOP_COUNT_F32: () => (1),
|
|
419
|
+
LUT1_HEADER: () => (4),
|
|
420
|
+
LUT1_MAX: () => (65536),
|
|
421
|
+
LUT2_HEADER: () => (8),
|
|
422
|
+
LUT2_MAX: () => LUT2_MAX,
|
|
423
|
+
LUT_LINEAR: () => (1),
|
|
424
|
+
LUT_WRAP: () => (2),
|
|
425
|
+
MAX_CHANNELS: () => (64),
|
|
426
|
+
MAX_EVENT_WORDS: () => (8),
|
|
427
|
+
MAX_GROUPS: () => (256),
|
|
428
|
+
MAX_REGISTERS: () => (4096),
|
|
429
|
+
MAX_SLOTS: () => (256),
|
|
430
|
+
MAX_SPAWN_FIELDS: () => (64),
|
|
431
|
+
MAX_TRIPS: () => (65536),
|
|
432
|
+
MAX_UNIFORMS: () => (4096),
|
|
433
|
+
MLP_MAX_OUTPUTS: () => (32),
|
|
434
|
+
MLP_MAX_WIDTH: () => (128),
|
|
435
|
+
NONE: () => (4294967295),
|
|
436
|
+
Op: () => Op,
|
|
437
|
+
PICK_F32: () => (1),
|
|
438
|
+
PICK_U32: () => (0),
|
|
439
|
+
PROGRAM_HEADER_WORDS: () => (16),
|
|
440
|
+
PROGRAM_MAGIC: () => (827345731),
|
|
441
|
+
QFILTER_ANY: () => (2),
|
|
442
|
+
QFILTER_EQUAL: () => (1),
|
|
443
|
+
QFILTER_NONE: () => (3),
|
|
444
|
+
QUERY_BOX: () => (2),
|
|
445
|
+
QUERY_CONE: () => (1),
|
|
446
|
+
QUERY_FILTERED: () => (4),
|
|
447
|
+
QUERY_SEGMENT: () => (3),
|
|
448
|
+
QUERY_SHAPE: () => (3),
|
|
449
|
+
QUERY_SPHERE: () => (0),
|
|
450
|
+
RECUR: () => RECUR,
|
|
451
|
+
RECUR_EXCLUSIVE: () => (32),
|
|
452
|
+
RECUR_KINDS: () => (17),
|
|
453
|
+
RECUR_KIND_MASK: () => (31),
|
|
454
|
+
RECUR_WIDE: () => (64),
|
|
455
|
+
REDUCE_FMAX: () => (3),
|
|
456
|
+
REDUCE_FMIN: () => (2),
|
|
457
|
+
REDUCE_FSUM: () => (0),
|
|
458
|
+
REDUCE_IMAX: () => (5),
|
|
459
|
+
REDUCE_IMIN: () => (4),
|
|
460
|
+
REDUCE_ISUM: () => (1),
|
|
461
|
+
REDUCE_UMAX: () => (7),
|
|
462
|
+
REDUCE_UMIN: () => (6),
|
|
463
|
+
RING_COUNT: () => (0),
|
|
464
|
+
RING_DROPPED: () => (1),
|
|
465
|
+
RING_HEADER_WORDS: () => (2),
|
|
466
|
+
SAMPLER_WORDS: () => (8),
|
|
467
|
+
SAMPLE_BILINEAR: () => (1),
|
|
468
|
+
SAMPLE_NEAREST: () => (0),
|
|
469
|
+
SAMPLE_NORMAL_X: () => (2),
|
|
470
|
+
SAMPLE_NORMAL_Y: () => (3),
|
|
471
|
+
SAMPLE_NORMAL_Z: () => (4),
|
|
472
|
+
SCAN_F_EXCLUSIVE: () => (1),
|
|
473
|
+
SCAN_F_INCLUSIVE: () => (0),
|
|
474
|
+
SCAN_I_EXCLUSIVE: () => (3),
|
|
475
|
+
SCAN_I_INCLUSIVE: () => (2),
|
|
476
|
+
SCATTER_FADD: () => (0),
|
|
477
|
+
SCATTER_IADD: () => (1),
|
|
478
|
+
SEND: () => SEND,
|
|
479
|
+
SERVICE_ANCHOR: () => (16),
|
|
480
|
+
SERVICE_BITS: () => (8),
|
|
481
|
+
SERVICE_CHEMISTRY: () => (21),
|
|
482
|
+
SERVICE_CLIP_WEIGHT: () => (11),
|
|
483
|
+
SERVICE_FLOW: () => (5),
|
|
484
|
+
SERVICE_FORCE: () => (6),
|
|
485
|
+
SERVICE_GROUND_HEIGHT: () => (3),
|
|
486
|
+
SERVICE_IK_TARGET: () => (13),
|
|
487
|
+
SERVICE_IMPULSE: () => (7),
|
|
488
|
+
SERVICE_INSTANCE: () => (14),
|
|
489
|
+
SERVICE_INSTANCE_COLOUR: () => (15),
|
|
490
|
+
SERVICE_KILL: () => (23),
|
|
491
|
+
SERVICE_LINE_OF_SIGHT: () => (2),
|
|
492
|
+
SERVICE_MASK: () => (255),
|
|
493
|
+
SERVICE_OVERLAP: () => (9),
|
|
494
|
+
SERVICE_PATH: () => (4),
|
|
495
|
+
SERVICE_PICK: () => (18),
|
|
496
|
+
SERVICE_PLAY_CLIP: () => (12),
|
|
497
|
+
SERVICE_RAYCAST: () => (1),
|
|
498
|
+
SERVICE_SIGNATURES: () => SERVICE_SIGNATURES,
|
|
499
|
+
SERVICE_SOUND: () => (17),
|
|
500
|
+
SERVICE_SPAWN: () => (22),
|
|
501
|
+
SERVICE_SWEEP: () => (10),
|
|
502
|
+
SERVICE_VELOCITY: () => (8),
|
|
503
|
+
SERVICE_VOXEL_GET: () => (19),
|
|
504
|
+
SERVICE_VOXEL_SET: () => (20),
|
|
505
|
+
SIMD_CROSS: () => (28948),
|
|
506
|
+
SIMD_CROSS_WIDTH: () => (3),
|
|
507
|
+
SIMD_DOT: () => (28944),
|
|
508
|
+
SIMD_DOT_F32: () => (0),
|
|
509
|
+
SIMD_DOT_I32: () => (1),
|
|
510
|
+
SIMD_EXTRACT: () => (28929),
|
|
511
|
+
SIMD_LANE_BITS: () => (3),
|
|
512
|
+
SIMD_LANE_MASK: () => SIMD_LANE_MASK,
|
|
513
|
+
SIMD_LENGTH: () => (28946),
|
|
514
|
+
SIMD_MAP: () => (28672),
|
|
515
|
+
SIMD_MAP_OPS: () => (256),
|
|
516
|
+
SIMD_MAX_WIDTH: () => (4),
|
|
517
|
+
SIMD_MIN_WIDTH: () => (2),
|
|
518
|
+
SIMD_NORMALIZE: () => (28947),
|
|
519
|
+
SIMD_PACK: () => (28931),
|
|
520
|
+
SIMD_REDUCE: () => (28945),
|
|
521
|
+
SIMD_REPLACE: () => (28930),
|
|
522
|
+
SIMD_SCALAR_A: () => (8),
|
|
523
|
+
SIMD_SCALAR_B: () => (16),
|
|
524
|
+
SIMD_SCALAR_C: () => (32),
|
|
525
|
+
SIMD_SHUFFLE: () => (28928),
|
|
526
|
+
SIMD_WIDTH_MASK: () => (7),
|
|
527
|
+
SORT_DESCENDING: () => (4),
|
|
528
|
+
SORT_KEY_F32: () => (2),
|
|
529
|
+
SORT_KEY_I32: () => (1),
|
|
530
|
+
SORT_KEY_MASK: () => (3),
|
|
531
|
+
SORT_KEY_U32: () => (0),
|
|
532
|
+
SORT_RADIX_BITS: () => (8),
|
|
533
|
+
SPAWN_STATS_WORDS: () => (3),
|
|
534
|
+
STATUS_FAILURE: () => (0),
|
|
535
|
+
STATUS_RUNNING: () => (2),
|
|
536
|
+
STATUS_SUCCESS: () => (1),
|
|
537
|
+
UNIFORM: () => (2147483648),
|
|
538
|
+
XOP: () => (175),
|
|
539
|
+
XOP_COMPONENTS_EDGES: () => (20483),
|
|
540
|
+
XOP_COMPONENTS_GRID: () => (20480),
|
|
541
|
+
XOP_DEDUP: () => (4),
|
|
542
|
+
XOP_FIELD: () => (17),
|
|
543
|
+
XOP_GATHER: () => (16),
|
|
544
|
+
XOP_GROUP: () => (3),
|
|
545
|
+
XOP_MAX: () => (65535),
|
|
546
|
+
XOP_MLP_IN: () => (24576),
|
|
547
|
+
XOP_MLP_MOE: () => (24579),
|
|
548
|
+
XOP_MLP_OUT: () => (24578),
|
|
549
|
+
XOP_MLP_RUN: () => (24577),
|
|
550
|
+
XOP_PROPAGATE_GRID: () => (20482),
|
|
551
|
+
XOP_QFILTER: () => (4098),
|
|
552
|
+
XOP_QRANK: () => (4100),
|
|
553
|
+
XOP_QSHAPE: () => (4097),
|
|
554
|
+
XOP_QSTOP: () => (4099),
|
|
555
|
+
XOP_QUERY: () => (4096),
|
|
556
|
+
XOP_RANGE: () => XOP_RANGE,
|
|
557
|
+
XOP_RANGE_SHIFT: () => (12),
|
|
558
|
+
XOP_REACH_GRID: () => (20481),
|
|
559
|
+
XOP_RECUR: () => (32),
|
|
560
|
+
XOP_RECUR_IN: () => (33),
|
|
561
|
+
XOP_SORT: () => (1),
|
|
562
|
+
XOP_TOPK: () => (2),
|
|
563
|
+
crossRow: () => crossRow,
|
|
564
|
+
curveWords: () => curveWords,
|
|
565
|
+
deferredService: () => deferredService,
|
|
566
|
+
lookupOp: () => lookupOp,
|
|
567
|
+
operandCount: () => operandCount,
|
|
568
|
+
recurCoefficient: () => recurCoefficient,
|
|
569
|
+
recurFloatOutput: () => recurFloatOutput,
|
|
570
|
+
recurStateWords: () => recurStateWords,
|
|
571
|
+
recurSub: () => recurSub,
|
|
572
|
+
serviceOf: () => serviceOf,
|
|
573
|
+
serviceVersion: () => serviceVersion,
|
|
574
|
+
sortKey: () => sortKey,
|
|
575
|
+
stageEndingOp: () => stageEndingOp,
|
|
576
|
+
stageEnds: () => stageEnds,
|
|
577
|
+
xopRange: () => xopRange
|
|
578
|
+
});
|
|
579
|
+
var KERNEL_ISA_VERSION = 4, KERNEL_ISA_BASE = 1, KERNEL_ISA_CALLS = 2, KERNEL_ISA_WRITES = 3, KERNEL_FEATURE = "kernel_isa_1", KERNEL_CALLS_FEATURE = "kernel_isa_2", KERNEL_WRITES_FEATURE = "kernel_isa_3", KERNEL_ISA_EXTENDED = 4, KERNEL_EXTENDED_FEATURE = "kernel_isa_4", PROGRAM_MAGIC = 827345731, LIBRARY_MAGIC = 827083587, PROGRAM_HEADER_WORDS = 16, LIBRARY_HEADER_WORDS = 4, INSTRUCTION_WORDS = 4, GROUP_WORDS = 4, NONE = 4294967295, UNIFORM = 2147483648, DST_BITS = 8, MAX_REGISTERS = 4096, MAX_SLOTS = 256, MAX_UNIFORMS = 4096, MAX_GROUPS = 256, MAX_TRIPS = 65536, KERNEL_LIBRARY_PATH = "kernels.ckl", H_MAGIC = 0, H_VERSION = 1, H_FLAGS = 2, H_REGISTERS = 3, H_SLOTS = 4, H_ARGS = 5, H_CONSTANTS = 6, H_LOOPS = 7, H_INSTRUCTIONS = 8, H_GROUPS = 9, H_STATE = 10, H_POSITION_X = 11, H_POSITION_Y = 12, H_POSITION_Z = 13, H_EVENTS = 14, CHANNEL_WORDS = 4, MAX_CHANNELS = 64, MAX_EVENT_WORDS = 8, EVENT_HEADER_WORDS = 2, EVENT_STRIDE = 10, FLAG_NEIGHBOURS = 1, FLAG_GROUPS = 2, KIND_F32 = 0, KIND_I32 = 1, KIND_U32 = 2, KIND_BOOL = 3, ACCESS_READ = 256, ACCESS_WRITE = 512, ACCESS_NEIGHBOUR = 1024, ACCESS_SCRATCH = 2048, ACCESS_HIGH = 4096, ACCESS_SPAWN = 8192, SERVICE_RAYCAST = 1, SERVICE_LINE_OF_SIGHT = 2, SERVICE_GROUND_HEIGHT = 3, SERVICE_PATH = 4, SERVICE_FLOW = 5, SERVICE_FORCE = 6, SERVICE_IMPULSE = 7, SERVICE_VELOCITY = 8, SERVICE_OVERLAP = 9, SERVICE_SWEEP = 10, SERVICE_CLIP_WEIGHT = 11, SERVICE_PLAY_CLIP = 12, SERVICE_IK_TARGET = 13, SERVICE_INSTANCE = 14, SERVICE_INSTANCE_COLOUR = 15, SERVICE_ANCHOR = 16, SERVICE_SOUND = 17, SERVICE_PICK = 18, SERVICE_VOXEL_GET = 19, SERVICE_VOXEL_SET = 20, SERVICE_CHEMISTRY = 21, SERVICE_SPAWN = 22, SERVICE_KILL = 23, SERVICE_BITS = 8, SERVICE_MASK = 255, MAX_SPAWN_FIELDS = 64;
|
|
580
|
+
function serviceOf(dst) {
|
|
581
|
+
return dst & 255;
|
|
582
|
+
}
|
|
583
|
+
function operandCount(dst) {
|
|
584
|
+
return dst >>> 8;
|
|
585
|
+
}
|
|
586
|
+
function serviceVersion(service) {
|
|
587
|
+
return service >= 6 ? 3 : 2;
|
|
588
|
+
}
|
|
589
|
+
function deferredService(service) {
|
|
590
|
+
return service === 22 || service === 23;
|
|
591
|
+
}
|
|
592
|
+
var PHYSICS_WRITE = { args: [2, 0, 0, 0], results: [] }, SERVICE_SIGNATURES = {
|
|
593
|
+
1: { args: [0, 0, 0, 0, 0, 0, 0], results: [0, 0, 0, 0, 2, 3] },
|
|
594
|
+
2: { args: [0, 0, 0, 0, 0, 0], results: [3] },
|
|
595
|
+
3: { args: [0, 0], results: [0] },
|
|
596
|
+
4: { args: [0, 0, 0, 0, 0, 0], results: [0, 0, 0, 2] },
|
|
597
|
+
5: { args: [0, 0, 0], results: [0, 0, 0, 0, 2] },
|
|
598
|
+
6: PHYSICS_WRITE,
|
|
599
|
+
7: PHYSICS_WRITE,
|
|
600
|
+
8: PHYSICS_WRITE,
|
|
601
|
+
9: { args: [0, 0, 0, 0], results: [2, 2] },
|
|
602
|
+
10: { args: [0, 0, 0, 0, 0, 0, 0, 0, 2], results: [0, 0, 0, 0, 2, 3] },
|
|
603
|
+
11: { args: [2, 0], results: [] },
|
|
604
|
+
12: { args: [2, 2, 3, 0, 0], results: [2] },
|
|
605
|
+
13: { args: [2, 0, 0, 0, 0], results: [] },
|
|
606
|
+
14: { args: [2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], results: [] },
|
|
607
|
+
15: { args: [2, 2, 0, 0, 0, 0], results: [] },
|
|
608
|
+
16: { args: [2, 0, 0, 0], results: [] },
|
|
609
|
+
17: { args: [2, 2, 0, 0, 0, 0], results: [] },
|
|
610
|
+
18: { args: [0, 0, 0, 0, 0, 0, 0], results: [0, 2, 2, 3] },
|
|
611
|
+
19: { args: [0, 0, 0], results: [2, 3] },
|
|
612
|
+
20: { args: [0, 0, 0, 2], results: [] },
|
|
613
|
+
21: { args: [2, 2, 2], results: [2, 0, 2] },
|
|
614
|
+
23: { args: [], results: [] }
|
|
615
|
+
}, ATTACH_UI = 4, ATTACH_AUDIO = 5, ATTACH_VOXELS = 6, ATTACH_CHEMISTRY_GRID = 7, ATTACH_SPAWN_TABLE = 9, SPAWN_STATS_WORDS = 3, GROUP_DEFAULT = 1, LOOP_COUNT_F32 = 1, Op = {
|
|
616
|
+
NOP: 0,
|
|
617
|
+
MOV: 1,
|
|
618
|
+
LOAD: 2,
|
|
619
|
+
STORE: 3,
|
|
620
|
+
ROW: 4,
|
|
621
|
+
SEL: 5,
|
|
622
|
+
JNONE: 6,
|
|
623
|
+
LOOP_INIT: 8,
|
|
624
|
+
LOOP_NEXT: 9,
|
|
625
|
+
NEIGHBOURS: 11,
|
|
626
|
+
NLOAD: 12,
|
|
627
|
+
OUTER: 13,
|
|
628
|
+
NROW: 14,
|
|
629
|
+
ACC_FADD: 15,
|
|
630
|
+
ACC_FMIN: 16,
|
|
631
|
+
ACC_FMAX: 17,
|
|
632
|
+
ACC_IADD: 18,
|
|
633
|
+
EXT: 19,
|
|
634
|
+
FADD: 20,
|
|
635
|
+
FSUB: 21,
|
|
636
|
+
FMUL: 22,
|
|
637
|
+
FDIV: 23,
|
|
638
|
+
FMIN: 24,
|
|
639
|
+
FMAX: 25,
|
|
640
|
+
FMOD: 26,
|
|
641
|
+
FPOW: 27,
|
|
642
|
+
FATAN2: 28,
|
|
643
|
+
FMULADD: 29,
|
|
644
|
+
FMULSUB: 30,
|
|
645
|
+
FSUBMUL: 31,
|
|
646
|
+
FADDMUL: 32,
|
|
647
|
+
FCLAMP: 33,
|
|
648
|
+
FLERP: 34,
|
|
649
|
+
FLOG2: 39,
|
|
650
|
+
FNEG: 40,
|
|
651
|
+
FABS: 41,
|
|
652
|
+
FSQRT: 42,
|
|
653
|
+
FFLOOR: 43,
|
|
654
|
+
FCEIL: 44,
|
|
655
|
+
FROUND: 45,
|
|
656
|
+
FTRUNC: 46,
|
|
657
|
+
FSIGN: 47,
|
|
658
|
+
FSIN: 48,
|
|
659
|
+
FCOS: 49,
|
|
660
|
+
FTAN: 50,
|
|
661
|
+
FASIN: 51,
|
|
662
|
+
FACOS: 52,
|
|
663
|
+
FATAN: 53,
|
|
664
|
+
FEXP: 54,
|
|
665
|
+
FLOG: 55,
|
|
666
|
+
FLEN2: 56,
|
|
667
|
+
FLEN3: 57,
|
|
668
|
+
FDOT2: 58,
|
|
669
|
+
FDOT3: 59,
|
|
670
|
+
FLT: 60,
|
|
671
|
+
FLE: 61,
|
|
672
|
+
FEQ: 62,
|
|
673
|
+
FNE: 63,
|
|
674
|
+
IADD: 70,
|
|
675
|
+
ISUB: 71,
|
|
676
|
+
IMUL: 72,
|
|
677
|
+
IREM: 73,
|
|
678
|
+
UREM: 74,
|
|
679
|
+
IAND: 75,
|
|
680
|
+
IOR: 76,
|
|
681
|
+
IXOR: 77,
|
|
682
|
+
ISHL: 78,
|
|
683
|
+
ISHR: 79,
|
|
684
|
+
IUSHR: 80,
|
|
685
|
+
IMIN: 81,
|
|
686
|
+
IMAX: 82,
|
|
687
|
+
UMIN: 83,
|
|
688
|
+
UMAX: 84,
|
|
689
|
+
INEG: 85,
|
|
690
|
+
IABS: 86,
|
|
691
|
+
INOT: 87,
|
|
692
|
+
ILT: 90,
|
|
693
|
+
ILE: 91,
|
|
694
|
+
IEQ: 92,
|
|
695
|
+
INE: 93,
|
|
696
|
+
ULT: 94,
|
|
697
|
+
ULE: 95,
|
|
698
|
+
ITOF: 100,
|
|
699
|
+
UTOF: 101,
|
|
700
|
+
FTOI: 102,
|
|
701
|
+
BTOF: 103,
|
|
702
|
+
BTOI: 104,
|
|
703
|
+
FTOB: 105,
|
|
704
|
+
ITOB: 106,
|
|
705
|
+
MAND: 110,
|
|
706
|
+
MOR: 111,
|
|
707
|
+
MANDN: 112,
|
|
708
|
+
MNOT: 113,
|
|
709
|
+
NOISE2: 120,
|
|
710
|
+
NOISE3: 121,
|
|
711
|
+
HASH: 122,
|
|
712
|
+
RAND: 123,
|
|
713
|
+
EMIT: 124,
|
|
714
|
+
CALL: 125,
|
|
715
|
+
UADDC: 126,
|
|
716
|
+
USUBB: 127,
|
|
717
|
+
UMULHI: 128
|
|
718
|
+
}, STATUS_FAILURE = 0, STATUS_SUCCESS = 1, STATUS_RUNNING = 2, KERNEL_EXPORT_NAMES = [
|
|
719
|
+
"engine_kernel_isa",
|
|
720
|
+
"engine_kernel_load",
|
|
721
|
+
"engine_kernel_unload",
|
|
722
|
+
"engine_kernel_bind",
|
|
723
|
+
"engine_kernel_unbind",
|
|
724
|
+
"engine_kernel_run",
|
|
725
|
+
"engine_kernel_events",
|
|
726
|
+
"engine_kernel_clear_events"
|
|
727
|
+
], KERNEL_CALL_EXPORT_NAMES = ["engine_kernel_attach"], KERNEL_WRITE_EXPORT_NAMES = ["engine_kernel_attach_handle", "engine_kernel_spawns"], KERNEL_STAGE_EXPORT_NAMES = [
|
|
728
|
+
"engine_kernel_stage_begin",
|
|
729
|
+
"engine_kernel_stage_uniforms",
|
|
730
|
+
"engine_kernel_stage_column",
|
|
731
|
+
"engine_kernel_stage_storage",
|
|
732
|
+
"engine_kernel_stage_records",
|
|
733
|
+
"engine_kernel_stage_call",
|
|
734
|
+
"engine_kernel_stage_finish",
|
|
735
|
+
"engine_kernel_stage_end"
|
|
736
|
+
], KERNEL_DATA_EXPORT_NAMES = ["engine_kernel_bind_table", "engine_kernel_bind_pool", "engine_kernel_data"], DATA_REPORT_HEADER = 70, RING_HEADER_WORDS = 2, RING_COUNT = 0, RING_DROPPED = 1, DEFAULT_EVENT_CAPACITY = 4096, CROSS_OP = {
|
|
737
|
+
REDUCE: 160,
|
|
738
|
+
ARG: 161,
|
|
739
|
+
HIST: 162,
|
|
740
|
+
SCATTER: 163,
|
|
741
|
+
SCAN: 164,
|
|
742
|
+
COMPACT: 165
|
|
743
|
+
}, ACCESS_ARRAY = 65536, CROSS_BLOCK = 256, REDUCE_FSUM = 0, REDUCE_ISUM = 1, REDUCE_FMIN = 2, REDUCE_FMAX = 3, REDUCE_IMIN = 4, REDUCE_IMAX = 5, REDUCE_UMIN = 6, REDUCE_UMAX = 7, ARG_FMIN = 0, ARG_FMAX = 1, ARG_IMIN = 2, ARG_IMAX = 3, ARG_UMIN = 4, ARG_UMAX = 5, SCATTER_FADD = 0, SCATTER_IADD = 1, SCAN_F_INCLUSIVE = 0, SCAN_F_EXCLUSIVE = 1, SCAN_I_INCLUSIVE = 2, SCAN_I_EXCLUSIVE = 3;
|
|
744
|
+
function crossRow(op) {
|
|
745
|
+
return op >= CROSS_OP.REDUCE && op <= CROSS_OP.COMPACT;
|
|
746
|
+
}
|
|
747
|
+
var LOOKUP_OP = {
|
|
748
|
+
CURVE: 176,
|
|
749
|
+
LUT1: 177,
|
|
750
|
+
LUT2: 178,
|
|
751
|
+
SAMPLE: 179,
|
|
752
|
+
CELL: 180
|
|
753
|
+
}, ACCESS_INDEXED = 1 << 18, CURVE_STEP = 0, CURVE_LINEAR = 1, CURVE_HERMITE = 2, CURVE_BEZIER = 3, CURVE_HEADER = 4, CURVE_MAX_KEYS = 256, CURVE_MAX_CHANNELS = 4, LUT1_HEADER = 4, LUT1_MAX = 65536, LUT2_HEADER = 8, LUT2_MAX = 1 << 20, LUT_LINEAR = 1, LUT_WRAP = 2, SAMPLER_WORDS = 8, SAMPLE_NEAREST = 0, SAMPLE_BILINEAR = 1, SAMPLE_NORMAL_X = 2, SAMPLE_NORMAL_Y = 3, SAMPLE_NORMAL_Z = 4, CELL_WRAP = 1 << 24;
|
|
754
|
+
function lookupOp(op) {
|
|
755
|
+
return op >= LOOKUP_OP.CURVE && op <= LOOKUP_OP.CELL;
|
|
756
|
+
}
|
|
757
|
+
var XOP_QUERY = 4096, XOP_QSHAPE = 4097, XOP_QFILTER = 4098, XOP_QSTOP = 4099, XOP_QRANK = 4100, KERNEL_QUERY_RANK_FEATURE = "kernel_query_rank_1", QUERY_SPHERE = 0, QUERY_CONE = 1, QUERY_BOX = 2, QUERY_SEGMENT = 3, QUERY_SHAPE = 3, QUERY_FILTERED = 4, QFILTER_EQUAL = 1, QFILTER_ANY = 2, QFILTER_NONE = 3;
|
|
758
|
+
function curveWords(kind, keys, channels) {
|
|
759
|
+
let per = kind === (2) ? 2 : kind === (3) ? 3 : 1;
|
|
760
|
+
return (4) + keys + keys * channels * per;
|
|
761
|
+
}
|
|
762
|
+
var XOP = 175, XOP_MAX = 65535, XOP_RANGE_SHIFT = 12, XOP_RANGE = { CROSS: 0, SAMPLING: 1, NARROW: 2, DATA: 3, STDLIB: 4, SYSTEMS: 5, NEURAL: 6, SIMD: 7 }, XOP_MLP_IN = 24576, XOP_MLP_RUN = 24577, XOP_MLP_OUT = 24578, XOP_MLP_MOE = 24579, KERNEL_MOE_FEATURE = "kernel_moe_1", MLP_MAX_WIDTH = 128, MLP_MAX_OUTPUTS = 32, SIMD_MAP = 28672, SIMD_MAP_OPS = 256, SIMD_SHUFFLE = 28928, SIMD_EXTRACT = 28929, SIMD_REPLACE = 28930, SIMD_PACK = 28931, SIMD_DOT = 28944, SIMD_REDUCE = 28945, SIMD_LENGTH = 28946, SIMD_NORMALIZE = 28947, SIMD_CROSS = 28948, SIMD_MIN_WIDTH = 2, SIMD_MAX_WIDTH = 4, SIMD_WIDTH_MASK = 7, SIMD_SCALAR_A = 8, SIMD_SCALAR_B = 16, SIMD_SCALAR_C = 32, SIMD_LANE_BITS = 3, SIMD_LANE_MASK = (1 << (3)) - 1, SIMD_DOT_F32 = 0, SIMD_DOT_I32 = 1, SIMD_CROSS_WIDTH = 3, KERNEL_SIMD_FEATURE = "kernel_simd_1";
|
|
763
|
+
function xopRange(sub) {
|
|
764
|
+
return sub >>> (12);
|
|
765
|
+
}
|
|
766
|
+
var ACCESS_TABLE_SHIFT = 19, ACCESS_TABLE_MASK = 15, ACCESS_TABLE = (15) << (19), ACCESS_POOL = 1 << 23, DATA_TABLES = 16, DATA_KEYOF = 12288, DATA_ROWOF = 12289, DATA_FLOAD = 12290, DATA_ROWS = 12291, DATA_LIST = 12304, DATA_PGET = 12305, DATA_PSET = 12306, DATA_TALLY = 12307, DATA_SEND = 12320, DATA_PICK = 12336, DATA_LIST_MAX = 4096, DATA_TALLIES = 64, SEND = { SET: 0, FADD: 1, FMUL: 2, FMIN: 3, FMAX: 4, IADD: 5, IMIN: 6, IMAX: 7, UMIN: 8, UMAX: 9, OR: 10, AND: 11, PUSH: 12 }, PICK_U32 = 0, PICK_F32 = 1, XOP_SORT = 1, XOP_TOPK = 2, XOP_GROUP = 3, XOP_DEDUP = 4, XOP_GATHER = 16, XOP_FIELD = 17, FIELD_MAX = 64, KERNEL_GATHER_FEATURE = "kernel_gather_1", XOP_RECUR = 32, XOP_RECUR_IN = 33, KERNEL_SCAN_FEATURE = "kernel_scan_1", KERNEL_MLP_FEATURE = "kernel_mlp_1", RECUR = {
|
|
767
|
+
LINEAR_F32: 0,
|
|
768
|
+
LINEAR_U32: 1,
|
|
769
|
+
FEEDBACK_F32: 2,
|
|
770
|
+
PHASE_F64: 3,
|
|
771
|
+
ADD_F32: 4,
|
|
772
|
+
MUL_F32: 5,
|
|
773
|
+
MIN_F32: 6,
|
|
774
|
+
MAX_F32: 7,
|
|
775
|
+
ADD_INT: 8,
|
|
776
|
+
MUL_INT: 9,
|
|
777
|
+
MIN_I32: 10,
|
|
778
|
+
MAX_I32: 11,
|
|
779
|
+
MIN_U32: 12,
|
|
780
|
+
MAX_U32: 13,
|
|
781
|
+
AND: 14,
|
|
782
|
+
OR: 15,
|
|
783
|
+
XOR: 16
|
|
784
|
+
}, RECUR_KINDS = 17, RECUR_KIND_MASK = 31, RECUR_EXCLUSIVE = 32, RECUR_WIDE = 64;
|
|
785
|
+
function recurSub(sub) {
|
|
786
|
+
return sub === (32) || sub === (33);
|
|
787
|
+
}
|
|
788
|
+
function recurStateWords(kind) {
|
|
789
|
+
return kind === RECUR.FEEDBACK_F32 || kind === RECUR.PHASE_F64 ? 2 : 1;
|
|
790
|
+
}
|
|
791
|
+
function recurCoefficient(kind) {
|
|
792
|
+
return kind <= RECUR.PHASE_F64;
|
|
793
|
+
}
|
|
794
|
+
function recurFloatOutput(kind) {
|
|
795
|
+
return kind === RECUR.LINEAR_F32 || kind === RECUR.FEEDBACK_F32 || kind === RECUR.PHASE_F64 || kind >= RECUR.ADD_F32 && kind <= RECUR.MAX_F32;
|
|
796
|
+
}
|
|
797
|
+
var XOP_COMPONENTS_GRID = 20480, XOP_REACH_GRID = 20481, XOP_PROPAGATE_GRID = 20482, XOP_COMPONENTS_EDGES = 20483, GRAPH_EMPTY = 4294967295, SORT_KEY_U32 = 0, SORT_KEY_I32 = 1, SORT_KEY_F32 = 2, SORT_KEY_MASK = 3, SORT_DESCENDING = 4, SORT_RADIX_BITS = 8;
|
|
798
|
+
function sortKey(kind, raw) {
|
|
799
|
+
return kind === (1) ? (raw ^ 2147483648) >>> 0 : kind === (2) ? (raw & 2147483648) !== 0 ? ~raw >>> 0 : (raw | 2147483648) >>> 0 : raw >>> 0;
|
|
800
|
+
}
|
|
801
|
+
function stageEnds(sub) {
|
|
802
|
+
switch (xopRange(sub)) {
|
|
803
|
+
case XOP_RANGE.CROSS:
|
|
804
|
+
return sub >= (1) && sub <= (4) || recurSub(sub);
|
|
805
|
+
case XOP_RANGE.SYSTEMS:
|
|
806
|
+
return sub >= (20480) && sub <= (20483);
|
|
807
|
+
default:
|
|
808
|
+
return false;
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
function stageEndingOp(op, sub) {
|
|
812
|
+
return op === (175) && stageEnds(sub);
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
// src/game/kernel/fmath64.ts
|
|
816
|
+
var fmath64_exports = {};
|
|
817
|
+
__export(fmath64_exports, {
|
|
818
|
+
acos: () => acos2,
|
|
819
|
+
asin: () => asin2,
|
|
820
|
+
atan: () => atan3,
|
|
821
|
+
atan2: () => atan22,
|
|
822
|
+
cos: () => cos2,
|
|
823
|
+
exp: () => exp3,
|
|
824
|
+
log: () => log3,
|
|
825
|
+
log2: () => log22,
|
|
826
|
+
pow: () => pow2,
|
|
827
|
+
scalbn: () => scalbn,
|
|
828
|
+
sin: () => sin2,
|
|
829
|
+
tan: () => tan2
|
|
830
|
+
});
|
|
831
|
+
var view = new Float64Array(1), words = new Uint32Array(view.buffer);
|
|
832
|
+
function high(x) {
|
|
833
|
+
return view[0] = x, words[1];
|
|
834
|
+
}
|
|
835
|
+
function low(x) {
|
|
836
|
+
return view[0] = x, words[0];
|
|
837
|
+
}
|
|
838
|
+
function fromWords(hi, lo) {
|
|
839
|
+
return words[1] = hi >>> 0, words[0] = lo >>> 0, view[0];
|
|
840
|
+
}
|
|
841
|
+
function withLow(x, lo) {
|
|
842
|
+
return view[0] = x, words[0] = lo >>> 0, view[0];
|
|
843
|
+
}
|
|
844
|
+
function withHigh(x, hi) {
|
|
845
|
+
return view[0] = x, words[1] = hi >>> 0, view[0];
|
|
846
|
+
}
|
|
847
|
+
function twoPow(n) {
|
|
848
|
+
return fromWords(1023 + n << 20, 0);
|
|
849
|
+
}
|
|
850
|
+
function scalbn(x, n) {
|
|
851
|
+
if (n > 1023)
|
|
852
|
+
x *= twoPow(1023), n -= 1023, n > 1023 && (x *= twoPow(1023), n -= 1023, n > 1023 && (n = 1023));
|
|
853
|
+
else if (n < -1022) {
|
|
854
|
+
let mul = twoPow(-1022) * twoPow(53), add = 969;
|
|
855
|
+
x *= mul, n += add, n < -1022 && (x *= mul, n += add, n < -1022 && (n = -1022));
|
|
856
|
+
}
|
|
857
|
+
return x * twoPow(n);
|
|
858
|
+
}
|
|
859
|
+
var S1 = -0.16666666666666632, S2 = 0.00833333333332249, S3 = -1984126982985795e-19, S4 = 27557313707070068e-22, S5 = -2.5050760253406863e-8, S6 = 158969099521155e-24;
|
|
860
|
+
function kSin(x, y, iy) {
|
|
861
|
+
let z = x * x, w = z * z, r = (0.00833333333332249) + z * ((-1984126982985795e-19) + z * (27557313707070068e-22)) + z * w * ((-2.5050760253406863e-8) + z * (158969099521155e-24)), v = z * x;
|
|
862
|
+
return iy === 0 ? x + v * ((-0.16666666666666632) + z * r) : x - (z * (0.5 * y - v * r) - y - v * (-0.16666666666666632));
|
|
863
|
+
}
|
|
864
|
+
var C1 = 0.0416666666666666, C2 = -0.001388888888887411, C3 = 2480158728947673e-20, C4 = -2.7557314351390663e-7, C5 = 2087572321298175e-24, C6 = -11359647557788195e-27;
|
|
865
|
+
function kCos(x, y) {
|
|
866
|
+
let z = x * x, w = z * z, r = z * ((0.0416666666666666) + z * ((-0.001388888888887411) + z * (2480158728947673e-20))) + w * w * ((-2.7557314351390663e-7) + z * ((2087572321298175e-24) + z * (-11359647557788195e-27))), hz = 0.5 * z, v = 1 - hz;
|
|
867
|
+
return v + (1 - v - hz + (z * r - x * y));
|
|
868
|
+
}
|
|
869
|
+
var T = [
|
|
870
|
+
0.3333333333333341,
|
|
871
|
+
0.13333333333320124,
|
|
872
|
+
0.05396825397622605,
|
|
873
|
+
0.021869488294859542,
|
|
874
|
+
0.0088632398235993,
|
|
875
|
+
0.0035920791075913124,
|
|
876
|
+
0.0014562094543252903,
|
|
877
|
+
5880412408202641e-19,
|
|
878
|
+
2464631348184699e-19,
|
|
879
|
+
7817944429395571e-20,
|
|
880
|
+
7140724913826082e-20,
|
|
881
|
+
-18558637485527546e-21,
|
|
882
|
+
2590730518636337e-20
|
|
883
|
+
], PIO4 = 0.7853981633974483, PIO4_LO = 3061616997868383e-32;
|
|
884
|
+
function zeroLow(x) {
|
|
885
|
+
return withLow(x, 0);
|
|
886
|
+
}
|
|
887
|
+
function kTan(x, y, odd) {
|
|
888
|
+
let hx = high(x), big = (hx & 2147483647) >>> 0 >= 1072010280;
|
|
889
|
+
big && (hx >>> 31 && (x = -x, y = -y), x = (0.7853981633974483) - x + ((3061616997868383e-32) - y), y = 0);
|
|
890
|
+
let z = x * x, w = z * z, r = T[1] + w * (T[3] + w * (T[5] + w * (T[7] + w * (T[9] + w * T[11])))), v = z * (T[2] + w * (T[4] + w * (T[6] + w * (T[8] + w * (T[10] + w * T[12]))))), s = z * x;
|
|
891
|
+
r = y + z * (s * (r + v) + y) + s * T[0];
|
|
892
|
+
let ww = x + r;
|
|
893
|
+
if (big) {
|
|
894
|
+
let sign = hx >>> 31, ss = 1 - 2 * odd, vv = ss - 2 * (x + (r - ww * ww / (ww + ss)));
|
|
895
|
+
return sign !== 0 ? -vv : vv;
|
|
896
|
+
}
|
|
897
|
+
if (odd === 0) return ww;
|
|
898
|
+
let w0 = zeroLow(ww), v0 = r - (w0 - x), a = -1 / ww, a0 = zeroLow(a);
|
|
899
|
+
return a0 + a * (1 + a0 * w0 + a0 * v0);
|
|
900
|
+
}
|
|
901
|
+
var IPIO2 = [
|
|
902
|
+
10680707,
|
|
903
|
+
7228996,
|
|
904
|
+
1387004,
|
|
905
|
+
2578385,
|
|
906
|
+
16069853,
|
|
907
|
+
12639074,
|
|
908
|
+
9804092,
|
|
909
|
+
4427841,
|
|
910
|
+
16666979,
|
|
911
|
+
11263675,
|
|
912
|
+
12935607,
|
|
913
|
+
2387514,
|
|
914
|
+
4345298,
|
|
915
|
+
14681673,
|
|
916
|
+
3074569,
|
|
917
|
+
13734428,
|
|
918
|
+
16653803,
|
|
919
|
+
1880361,
|
|
920
|
+
10960616,
|
|
921
|
+
8533493,
|
|
922
|
+
3062596,
|
|
923
|
+
8710556,
|
|
924
|
+
7349940,
|
|
925
|
+
6258241,
|
|
926
|
+
3772886,
|
|
927
|
+
3769171,
|
|
928
|
+
3798172,
|
|
929
|
+
8675211,
|
|
930
|
+
12450088,
|
|
931
|
+
3874808,
|
|
932
|
+
9961438,
|
|
933
|
+
366607,
|
|
934
|
+
15675153,
|
|
935
|
+
9132554,
|
|
936
|
+
7151469,
|
|
937
|
+
3571407,
|
|
938
|
+
2607881,
|
|
939
|
+
12013382,
|
|
940
|
+
4155038,
|
|
941
|
+
6285869,
|
|
942
|
+
7677882,
|
|
943
|
+
13102053,
|
|
944
|
+
15825725,
|
|
945
|
+
473591,
|
|
946
|
+
9065106,
|
|
947
|
+
15363067,
|
|
948
|
+
6271263,
|
|
949
|
+
9264392,
|
|
950
|
+
5636912,
|
|
951
|
+
4652155,
|
|
952
|
+
7056368,
|
|
953
|
+
13614112,
|
|
954
|
+
10155062,
|
|
955
|
+
1944035,
|
|
956
|
+
9527646,
|
|
957
|
+
15080200,
|
|
958
|
+
6658437,
|
|
959
|
+
6231200,
|
|
960
|
+
6832269,
|
|
961
|
+
16767104,
|
|
962
|
+
5075751,
|
|
963
|
+
3212806,
|
|
964
|
+
1398474,
|
|
965
|
+
7579849,
|
|
966
|
+
6349435,
|
|
967
|
+
12618859
|
|
968
|
+
], PIO2_PARTS = [
|
|
969
|
+
1.570796251296997,
|
|
970
|
+
7549789415861596e-23,
|
|
971
|
+
5390302529957765e-30,
|
|
972
|
+
3282003415807913e-37,
|
|
973
|
+
1270655753080676e-44,
|
|
974
|
+
12293330898111133e-52,
|
|
975
|
+
27337005381646456e-60,
|
|
976
|
+
21674168387780482e-67
|
|
977
|
+
], X1P24 = 16777216, X1P_24 = 1 / 16777216;
|
|
978
|
+
function remPio2Large(x, y, e0) {
|
|
979
|
+
let nx = x.length, f = new Array(20).fill(0), fq = new Array(20).fill(0), q = new Array(20).fill(0), iq = new Array(20).fill(0), jx = nx - 1, jv = Math.trunc((e0 - 3) / 24);
|
|
980
|
+
jv < 0 && (jv = 0);
|
|
981
|
+
let q0 = e0 - 24 * (jv + 1), j = jv - jx, m = jx + 4;
|
|
982
|
+
for (let i = 0; i <= m; i++)
|
|
983
|
+
f[i] = j < 0 ? 0 : IPIO2[j], j++;
|
|
984
|
+
for (let i = 0; i <= 4; i++) {
|
|
985
|
+
let fw2 = 0;
|
|
986
|
+
for (let k = 0; k <= jx; k++) fw2 += x[k] * f[jx + i - k];
|
|
987
|
+
q[i] = fw2;
|
|
988
|
+
}
|
|
989
|
+
let jz = 4, z = 0, n = 0, ih = 0;
|
|
990
|
+
for (; ; ) {
|
|
991
|
+
let i = 0;
|
|
992
|
+
z = q[jz];
|
|
993
|
+
for (let k = jz; k >= 1; k--) {
|
|
994
|
+
let fw2 = X1P_24 * z | 0;
|
|
995
|
+
iq[i] = z - (16777216) * fw2 | 0, z = q[k - 1] + fw2, i++;
|
|
996
|
+
}
|
|
997
|
+
if (z = scalbn(z, q0), z -= 8 * Math.floor(z * 0.125), n = z | 0, z -= n, ih = 0, q0 > 0 ? (i = iq[jz - 1] >> 24 - q0, n += i, iq[jz - 1] -= i << 24 - q0, ih = iq[jz - 1] >> 23 - q0) : q0 === 0 ? ih = iq[jz - 1] >> 23 : z >= 0.5 && (ih = 2), ih > 0) {
|
|
998
|
+
n += 1;
|
|
999
|
+
let carry = 0;
|
|
1000
|
+
for (let k = 0; k < jz; k++) {
|
|
1001
|
+
let v = iq[k];
|
|
1002
|
+
carry === 0 ? v !== 0 && (carry = 1, iq[k] = 16777216 - v) : iq[k] = 16777215 - v;
|
|
1003
|
+
}
|
|
1004
|
+
q0 > 0 && (q0 === 1 ? iq[jz - 1] &= 8388607 : q0 === 2 && (iq[jz - 1] &= 4194303)), ih === 2 && (z = 1 - z, carry !== 0 && (z -= scalbn(1, q0)));
|
|
1005
|
+
}
|
|
1006
|
+
if (z === 0) {
|
|
1007
|
+
let acc2 = 0;
|
|
1008
|
+
for (let k = jz - 1; k >= 4; k--) acc2 |= iq[k];
|
|
1009
|
+
if (acc2 === 0) {
|
|
1010
|
+
let k = 1;
|
|
1011
|
+
for (; iq[4 - k] === 0; ) k++;
|
|
1012
|
+
for (let t = jz + 1; t <= jz + k; t++) {
|
|
1013
|
+
f[jx + t] = IPIO2[jv + t];
|
|
1014
|
+
let fw2 = 0;
|
|
1015
|
+
for (let s = 0; s <= jx; s++) fw2 += x[s] * f[jx + t - s];
|
|
1016
|
+
q[t] = fw2;
|
|
1017
|
+
}
|
|
1018
|
+
jz += k;
|
|
1019
|
+
continue;
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
break;
|
|
1023
|
+
}
|
|
1024
|
+
if (z === 0)
|
|
1025
|
+
for (jz -= 1, q0 -= 24; iq[jz] === 0; )
|
|
1026
|
+
jz -= 1, q0 -= 24;
|
|
1027
|
+
else if (z = scalbn(z, -q0), z >= (16777216)) {
|
|
1028
|
+
let fw2 = X1P_24 * z | 0;
|
|
1029
|
+
iq[jz] = z - (16777216) * fw2 | 0, jz += 1, q0 += 24, iq[jz] = fw2;
|
|
1030
|
+
} else
|
|
1031
|
+
iq[jz] = z | 0;
|
|
1032
|
+
let fw = scalbn(1, q0);
|
|
1033
|
+
for (let i = jz; i >= 0; i--)
|
|
1034
|
+
q[i] = fw * iq[i], fw *= X1P_24;
|
|
1035
|
+
for (let i = jz; i >= 0; i--) {
|
|
1036
|
+
let acc2 = 0;
|
|
1037
|
+
for (let k = 0; k <= 4 && k <= jz - i; k++) acc2 += PIO2_PARTS[k] * q[i + k];
|
|
1038
|
+
fq[jz - i] = acc2;
|
|
1039
|
+
}
|
|
1040
|
+
let acc = 0;
|
|
1041
|
+
for (let i = jz; i >= 0; i--) acc += fq[i];
|
|
1042
|
+
y[0] = ih === 0 ? acc : -acc, acc = fq[0] - acc;
|
|
1043
|
+
for (let i = 1; i <= jz; i++) acc += fq[i];
|
|
1044
|
+
return y[1] = ih === 0 ? acc : -acc, n & 7;
|
|
1045
|
+
}
|
|
1046
|
+
var TO_INT = 1.5 / 2220446049250313e-31, INV_PIO2 = 0.6366197723675814, PIO2_1 = 1.5707963267341256, PIO2_1T = 6077100506506192e-26, PIO2_2 = 6077100506303966e-26, PIO2_2T = 20222662487959506e-37, PIO2_3 = 20222662487111665e-37, PIO2_3T = 84784276603689e-45, reduced = [0, 0];
|
|
1047
|
+
function medium(x, ix) {
|
|
1048
|
+
let fn = x * (0.6366197723675814) + TO_INT - TO_INT, n = fn | 0, r = x - fn * (1.5707963267341256), w = fn * (6077100506506192e-26), y0 = r - w, ex = ix >>> 20, ey = high(y0) >>> 20 & 2047;
|
|
1049
|
+
if (ex - ey > 16) {
|
|
1050
|
+
let t = r;
|
|
1051
|
+
w = fn * (6077100506303966e-26), r = t - w, w = fn * (20222662487959506e-37) - (t - r - w), y0 = r - w, ey = high(y0) >>> 20 & 2047, ex - ey > 49 && (t = r, w = fn * (20222662487111665e-37), r = t - w, w = fn * (84784276603689e-45) - (t - r - w), y0 = r - w);
|
|
1052
|
+
}
|
|
1053
|
+
return reduced[0] = y0, reduced[1] = r - y0 - w, n;
|
|
1054
|
+
}
|
|
1055
|
+
function step(x, sign, k) {
|
|
1056
|
+
if (sign === 0) {
|
|
1057
|
+
let z2 = x - k * (1.5707963267341256), y02 = z2 - k * (6077100506506192e-26);
|
|
1058
|
+
return reduced[0] = y02, reduced[1] = z2 - y02 - k * (6077100506506192e-26), k;
|
|
1059
|
+
}
|
|
1060
|
+
let z = x + k * (1.5707963267341256), y0 = z + k * (6077100506506192e-26);
|
|
1061
|
+
return reduced[0] = y0, reduced[1] = z - y0 + k * (6077100506506192e-26), -k;
|
|
1062
|
+
}
|
|
1063
|
+
function remPio2(x) {
|
|
1064
|
+
let sign = high(x) >>> 31, ix = (high(x) & 2147483647) >>> 0;
|
|
1065
|
+
if (ix <= 1074752122)
|
|
1066
|
+
return (ix & 1048575) === 598523 ? medium(x, ix) : ix <= 1073928572 ? step(x, sign, 1) : step(x, sign, 2);
|
|
1067
|
+
if (ix <= 1075594811)
|
|
1068
|
+
return ix <= 1075183036 ? ix === 1074977148 ? medium(x, ix) : step(x, sign, 3) : ix === 1075388923 ? medium(x, ix) : step(x, sign, 4);
|
|
1069
|
+
if (ix < 1094263291) return medium(x, ix);
|
|
1070
|
+
if (ix >= 2146435072)
|
|
1071
|
+
return reduced[0] = x - x, reduced[1] = reduced[0], 0;
|
|
1072
|
+
let z = fromWords((high(x) & 1048575 | 1046 << 20) >>> 0, low(x)), tx = [0, 0, 0];
|
|
1073
|
+
for (let i2 = 0; i2 < 2; i2++)
|
|
1074
|
+
tx[i2] = z | 0, z = (z - tx[i2]) * (16777216);
|
|
1075
|
+
tx[2] = z;
|
|
1076
|
+
let i = 2;
|
|
1077
|
+
for (; i !== 0 && tx[i] === 0; ) i--;
|
|
1078
|
+
let ty = [0, 0, 0], n = remPio2Large(tx.slice(0, i + 1), ty, (ix >> 20) - 1046);
|
|
1079
|
+
return sign !== 0 ? (reduced[0] = -ty[0], reduced[1] = -ty[1], -n) : (reduced[0] = ty[0], reduced[1] = ty[1], n);
|
|
1080
|
+
}
|
|
1081
|
+
function sin2(x) {
|
|
1082
|
+
let ix = (high(x) & 2147483647) >>> 0;
|
|
1083
|
+
if (ix <= 1072243195)
|
|
1084
|
+
return ix < 1045430272 ? x : kSin(x, 0, 0);
|
|
1085
|
+
if (ix >= 2146435072) return x - x;
|
|
1086
|
+
let n = remPio2(x), [y0, y1] = reduced;
|
|
1087
|
+
switch (n & 3) {
|
|
1088
|
+
case 0:
|
|
1089
|
+
return kSin(y0, y1, 1);
|
|
1090
|
+
case 1:
|
|
1091
|
+
return kCos(y0, y1);
|
|
1092
|
+
case 2:
|
|
1093
|
+
return -kSin(y0, y1, 1);
|
|
1094
|
+
default:
|
|
1095
|
+
return -kCos(y0, y1);
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
function cos2(x) {
|
|
1099
|
+
let ix = (high(x) & 2147483647) >>> 0;
|
|
1100
|
+
if (ix <= 1072243195)
|
|
1101
|
+
return ix < 1044816030 && (x | 0) === 0 ? 1 : kCos(x, 0);
|
|
1102
|
+
if (ix >= 2146435072) return x - x;
|
|
1103
|
+
let n = remPio2(x), [y0, y1] = reduced;
|
|
1104
|
+
switch (n & 3) {
|
|
1105
|
+
case 0:
|
|
1106
|
+
return kCos(y0, y1);
|
|
1107
|
+
case 1:
|
|
1108
|
+
return -kSin(y0, y1, 1);
|
|
1109
|
+
case 2:
|
|
1110
|
+
return -kCos(y0, y1);
|
|
1111
|
+
default:
|
|
1112
|
+
return kSin(y0, y1, 1);
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1115
|
+
function tan2(x) {
|
|
1116
|
+
let ix = (high(x) & 2147483647) >>> 0;
|
|
1117
|
+
if (ix <= 1072243195)
|
|
1118
|
+
return ix < 1044381696 ? x : kTan(x, 0, 0);
|
|
1119
|
+
if (ix >= 2146435072) return x - x;
|
|
1120
|
+
let n = remPio2(x);
|
|
1121
|
+
return kTan(reduced[0], reduced[1], n & 1);
|
|
1122
|
+
}
|
|
1123
|
+
var ATANHI = [0.4636476090008061, 0.7853981633974483, 0.982793723247329, 1.5707963267948966], ATANLO = [22698777452961687e-33, 3061616997868383e-32, 13903311031230998e-33, 6123233995736766e-32], AT = [
|
|
1124
|
+
0.3333333333333293,
|
|
1125
|
+
-0.19999999999876483,
|
|
1126
|
+
0.14285714272503466,
|
|
1127
|
+
-0.11111110405462356,
|
|
1128
|
+
0.09090887133436507,
|
|
1129
|
+
-0.0769187620504483,
|
|
1130
|
+
0.06661073137387531,
|
|
1131
|
+
-0.058335701337905735,
|
|
1132
|
+
0.049768779946159324,
|
|
1133
|
+
-0.036531572744216916,
|
|
1134
|
+
0.016285820115365782
|
|
1135
|
+
];
|
|
1136
|
+
function atan3(x) {
|
|
1137
|
+
let ix = high(x), sign = ix >>> 31;
|
|
1138
|
+
if (ix = (ix & 2147483647) >>> 0, ix >= 1141899264) {
|
|
1139
|
+
if (Number.isNaN(x)) return x;
|
|
1140
|
+
let z2 = ATANHI[3] + fromWords(0, 58720256);
|
|
1141
|
+
return sign !== 0 ? -z2 : z2;
|
|
1142
|
+
}
|
|
1143
|
+
let id;
|
|
1144
|
+
if (ix < 1071382528) {
|
|
1145
|
+
if (ix < 1044381696) return x;
|
|
1146
|
+
id = -1;
|
|
1147
|
+
} else
|
|
1148
|
+
x = Math.abs(x), ix < 1072889856 ? ix < 1072037888 ? (x = (2 * x - 1) / (2 + x), id = 0) : (x = (x - 1) / (x + 1), id = 1) : ix < 1073971200 ? (x = (x - 1.5) / (1 + 1.5 * x), id = 2) : (x = -1 / x, id = 3);
|
|
1149
|
+
let z = x * x, w = z * z, s1 = z * (AT[0] + w * (AT[2] + w * (AT[4] + w * (AT[6] + w * (AT[8] + w * AT[10]))))), s2 = w * (AT[1] + w * (AT[3] + w * (AT[5] + w * (AT[7] + w * AT[9]))));
|
|
1150
|
+
if (id < 0) return x - x * (s1 + s2);
|
|
1151
|
+
let r = ATANHI[id] - (x * (s1 + s2) - ATANLO[id] - x);
|
|
1152
|
+
return sign !== 0 ? -r : r;
|
|
1153
|
+
}
|
|
1154
|
+
var PI = 3.141592653589793, PI_LO = 12246467991473532e-32;
|
|
1155
|
+
function atan22(y, x) {
|
|
1156
|
+
if (Number.isNaN(x) || Number.isNaN(y)) return x + y;
|
|
1157
|
+
let ix = high(x), lx = low(x), iy = high(y), ly = low(y);
|
|
1158
|
+
if ((ix - 1072693248 >>> 0 | lx) === 0) return atan3(y);
|
|
1159
|
+
let m = iy >>> 31 & 1 | ix >>> 30 & 2;
|
|
1160
|
+
if (ix = (ix & 2147483647) >>> 0, iy = (iy & 2147483647) >>> 0, (iy | ly) === 0)
|
|
1161
|
+
return m === 0 || m === 1 ? y : m === 2 ? (3.141592653589793) : -(3.141592653589793);
|
|
1162
|
+
if ((ix | lx) === 0) return m & 1 ? -(3.141592653589793) / 2 : (3.141592653589793) / 2;
|
|
1163
|
+
if (ix === 2146435072)
|
|
1164
|
+
return iy === 2146435072 ? m === 0 ? (3.141592653589793) / 4 : m === 1 ? -(3.141592653589793) / 4 : m === 2 ? 3 * (3.141592653589793) / 4 : -3 * (3.141592653589793) / 4 : m === 0 ? 0 : m === 1 ? -0 : m === 2 ? (3.141592653589793) : -(3.141592653589793);
|
|
1165
|
+
if (ix + (64 << 20) >>> 0 < iy || iy === 2146435072) return m & 1 ? -(3.141592653589793) / 2 : (3.141592653589793) / 2;
|
|
1166
|
+
let z = m & 2 && iy + (64 << 20) >>> 0 < ix ? 0 : atan3(Math.abs(y / x));
|
|
1167
|
+
return m === 0 ? z : m === 1 ? -z : m === 2 ? (3.141592653589793) - (z - (12246467991473532e-32)) : z - (12246467991473532e-32) - (3.141592653589793);
|
|
1168
|
+
}
|
|
1169
|
+
var PIO2_HI = 1.5707963267948966, PIO2_LO = 6123233995736766e-32, PS0 = 0.16666666666666666, PS1 = -0.3255658186224009, PS2 = 0.20121253213486293, PS3 = -0.04005553450067941, PS4 = 7915349942898145e-19, PS5 = 3479331075960212e-20, QS1 = -2.403394911734414, QS2 = 2.0209457602335057, QS3 = -0.6882839716054533, QS4 = 0.07703815055590194;
|
|
1170
|
+
function ratio(z) {
|
|
1171
|
+
let p = z * ((0.16666666666666666) + z * ((-0.3255658186224009) + z * ((0.20121253213486293) + z * ((-0.04005553450067941) + z * ((7915349942898145e-19) + z * (3479331075960212e-20)))))), q = 1 + z * ((-2.403394911734414) + z * ((2.0209457602335057) + z * ((-0.6882839716054533) + z * (0.07703815055590194))));
|
|
1172
|
+
return p / q;
|
|
1173
|
+
}
|
|
1174
|
+
function asin2(x) {
|
|
1175
|
+
let hx = high(x), ix = (hx & 2147483647) >>> 0;
|
|
1176
|
+
if (ix >= 1072693248) {
|
|
1177
|
+
let lx = low(x);
|
|
1178
|
+
return (ix - 1072693248 >>> 0 | lx) === 0 ? x * (1.5707963267948966) + fromWords(946864128, 0) : 0 / (x - x);
|
|
1179
|
+
}
|
|
1180
|
+
if (ix < 1071644672)
|
|
1181
|
+
return ix >= 1048576 && ix < 1045430272 ? x : x + x * ratio(x * x);
|
|
1182
|
+
let z = (1 - Math.abs(x)) * 0.5, s = Math.sqrt(z), r = ratio(z), v;
|
|
1183
|
+
if (ix >= 1072640819)
|
|
1184
|
+
v = (1.5707963267948966) - (2 * (s + s * r) - (6123233995736766e-32));
|
|
1185
|
+
else {
|
|
1186
|
+
let f = withLow(s, 0), c = (z - f * f) / (s + f);
|
|
1187
|
+
v = 0.5 * (1.5707963267948966) - (2 * s * r - ((6123233995736766e-32) - 2 * c) - (0.5 * (1.5707963267948966) - 2 * f));
|
|
1188
|
+
}
|
|
1189
|
+
return hx >>> 31 ? -v : v;
|
|
1190
|
+
}
|
|
1191
|
+
function acos2(x) {
|
|
1192
|
+
let x1p120 = fromWords(946864128, 0), hx = high(x), ix = (hx & 2147483647) >>> 0;
|
|
1193
|
+
if (ix >= 1072693248) {
|
|
1194
|
+
let lx = low(x);
|
|
1195
|
+
return (ix - 1072693248 >>> 0 | lx) === 0 ? hx >>> 31 ? 2 * (1.5707963267948966) + x1p120 : 0 : 0 / (x - x);
|
|
1196
|
+
}
|
|
1197
|
+
if (ix < 1071644672)
|
|
1198
|
+
return ix <= 1012924416 ? (1.5707963267948966) + x1p120 : (1.5707963267948966) - (x - ((6123233995736766e-32) - x * ratio(x * x)));
|
|
1199
|
+
if (hx >>> 31) {
|
|
1200
|
+
let z2 = (1 + x) * 0.5, s2 = Math.sqrt(z2), w2 = ratio(z2) * s2 - (6123233995736766e-32);
|
|
1201
|
+
return 2 * ((1.5707963267948966) - (s2 + w2));
|
|
1202
|
+
}
|
|
1203
|
+
let z = (1 - x) * 0.5, s = Math.sqrt(z), df = withLow(s, 0), c = (z - df * df) / (s + df), w = ratio(z) * s + c;
|
|
1204
|
+
return 2 * (df + w);
|
|
1205
|
+
}
|
|
1206
|
+
var LN2HI = 0.6931471803691238, LN2LO = 19082149292705877e-26, INVLN2 = 1.4426950408889634, P1 = 0.16666666666666602, P2 = -0.0027777777777015593, P3 = 6613756321437934e-20, P4 = -16533902205465252e-22, P5 = 41381367970572385e-24;
|
|
1207
|
+
function exp3(x) {
|
|
1208
|
+
let x1p1023 = fromWords(2145386496, 0), hx = high(x), sign = hx >>> 31;
|
|
1209
|
+
if (hx = (hx & 2147483647) >>> 0, hx >= 1082532651) {
|
|
1210
|
+
if (Number.isNaN(x)) return x;
|
|
1211
|
+
if (x > 709.782712893384) return x * x1p1023;
|
|
1212
|
+
if (x < -708.3964185322641 && x < -745.1332191019411) return 0;
|
|
1213
|
+
}
|
|
1214
|
+
let k, hi, lo;
|
|
1215
|
+
if (hx > 1071001154)
|
|
1216
|
+
hx >= 1072734898 ? k = (1.4426950408889634) * x + (sign === 0 ? 0.5 : -0.5) | 0 : k = 1 - sign - sign, hi = x - k * (0.6931471803691238), lo = k * (19082149292705877e-26), x = hi - lo;
|
|
1217
|
+
else if (hx > 1043333120)
|
|
1218
|
+
k = 0, hi = x, lo = 0;
|
|
1219
|
+
else
|
|
1220
|
+
return 1 + x;
|
|
1221
|
+
let xx = x * x, c = x - xx * ((0.16666666666666602) + xx * ((-0.0027777777777015593) + xx * ((6613756321437934e-20) + xx * ((-16533902205465252e-22) + xx * (41381367970572385e-24))))), y = 1 + (x * c / (2 - c) - lo + hi);
|
|
1222
|
+
return k === 0 ? y : scalbn(y, k);
|
|
1223
|
+
}
|
|
1224
|
+
var LG1 = 0.6666666666666735, LG2 = 0.3999999999940942, LG3 = 0.2857142874366239, LG4 = 0.22222198432149784, LG5 = 0.1818357216161805, LG6 = 0.15313837699209373, LG7 = 0.14798198605116586, X1P54 = 18014398509481984;
|
|
1225
|
+
function reduceLog(x) {
|
|
1226
|
+
let hx = high(x), k = 0;
|
|
1227
|
+
if (hx < 1048576 || hx >>> 31) {
|
|
1228
|
+
if (x === 0) return -1 / (x * x);
|
|
1229
|
+
if (hx >>> 31) return (x - x) / 0;
|
|
1230
|
+
k -= 54, x *= (18014398509481984), hx = high(x);
|
|
1231
|
+
} else {
|
|
1232
|
+
if (hx >= 2146435072)
|
|
1233
|
+
return x;
|
|
1234
|
+
if (hx === 1072693248 && low(x) === 0)
|
|
1235
|
+
return 0;
|
|
1236
|
+
}
|
|
1237
|
+
return hx = hx + 614242 >>> 0, k += (hx >>> 20) - 1023, hx = (hx & 1048575) + 1072079006 >>> 0, { f: withHigh(x, hx) - 1, k };
|
|
1238
|
+
}
|
|
1239
|
+
function log3(x) {
|
|
1240
|
+
let red = reduceLog(x);
|
|
1241
|
+
if (typeof red == "number") return red;
|
|
1242
|
+
let { f, k } = red, hfsq = 0.5 * f * f, s = f / (2 + f), z = s * s, w = z * z, t1 = w * ((0.3999999999940942) + w * ((0.22222198432149784) + w * (0.15313837699209373))), r = z * ((0.6666666666666735) + w * ((0.2857142874366239) + w * ((0.1818357216161805) + w * (0.14798198605116586)))) + t1, dk = k;
|
|
1243
|
+
return s * (hfsq + r) + dk * (19082149292705877e-26) - hfsq + f + dk * (0.6931471803691238);
|
|
1244
|
+
}
|
|
1245
|
+
var IVLN2HI = 1.4426950407214463, IVLN2LO = 16751713164886512e-26;
|
|
1246
|
+
function log22(x) {
|
|
1247
|
+
let red = reduceLog(x);
|
|
1248
|
+
if (typeof red == "number") return red;
|
|
1249
|
+
let { f, k } = red, hfsq = 0.5 * f * f, s = f / (2 + f), z = s * s, w = z * z, t1 = w * ((0.3999999999940942) + w * ((0.22222198432149784) + w * (0.15313837699209373))), r = z * ((0.6666666666666735) + w * ((0.2857142874366239) + w * ((0.1818357216161805) + w * (0.14798198605116586)))) + t1, hi = withLow(f - hfsq, 0), lo = f - hi - hfsq + s * (hfsq + r), valHi = hi * (1.4426950407214463), valLo = (lo + hi) * (16751713164886512e-26) + lo * (1.4426950407214463), y = k;
|
|
1250
|
+
return w = y + valHi, valLo += y - w + valHi, valHi = w, valLo + valHi;
|
|
1251
|
+
}
|
|
1252
|
+
var BP = [1, 1.5], DP_H = [0, 0.5849624872207642], DP_L = [0, 1350039202129749e-23], TWO53 = 9007199254740992, HUGE = 1e300, TINY = 1e-300, L1 = 0.5999999999999946, L2 = 0.4285714285785502, L3 = 0.33333332981837743, L4 = 0.272728123808534, L5 = 0.23066074577556175, L6 = 0.20697501780033842, LG2F = 0.6931471805599453, LG2_H = 0.6931471824645996, LG2_L = -1.904654299957768e-9, OVT = 8008566259537294e-32, CP = 0.9617966939259756, CP_H = 0.9617967009544373, CP_L = -7.028461650952758e-9, IVLN2 = 1.4426950408889634, IVLN2_H = 1.4426950216293335, IVLN2_L = 19259629911266175e-24;
|
|
1253
|
+
function pow2(x, y) {
|
|
1254
|
+
let hx = high(x) | 0, lx = low(x), hy = high(y) | 0, ly = low(y), ix = hx & 2147483647, iy = hy & 2147483647;
|
|
1255
|
+
if ((iy | ly) === 0 || hx === 1072693248 && lx === 0) return 1;
|
|
1256
|
+
if (ix > 2146435072 || ix === 2146435072 && lx !== 0 || iy > 2146435072 || iy === 2146435072 && ly !== 0) return x + y;
|
|
1257
|
+
let yisint = 0, k, j;
|
|
1258
|
+
if (hx < 0 && (iy >= 1128267776 ? yisint = 2 : iy >= 1072693248 && (k = (iy >> 20) - 1023, k > 20 ? (j = ly >>> 52 - k | 0, j << 52 - k === (ly | 0) && (yisint = 2 - (j & 1))) : ly === 0 && (j = iy >> 20 - k, j << 20 - k === iy && (yisint = 2 - (j & 1))))), ly === 0) {
|
|
1259
|
+
if (iy === 2146435072)
|
|
1260
|
+
return (ix - 1072693248 | lx) === 0 ? 1 : ix >= 1072693248 ? hy >= 0 ? y : 0 : hy >= 0 ? 0 : -y;
|
|
1261
|
+
if (iy === 1072693248) return hy >= 0 ? x : 1 / x;
|
|
1262
|
+
if (hy === 1073741824) return x * x;
|
|
1263
|
+
if (hy === 1071644672 && hx >= 0) return Math.sqrt(x);
|
|
1264
|
+
}
|
|
1265
|
+
let ax = Math.abs(x);
|
|
1266
|
+
if (lx === 0 && (ix === 2146435072 || ix === 0 || ix === 1072693248)) {
|
|
1267
|
+
let z2 = ax;
|
|
1268
|
+
return hy < 0 && (z2 = 1 / z2), hx < 0 && ((ix - 1072693248 | yisint) === 0 ? z2 = (z2 - z2) / (z2 - z2) : yisint === 1 && (z2 = -z2)), z2;
|
|
1269
|
+
}
|
|
1270
|
+
let s = 1;
|
|
1271
|
+
if (hx < 0) {
|
|
1272
|
+
if (yisint === 0) return (x - x) / (x - x);
|
|
1273
|
+
yisint === 1 && (s = -1);
|
|
1274
|
+
}
|
|
1275
|
+
let t1, t2;
|
|
1276
|
+
if (iy > 1105199104) {
|
|
1277
|
+
if (iy > 1139802112) {
|
|
1278
|
+
if (ix <= 1072693247) return hy < 0 ? (1e300) * (1e300) : (1e-300) * (1e-300);
|
|
1279
|
+
if (ix >= 1072693248) return hy > 0 ? (1e300) * (1e300) : (1e-300) * (1e-300);
|
|
1280
|
+
}
|
|
1281
|
+
if (ix < 1072693247) return hy < 0 ? s * (1e300) * (1e300) : s * (1e-300) * (1e-300);
|
|
1282
|
+
if (ix > 1072693248) return hy > 0 ? s * (1e300) * (1e300) : s * (1e-300) * (1e-300);
|
|
1283
|
+
let t3 = ax - 1, w2 = t3 * t3 * (0.5 - t3 * (0.3333333333333333 - t3 * 0.25)), u2 = (1.4426950216293335) * t3, v2 = t3 * (19259629911266175e-24) - w2 * (1.4426950408889634);
|
|
1284
|
+
t1 = withLow(u2 + v2, 0), t2 = v2 - (t1 - u2);
|
|
1285
|
+
} else {
|
|
1286
|
+
let n2 = 0;
|
|
1287
|
+
ix < 1048576 && (ax *= (9007199254740992), n2 -= 53, ix = high(ax) | 0), n2 += (ix >> 20) - 1023, j = ix & 1048575;
|
|
1288
|
+
let kk;
|
|
1289
|
+
ix = j | 1072693248, j <= 235662 ? kk = 0 : j < 767610 ? kk = 1 : (kk = 0, n2 += 1, ix -= 1048576), ax = withHigh(ax, ix >>> 0);
|
|
1290
|
+
let u2 = ax - BP[kk], v2 = 1 / (ax + BP[kk]), ss = u2 * v2, sH = withLow(ss, 0), tH = fromWords((ix >>> 1 | 536870912) + 524288 + (kk << 18) >>> 0, 0), tL = ax - (tH - BP[kk]), sL = v2 * (u2 - sH * tH - sH * tL), s2 = ss * ss, r2 = s2 * s2 * ((0.5999999999999946) + s2 * ((0.4285714285785502) + s2 * ((0.33333332981837743) + s2 * ((0.272728123808534) + s2 * ((0.23066074577556175) + s2 * (0.20697501780033842))))));
|
|
1291
|
+
r2 += sL * (sH + ss), s2 = sH * sH, tH = withLow(3 + s2 + r2, 0), tL = r2 - (tH - 3 - s2);
|
|
1292
|
+
let uu = sH * tH, vv = sL * tH + tL * ss, pH2 = withLow(uu + vv, 0), pL2 = vv - (pH2 - uu), zH = (0.9617967009544373) * pH2, zL = (-7.028461650952758e-9) * pH2 + pL2 * (0.9617966939259756) + DP_L[kk], t3 = n2;
|
|
1293
|
+
t1 = withLow(zH + zL + DP_H[kk] + t3, 0), t2 = zL - (t1 - t3 - DP_H[kk] - zH);
|
|
1294
|
+
}
|
|
1295
|
+
let y1 = withLow(y, 0), pL = (y - y1) * t1 + y * t2, pH = y1 * t1, z = pL + pH, jj = high(z) | 0, ii = low(z) | 0;
|
|
1296
|
+
if (jj >= 1083179008) {
|
|
1297
|
+
if ((jj - 1083179008 | ii) !== 0 || pL + (8008566259537294e-32) > z - pH) return s * (1e300) * (1e300);
|
|
1298
|
+
} else if ((jj & 2147483647) >= 1083231232 && (((jj >>> 0) - 3230714880 | ii) !== 0 || pL <= z - pH))
|
|
1299
|
+
return s * (1e-300) * (1e-300);
|
|
1300
|
+
let i = jj & 2147483647;
|
|
1301
|
+
k = (i >> 20) - 1023;
|
|
1302
|
+
let n = 0;
|
|
1303
|
+
if (i > 1071644672) {
|
|
1304
|
+
n = jj + (1048576 >> k + 1) | 0, k = ((n & 2147483647) >> 20) - 1023;
|
|
1305
|
+
let t3 = fromWords((n & ~(1048575 >> k)) >>> 0, 0);
|
|
1306
|
+
n = (n & 1048575 | 1048576) >> 20 - k, jj < 0 && (n = -n), pH -= t3;
|
|
1307
|
+
}
|
|
1308
|
+
let t = withLow(pL + pH, 0), u = t * (0.6931471824645996), v = (pL - (t - pH)) * (0.6931471805599453) + t * (-1.904654299957768e-9);
|
|
1309
|
+
z = u + v;
|
|
1310
|
+
let w = v - (z - u), tt = z * z, tt1 = z - tt * ((0.16666666666666602) + tt * ((-0.0027777777777015593) + tt * ((6613756321437934e-20) + tt * ((-16533902205465252e-22) + tt * (41381367970572385e-24)))));
|
|
1311
|
+
return z = 1 - (z * tt1 / (tt1 - 2) - (w + z * w) - z), jj = high(z) | 0, jj = jj + (n << 20) | 0, jj >> 20 <= 0 ? z = scalbn(z, n) : z = withHigh(z, jj >>> 0), s * z;
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
// src/game/kernel/lanes.ts
|
|
1315
|
+
var lanes_exports = {};
|
|
1316
|
+
__export(lanes_exports, {
|
|
1317
|
+
CANONICAL_NAN32: () => (2143289344),
|
|
1318
|
+
INSERT_WIDTH_SHIFT: () => (8),
|
|
1319
|
+
LANE_OP: () => LANE_OP,
|
|
1320
|
+
evalLane: () => evalLane,
|
|
1321
|
+
joinF64: () => joinF64,
|
|
1322
|
+
joinU64: () => joinU64,
|
|
1323
|
+
laneSignature: () => laneSignature,
|
|
1324
|
+
runLanes: () => runLanes,
|
|
1325
|
+
toUint32: () => toUint32,
|
|
1326
|
+
toUint64: () => toUint64
|
|
1327
|
+
});
|
|
1328
|
+
var LANE_OP = {
|
|
1329
|
+
F64_ADD: 8192,
|
|
1330
|
+
F64_SUB: 8193,
|
|
1331
|
+
F64_MUL: 8194,
|
|
1332
|
+
F64_DIV: 8195,
|
|
1333
|
+
F64_MIN: 8196,
|
|
1334
|
+
F64_MAX: 8197,
|
|
1335
|
+
F64_MOD: 8198,
|
|
1336
|
+
F64_POW: 8199,
|
|
1337
|
+
F64_ATAN2: 8200,
|
|
1338
|
+
F64_NEG: 8208,
|
|
1339
|
+
F64_ABS: 8209,
|
|
1340
|
+
F64_SQRT: 8210,
|
|
1341
|
+
F64_FLOOR: 8211,
|
|
1342
|
+
F64_CEIL: 8212,
|
|
1343
|
+
F64_ROUND: 8213,
|
|
1344
|
+
F64_TRUNC: 8214,
|
|
1345
|
+
F64_SIGN: 8215,
|
|
1346
|
+
F64_SIN: 8216,
|
|
1347
|
+
F64_COS: 8217,
|
|
1348
|
+
F64_TAN: 8218,
|
|
1349
|
+
F64_ASIN: 8219,
|
|
1350
|
+
F64_ACOS: 8220,
|
|
1351
|
+
F64_ATAN: 8221,
|
|
1352
|
+
F64_EXP: 8222,
|
|
1353
|
+
F64_LOG: 8223,
|
|
1354
|
+
F64_LOG2: 8224,
|
|
1355
|
+
F64_LT: 8240,
|
|
1356
|
+
F64_LE: 8241,
|
|
1357
|
+
F64_EQ: 8242,
|
|
1358
|
+
F64_NE: 8243,
|
|
1359
|
+
F64_FROM_F32: 8256,
|
|
1360
|
+
F64_FROM_I32: 8257,
|
|
1361
|
+
F64_FROM_U32: 8258,
|
|
1362
|
+
F64_TO_F32: 8259,
|
|
1363
|
+
F64_TO_I32: 8260,
|
|
1364
|
+
F64_TO_U32: 8261,
|
|
1365
|
+
F64_FROM_U64: 8262,
|
|
1366
|
+
F64_TO_U64: 8263,
|
|
1367
|
+
BIT_POPCNT: 8448,
|
|
1368
|
+
BIT_CLZ: 8449,
|
|
1369
|
+
BIT_CTZ: 8450,
|
|
1370
|
+
BIT_ROTL: 8451,
|
|
1371
|
+
BIT_ROTR: 8452,
|
|
1372
|
+
BIT_EXTRACT: 8453,
|
|
1373
|
+
BIT_INSERT: 8454,
|
|
1374
|
+
BIT_MORTON2: 8455,
|
|
1375
|
+
BIT_MORTON3: 8456,
|
|
1376
|
+
BIT_UNMORTON2: 8457,
|
|
1377
|
+
BIT_UNMORTON3: 8458,
|
|
1378
|
+
BIT64_POPCNT: 8464,
|
|
1379
|
+
BIT64_CLZ: 8465,
|
|
1380
|
+
BIT64_CTZ: 8466,
|
|
1381
|
+
BIT64_ROTL: 8467,
|
|
1382
|
+
BIT64_ROTR: 8468,
|
|
1383
|
+
BIT64_EXTRACT: 8469,
|
|
1384
|
+
BIT64_INSERT: 8470,
|
|
1385
|
+
BIT64_MORTON2: 8471,
|
|
1386
|
+
BIT64_MORTON3: 8472,
|
|
1387
|
+
BIT64_UNMORTON2: 8473,
|
|
1388
|
+
BIT64_UNMORTON3: 8474,
|
|
1389
|
+
U64_SHL: 8480,
|
|
1390
|
+
U64_SHR: 8481,
|
|
1391
|
+
U64_MUL: 8482,
|
|
1392
|
+
U64_DIV: 8483,
|
|
1393
|
+
U64_REM: 8484
|
|
1394
|
+
}, INSERT_WIDTH_SHIFT = 8, CANONICAL_NAN32 = 2143289344, L = LANE_OP, A = 1, B = 2, C = 4, EA = 8, EB = 16, PAIR = (1) | (2), PAIRS = (1) | (2) | (4) | (8), TWO32 = 4294967296, TWO64 = 18446744073709552e3, MASK64 = (1n << 64n) - 1n;
|
|
1395
|
+
function laneSignature(sub) {
|
|
1396
|
+
if (sub >= L.F64_ADD && sub <= L.F64_ATAN2 || sub >= L.U64_MUL && sub <= L.U64_REM) return [PAIRS, 2];
|
|
1397
|
+
if (sub === L.U64_SHL || sub === L.U64_SHR) return [PAIR | (4), 2];
|
|
1398
|
+
if (sub >= L.F64_NEG && sub <= L.F64_LOG2 || sub === L.F64_FROM_U64 || sub === L.F64_TO_U64) return [PAIR, 2];
|
|
1399
|
+
if (sub >= L.F64_LT && sub <= L.F64_NE) return [PAIRS, 1];
|
|
1400
|
+
if (sub >= L.F64_FROM_F32 && sub <= L.F64_FROM_U32) return [(1), 2];
|
|
1401
|
+
if (sub >= L.F64_TO_F32 && sub <= L.F64_TO_U32) return [PAIR, 1];
|
|
1402
|
+
switch (sub) {
|
|
1403
|
+
case L.BIT_POPCNT:
|
|
1404
|
+
case L.BIT_CLZ:
|
|
1405
|
+
case L.BIT_CTZ:
|
|
1406
|
+
return [(1), 1];
|
|
1407
|
+
case L.BIT_ROTL:
|
|
1408
|
+
case L.BIT_ROTR:
|
|
1409
|
+
case L.BIT_MORTON2:
|
|
1410
|
+
return [(1) | (2), 1];
|
|
1411
|
+
case L.BIT_EXTRACT:
|
|
1412
|
+
case L.BIT_MORTON3:
|
|
1413
|
+
return [(1) | (2) | (4), 1];
|
|
1414
|
+
case L.BIT_INSERT:
|
|
1415
|
+
return [(1) | (2) | (4) | (8), 1];
|
|
1416
|
+
case L.BIT_UNMORTON2:
|
|
1417
|
+
return [(1), 2];
|
|
1418
|
+
case L.BIT_UNMORTON3:
|
|
1419
|
+
return [(1), 3];
|
|
1420
|
+
case L.BIT64_POPCNT:
|
|
1421
|
+
case L.BIT64_CLZ:
|
|
1422
|
+
case L.BIT64_CTZ:
|
|
1423
|
+
return [PAIR, 1];
|
|
1424
|
+
case L.BIT64_ROTL:
|
|
1425
|
+
case L.BIT64_ROTR:
|
|
1426
|
+
case L.BIT64_MORTON3:
|
|
1427
|
+
return [PAIR | (4), 2];
|
|
1428
|
+
case L.BIT64_EXTRACT:
|
|
1429
|
+
return [PAIRS, 2];
|
|
1430
|
+
case L.BIT64_INSERT:
|
|
1431
|
+
return [PAIRS | (16), 2];
|
|
1432
|
+
case L.BIT64_MORTON2:
|
|
1433
|
+
case L.BIT64_UNMORTON2:
|
|
1434
|
+
return [PAIR, 2];
|
|
1435
|
+
case L.BIT64_UNMORTON3:
|
|
1436
|
+
return [PAIR, 3];
|
|
1437
|
+
default:
|
|
1438
|
+
return null;
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
var view2 = new Float64Array(1), halves = new Uint32Array(view2.buffer), f322 = new Float32Array(1), f32bits = new Uint32Array(f322.buffer);
|
|
1442
|
+
function joinF64(lo, hi) {
|
|
1443
|
+
return halves[0] = lo >>> 0, halves[1] = hi >>> 0, view2[0];
|
|
1444
|
+
}
|
|
1445
|
+
function splitF64(x, out) {
|
|
1446
|
+
if (Number.isNaN(x)) {
|
|
1447
|
+
out[0] = 0, out[1] = 2146959360;
|
|
1448
|
+
return;
|
|
1449
|
+
}
|
|
1450
|
+
view2[0] = x, out[0] = halves[0], out[1] = halves[1];
|
|
1451
|
+
}
|
|
1452
|
+
function joinU64(lo, hi) {
|
|
1453
|
+
return BigInt(hi >>> 0) << 32n | BigInt(lo >>> 0);
|
|
1454
|
+
}
|
|
1455
|
+
function splitU64(v, out) {
|
|
1456
|
+
let w = v & MASK64;
|
|
1457
|
+
out[0] = Number(w & 0xffffffffn), out[1] = Number(w >> 32n);
|
|
1458
|
+
}
|
|
1459
|
+
function jsMin(x, y) {
|
|
1460
|
+
return Number.isNaN(x) || Number.isNaN(y) ? Number.NaN : x === y ? Object.is(x, -0) || Object.is(y, -0) ? -0 : x : x < y ? x : y;
|
|
1461
|
+
}
|
|
1462
|
+
function jsMax(x, y) {
|
|
1463
|
+
return Number.isNaN(x) || Number.isNaN(y) ? Number.NaN : x === y ? Object.is(x, 0) || Object.is(y, 0) ? 0 : x : x > y ? x : y;
|
|
1464
|
+
}
|
|
1465
|
+
function jsPow(x, y) {
|
|
1466
|
+
return Number.isNaN(y) || Math.abs(x) === 1 && !Number.isFinite(y) ? Number.NaN : pow2(x, y);
|
|
1467
|
+
}
|
|
1468
|
+
function jsRound(x) {
|
|
1469
|
+
if (!Number.isFinite(x) || x === 0) return x;
|
|
1470
|
+
let r = Math.floor(x), v = x - r >= 0.5 ? r + 1 : r;
|
|
1471
|
+
return v === 0 && x < 0 ? -0 : v;
|
|
1472
|
+
}
|
|
1473
|
+
function jsSign(x) {
|
|
1474
|
+
return x > 0 ? 1 : x < 0 ? -1 : x;
|
|
1475
|
+
}
|
|
1476
|
+
function toUint32(x) {
|
|
1477
|
+
if (!Number.isFinite(x)) return 0;
|
|
1478
|
+
let m = Math.trunc(x) % (4294967296);
|
|
1479
|
+
return (m < 0 ? m + (4294967296) : m) >>> 0;
|
|
1480
|
+
}
|
|
1481
|
+
function toUint64(x) {
|
|
1482
|
+
if (!Number.isFinite(x)) return 0n;
|
|
1483
|
+
let t = Math.trunc(x), q = BigInt(Math.abs(t) % (18446744073709552e3));
|
|
1484
|
+
return t < 0 ? -q & MASK64 : q;
|
|
1485
|
+
}
|
|
1486
|
+
function binary64(sub, x, y) {
|
|
1487
|
+
switch (sub) {
|
|
1488
|
+
case L.F64_ADD:
|
|
1489
|
+
return x + y;
|
|
1490
|
+
case L.F64_SUB:
|
|
1491
|
+
return x - y;
|
|
1492
|
+
case L.F64_MUL:
|
|
1493
|
+
return x * y;
|
|
1494
|
+
case L.F64_DIV:
|
|
1495
|
+
return x / y;
|
|
1496
|
+
case L.F64_MIN:
|
|
1497
|
+
return jsMin(x, y);
|
|
1498
|
+
case L.F64_MAX:
|
|
1499
|
+
return jsMax(x, y);
|
|
1500
|
+
case L.F64_MOD:
|
|
1501
|
+
return x % y;
|
|
1502
|
+
case L.F64_POW:
|
|
1503
|
+
return jsPow(x, y);
|
|
1504
|
+
default:
|
|
1505
|
+
return atan22(x, y);
|
|
1506
|
+
}
|
|
1507
|
+
}
|
|
1508
|
+
function unary64(sub, x) {
|
|
1509
|
+
switch (sub) {
|
|
1510
|
+
case L.F64_NEG:
|
|
1511
|
+
return -x;
|
|
1512
|
+
case L.F64_ABS:
|
|
1513
|
+
return Math.abs(x);
|
|
1514
|
+
case L.F64_SQRT:
|
|
1515
|
+
return Math.sqrt(x);
|
|
1516
|
+
case L.F64_FLOOR:
|
|
1517
|
+
return Math.floor(x);
|
|
1518
|
+
case L.F64_CEIL:
|
|
1519
|
+
return Math.ceil(x);
|
|
1520
|
+
case L.F64_ROUND:
|
|
1521
|
+
return jsRound(x);
|
|
1522
|
+
case L.F64_TRUNC:
|
|
1523
|
+
return Math.trunc(x);
|
|
1524
|
+
case L.F64_SIGN:
|
|
1525
|
+
return jsSign(x);
|
|
1526
|
+
case L.F64_SIN:
|
|
1527
|
+
return sin2(x);
|
|
1528
|
+
case L.F64_COS:
|
|
1529
|
+
return cos2(x);
|
|
1530
|
+
case L.F64_TAN:
|
|
1531
|
+
return tan2(x);
|
|
1532
|
+
case L.F64_ASIN:
|
|
1533
|
+
return asin2(x);
|
|
1534
|
+
case L.F64_ACOS:
|
|
1535
|
+
return acos2(x);
|
|
1536
|
+
case L.F64_ATAN:
|
|
1537
|
+
return atan3(x);
|
|
1538
|
+
case L.F64_EXP:
|
|
1539
|
+
return exp3(x);
|
|
1540
|
+
case L.F64_LOG:
|
|
1541
|
+
return log3(x);
|
|
1542
|
+
default:
|
|
1543
|
+
return log22(x);
|
|
1544
|
+
}
|
|
1545
|
+
}
|
|
1546
|
+
function ones(width, bits) {
|
|
1547
|
+
return width >= bits ? (1n << BigInt(bits)) - 1n : (1n << BigInt(width)) - 1n;
|
|
1548
|
+
}
|
|
1549
|
+
function extract(a, offset, width, bits) {
|
|
1550
|
+
return a >> BigInt(offset & bits - 1) & ones(width >>> 0, bits);
|
|
1551
|
+
}
|
|
1552
|
+
function insert(base, value, offset, width, bits) {
|
|
1553
|
+
let at = BigInt(offset & bits - 1), field = ones(width >>> 0, bits) << at;
|
|
1554
|
+
return (base & ~field | value << at & field) & ones(bits, bits);
|
|
1555
|
+
}
|
|
1556
|
+
function spread(v, bits, step2) {
|
|
1557
|
+
let out = 0n;
|
|
1558
|
+
for (let k = 0; k < bits; k++) out |= (v >> BigInt(k) & 1n) << BigInt(k * step2);
|
|
1559
|
+
return out;
|
|
1560
|
+
}
|
|
1561
|
+
function gather(v, bits, step2, at) {
|
|
1562
|
+
let out = 0n;
|
|
1563
|
+
for (let k = 0; k < bits; k++) out |= (v >> BigInt(k * step2 + at) & 1n) << BigInt(k);
|
|
1564
|
+
return out;
|
|
1565
|
+
}
|
|
1566
|
+
function popcount(v) {
|
|
1567
|
+
let n = 0;
|
|
1568
|
+
for (; v > 0n; )
|
|
1569
|
+
n += Number(v & 1n), v >>= 1n;
|
|
1570
|
+
return n;
|
|
1571
|
+
}
|
|
1572
|
+
function clz(v, bits) {
|
|
1573
|
+
let n = 0;
|
|
1574
|
+
for (let k = bits - 1; k >= 0 && (v >> BigInt(k) & 1n) === 0n; k--) n++;
|
|
1575
|
+
return n;
|
|
1576
|
+
}
|
|
1577
|
+
function ctz(v, bits) {
|
|
1578
|
+
let n = 0;
|
|
1579
|
+
for (let k = 0; k < bits && (v >> BigInt(k) & 1n) === 0n; k++) n++;
|
|
1580
|
+
return n;
|
|
1581
|
+
}
|
|
1582
|
+
function rotl(v, s, bits) {
|
|
1583
|
+
let n = BigInt(s & bits - 1), mask = ones(bits, bits);
|
|
1584
|
+
return (v << n | v >> BigInt(bits) - n) & mask;
|
|
1585
|
+
}
|
|
1586
|
+
function wide64(sub, x, y) {
|
|
1587
|
+
switch (sub) {
|
|
1588
|
+
case L.U64_SHL:
|
|
1589
|
+
return x << (y & 63n) & MASK64;
|
|
1590
|
+
case L.U64_SHR:
|
|
1591
|
+
return x >> (y & 63n);
|
|
1592
|
+
case L.U64_MUL:
|
|
1593
|
+
return x * y & MASK64;
|
|
1594
|
+
case L.U64_DIV:
|
|
1595
|
+
return y === 0n ? 0n : x / y;
|
|
1596
|
+
default:
|
|
1597
|
+
return y === 0n ? 0n : x % y;
|
|
1598
|
+
}
|
|
1599
|
+
}
|
|
1600
|
+
var laneIn = new Uint32Array(5), laneOut = new Uint32Array(3);
|
|
1601
|
+
function runLanes(sub, inputs, targets, n, read, write) {
|
|
1602
|
+
let signature = laneSignature(sub);
|
|
1603
|
+
if (signature === null) return;
|
|
1604
|
+
let [mask, outputs] = signature;
|
|
1605
|
+
for (let k = 0; k < n; k++) {
|
|
1606
|
+
for (let w = 0; w < 5; w++) laneIn[w] = mask & 1 << w ? read(inputs[w], k) : 0;
|
|
1607
|
+
evalLane(sub, laneIn, laneOut);
|
|
1608
|
+
for (let o = 0; o < outputs; o++) write(targets[o], k, laneOut[o]);
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
function evalLane(sub, v, out) {
|
|
1612
|
+
out[0] = 0, out[1] = 0, out[2] = 0;
|
|
1613
|
+
let word = (r) => {
|
|
1614
|
+
out[0] = Number(r) >>> 0;
|
|
1615
|
+
};
|
|
1616
|
+
if (sub >= L.F64_ADD && sub <= L.F64_ATAN2) return splitF64(binary64(sub, joinF64(v[0], v[1]), joinF64(v[2], v[3])), out);
|
|
1617
|
+
if (sub >= L.U64_MUL && sub <= L.U64_REM) return splitU64(wide64(sub, joinU64(v[0], v[1]), joinU64(v[2], v[3])), out);
|
|
1618
|
+
if (sub === L.U64_SHL || sub === L.U64_SHR) return splitU64(wide64(sub, joinU64(v[0], v[1]), BigInt(v[2])), out);
|
|
1619
|
+
if (sub >= L.F64_NEG && sub <= L.F64_LOG2) return splitF64(unary64(sub, joinF64(v[0], v[1])), out);
|
|
1620
|
+
if (sub === L.F64_FROM_U64) return splitF64(v[1] * (4294967296) + v[0], out);
|
|
1621
|
+
if (sub === L.F64_TO_U64) return splitU64(toUint64(joinF64(v[0], v[1])), out);
|
|
1622
|
+
if (sub >= L.F64_LT && sub <= L.F64_NE) {
|
|
1623
|
+
let x2 = joinF64(v[0], v[1]), y2 = joinF64(v[2], v[3]), t = sub === L.F64_LT ? x2 < y2 : sub === L.F64_LE ? x2 <= y2 : sub === L.F64_EQ ? x2 === y2 : x2 !== y2;
|
|
1624
|
+
out[0] = t ? 4294967295 : 0;
|
|
1625
|
+
return;
|
|
1626
|
+
}
|
|
1627
|
+
if (sub === L.F64_FROM_F32)
|
|
1628
|
+
return f32bits[0] = v[0], splitF64(f322[0], out);
|
|
1629
|
+
if (sub === L.F64_FROM_I32) return splitF64(v[0] | 0, out);
|
|
1630
|
+
if (sub === L.F64_FROM_U32) return splitF64(v[0] >>> 0, out);
|
|
1631
|
+
if (sub === L.F64_TO_F32) {
|
|
1632
|
+
let x2 = Math.fround(joinF64(v[0], v[1]));
|
|
1633
|
+
Number.isNaN(x2) ? out[0] = (2143289344) : (f322[0] = x2, out[0] = f32bits[0]);
|
|
1634
|
+
return;
|
|
1635
|
+
}
|
|
1636
|
+
if (sub === L.F64_TO_I32 || sub === L.F64_TO_U32) return word(toUint32(joinF64(v[0], v[1])));
|
|
1637
|
+
let a = BigInt(v[0]), b = BigInt(v[1]), c = BigInt(v[2]), x = joinU64(v[0], v[1]), y = joinU64(v[2], v[3]);
|
|
1638
|
+
switch (sub) {
|
|
1639
|
+
case L.BIT_POPCNT:
|
|
1640
|
+
return word(popcount(a));
|
|
1641
|
+
case L.BIT_CLZ:
|
|
1642
|
+
return word(clz(a, 32));
|
|
1643
|
+
case L.BIT_CTZ:
|
|
1644
|
+
return word(ctz(a, 32));
|
|
1645
|
+
case L.BIT_ROTL:
|
|
1646
|
+
return word(rotl(a, v[1], 32));
|
|
1647
|
+
case L.BIT_ROTR:
|
|
1648
|
+
return word(rotl(a, 32 - (v[1] & 31) & 31, 32));
|
|
1649
|
+
case L.BIT_EXTRACT:
|
|
1650
|
+
return word(extract(a, v[1], v[2], 32));
|
|
1651
|
+
case L.BIT_INSERT:
|
|
1652
|
+
return word(insert(a, b, v[2], v[3], 32));
|
|
1653
|
+
case L.BIT_MORTON2:
|
|
1654
|
+
return word(spread(a, 16, 2) | spread(b, 16, 2) << 1n);
|
|
1655
|
+
case L.BIT_MORTON3:
|
|
1656
|
+
return word(spread(a, 10, 3) | spread(b, 10, 3) << 1n | spread(c, 10, 3) << 2n);
|
|
1657
|
+
case L.BIT_UNMORTON2:
|
|
1658
|
+
out[0] = Number(gather(a, 16, 2, 0)), out[1] = Number(gather(a, 16, 2, 1));
|
|
1659
|
+
return;
|
|
1660
|
+
case L.BIT_UNMORTON3:
|
|
1661
|
+
out[0] = Number(gather(a, 10, 3, 0)), out[2] = Number(gather(a, 10, 3, 1)), out[1] = Number(gather(a, 10, 3, 2));
|
|
1662
|
+
return;
|
|
1663
|
+
case L.BIT64_POPCNT:
|
|
1664
|
+
return word(popcount(x));
|
|
1665
|
+
case L.BIT64_CLZ:
|
|
1666
|
+
return word(clz(x, 64));
|
|
1667
|
+
case L.BIT64_CTZ:
|
|
1668
|
+
return word(ctz(x, 64));
|
|
1669
|
+
case L.BIT64_ROTL:
|
|
1670
|
+
return splitU64(rotl(x, v[2], 64), out);
|
|
1671
|
+
case L.BIT64_ROTR:
|
|
1672
|
+
return splitU64(rotl(x, 64 - (v[2] & 63) & 63, 64), out);
|
|
1673
|
+
case L.BIT64_EXTRACT:
|
|
1674
|
+
return splitU64(extract(x, v[2], v[3], 64), out);
|
|
1675
|
+
case L.BIT64_INSERT:
|
|
1676
|
+
return splitU64(insert(x, y, v[4] & 255, v[4] >>> (8), 64), out);
|
|
1677
|
+
case L.BIT64_MORTON2:
|
|
1678
|
+
return splitU64(spread(a, 32, 2) | spread(b, 32, 2) << 1n, out);
|
|
1679
|
+
case L.BIT64_MORTON3:
|
|
1680
|
+
return splitU64(spread(a, 21, 3) | spread(b, 21, 3) << 1n | spread(c, 21, 3) << 2n, out);
|
|
1681
|
+
case L.BIT64_UNMORTON2:
|
|
1682
|
+
out[0] = Number(gather(x, 32, 2, 0)), out[1] = Number(gather(x, 32, 2, 1));
|
|
1683
|
+
return;
|
|
1684
|
+
case L.BIT64_UNMORTON3:
|
|
1685
|
+
out[0] = Number(gather(x, 21, 3, 0)), out[2] = Number(gather(x, 21, 3, 1)), out[1] = Number(gather(x, 21, 3, 2));
|
|
1686
|
+
return;
|
|
1687
|
+
}
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
// src/game/kernel/data.ts
|
|
1691
|
+
var TRUE = 4294967295, MIN_SLOTS = 16, FNV_OFFSET = 2166136261, FNV_PRIME = 16777619, COMMAND_WORDS = 4, DEFAULT_COMMANDS = 8192, DEFAULT_PICKS = 256, STORAGE_F32 = 0, STORAGE_I32 = 1, STORAGE_U32 = 2;
|
|
1692
|
+
function symbol(name) {
|
|
1693
|
+
let bytes = new TextEncoder().encode(name), hash = (2166136261);
|
|
1694
|
+
for (let byte of bytes) hash = Math.imul(hash ^ byte, (16777619)) >>> 0;
|
|
1695
|
+
return hash >>> 0;
|
|
1696
|
+
}
|
|
1697
|
+
function mix(value) {
|
|
1698
|
+
let x = value >>> 0;
|
|
1699
|
+
return x ^= x >>> 16, x = Math.imul(x, 2146121005), x ^= x >>> 15, x = Math.imul(x, 2221713035), (x ^ x >>> 16) >>> 0;
|
|
1700
|
+
}
|
|
1701
|
+
function tableOf(word) {
|
|
1702
|
+
return word >>> (19) & (15);
|
|
1703
|
+
}
|
|
1704
|
+
function isPool(word) {
|
|
1705
|
+
return (word & ACCESS_POOL) !== 0;
|
|
1706
|
+
}
|
|
1707
|
+
function readAs(kind, storage, raw) {
|
|
1708
|
+
return kind === 0 ? storage === (0) ? f32Bits(raw) : f32Bits(Math.fround(storage === (1) ? raw | 0 : raw >>> 0)) : kind === 3 ? raw !== 0 && !Number.isNaN(raw) ? (4294967295) : 0 : storage === (0) ? (raw | 0) >>> 0 : raw >>> 0;
|
|
1709
|
+
}
|
|
1710
|
+
function writeAs(kind, storage, value) {
|
|
1711
|
+
return storage === (0) ? kind === 0 ? f32From(value) : kind === 3 ? value !== 0 ? 1 : 0 : Math.fround(kind === 1 ? value | 0 : value >>> 0) : kind === 0 ? f32From(value) | 0 : kind === 3 ? value !== 0 ? 1 : 0 : value;
|
|
1712
|
+
}
|
|
1713
|
+
function sameColumn(p, q) {
|
|
1714
|
+
return p.values === q.values || p.values.buffer === q.values.buffer && p.values.byteOffset === q.values.byteOffset && p.values.length > 0;
|
|
1715
|
+
}
|
|
1716
|
+
function exact(kind, storage) {
|
|
1717
|
+
return kind === 0 ? storage === (0) : kind === 1 || kind === 2 ? storage === (1) || storage === (2) : false;
|
|
1718
|
+
}
|
|
1719
|
+
function fmin(a, b) {
|
|
1720
|
+
return a < b ? a : b < a ? b : Number.isNaN(a) ? a : b;
|
|
1721
|
+
}
|
|
1722
|
+
function fmax(a, b) {
|
|
1723
|
+
return a > b ? a : b > a ? b : Number.isNaN(a) ? a : b;
|
|
1724
|
+
}
|
|
1725
|
+
function command(mode, current, value) {
|
|
1726
|
+
let f = f32From, b = f32Bits;
|
|
1727
|
+
switch (mode) {
|
|
1728
|
+
case SEND.FADD:
|
|
1729
|
+
return b(Math.fround(f(current) + f(value)));
|
|
1730
|
+
case SEND.FMUL:
|
|
1731
|
+
return b(Math.fround(f(current) * f(value)));
|
|
1732
|
+
case SEND.FMIN:
|
|
1733
|
+
return b(fmin(f(current), f(value)));
|
|
1734
|
+
case SEND.FMAX:
|
|
1735
|
+
return b(fmax(f(current), f(value)));
|
|
1736
|
+
case SEND.IADD:
|
|
1737
|
+
return current + value >>> 0;
|
|
1738
|
+
case SEND.IMIN:
|
|
1739
|
+
return Math.min(current | 0, value | 0) >>> 0;
|
|
1740
|
+
case SEND.IMAX:
|
|
1741
|
+
return Math.max(current | 0, value | 0) >>> 0;
|
|
1742
|
+
case SEND.UMIN:
|
|
1743
|
+
return Math.min(current >>> 0, value >>> 0);
|
|
1744
|
+
case SEND.UMAX:
|
|
1745
|
+
return Math.max(current >>> 0, value >>> 0);
|
|
1746
|
+
case SEND.OR:
|
|
1747
|
+
return (current | value) >>> 0;
|
|
1748
|
+
case SEND.AND:
|
|
1749
|
+
return (current & value) >>> 0;
|
|
1750
|
+
default:
|
|
1751
|
+
return value >>> 0;
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
function pickOrder(mode, key) {
|
|
1755
|
+
return mode === (0) ? key >>> 0 : Number.isNaN(f32From(key)) ? 4294967295 : sortKey((2), key);
|
|
1756
|
+
}
|
|
1757
|
+
var KeyIndex = class {
|
|
1758
|
+
constructor(capacity) {
|
|
1759
|
+
this.capacity = capacity;
|
|
1760
|
+
this.epoch = 0;
|
|
1761
|
+
let slots = (16);
|
|
1762
|
+
for (; slots < capacity * 2; ) slots *= 2;
|
|
1763
|
+
this.keys = new Uint32Array(slots), this.rows = new Uint32Array(slots), this.stamps = new Uint32Array(slots), this.mask = slots - 1;
|
|
1764
|
+
}
|
|
1765
|
+
build(count, key) {
|
|
1766
|
+
this.epoch = this.epoch + 1 >>> 0, this.epoch === 0 && (this.stamps.fill(0), this.epoch = 1);
|
|
1767
|
+
let n = Math.min(count, this.capacity);
|
|
1768
|
+
for (let row = 0; row < n; row++) {
|
|
1769
|
+
let k = key(row) >>> 0;
|
|
1770
|
+
if (k === 4294967295) continue;
|
|
1771
|
+
let h = mix(k) & this.mask;
|
|
1772
|
+
for (; ; ) {
|
|
1773
|
+
if (this.stamps[h] !== this.epoch) {
|
|
1774
|
+
this.stamps[h] = this.epoch, this.keys[h] = k, this.rows[h] = row;
|
|
1775
|
+
break;
|
|
1776
|
+
}
|
|
1777
|
+
if (this.keys[h] === k) break;
|
|
1778
|
+
h = h + 1 & this.mask;
|
|
1779
|
+
}
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
find(key) {
|
|
1783
|
+
let k = key >>> 0;
|
|
1784
|
+
if (k === 4294967295) return 4294967295;
|
|
1785
|
+
let h = mix(k) & this.mask;
|
|
1786
|
+
for (; ; ) {
|
|
1787
|
+
if (this.stamps[h] !== this.epoch) return 4294967295;
|
|
1788
|
+
if (this.keys[h] === k) return this.rows[h];
|
|
1789
|
+
h = h + 1 & this.mask;
|
|
1790
|
+
}
|
|
1791
|
+
}
|
|
1792
|
+
}, Keep = class {
|
|
1793
|
+
constructor(capacity, words2) {
|
|
1794
|
+
this.capacity = capacity;
|
|
1795
|
+
this.words = words2;
|
|
1796
|
+
this.len = 0;
|
|
1797
|
+
this.dropped = 0;
|
|
1798
|
+
this.heaped = false;
|
|
1799
|
+
this.a = new Float64Array(capacity), this.b = new Float64Array(capacity), this.c = new Float64Array(capacity), this.data = new Uint32Array(capacity * words2), this.heap = new Uint32Array(capacity);
|
|
1800
|
+
}
|
|
1801
|
+
clear() {
|
|
1802
|
+
this.len = 0, this.dropped = 0, this.heaped = false;
|
|
1803
|
+
}
|
|
1804
|
+
compare(p, q) {
|
|
1805
|
+
return this.a[p] - this.a[q] || this.b[p] - this.b[q] || this.c[p] - this.c[q];
|
|
1806
|
+
}
|
|
1807
|
+
below(a, b, c, slot) {
|
|
1808
|
+
return a !== this.a[slot] ? a < this.a[slot] : b !== this.b[slot] ? b < this.b[slot] : c < this.c[slot];
|
|
1809
|
+
}
|
|
1810
|
+
siftDown(start) {
|
|
1811
|
+
let n = this.heap.length, at = start;
|
|
1812
|
+
for (; ; ) {
|
|
1813
|
+
let left = 2 * at + 1, right = left + 1, top = at;
|
|
1814
|
+
if (left < n && this.compare(this.heap[left], this.heap[top]) > 0 && (top = left), right < n && this.compare(this.heap[right], this.heap[top]) > 0 && (top = right), top === at) return;
|
|
1815
|
+
let t = this.heap[at];
|
|
1816
|
+
this.heap[at] = this.heap[top], this.heap[top] = t, at = top;
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1819
|
+
insert(a, b, c, payload) {
|
|
1820
|
+
let slot;
|
|
1821
|
+
if (this.len < this.capacity)
|
|
1822
|
+
slot = this.len++;
|
|
1823
|
+
else {
|
|
1824
|
+
if (this.dropped++, this.capacity === 0) return;
|
|
1825
|
+
if (!this.heaped) {
|
|
1826
|
+
for (let k = 0; k < this.capacity; k++) this.heap[k] = k;
|
|
1827
|
+
for (let at = (this.capacity >> 1) - 1; at >= 0; at--) this.siftDown(at);
|
|
1828
|
+
this.heaped = true;
|
|
1829
|
+
}
|
|
1830
|
+
let top = this.heap[0];
|
|
1831
|
+
if (!this.below(a, b, c, top)) return;
|
|
1832
|
+
slot = top;
|
|
1833
|
+
}
|
|
1834
|
+
if (this.a[slot] = a, this.b[slot] = b, this.c[slot] = c, payload !== null) for (let w = 0; w < this.words; w++) this.data[slot * this.words + w] = payload[w];
|
|
1835
|
+
this.heaped && this.siftDown(0);
|
|
1836
|
+
}
|
|
1837
|
+
}, ListSweep = class {
|
|
1838
|
+
constructor(at, len, table, k) {
|
|
1839
|
+
this.at = at;
|
|
1840
|
+
this.len = len;
|
|
1841
|
+
this.table = table;
|
|
1842
|
+
this.k = k;
|
|
1843
|
+
this.used = new Uint8Array(0);
|
|
1844
|
+
this.blocks = 0;
|
|
1845
|
+
this.unplaced = 0;
|
|
1846
|
+
}
|
|
1847
|
+
bind(blocks) {
|
|
1848
|
+
this.blocks = blocks, this.used = new Uint8Array(blocks);
|
|
1849
|
+
}
|
|
1850
|
+
run(at, len, lenKind, count) {
|
|
1851
|
+
this.used.fill(0), this.unplaced = 0;
|
|
1852
|
+
let read = (column, row) => readAs(2, column.storage, column.values[row]), write = (column, kind, row, value) => {
|
|
1853
|
+
column.values[row] = writeAs(kind, column.storage, value);
|
|
1854
|
+
}, open = false;
|
|
1855
|
+
for (let row = 0; row < count; row++) {
|
|
1856
|
+
let a = read(at, row);
|
|
1857
|
+
if (a === 0) {
|
|
1858
|
+
open = true;
|
|
1859
|
+
continue;
|
|
1860
|
+
}
|
|
1861
|
+
let offset = a - 1, block = Math.floor(offset / this.k);
|
|
1862
|
+
if (offset % this.k === 0 && block < this.blocks && this.used[block] === 0) {
|
|
1863
|
+
this.used[block] = 1, read(len, row) > this.k && write(len, lenKind, row, this.k);
|
|
1864
|
+
continue;
|
|
1865
|
+
}
|
|
1866
|
+
write(at, 2, row, 0), write(len, lenKind, row, 0), open = true;
|
|
1867
|
+
}
|
|
1868
|
+
if (!open) return;
|
|
1869
|
+
let cursor = 0;
|
|
1870
|
+
for (let row = 0; row < count; row++)
|
|
1871
|
+
if (read(at, row) === 0) {
|
|
1872
|
+
for (; cursor < this.blocks && this.used[cursor] !== 0; ) cursor++;
|
|
1873
|
+
if (write(len, lenKind, row, 0), cursor === this.blocks) {
|
|
1874
|
+
this.unplaced++;
|
|
1875
|
+
continue;
|
|
1876
|
+
}
|
|
1877
|
+
this.used[cursor] = 1, write(at, 2, row, cursor * this.k + 1), cursor++;
|
|
1878
|
+
}
|
|
1879
|
+
}
|
|
1880
|
+
};
|
|
1881
|
+
function dataOps(code) {
|
|
1882
|
+
let out = [], pc = 0;
|
|
1883
|
+
for (; pc + 1 < code.length; ) {
|
|
1884
|
+
let i = code[pc];
|
|
1885
|
+
if (i.op === (175)) {
|
|
1886
|
+
xopRange(i.dst) === XOP_RANGE.DATA && out.push({ pc, i, ext: code[pc + 1] }), pc += 2;
|
|
1887
|
+
continue;
|
|
1888
|
+
}
|
|
1889
|
+
pc++;
|
|
1890
|
+
}
|
|
1891
|
+
return out;
|
|
1892
|
+
}
|
|
1893
|
+
function listDecls(code) {
|
|
1894
|
+
return dataOps(code).filter((o) => o.i.dst === (12304)).map((o) => ({ at: o.i.a, len: o.i.b, pool: o.i.c, k: o.ext.a }));
|
|
1895
|
+
}
|
|
1896
|
+
var DataMachine = class {
|
|
1897
|
+
constructor(slots, code, capacity) {
|
|
1898
|
+
this.slots = slots;
|
|
1899
|
+
this.code = code;
|
|
1900
|
+
this.tableCapacity = new Array((16)).fill(0);
|
|
1901
|
+
this.tableCount = new Array((16)).fill(0);
|
|
1902
|
+
this.bound = new Array((16)).fill(false);
|
|
1903
|
+
this.used = 1;
|
|
1904
|
+
this.snaps = /* @__PURE__ */ new Map();
|
|
1905
|
+
this.indexes = /* @__PURE__ */ new Map();
|
|
1906
|
+
this.pools = /* @__PURE__ */ new Map();
|
|
1907
|
+
this.sweeps = [];
|
|
1908
|
+
this.sites = [];
|
|
1909
|
+
this.commandCapacity = (8192);
|
|
1910
|
+
this.pickCapacity = (256);
|
|
1911
|
+
this.counter = 0;
|
|
1912
|
+
this.tallies = new Uint32Array((64));
|
|
1913
|
+
this.stats = { sent: 0, applied: 0, dropped: 0, overflow: 0 };
|
|
1914
|
+
this.payload = new Uint32Array((4));
|
|
1915
|
+
let ops = dataOps(code);
|
|
1916
|
+
this.active = ops.length > 0, slots.forEach((slot, k) => {
|
|
1917
|
+
let word = slot.word ?? 0, table = tableOf(word);
|
|
1918
|
+
this.used |= 1 << table, table !== 0 && !isPool(word) && (word & 256) !== 0 && this.snaps.set(k, { table, values: new Float64Array(0), active: false });
|
|
1919
|
+
});
|
|
1920
|
+
for (let decl of listDecls(code)) {
|
|
1921
|
+
if (this.pools.has(decl.pool)) continue;
|
|
1922
|
+
let table = tableOf(slots[decl.pool].word ?? 0), sweep = this.sweeps.findIndex((s) => s.at === decl.at && s.len === decl.len);
|
|
1923
|
+
sweep < 0 && (this.sweeps.push(new ListSweep(decl.at, decl.len, table, decl.k)), sweep = this.sweeps.length - 1), this.pools.set(decl.pool, { decl, words: 0, bound: false, sweep });
|
|
1924
|
+
}
|
|
1925
|
+
for (let { pc, i } of ops)
|
|
1926
|
+
i.dst === (12288) ? (this.used |= 1 << i.b, this.indexes.has(i.c) || this.indexes.set(i.c, { table: i.b, index: new KeyIndex(0) })) : i.dst === (12289) ? this.used |= 1 << i.b : i.dst === (12291) ? this.used |= 1 << i.a : i.dst === (12336) && this.sites.push({ pc, n: i.a, rows: new Uint32Array(0), len: 0 });
|
|
1927
|
+
this.commands = new Keep(this.commandCapacity, (4)), this.picks = [], this.bindPicks(this.pickCapacity), this.bindStorage(0, capacity), this.tableCapacity[0] = capacity, this.bound[0] = true;
|
|
1928
|
+
}
|
|
1929
|
+
bindStorage(table, capacity) {
|
|
1930
|
+
for (let snap of this.snaps.values()) snap.table === table && (snap.values = new Float64Array(capacity));
|
|
1931
|
+
for (let entry of this.indexes.values()) entry.table === table && (entry.index = new KeyIndex(capacity));
|
|
1932
|
+
}
|
|
1933
|
+
get tablesUsed() {
|
|
1934
|
+
return this.used;
|
|
1935
|
+
}
|
|
1936
|
+
get poolDecls() {
|
|
1937
|
+
return [...this.pools.values()].map((p) => p.decl);
|
|
1938
|
+
}
|
|
1939
|
+
get unplaced() {
|
|
1940
|
+
return this.sweeps.reduce((sum, s) => sum + s.unplaced, 0);
|
|
1941
|
+
}
|
|
1942
|
+
bindTable(table, capacity) {
|
|
1943
|
+
if (table < 1 || table >= (16)) throw new GameError("invalid_argument", `kernel tables are numbered 1..${(16) - 1}`);
|
|
1944
|
+
this.tableCapacity[table] = capacity, this.bound[table] = true, this.bindStorage(table, capacity);
|
|
1945
|
+
}
|
|
1946
|
+
bindPool(slot, words2) {
|
|
1947
|
+
let pool = this.pools.get(slot);
|
|
1948
|
+
if (pool === void 0) throw new GameError("invalid_argument", `slot ${slot} is not a list pool`);
|
|
1949
|
+
pool.words = words2, pool.bound = true;
|
|
1950
|
+
let sweep = this.sweeps[pool.sweep], blocks = 1 / 0;
|
|
1951
|
+
for (let p of this.pools.values()) p.sweep === pool.sweep && (blocks = Math.min(blocks, p.bound ? Math.floor(p.words / sweep.k) : 1 / 0));
|
|
1952
|
+
blocks !== 1 / 0 && sweep.bind(blocks);
|
|
1953
|
+
}
|
|
1954
|
+
bindCommands(capacity) {
|
|
1955
|
+
this.commandCapacity = capacity, this.commands = new Keep(capacity, (4));
|
|
1956
|
+
}
|
|
1957
|
+
bindPicks(capacity) {
|
|
1958
|
+
this.pickCapacity = capacity, this.picks = this.sites.map(() => new Keep(capacity, 0));
|
|
1959
|
+
for (let site of this.sites) site.rows = new Uint32Array(capacity);
|
|
1960
|
+
}
|
|
1961
|
+
setCount(table, count) {
|
|
1962
|
+
if (count > this.tableCapacity[table]) throw new GameError("capacity_exceeded", `table ${table} holds ${count} rows but was bound with capacity ${this.tableCapacity[table]}`);
|
|
1963
|
+
this.tableCount[table] = count;
|
|
1964
|
+
}
|
|
1965
|
+
count(table) {
|
|
1966
|
+
return this.tableCount[table];
|
|
1967
|
+
}
|
|
1968
|
+
pickRows(site) {
|
|
1969
|
+
let s = this.sites[site];
|
|
1970
|
+
return s === void 0 ? new Uint32Array(0) : s.rows.subarray(0, s.len);
|
|
1971
|
+
}
|
|
1972
|
+
prepare(columns, count) {
|
|
1973
|
+
if (this.active) {
|
|
1974
|
+
this.tableCount[0] = count;
|
|
1975
|
+
for (let t = 1; t < (16); t++)
|
|
1976
|
+
if ((this.used & 1 << t) !== 0 && !this.bound[t]) throw new GameError("invalid_argument", `this kernel reads table ${t}, which is not bound; pass the table as its Rows argument`);
|
|
1977
|
+
for (let [slot, pool] of this.pools) if (!pool.bound) throw new GameError("invalid_argument", `list pool slot ${slot} is not bound`);
|
|
1978
|
+
for (let [slot, snap] of this.snaps) {
|
|
1979
|
+
let column = columns[slot];
|
|
1980
|
+
if (snap.active = this.slots.some((s, k) => tableOf(s.word ?? 0) === 0 && !isPool(s.word ?? 0) && ((s.word ?? 0) & 512) !== 0 && sameColumn(columns[k], column)), snap.active) {
|
|
1981
|
+
let n = this.tableCount[snap.table];
|
|
1982
|
+
for (let row = 0; row < n; row++) snap.values[row] = column.values[row];
|
|
1983
|
+
}
|
|
1984
|
+
}
|
|
1985
|
+
for (let sweep of this.sweeps) sweep.run(columns[sweep.at], columns[sweep.len], this.slots[sweep.len].kind, this.tableCount[sweep.table]);
|
|
1986
|
+
for (let [slot, entry] of this.indexes) {
|
|
1987
|
+
let column = columns[slot], kind = this.slots[slot].kind;
|
|
1988
|
+
entry.index.build(this.tableCount[entry.table], (row) => readAs(kind, column.storage, column.values[row]));
|
|
1989
|
+
}
|
|
1990
|
+
this.commands.clear();
|
|
1991
|
+
for (let p of this.picks) p.clear();
|
|
1992
|
+
this.tallies.fill(0), this.counter = 0, this.stats = { sent: 0, applied: 0, dropped: 0, overflow: 0 };
|
|
1993
|
+
}
|
|
1994
|
+
}
|
|
1995
|
+
exec(pc, i, ext, n, columns, host) {
|
|
1996
|
+
let on = (mask, k) => mask === 4294967295 || host.lane(mask, k) !== 0;
|
|
1997
|
+
switch (i.dst) {
|
|
1998
|
+
case (12288): {
|
|
1999
|
+
let index = this.indexes.get(i.c).index;
|
|
2000
|
+
for (let k = 0; k < n; k++) host.set(ext.dst, k, index.find(host.lane(i.a, k)));
|
|
2001
|
+
return;
|
|
2002
|
+
}
|
|
2003
|
+
case (12289): {
|
|
2004
|
+
let count = this.tableCount[i.b];
|
|
2005
|
+
for (let k = 0; k < n; k++) {
|
|
2006
|
+
let v = host.lane(i.a, k) >>> 0;
|
|
2007
|
+
host.set(ext.dst, k, v < count ? v : 4294967295);
|
|
2008
|
+
}
|
|
2009
|
+
return;
|
|
2010
|
+
}
|
|
2011
|
+
case (12290): {
|
|
2012
|
+
let slot = this.slots[i.a], column = columns[i.a], count = this.tableCount[tableOf(slot.word ?? 0)], snap = this.snaps.get(i.a), values = snap !== void 0 && snap.active ? snap.values : column.values;
|
|
2013
|
+
for (let k = 0; k < n; k++) {
|
|
2014
|
+
let r = host.lane(i.b, k) >>> 0;
|
|
2015
|
+
host.set(ext.dst, k, r < count ? readAs(slot.kind, column.storage, values[r]) : 0);
|
|
2016
|
+
}
|
|
2017
|
+
return;
|
|
2018
|
+
}
|
|
2019
|
+
case (12291): {
|
|
2020
|
+
let count = this.tableCount[i.a];
|
|
2021
|
+
for (let k = 0; k < n; k++) host.set(ext.dst, k, count);
|
|
2022
|
+
return;
|
|
2023
|
+
}
|
|
2024
|
+
case (12305):
|
|
2025
|
+
case (12306): {
|
|
2026
|
+
let pool = this.pools.get(i.a), at = columns[pool.decl.at], column = columns[i.a], kind = this.slots[i.a].kind, setting = i.dst === (12306), mask = setting ? ext.a : i.c;
|
|
2027
|
+
for (let k = 0; k < n; k++) {
|
|
2028
|
+
let value = 0;
|
|
2029
|
+
if (on(mask, k)) {
|
|
2030
|
+
let base = readAs(2, at.storage, at.values[host.row(k)]), e = host.lane(i.b, k) >>> 0, cell = base - 1 + e;
|
|
2031
|
+
base !== 0 && e < pool.decl.k && cell < pool.words && (setting ? column.values[cell] = writeAs(kind, column.storage, host.lane(i.c, k)) : value = readAs(kind, column.storage, column.values[cell]));
|
|
2032
|
+
}
|
|
2033
|
+
setting || host.set(ext.dst, k, value);
|
|
2034
|
+
}
|
|
2035
|
+
return;
|
|
2036
|
+
}
|
|
2037
|
+
case (12307): {
|
|
2038
|
+
let active = 0;
|
|
2039
|
+
for (let k = 0; k < n; k++) on(i.b, k) && active++;
|
|
2040
|
+
this.tallies[i.a] = this.tallies[i.a] + active >>> 0;
|
|
2041
|
+
return;
|
|
2042
|
+
}
|
|
2043
|
+
case (12320): {
|
|
2044
|
+
let count = this.tableCount[tableOf(this.slots[i.a].word ?? 0)];
|
|
2045
|
+
for (let k = 0; k < n; k++) {
|
|
2046
|
+
let target = host.lane(i.b, k) >>> 0;
|
|
2047
|
+
!on(ext.a, k) || target >= count || (this.payload[0] = i.a, this.payload[1] = ext.b, this.payload[2] = target, this.payload[3] = host.lane(i.c, k), this.commands.insert(host.row(k), this.counter++, 0, this.payload));
|
|
2048
|
+
}
|
|
2049
|
+
return;
|
|
2050
|
+
}
|
|
2051
|
+
case (12336): {
|
|
2052
|
+
let site = this.sites.findIndex((s) => s.pc === pc), keep = this.picks[site];
|
|
2053
|
+
for (let k = 0; k < n; k++)
|
|
2054
|
+
on(i.c, k) && keep.insert(pickOrder(ext.a, host.lane(i.b, k)), host.row(k), 0, null);
|
|
2055
|
+
return;
|
|
2056
|
+
}
|
|
2057
|
+
default:
|
|
2058
|
+
return;
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
finish(columns, uniforms) {
|
|
2062
|
+
this.active && (this.finishCommands(columns), this.sites.forEach((site, s) => {
|
|
2063
|
+
let keep = this.picks[s], order = Array.from({ length: keep.len }, (_, k) => k).sort((p, q) => keep.compare(p, q)), want = Math.max(uniforms[site.n & 2147483647] | 0, 0), n = Math.min(want, order.length, site.rows.length);
|
|
2064
|
+
for (let k = 0; k < n; k++) site.rows[k] = keep.b[order[k]];
|
|
2065
|
+
site.len = n;
|
|
2066
|
+
}));
|
|
2067
|
+
}
|
|
2068
|
+
finishCommands(columns) {
|
|
2069
|
+
let keep = this.commands, offered = keep.len + keep.dropped;
|
|
2070
|
+
if (keep.len === 0) return;
|
|
2071
|
+
let table = (k) => tableOf(this.slots[keep.data[k * (4)]].word ?? 0), order = Array.from({ length: keep.len }, (_, k) => k);
|
|
2072
|
+
order.sort((p, q) => table(p) - table(q) || keep.data[p * (4) + 2] - keep.data[q * (4) + 2] || keep.compare(p, q));
|
|
2073
|
+
let overflow = 0;
|
|
2074
|
+
for (let k of order) {
|
|
2075
|
+
let at = k * (4), slot = keep.data[at], mode = keep.data[at + 1], row = keep.data[at + 2], value = keep.data[at + 3], kind = this.slots[slot].kind, column = columns[slot];
|
|
2076
|
+
if (mode === SEND.PUSH) {
|
|
2077
|
+
let pool = this.pools.get(slot), base = columns[pool.decl.at], length = columns[pool.decl.len], start = readAs(2, base.storage, base.values[row]), used = readAs(2, length.storage, length.values[row]), cell = start - 1 + used;
|
|
2078
|
+
if (start === 0 || used >= pool.decl.k || cell >= pool.words) {
|
|
2079
|
+
overflow++;
|
|
2080
|
+
continue;
|
|
2081
|
+
}
|
|
2082
|
+
column.values[cell] = writeAs(kind, column.storage, value), length.values[row] = writeAs(this.slots[pool.decl.len].kind, length.storage, used + 1);
|
|
2083
|
+
continue;
|
|
2084
|
+
}
|
|
2085
|
+
let current = readAs(kind, column.storage, column.values[row]), next = command(mode, current, value);
|
|
2086
|
+
(exact(kind, column.storage) || current !== next) && (column.values[row] = writeAs(kind, column.storage, next));
|
|
2087
|
+
}
|
|
2088
|
+
this.stats = { sent: offered, applied: keep.len - overflow, dropped: offered - keep.len, overflow };
|
|
2089
|
+
}
|
|
2090
|
+
};
|
|
2091
|
+
|
|
2092
|
+
export { ACCESS_ARRAY, ACCESS_INDEXED, ACCESS_NEIGHBOUR, ACCESS_READ, ACCESS_SCRATCH, ACCESS_SPAWN, ACCESS_WRITE, ARG_FMAX, ARG_FMIN, ARG_IMAX, ARG_IMIN, ARG_UMIN, ATTACH_AUDIO, ATTACH_CHEMISTRY_GRID, ATTACH_SPAWN_TABLE, ATTACH_UI, ATTACH_VOXELS, CANONICAL_NAN32, CELL_WRAP, CHANNEL_WORDS, CROSS_BLOCK, CROSS_OP, CURVE_HEADER, CURVE_HERMITE, CURVE_LINEAR, CURVE_STEP, DATA_FLOAD, DATA_KEYOF, DATA_LIST, DATA_LIST_MAX, DATA_PGET, DATA_PICK, DATA_PSET, DATA_REPORT_HEADER, DATA_ROWOF, DATA_ROWS, DATA_SEND, DATA_TABLES, DATA_TALLIES, DATA_TALLY, DEFAULT_EVENT_CAPACITY, DST_BITS, DataMachine, EVENT_HEADER_WORDS, EVENT_STRIDE, FLAG_GROUPS, FLAG_NEIGHBOURS, FMATH_CONSTANTS, GRAPH_EMPTY, GROUP_DEFAULT, GROUP_WORDS, H_ARGS, H_CONSTANTS, H_EVENTS, H_FLAGS, H_GROUPS, H_INSTRUCTIONS, H_LOOPS, H_MAGIC, H_POSITION_X, H_POSITION_Y, H_POSITION_Z, H_REGISTERS, H_SLOTS, H_STATE, H_VERSION, INSTRUCTION_WORDS, KERNEL_CALL_EXPORT_NAMES, KERNEL_DATA_EXPORT_NAMES, KERNEL_EXPORT_NAMES, KERNEL_ISA_BASE, KERNEL_ISA_CALLS, KERNEL_ISA_EXTENDED, KERNEL_ISA_VERSION, KERNEL_ISA_WRITES, KERNEL_SCAN_FEATURE, KERNEL_STAGE_EXPORT_NAMES, KERNEL_WRITE_EXPORT_NAMES, KIND_BOOL, KIND_F32, KIND_I32, KIND_U32, LIBRARY_HEADER_WORDS, LIBRARY_MAGIC, LOOKUP_OP, LOOP_COUNT_F32, LUT1_HEADER, LUT2_HEADER, LUT_LINEAR, LUT_WRAP, ListSweep, MAX_CHANNELS, MAX_EVENT_WORDS, MAX_TRIPS, MLP_MAX_OUTPUTS, MLP_MAX_WIDTH, NONE, Op, PROGRAM_HEADER_WORDS, PROGRAM_MAGIC, QFILTER_ANY, QFILTER_EQUAL, QFILTER_NONE, QUERY_BOX, QUERY_CONE, QUERY_FILTERED, QUERY_SEGMENT, QUERY_SHAPE, QUERY_SPHERE, RECUR, RECUR_EXCLUSIVE, RECUR_KIND_MASK, RECUR_WIDE, REDUCE_FMAX, REDUCE_FMIN, REDUCE_FSUM, REDUCE_IMAX, REDUCE_IMIN, REDUCE_ISUM, REDUCE_UMIN, RING_COUNT, RING_DROPPED, RING_HEADER_WORDS, SAMPLER_WORDS, SAMPLE_BILINEAR, SAMPLE_NEAREST, SAMPLE_NORMAL_X, SAMPLE_NORMAL_Y, SAMPLE_NORMAL_Z, SCAN_F_EXCLUSIVE, SCAN_F_INCLUSIVE, SCAN_I_INCLUSIVE, SCATTER_FADD, SERVICE_ANCHOR, SERVICE_CHEMISTRY, SERVICE_CLIP_WEIGHT, SERVICE_FLOW, SERVICE_FORCE, SERVICE_GROUND_HEIGHT, SERVICE_IK_TARGET, SERVICE_IMPULSE, SERVICE_INSTANCE, SERVICE_INSTANCE_COLOUR, SERVICE_KILL, SERVICE_LINE_OF_SIGHT, SERVICE_OVERLAP, SERVICE_PATH, SERVICE_PICK, SERVICE_PLAY_CLIP, SERVICE_RAYCAST, SERVICE_SIGNATURES, SERVICE_SOUND, SERVICE_SWEEP, SERVICE_VELOCITY, SERVICE_VOXEL_GET, SERVICE_VOXEL_SET, SIMD_CROSS, SIMD_DOT, SIMD_DOT_F32, SIMD_EXTRACT, SIMD_LANE_BITS, SIMD_LANE_MASK, SIMD_LENGTH, SIMD_MAP, SIMD_MAP_OPS, SIMD_NORMALIZE, SIMD_PACK, SIMD_REDUCE, SIMD_REPLACE, SIMD_SCALAR_A, SIMD_SCALAR_B, SIMD_SCALAR_C, SIMD_SHUFFLE, SIMD_WIDTH_MASK, SORT_DESCENDING, SORT_KEY_MASK, SORT_RADIX_BITS, SPAWN_STATS_WORDS, STATUS_FAILURE, STATUS_RUNNING, STATUS_SUCCESS, UNIFORM, XOP, XOP_COMPONENTS_EDGES, XOP_COMPONENTS_GRID, XOP_FIELD, XOP_GATHER, XOP_GROUP, XOP_MLP_IN, XOP_MLP_MOE, XOP_MLP_OUT, XOP_QFILTER, XOP_QRANK, XOP_QSHAPE, XOP_QSTOP, XOP_QUERY, XOP_RANGE, XOP_REACH_GRID, XOP_RECUR_IN, XOP_SORT, XOP_TOPK, acos, asin, atan, atan2, cos, crossRow, curveWords, deferredService, evalLane, exp, f32Bits, f32From, fmath64_exports, fmath_exports, isa_exports, joinF64, joinU64, laneSignature, lanes_exports, log, log2, lookupOp, operandCount, pow, readAs, recurStateWords, recurSub, runLanes, serviceOf, sin, sortKey, stageEndingOp, stageEnds, symbol, tan, toUint32, toUint64, xopRange };
|