hschumann2/TempleOS-Source-Code
0838
1 2asm {3//************************************4CMP_TEMPLATES::5 DU32 @@05,@@10,@@15,@@25,@@30,6 @@35,@@40,@@45,@@55,@@60,7 @@75,@@80,@@85,@@90,@@95,8 @@100,@@105,@@110,@@120,@@130;9 10@@05: //INC11 PUSH RAX12 FLD113 FADD ST0,U64 [RSP]14 FSTP U64 [RSP]15 POP RAX16 17@@10: //DEC18 PUSH RAX19 FLD120 FSUBR ST0,U64 [RSP]21 FSTP U64 [RSP]22 POP RAX23 24@@15: //MOD25 PUSH RDX26 PUSH RAX27 MOV RBX,RSP28 FLD U64 [RBX]29 FLD U64 8[RBX]30@@20: FPREM31 FSTSW32 TEST AX,0x40033 JNZ @@2034 FSTP U64 [RBX]35 FFREE ST036 FINCSTP37 POP RAX38 ADD RSP,839 40@@25: //LESS41 PUSH RDX42 PUSH RAX43 FLD U64 [RSP]44 FLD U64 8[RSP]45 FCOMIP ST0,ST146 MOV RAX,047 ADC RAX,048 FFREE ST049 FINCSTP50 ADD RSP,1651 52@@30: //GREATER53 PUSH RDX54 PUSH RAX55 FLD U64 8[RSP]56 FLD U64 [RSP]57 FCOMIP ST0,ST158 MOV RAX,059 ADC RAX,060 FFREE ST061 FINCSTP62 ADD RSP,1663 64@@35: //LESS_EQU65 PUSH RDX66 PUSH RAX67 FLD U64 8[RSP]68 FLD U64 [RSP]69 FCOMIP ST0,ST170 MOV RAX,171 SBB RAX,072 FFREE ST073 FINCSTP74 ADD RSP,1675 76@@40: //GREATER_EQU77 PUSH RDX78 PUSH RAX79 FLD U64 [RSP]80 FLD U64 8[RSP]81 FCOMIP ST0,ST182 MOV RAX,183 SBB RAX,084 FFREE ST085 FINCSTP86 ADD RSP,1687 88@@45: //StrLen89 MOV RDX,RAX90@@50: MOV BL,U8 [RAX]91 INC RAX92 TEST BL,BL93 JNZ @@5094 SUB RAX,RDX95 DEC RAX96 97@@55: //RDTSC98 RDTSC99 SHL RDX,32100 ADD RAX,RDX101 102@@60: //SignI64103 TEST RAX,RAX104 JZ @@70105 JS @@65106 MOV RAX,1107 JMP @@70108@@65: MOV RAX,-1109@@70:110@@75:111@@80:112@@85: //Sqr113 PUSH RAX114 FLD U64 [RSP]115 FMUL ST0,ST0116 FSTP U64 [RSP]117 POP RAX118 119@@90: //Abs120 PUSH RAX121 FLD U64 [RSP]122 FABS123 FSTP U64 [RSP]124 POP RAX125 126@@95: //Sqrt127 PUSH RAX128 FLD U64 [RSP]129 FSQRT130 FSTP U64 [RSP]131 POP RAX132 133@@100: //Sin134 PUSH RAX135 FLD U64 [RSP]136 FSIN137 FSTP U64 [RSP]138 POP RAX139 140@@105: //Cos141 PUSH RAX142 FLD U64 [RSP]143 FCOS144 FSTP U64 [RSP]145 POP RAX146 147@@110: //Tan148 PUSH RAX149 FLD U64 [RSP]150@@115: FPTAN151 FSTSW152 TEST AX,0x400153 JNZ @@115154 FFREE ST0155 FINCSTP156 FSTP U64 [RSP]157 POP RAX158 159@@120: //Atan160 PUSH RAX161 FLD U64 [RSP]162 FLD1163@@125: FPATAN164 FSTSW165 TEST AX,0x400166 JNZ @@125167 FSTP U64 [RSP]168 POP RAX169 170@@130:171 172//************************************173CMP_TEMPLATES_DONT_POP::174 DU32 @@05,@@10,@@15,@@20,@@25,175 @@30,@@35,@@40,@@45,@@50,176 @@55,@@60,@@65,@@70,@@75,177 @@80,@@85,@@90,@@100,@@110;178 179@@05: //INC180 PUSH RAX181 FLD1182 FADD ST0,U64 [RSP]183 FST U64 [RSP]184 POP RAX185 186@@10: //DEC187 PUSH RAX188 FLD1189 FSUBR ST0,U64 [RSP]190 FST U64 [RSP]191 POP RAX192 193@@15:194@@20:195@@25:196@@30:197@@35:198@@40:199@@45:200@@50:201@@55:202@@60:203 PUSH RAX204 FLD U64 [RSP]205 ADD RSP,8206 207@@65: //Sqr208 PUSH RAX209 FLD U64 [RSP]210 FMUL ST0,ST0211 ADD RSP,8212 213@@70: //Abs214 PUSH RAX215 FLD U64 [RSP]216 FABS217 ADD RSP,8218 219@@75: //Sqrt220 PUSH RAX221 FLD U64 [RSP]222 FSQRT223 ADD RSP,8224 225@@80: //Sin226 PUSH RAX227 FLD U64 [RSP]228 FSIN229 ADD RSP,8230 231@@85: //Cos232 PUSH RAX233 FLD U64 [RSP]234 FCOS235 ADD RSP,8236 237@@90: //Tan238 PUSH RAX239 FLD U64 [RSP]240@@95: FPTAN241 FSTSW242 TEST AX,0x400243 JNZ @@95244 FFREE ST0245 FINCSTP246 ADD RSP,8247 248@@100: //Atan249 PUSH RAX250 FLD U64 [RSP]251 FLD1252@@105: FPATAN253 FSTSW254 TEST AX,0x400255 JNZ @@105256 ADD RSP,8257@@110:258 259//************************************260CMP_TEMPLATES_DONT_PUSH::261 DU32 @@05,@@10,@@15,@@20,@@30,262 @@35,@@40,@@50,@@55,@@60,263 @@65,@@70,@@75,@@80,@@85,264 @@90,@@95,@@100,@@110,@@120;265 266@@05: //INC267 SUB RSP,8268 FLD1269 FADDP ST1,ST0270 FSTP U64 [RSP]271 POP RAX272 273@@10: //DEC274 SUB RSP,8275 FLD1276 FSUBP ST1,ST0277 FSTP U64 [RSP]278 POP RAX279 280@@15:281@@20: //LESS282 PUSH RAX283 FLD U64 [RSP]284 FCOMIP ST0,ST1285 MOV RAX,0286 JZ @@25287 MOV RAX,1288 SBB RAX,0289@@25: FFREE ST0290 FINCSTP291 ADD RSP,8292 293@@30: //GREATER294 PUSH RAX295 FLD U64 [RSP]296 FCOMIP ST0,ST1297 MOV RAX,0298 ADC RAX,0299 FFREE ST0300 FINCSTP301 ADD RSP,8302 303@@35: //LESS_EQU304 PUSH RAX305 FLD U64 [RSP]306 FCOMIP ST0,ST1307 MOV RAX,1308 SBB RAX,0309 FFREE ST0310 FINCSTP311 ADD RSP,8312 313@@40: //GREATER_EQU314 PUSH RAX315 FLD U64 [RSP]316 FCOMIP ST0,ST1317 MOV RAX,1318 JZ @@45319 MOV RAX,0320 ADC RAX,0321@@45: FFREE ST0322 FINCSTP323 ADD RSP,8324@@50:325@@55:326@@60:327@@65: //FSTP328 SUB RSP,8329 FSTP U64 [RSP]330 POP RAX331@@70:332@@75: //Sqr333 SUB RSP,8334 FMUL ST0,ST0335 FSTP U64 [RSP]336 POP RAX337 338@@80: //Abs339 SUB RSP,8340 FABS341 FSTP U64 [RSP]342 POP RAX343 344@@85: //Sqrt345 SUB RSP,8346 FSQRT347 FSTP U64 [RSP]348 POP RAX349 350@@90: //Sin351 SUB RSP,8352 FSIN353 FSTP U64 [RSP]354 POP RAX355 356@@95: //Cos357 SUB RSP,8358 FCOS359 FSTP U64 [RSP]360 POP RAX361 362@@100: //Tan363 SUB RSP,8364@@105: FPTAN365 FSTSW366 TEST AX,0x400367 JNZ @@105368 FFREE ST0369 FINCSTP370 FSTP U64 [RSP]371 POP RAX372 373@@110: //Atan374 SUB RSP,8375 FLD1376@@115: FPATAN377 FSTSW378 TEST AX,0x400379 JNZ @@115380 FSTP U64 [RSP]381 POP RAX382@@120:383 384//************************************385CMP_TEMPLATES_DONT_PUSH_POP::386 DU32 @@05,@@10,@@15,@@20,@@25,387 @@30,@@35,@@40,@@45,@@50,388 @@55,@@60,@@65,@@70,@@75,389 @@80,@@85,@@90,@@95,@@105;390 391@@05: //INC392 SUB RSP,8393 FLD1394 FADDP ST1,ST0395 FST U64 [RSP]396 POP RAX397 398@@10: //DEC399 SUB RSP,8400 FLD1401 FSUBP ST1,ST0402 FST U64 [RSP]403 POP RAX404 405@@15:406@@20:407@@25:408@@30:409@@35:410@@40:411@@45:412@@50:413@@55:414@@60:415@@65: //Sqr416 FMUL ST0,ST0417 418@@70: //Abs419 FABS420 421@@75: //Sqrt422 FSQRT423 424@@80: //Sin425 FSIN426 427@@85: //Cos428 FCOS429 430@@90: //Tan431 FPTAN432 FSTSW433 TEST AX,0x400434 JNZ @@90435 FFREE ST0436 FINCSTP437 438@@95: //Atan439 FLD1440@@100: FPATAN441 FSTSW442 TEST AX,0x400443 JNZ @@100444@@105:445 446//************************************447CMP_TEMPLATES_DONT_PUSH2::448 DU32 @@05,@@10,@@15,@@20,@@25,449 @@35,@@45,@@50,@@55,@@60,450 @@65,@@70,@@75,@@80,@@85,451 @@90,@@95,@@100,@@105,@@110;452 453@@05:454@@10:455 456@@15:457@@20: //LESS458 PUSH RAX459 FLD U64 [RSP]460 FCOMIP ST0,ST1461 MOV RAX,0462 ADC RAX,0463 FFREE ST0464 FINCSTP465 ADD RSP,8466 467@@25: //GREATER468 PUSH RAX469 FLD U64 [RSP]470 FCOMIP ST0,ST1471 MOV RAX,0472 JZ @@30473 MOV RAX,1474 SBB RAX,0475@@30: FFREE ST0476 FINCSTP477 ADD RSP,8478 479@@35: //LESS_EQU480 PUSH RAX481 FLD U64 [RSP]482 FCOMIP ST0,ST1483 MOV RAX,1484 JZ @@40485 MOV RAX,0486 ADC RAX,0487@@40: FFREE ST0488 FINCSTP489 ADD RSP,8490 491@@45: //GREATER_EQU492 PUSH RAX493 FLD U64 [RSP]494 FCOMIP ST0,ST1495 MOV RAX,1496 SBB RAX,0497 FFREE ST0498 FINCSTP499 ADD RSP,8500@@50:501@@55:502@@60:503@@65:504@@70:505@@75:506@@80:507@@85:508@@90:509@@95:510@@100:511@@105:512@@110:513}514 