hschumann2/TempleOS-Source-Code
0838
1 2asm {3//************************************4_D3_NORM::5 PUSH RBP6 MOV RBP,RSP7 MOV RDX,U64 SF_ARG1[RBP]8 FLD U64 [RDX]9 FMUL ST0,ST010 FLD U64 8[RDX]11 FMUL ST0,ST012 FADDP ST1,ST013 FLD U64 16[RDX]14 FMUL ST0,ST015 FADDP ST1,ST016 FSQRT17 FSTP U64 SF_ARG1[RBP]18 MOV RAX,U64 SF_ARG1[RBP]19 POP RBP20 RET1 821//************************************22_D3_NORM_SQR::23 PUSH RBP24 MOV RBP,RSP25 MOV RDX,U64 SF_ARG1[RBP]26 FLD U64 [RDX]27 FMUL ST0,ST028 FLD U64 8[RDX]29 FMUL ST0,ST030 FADDP ST1,ST031 FLD U64 16[RDX]32 FMUL ST0,ST033 FADDP ST1,ST034 FSTP U64 SF_ARG1[RBP]35 MOV RAX,U64 SF_ARG1[RBP]36 POP RBP37 RET1 838//************************************39_D3_DIST::40 PUSH RBP41 MOV RBP,RSP42 MOV RDX,U64 SF_ARG1[RBP]43 MOV RBX,U64 SF_ARG2[RBP]44 FLD U64 [RDX]45 FSUB ST0,U64 [RBX]46 FMUL ST0,ST047 FLD U64 8[RDX]48 FSUB ST0,U64 8[RBX]49 FMUL ST0,ST050 FADDP ST1,ST051 FLD U64 16[RDX]52 FSUB ST0,U64 16[RBX]53 FMUL ST0,ST054 FADDP ST1,ST055 FSQRT56 FSTP U64 SF_ARG1[RBP]57 MOV RAX,U64 SF_ARG1[RBP]58 POP RBP59 RET1 1660//************************************61_D3_DIST_SQR::62 PUSH RBP63 MOV RBP,RSP64 MOV RDX,U64 SF_ARG1[RBP]65 MOV RBX,U64 SF_ARG2[RBP]66 FLD U64 [RDX]67 FSUB ST0,U64 [RBX]68 FMUL ST0,ST069 FLD U64 8[RDX]70 FSUB ST0,U64 8[RBX]71 FMUL ST0,ST072 FADDP ST1,ST073 FLD U64 16[RDX]74 FSUB ST0,U64 16[RBX]75 FMUL ST0,ST076 FADDP ST1,ST077 FSTP U64 SF_ARG1[RBP]78 MOV RAX,U64 SF_ARG1[RBP]79 POP RBP80 RET1 1681//************************************82_D3_CROSS::83 PUSH RBP84 MOV RBP,RSP85 MOV RAX,U64 SF_ARG1[RBP]86 MOV RDX,U64 SF_ARG2[RBP]87 MOV RBX,U64 SF_ARG3[RBP]88 89 FLD U64 8[RDX]90 FMUL ST0,U64 16[RBX]91 FLD U64 16[RDX]92 FMUL ST0,U64 8[RBX]93 FSUBP ST1,ST094 FSTP U64 [RAX]95 96 FLD U64 [RDX]97 FMUL ST0,U64 16[RBX]98 FLD U64 16[RDX]99 FMUL ST0,U64 [RBX]100 FSUBRP ST1,ST0101 FSTP U64 8[RAX]102 103 FLD U64 [RDX]104 FMUL ST0,U64 8[RBX]105 FLD U64 8[RDX]106 FMUL ST0,U64 [RBX]107 FSUBP ST1,ST0108 FSTP U64 16[RAX]109 110 POP RBP111 RET1 24112//************************************113_D3_DOT::114 PUSH RBP115 MOV RBP,RSP116 MOV RDX,U64 SF_ARG1[RBP]117 MOV RBX,U64 SF_ARG2[RBP]118 FLD U64 [RDX]119 FMUL ST0,U64 [RBX]120 FLD U64 8[RDX]121 FMUL ST0,U64 8[RBX]122 FADDP ST1,ST0123 FLD U64 16[RDX]124 FMUL ST0,U64 16[RBX]125 FADDP ST1,ST0126 FSTP U64 SF_ARG1[RBP]127 MOV RAX,U64 SF_ARG1[RBP]128 POP RBP129 RET1 16130//************************************131_D3_ADD::132 PUSH RBP133 MOV RBP,RSP134 MOV RAX,U64 SF_ARG1[RBP]135 MOV RDX,U64 SF_ARG2[RBP]136 MOV RBX,U64 SF_ARG3[RBP]137 FLD U64 [RDX]138 FADD ST0,U64 [RBX]139 FSTP U64 [RAX]140 FLD U64 8[RDX]141 FADD ST0,U64 8[RBX]142 FSTP U64 8[RAX]143 FLD U64 16[RDX]144 FADD ST0,U64 16[RBX]145 FSTP U64 16[RAX]146 POP RBP147 RET1 24148//************************************149_D3_SUB::150 PUSH RBP151 MOV RBP,RSP152 MOV RAX,U64 SF_ARG1[RBP]153 MOV RDX,U64 SF_ARG2[RBP]154 MOV RBX,U64 SF_ARG3[RBP]155 FLD U64 [RDX]156 FSUB ST0,U64 [RBX]157 FSTP U64 [RAX]158 FLD U64 8[RDX]159 FSUB ST0,U64 8[RBX]160 FSTP U64 8[RAX]161 FLD U64 16[RDX]162 FSUB ST0,U64 16[RBX]163 FSTP U64 16[RAX]164 POP RBP165 RET1 24166//************************************167_D3_MUL::168 PUSH RBP169 MOV RBP,RSP170 MOV RAX,U64 SF_ARG1[RBP]171 MOV RBX,U64 SF_ARG3[RBP]172 FLD U64 SF_ARG2[RBP]173 FLD ST0174 FMUL ST0,U64 [RBX]175 FSTP U64 [RAX]176 FLD ST0177 FMUL ST0,U64 8[RBX]178 FSTP U64 8[RAX]179 FMUL ST0,U64 16[RBX]180 FSTP U64 16[RAX]181 POP RBP182 RET1 24183//************************************184_D3_DIV::185 PUSH RBP186 MOV RBP,RSP187 MOV RAX,U64 SF_ARG1[RBP]188 MOV RBX,U64 SF_ARG2[RBP]189 FLD U64 SF_ARG3[RBP]190 FLD ST0191 FDIVR ST0,U64 [RBX]192 FSTP U64 [RAX]193 FLD ST0194 FDIVR ST0,U64 8[RBX]195 FSTP U64 8[RAX]196 FDIVR ST0,U64 16[RBX]197 FSTP U64 16[RAX]198 POP RBP199 RET1 24200//************************************201_D3_ZERO::202 PUSH RBP203 MOV RBP,RSP204 MOV RAX,U64 SF_ARG1[RBP]205 XOR RDX,RDX206 MOV U64 [RAX],RDX207 MOV U64 8[RAX],RDX208 MOV U64 16[RAX],RDX209 POP RBP210 RET1 8211//************************************212_D3_COPY::213 PUSH RBP214 MOV RBP,RSP215 MOV RAX,U64 SF_ARG1[RBP]216 MOV RBX,U64 SF_ARG2[RBP]217 MOV RDX,U64 [RBX]218 MOV U64 [RAX],RDX219 MOV RDX,U64 8[RBX]220 MOV U64 8[RAX],RDX221 MOV RDX,U64 16[RBX]222 MOV U64 16[RAX],RDX223 POP RBP224 RET1 16225//************************************226_D3_EQU::227 PUSH RBP228 MOV RBP,RSP229 MOV RAX,U64 SF_ARG1[RBP]230 MOV RDX,U64 SF_ARG2[RBP]231 MOV U64 [RAX],RDX232 MOV RDX,U64 SF_ARG3[RBP]233 MOV U64 8[RAX],RDX234 MOV RDX,U64 SF_ARG4[RBP]235 MOV U64 16[RAX],RDX236 POP RBP237 RET1 32238//************************************239_D3_ADD_EQU::240 PUSH RBP241 MOV RBP,RSP242 MOV RAX,U64 SF_ARG1[RBP]243 MOV RBX,U64 SF_ARG2[RBP]244 FLD U64 [RAX]245 FADD ST0,U64 [RBX]246 FSTP U64 [RAX]247 FLD U64 8[RAX]248 FADD ST0,U64 8[RBX]249 FSTP U64 8[RAX]250 FLD U64 16[RAX]251 FADD ST0,U64 16[RBX]252 FSTP U64 16[RAX]253 POP RBP254 RET1 16255//************************************256_D3_SUB_EQU::257 PUSH RBP258 MOV RBP,RSP259 MOV RAX,U64 SF_ARG1[RBP]260 MOV RBX,U64 SF_ARG2[RBP]261 FLD U64 [RAX]262 FSUB ST0,U64 [RBX]263 FSTP U64 [RAX]264 FLD U64 8[RAX]265 FSUB ST0,U64 8[RBX]266 FSTP U64 8[RAX]267 FLD U64 16[RAX]268 FSUB ST0,U64 16[RBX]269 FSTP U64 16[RAX]270 POP RBP271 RET1 16272//************************************273_D3_MUL_EQU::274 PUSH RBP275 MOV RBP,RSP276 MOV RAX,U64 SF_ARG1[RBP]277 FLD U64 SF_ARG2[RBP]278 FLD ST0279 FMUL ST0,U64 [RAX]280 FSTP U64 [RAX]281 FLD ST0282 FMUL ST0,U64 8[RAX]283 FSTP U64 8[RAX]284 FMUL ST0,U64 16[RAX]285 FSTP U64 16[RAX]286 POP RBP287 RET1 16288//************************************289_D3_DIV_EQU::290 PUSH RBP291 MOV RBP,RSP292 MOV RAX,U64 SF_ARG1[RBP]293 FLD U64 SF_ARG2[RBP]294 FLD ST0295 FDIVR ST0,U64 [RAX]296 FSTP U64 [RAX]297 FLD ST0298 FDIVR ST0,U64 8[RAX]299 FSTP U64 8[RAX]300 FDIVR ST0,U64 16[RAX]301 FSTP U64 16[RAX]302 POP RBP303 RET1 16304//************************************305_D3_UNIT::306 PUSH RBP307 MOV RBP,RSP308 MOV RAX,U64 SF_ARG1[RBP]309 FLD U64 [RAX]310 FMUL ST0,ST0311 FLD U64 8[RAX]312 FMUL ST0,ST0313 FADDP ST1,ST0314 FLD U64 16[RAX]315 FMUL ST0,ST0316 FADDP ST1,ST0317 FSQRT318 FST U64 SF_ARG1[RBP]319 MOV RBX,SF_ARG1[RBP]320 TEST RBX,RBX321 JZ @@05322 FLD ST0323 FDIVR ST0,U64 [RAX]324 FSTP U64 [RAX]325 FLD ST0326 FDIVR ST0,U64 8[RAX]327 FSTP U64 8[RAX]328 FDIVR ST0,U64 16[RAX]329 FSTP U64 16[RAX]330 POP RBP331 RET1 8332@@05: FFREE ST0333 FINCSTP334 POP RBP335 RET1 8336//************************************337_SQR::338 PUSH RBP339 MOV RBP,RSP340 FLD U64 SF_ARG1[RBP]341 FMUL ST0,ST0342 FSTP U64 SF_ARG1[RBP]343 MOV RAX,U64 SF_ARG1[RBP]344 POP RBP345 RET1 8346//************************************347_SIGN::348 PUSH RBP349 MOV RBP,RSP350 FLD U64 SF_ARG1[RBP]351 FTST352 FSTSW353 FFREE ST0354 FINCSTP355 MOV RDX,RAX356 XOR RAX,RAX357 BT RDX,14358 JC @@05359 MOV RAX,1.0360 BT RDX,8361 JNC @@05362 MOV RAX,-1.0363@@05: POP RBP364 RET1 8365//************************************366_ARG::367 PUSH RBP368 MOV RBP,RSP369 FLD U64 SF_ARG2[RBP]370 FLD U64 SF_ARG1[RBP]371@@05: FPATAN372 FSTSW373 TEST AX,0x400374 JNZ @@05375 FSTP U64 SF_ARG1[RBP]376 MOV RAX,U64 SF_ARG1[RBP]377 POP RBP378 RET1 16379//************************************380_ROUND::381 PUSH RBP382 MOV RBP,RSP383 SUB RSP,8384 FSTCW U16 -8[RBP]385 MOV AX,U16 -8[RBP]386 MOV U16 -6[RBP],AX387 AND AX,~0x0C00388 MOV U16 -8[RBP],AX389 FLDCW U16 -8[RBP]390 391 FLD U64 SF_ARG1[RBP]392 FRNDINT393 FSTP U64 SF_ARG1[RBP]394 MOV RAX,U64 SF_ARG1[RBP]395 396 FLDCW U16 -6[RBP]397 LEAVE398 RET1 8399//************************************400_TRUNC::401 PUSH RBP402 MOV RBP,RSP403 SUB RSP,8404 FSTCW U16 -8[RBP]405 MOV AX,U16 -8[RBP]406 MOV U16 -6[RBP],AX407 OR AX,0x0C00408 MOV U16 -8[RBP],AX409 FLDCW U16 -8[RBP]410 411 FLD U64 SF_ARG1[RBP]412 FRNDINT413 FSTP U64 SF_ARG1[RBP]414 MOV RAX,U64 SF_ARG1[RBP]415 416 FLDCW U16 -6[RBP]417 LEAVE418 RET1 8419//************************************420_FLOOR::421 PUSH RBP422 MOV RBP,RSP423 SUB RSP,8424 FSTCW U16 -8[RBP]425 MOV AX,U16 -8[RBP]426 MOV U16 -6[RBP],AX427 AND AX,~0x0C00428 OR AX,0x0400429 MOV U16 -8[RBP],AX430 FLDCW U16 -8[RBP]431 432 FLD U64 SF_ARG1[RBP]433 FRNDINT434 FSTP U64 SF_ARG1[RBP]435 MOV RAX,U64 SF_ARG1[RBP]436 437 FLDCW U16 -6[RBP]438 LEAVE439 RET1 8440//************************************441_CEIL::442 PUSH RBP443 MOV RBP,RSP444 SUB RSP,8445 FSTCW U16 -8[RBP]446 MOV AX,U16 -8[RBP]447 MOV U16 -6[RBP],AX448 AND AX,~0x0C00449 OR AX,0x0800450 MOV U16 -8[RBP],AX451 FLDCW U16 -8[RBP]452 453 FLD U64 SF_ARG1[RBP]454 FRNDINT455 FSTP U64 SF_ARG1[RBP]456 MOV RAX,SF_ARG1[RBP]457 458 FLDCW U16 -6[RBP]459 LEAVE460 RET1 8461//************************************462SYS_POW::463// RAX=RDX`RAX464 PUSH RBP465 MOV RBP,RSP466 SUB RSP,24467 TEST RAX,RAX //To power of zero?468 JNZ @@05469 MOV RAX,1.0470 JMP @@20471@@05: TEST RDX,RDX //zero to a power?472 JNZ @@10473 XOR RAX,RAX474 JMP @@20475@@10: MOV RCX,RAX //RCX=pow476 MOV U64 -8[RBP],RDX477 MOV U64 -16[RBP],RAX478 FSTCW U16 -24[RBP]479 MOV AX,U16 -24[RBP]480 MOV U16 -22[RBP],AX481 OR AX,0x0C00482 MOV U16 -24[RBP],AX483 FLDCW U16 -24[RBP]484 FLD U64 -16[RBP]485 FLD U64 -8[RBP]486 FABS //base should be pos487 FYL2X // y*log2(x)488 FST U64 -8[RBP]489 FRNDINT490 FLD U64 -8[RBP]491 FSUBRP ST1,ST0492 F2XM1493 FLD1494 FADDP ST1,ST0495 FSTP U64 -16[RBP]496 FLD U64 -8[RBP]497 FLD U64 -16[RBP]498 FSCALE // ST0<<ST1499 TEST RDX,RDX //was base neg?500 JGE @@15501 MOV U64 -16[RBP],RCX502 FLD U64 -16[RBP]503 FISTTP U64 -16[RBP]504 TEST U64 -16[RBP],1505 JZ @@15 //was pow odd?506 FCHS507@@15: FSTP U64 -8[RBP]508 FFREE ST0509 FINCSTP510 FLDCW U16 -22[RBP]511 MOV RAX,U64 -8[RBP]512@@20: LEAVE513 RET514//************************************515_POW::516 PUSH RBP517 MOV RBP,RSP518 MOV RAX,U64 SF_ARG2[RBP]519 MOV RDX,U64 SF_ARG1[RBP]520 CALL SYS_POW521 POP RBP522 RET1 16523//************************************524_POW10::525 PUSH RBP526 MOV RBP,RSP527 SUB RSP,16528 FSTCW U16 -8[RBP]529 MOV AX,U16 -8[RBP]530 MOV U16 -6[RBP],AX531 OR AX,0x0C00532 MOV U16 -8[RBP],AX533 FLDCW U16 -8[RBP]534 535 FLDL2T536 FLD U64 SF_ARG1[RBP]537 FMULP ST1,ST0538 FST U64 SF_ARG1[RBP]539 FRNDINT540 FLD U64 SF_ARG1[RBP]541 FSUBRP ST1,ST0542 F2XM1543 FLD1544 FADDP ST1,ST0545 FSTP U64 -16[RBP]546 FLD U64 SF_ARG1[RBP]547 FLD U64 -16[RBP]548 FSCALE // ST0<<ST1549 FSTP U64 -16[RBP]550 FFREE ST0551 FINCSTP552 553 FLDCW U16 -6[RBP]554 MOV RAX,U64 -16[RBP]555 LEAVE556 RET1 8557//************************************558_EXP::559 PUSH RBP560 MOV RBP,RSP561 SUB RSP,16562 FSTCW U16 -8[RBP]563 MOV AX,U16 -8[RBP]564 MOV U16 -6[RBP],AX565 OR AX,0x0C00566 MOV U16 -8[RBP],AX567 FLDCW U16 -8[RBP]568 569 FLDL2E570 FLD U64 SF_ARG1[RBP]571 FMULP ST1,ST0572 FST U64 SF_ARG1[RBP]573 FRNDINT574 FLD U64 SF_ARG1[RBP]575 FSUBRP ST1,ST0576 F2XM1577 FLD1578 FADDP ST1,ST0579 FSTP U64 -16[RBP]580 FLD U64 SF_ARG1[RBP]581 FLD U64 -16[RBP]582 FSCALE // ST0<<ST1583 FSTP U64 -16[RBP]584 FFREE ST0585 FINCSTP586 587 FLDCW U16 -6[RBP]588 MOV RAX,U64 -16[RBP]589 LEAVE590 RET1 8591//************************************592_LOG10::593 PUSH RBP594 MOV RBP,RSP595 FLDLG2596 FLD U64 SF_ARG1[RBP]597 FYL2X // y*log2(x)598 FSTP U64 SF_ARG1[RBP]599 MOV RAX,U64 SF_ARG1[RBP]600 POP RBP601 RET1 8602//************************************603_LOG2::604 PUSH RBP605 MOV RBP,RSP606 FLD1607 FLD U64 SF_ARG1[RBP]608 FYL2X // y*log2(x)609 FSTP U64 SF_ARG1[RBP]610 MOV RAX,U64 SF_ARG1[RBP]611 POP RBP612 RET1 8613//************************************614_LN::615 PUSH RBP616 MOV RBP,RSP617 FLDLN2618 FLD U64 SF_ARG1[RBP]619 FYL2X // y*log2(x)620 FSTP U64 SF_ARG1[RBP]621 MOV RAX,U64 SF_ARG1[RBP]622 POP RBP623 RET1 8624//************************************625_FLDCW::626 PUSH RBP627 MOV RBP,RSP628 FLDCW U16 SF_ARG1[RBP]629 POP RBP630 RET1 8631//************************************632_FSTCW::633 PUSH RBP634 MOV RBP,RSP635 SUB RSP,8636 FSTCW U16 -8[RBP]637 MOVZX RAX,U16 -8[RBP]638 LEAVE639 RET640//************************************641_FSTSW::642 XOR RAX,RAX643 FSTSW644 RET645//************************************646_FCLEX::647 FCLEX648 RET649}650 