1207151Smarius/*- 2207151Smarius * Copyright (c) 2010 by Peter Jeremy <peterjeremy@acm.org> 3207151Smarius * All rights reserved. 4207151Smarius * 5207151Smarius * Redistribution and use in source and binary forms, with or without 6207151Smarius * modification, are permitted provided that the following conditions 7207151Smarius * are met: 8207151Smarius * 1. Redistributions of source code must retain the above copyright 9207151Smarius * notice, this list of conditions and the following disclaimer. 10207151Smarius * 2. Redistributions in binary form must reproduce the above copyright 11207151Smarius * notice, this list of conditions and the following disclaimer in the 12207151Smarius * documentation and/or other materials provided with the distribution. 13207151Smarius * 14207151Smarius * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15207151Smarius * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16207151Smarius * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17207151Smarius * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 18207151Smarius * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19207151Smarius * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20207151Smarius * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 21207151Smarius * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22207151Smarius * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 23207151Smarius * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24207151Smarius */ 25207151Smarius 26207151Smarius/* 27207151Smarius=============================================================================== 28207151Smarius 29207151SmariusThis GNU assembler source file is part of TestFloat, Release 2a, a package 30207151Smariusof programs for testing the correctness of floating-point arithmetic 31207151Smariuscomplying to the IEC/IEEE Standard for Floating-Point. 32207151Smarius 33207151SmariusWritten by John R. Hauser. More information is available through the Web 34207151Smariuspage `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'. 35207151Smarius 36207151SmariusTHIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort 37207151Smariushas been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT 38207151SmariusTIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO 39207151SmariusPERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY 40207151SmariusAND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE. 41207151Smarius 42207151SmariusDerivative works are acceptable, even for commercial purposes, so long as 43207151Smarius(1) they include prominent notice that the work is derivative, and (2) they 44207151Smariusinclude prominent notice akin to these four paragraphs for those parts of 45207151Smariusthis code that are retained. 46207151Smarius 47207151Smarius=============================================================================== 48207151Smarius*/ 49207151Smarius 50207151Smarius#include <machine/asm.h> 51207151Smarius__FBSDID("$FreeBSD$"); 52207151Smarius 53207151Smarius .text 54207151Smarius 55207151Smarius/* 56207151Smarius .macro i2f32 src=%i0,dst=%f0 57207151Smarius st \src,[%sp+2231] 58207151Smarius ld [%sp+2231],\dst 59207151Smarius .endm 60207151Smarius 61207151Smarius .macro i2f64 src=%i0,dst=%f0 62207151Smarius stx \src,[%sp+2231] 63207151Smarius ldd [%sp+2231],\dst 64207151Smarius .endm 65207151Smarius 66207151Smarius .macro f2i32 src=%f0,dst=%i0 67207151Smarius st \src,[%sp+2231] 68207151Smarius ld [%sp+2231],\dst 69207151Smarius .endm 70207151Smarius 71207151Smarius .macro f2i64 src=%f0,dst=%i0 72207151Smarius std \src,[%sp+2231] 73207151Smarius ldx [%sp+2231],\dst 74207151Smarius .endm 75207151Smarius*/ 76207151Smarius/* 77207151Smarius------------------------------------------------------------------------------- 78207151Smarius------------------------------------------------------------------------------- 79207151Smarius*/ 80207151Smarius .align 4 81207151Smarius .global syst_int32_to_float32 82207151Smariussyst_int32_to_float32: 83207151Smarius save %sp,-192,%sp 84207151Smarius 85207151Smarius st %i0,[%sp+2231] 86207151Smarius ld [%sp+2231],%f0 87207151Smarius fitos %f0,%f0 88207151Smarius st %f0,[%sp+2231] 89207151Smarius ld [%sp+2231],%i0 90207151Smarius 91207151Smarius ret 92207151Smarius restore 93207151Smarius 94207151Smarius/* 95207151Smarius------------------------------------------------------------------------------- 96207151Smarius------------------------------------------------------------------------------- 97207151Smarius*/ 98207151Smarius .align 4 99207151Smarius .global syst_int32_to_float64 100207151Smariussyst_int32_to_float64: 101207151Smarius save %sp,-192,%sp 102207151Smarius 103207151Smarius st %i0,[%sp+2231] 104207151Smarius ld [%sp+2231],%f0 105207151Smarius fitod %f0,%f0 106207151Smarius std %f0,[%sp+2231] 107207151Smarius ldx [%sp+2231],%i0 108207151Smarius 109207151Smarius ret 110207151Smarius restore 111207151Smarius 112207151Smarius/* 113207151Smarius------------------------------------------------------------------------------- 114207151Smarius------------------------------------------------------------------------------- 115207151Smarius*/ 116207151Smarius .align 4 117207151Smarius .global syst_int32_to_float128 118207151Smariussyst_int32_to_float128: 119207151Smarius save %sp,-192,%sp 120207151Smarius 121207151Smarius st %i0,[%sp+2231] 122207151Smarius ld [%sp+2231],%f0 123207151Smarius fitoq %f0,%f0 124207151Smarius std %f0,[%sp+2231] 125207151Smarius ldx [%sp+2231],%i0 126207151Smarius std %f2,[%sp+2231] 127207151Smarius ldx [%sp+2231],%i1 128207151Smarius 129207151Smarius ret 130207151Smarius restore 131207151Smarius 132207151Smarius/* 133207151Smarius------------------------------------------------------------------------------- 134207151Smarius------------------------------------------------------------------------------- 135207151Smarius*/ 136207151Smarius .align 4 137207151Smarius .global syst_int64_to_float32 138207151Smariussyst_int64_to_float32: 139207151Smarius save %sp,-192,%sp 140207151Smarius 141207151Smarius stx %i0,[%sp+2231] 142207151Smarius ldd [%sp+2231],%f0 143207151Smarius fxtos %f0,%f0 144207151Smarius st %f0,[%sp+2231] 145207151Smarius ld [%sp+2231],%i0 146207151Smarius 147207151Smarius ret 148207151Smarius restore 149207151Smarius 150207151Smarius/* 151207151Smarius------------------------------------------------------------------------------- 152207151Smarius------------------------------------------------------------------------------- 153207151Smarius*/ 154207151Smarius .align 4 155207151Smarius .global syst_int64_to_float64 156207151Smariussyst_int64_to_float64: 157207151Smarius save %sp,-192,%sp 158207151Smarius 159207151Smarius stx %i0,[%sp+2231] 160207151Smarius ldd [%sp+2231],%f0 161207151Smarius fxtod %f0,%f0 162207151Smarius std %f0,[%sp+2231] 163207151Smarius ldx [%sp+2231],%i0 164207151Smarius 165207151Smarius ret 166207151Smarius restore 167207151Smarius 168207151Smarius/* 169207151Smarius------------------------------------------------------------------------------- 170207151Smarius------------------------------------------------------------------------------- 171207151Smarius*/ 172207151Smarius .align 4 173207151Smarius .global syst_int64_to_float128 174207151Smariussyst_int64_to_float128: 175207151Smarius save %sp,-192,%sp 176207151Smarius 177207151Smarius stx %i0,[%sp+2231] 178207151Smarius ldd [%sp+2231],%f0 179207151Smarius fxtoq %f0,%f0 180207151Smarius std %f0,[%sp+2231] 181207151Smarius ldx [%sp+2231],%i0 182207151Smarius std %f2,[%sp+2231] 183207151Smarius ldx [%sp+2231],%i1 184207151Smarius 185207151Smarius ret 186207151Smarius restore 187207151Smarius 188207151Smarius/* 189207151Smarius------------------------------------------------------------------------------- 190207151Smarius------------------------------------------------------------------------------- 191207151Smarius*/ 192207151Smarius .align 4 193207151Smarius .global syst_float32_to_int32_round_to_zero 194207151Smariussyst_float32_to_int32_round_to_zero: 195207151Smarius save %sp,-192,%sp 196207151Smarius 197207151Smarius st %i0,[%sp+2231] 198207151Smarius ld [%sp+2231],%f0 199207151Smarius fstoi %f0,%f0 200207151Smarius st %f0,[%sp+2231] 201207151Smarius ld [%sp+2231],%i0 202207151Smarius 203207151Smarius ret 204207151Smarius restore 205207151Smarius 206207151Smarius/* 207207151Smarius------------------------------------------------------------------------------- 208207151Smarius------------------------------------------------------------------------------- 209207151Smarius*/ 210207151Smarius .align 4 211207151Smarius .global syst_float32_to_int64_round_to_zero 212207151Smariussyst_float32_to_int64_round_to_zero: 213207151Smarius save %sp,-192,%sp 214207151Smarius 215207151Smarius st %i0,[%sp+2231] 216207151Smarius ld [%sp+2231],%f0 217207151Smarius fstox %f0,%f0 218207151Smarius std %f0,[%sp+2231] 219207151Smarius ldx [%sp+2231],%i0 220207151Smarius 221207151Smarius ret 222207151Smarius restore 223207151Smarius 224207151Smarius/* 225207151Smarius------------------------------------------------------------------------------- 226207151Smarius------------------------------------------------------------------------------- 227207151Smarius*/ 228207151Smarius .align 4 229207151Smarius .global syst_float32_to_float64 230207151Smariussyst_float32_to_float64: 231207151Smarius save %sp,-192,%sp 232207151Smarius 233207151Smarius st %i0,[%sp+2231] 234207151Smarius ld [%sp+2231],%f0 235207151Smarius fstod %f0,%f0 236207151Smarius std %f0,[%sp+2231] 237207151Smarius ldx [%sp+2231],%i0 238207151Smarius 239207151Smarius ret 240207151Smarius restore 241207151Smarius 242207151Smarius/* 243207151Smarius------------------------------------------------------------------------------- 244207151Smarius------------------------------------------------------------------------------- 245207151Smarius*/ 246207151Smarius .align 4 247207151Smarius .global syst_float32_to_float128 248207151Smariussyst_float32_to_float128: 249207151Smarius save %sp,-192,%sp 250207151Smarius 251207151Smarius st %i0,[%sp+2231] 252207151Smarius ld [%sp+2231],%f0 253207151Smarius fstoq %f0,%f0 254207151Smarius std %f0,[%sp+2231] 255207151Smarius ldx [%sp+2231],%i0 256207151Smarius std %f2,[%sp+2231] 257207151Smarius ldx [%sp+2231],%i1 258207151Smarius 259207151Smarius ret 260207151Smarius restore 261207151Smarius 262207151Smarius/* 263207151Smarius------------------------------------------------------------------------------- 264207151Smarius------------------------------------------------------------------------------- 265207151Smarius*/ 266207151Smarius .align 4 267207151Smarius .global syst_float32_add 268207151Smariussyst_float32_add: 269207151Smarius save %sp,-192,%sp 270207151Smarius 271207151Smarius st %i0,[%sp+2231] 272207151Smarius ld [%sp+2231],%f0 273207151Smarius st %i1,[%sp+2231] 274207151Smarius ld [%sp+2231],%f1 275207151Smarius fadds %f0,%f1,%f0 276207151Smarius st %f0,[%sp+2231] 277207151Smarius ld [%sp+2231],%i0 278207151Smarius 279207151Smarius ret 280207151Smarius restore 281207151Smarius 282207151Smarius/* 283207151Smarius------------------------------------------------------------------------------- 284207151Smarius------------------------------------------------------------------------------- 285207151Smarius*/ 286207151Smarius .align 4 287207151Smarius .global syst_float32_sub 288207151Smariussyst_float32_sub: 289207151Smarius save %sp,-192,%sp 290207151Smarius 291207151Smarius st %i0,[%sp+2231] 292207151Smarius ld [%sp+2231],%f0 293207151Smarius st %i1,[%sp+2231] 294207151Smarius ld [%sp+2231],%f1 295207151Smarius fsubs %f0,%f1,%f0 296207151Smarius st %f0,[%sp+2231] 297207151Smarius ld [%sp+2231],%i0 298207151Smarius 299207151Smarius ret 300207151Smarius restore 301207151Smarius 302207151Smarius/* 303207151Smarius------------------------------------------------------------------------------- 304207151Smarius------------------------------------------------------------------------------- 305207151Smarius*/ 306207151Smarius .align 4 307207151Smarius .global syst_float32_mul 308207151Smariussyst_float32_mul: 309207151Smarius save %sp,-192,%sp 310207151Smarius 311207151Smarius st %i0,[%sp+2231] 312207151Smarius ld [%sp+2231],%f0 313207151Smarius st %i1,[%sp+2231] 314207151Smarius ld [%sp+2231],%f1 315207151Smarius fmuls %f0,%f1,%f0 316207151Smarius st %f0,[%sp+2231] 317207151Smarius ld [%sp+2231],%i0 318207151Smarius 319207151Smarius ret 320207151Smarius restore 321207151Smarius 322207151Smarius/* 323207151Smarius------------------------------------------------------------------------------- 324207151Smarius------------------------------------------------------------------------------- 325207151Smarius*/ 326207151Smarius .align 4 327207151Smarius .global syst_float32_div 328207151Smariussyst_float32_div: 329207151Smarius save %sp,-192,%sp 330207151Smarius 331207151Smarius st %i0,[%sp+2231] 332207151Smarius ld [%sp+2231],%f0 333207151Smarius st %i1,[%sp+2231] 334207151Smarius ld [%sp+2231],%f1 335207151Smarius fdivs %f0,%f1,%f0 336207151Smarius st %f0,[%sp+2231] 337207151Smarius ld [%sp+2231],%i0 338207151Smarius 339207151Smarius ret 340207151Smarius restore 341207151Smarius 342207151Smarius/* 343207151Smarius------------------------------------------------------------------------------- 344207151Smarius------------------------------------------------------------------------------- 345207151Smarius*/ 346207151Smarius .align 4 347207151Smarius .global syst_float32_sqrt 348207151Smariussyst_float32_sqrt: 349207151Smarius save %sp,-192,%sp 350207151Smarius 351207151Smarius st %i0,[%sp+2231] 352207151Smarius ld [%sp+2231],%f0 353207151Smarius fsqrts %f0,%f0 354207151Smarius st %f0,[%sp+2231] 355207151Smarius ld [%sp+2231],%i0 356207151Smarius 357207151Smarius ret 358207151Smarius restore 359207151Smarius 360207151Smarius/* 361207151Smarius------------------------------------------------------------------------------- 362207151Smarius------------------------------------------------------------------------------- 363207151Smarius*/ 364207151Smarius .align 4 365207151Smarius .global syst_float32_eq 366207151Smariussyst_float32_eq: 367207151Smarius save %sp,-192,%sp 368207151Smarius 369207151Smarius st %i0,[%sp+2231] 370207151Smarius ld [%sp+2231],%f0 371207151Smarius st %i1,[%sp+2231] 372207151Smarius ld [%sp+2231],%f1 373207151Smarius fcmps %fcc0,%f0,%f1 374207151Smarius mov 0,%i0 375207151Smarius move %fcc0,1,%i0 376207151Smarius 377207151Smarius ret 378207151Smarius restore 379207151Smarius 380207151Smarius/* 381207151Smarius------------------------------------------------------------------------------- 382207151Smarius------------------------------------------------------------------------------- 383207151Smarius*/ 384207151Smarius .align 4 385207151Smarius .global syst_float32_le 386207151Smariussyst_float32_le: 387207151Smarius save %sp,-192,%sp 388207151Smarius 389207151Smarius st %i0,[%sp+2231] 390207151Smarius ld [%sp+2231],%f0 391207151Smarius st %i1,[%sp+2231] 392207151Smarius ld [%sp+2231],%f1 393207151Smarius fcmpes %fcc0,%f0,%f1 394207151Smarius mov 0,%i0 395207151Smarius movle %fcc0,1,%i0 396207151Smarius 397207151Smarius ret 398207151Smarius restore 399207151Smarius 400207151Smarius/* 401207151Smarius------------------------------------------------------------------------------- 402207151Smarius------------------------------------------------------------------------------- 403207151Smarius*/ 404207151Smarius .align 4 405207151Smarius .global syst_float32_lt 406207151Smariussyst_float32_lt: 407207151Smarius save %sp,-192,%sp 408207151Smarius 409207151Smarius st %i0,[%sp+2231] 410207151Smarius ld [%sp+2231],%f0 411207151Smarius st %i1,[%sp+2231] 412207151Smarius ld [%sp+2231],%f1 413207151Smarius fcmpes %fcc0,%f0,%f1 414207151Smarius mov 0,%i0 415207151Smarius movl %fcc0,1,%i0 416207151Smarius 417207151Smarius ret 418207151Smarius restore 419207151Smarius 420207151Smarius/* 421207151Smarius------------------------------------------------------------------------------- 422207151Smarius------------------------------------------------------------------------------- 423207151Smarius*/ 424207151Smarius .align 4 425207151Smarius .global syst_float32_eq_signaling 426207151Smariussyst_float32_eq_signaling: 427207151Smarius save %sp,-192,%sp 428207151Smarius 429207151Smarius st %i0,[%sp+2231] 430207151Smarius ld [%sp+2231],%f0 431207151Smarius st %i1,[%sp+2231] 432207151Smarius ld [%sp+2231],%f1 433207151Smarius fcmpes %fcc0,%f0,%f1 434207151Smarius mov 0,%i0 435207151Smarius move %fcc0,1,%i0 436207151Smarius 437207151Smarius ret 438207151Smarius restore 439207151Smarius 440207151Smarius/* 441207151Smarius------------------------------------------------------------------------------- 442207151Smarius------------------------------------------------------------------------------- 443207151Smarius*/ 444207151Smarius .align 4 445207151Smarius .global syst_float32_le_quiet 446207151Smariussyst_float32_le_quiet: 447207151Smarius save %sp,-192,%sp 448207151Smarius 449207151Smarius st %i0,[%sp+2231] 450207151Smarius ld [%sp+2231],%f0 451207151Smarius st %i1,[%sp+2231] 452207151Smarius ld [%sp+2231],%f1 453207151Smarius fcmps %fcc0,%f0,%f1 454207151Smarius mov 0,%i0 455207151Smarius movle %fcc0,1,%i0 456207151Smarius 457207151Smarius ret 458207151Smarius restore 459207151Smarius 460207151Smarius/* 461207151Smarius------------------------------------------------------------------------------- 462207151Smarius------------------------------------------------------------------------------- 463207151Smarius*/ 464207151Smarius .align 4 465207151Smarius .global syst_float32_lt_quiet 466207151Smariussyst_float32_lt_quiet: 467207151Smarius save %sp,-192,%sp 468207151Smarius 469207151Smarius st %i0,[%sp+2231] 470207151Smarius ld [%sp+2231],%f0 471207151Smarius st %i1,[%sp+2231] 472207151Smarius ld [%sp+2231],%f1 473207151Smarius fcmps %fcc0,%f0,%f1 474207151Smarius mov 0,%i0 475207151Smarius movl %fcc0,1,%i0 476207151Smarius 477207151Smarius ret 478207151Smarius restore 479207151Smarius 480207151Smarius/* 481207151Smarius------------------------------------------------------------------------------- 482207151Smarius------------------------------------------------------------------------------- 483207151Smarius*/ 484207151Smarius .align 4 485207151Smarius .global syst_float64_to_int32_round_to_zero 486207151Smariussyst_float64_to_int32_round_to_zero: 487207151Smarius save %sp,-192,%sp 488207151Smarius 489207151Smarius stx %i0,[%sp+2231] 490207151Smarius ldd [%sp+2231],%f0 491207151Smarius fdtoi %f0,%f0 492207151Smarius st %f0,[%sp+2231] 493207151Smarius ld [%sp+2231],%i0 494207151Smarius 495207151Smarius ret 496207151Smarius restore 497207151Smarius 498207151Smarius/* 499207151Smarius------------------------------------------------------------------------------- 500207151Smarius------------------------------------------------------------------------------- 501207151Smarius*/ 502207151Smarius .align 4 503207151Smarius .global syst_float64_to_int64_round_to_zero 504207151Smariussyst_float64_to_int64_round_to_zero: 505207151Smarius save %sp,-192,%sp 506207151Smarius 507207151Smarius stx %i0,[%sp+2231] 508207151Smarius ldd [%sp+2231],%f0 509207151Smarius fdtox %f0,%f0 510207151Smarius std %f0,[%sp+2231] 511207151Smarius ldx [%sp+2231],%i0 512207151Smarius 513207151Smarius ret 514207151Smarius restore 515207151Smarius 516207151Smarius/* 517207151Smarius------------------------------------------------------------------------------- 518207151Smarius------------------------------------------------------------------------------- 519207151Smarius*/ 520207151Smarius .align 4 521207151Smarius .global syst_float64_to_float32 522207151Smariussyst_float64_to_float32: 523207151Smarius save %sp,-192,%sp 524207151Smarius 525207151Smarius stx %i0,[%sp+2231] 526207151Smarius ldd [%sp+2231],%f0 527207151Smarius fdtos %f0,%f0 528207151Smarius st %f0,[%sp+2231] 529207151Smarius ld [%sp+2231],%i0 530207151Smarius 531207151Smarius ret 532207151Smarius restore 533207151Smarius 534207151Smarius/* 535207151Smarius------------------------------------------------------------------------------- 536207151Smarius------------------------------------------------------------------------------- 537207151Smarius*/ 538207151Smarius .align 4 539207151Smarius .global syst_float64_to_float128 540207151Smariussyst_float64_to_float128: 541207151Smarius save %sp,-192,%sp 542207151Smarius 543207151Smarius stx %i0,[%sp+2231] 544207151Smarius ldd [%sp+2231],%f0 545207151Smarius fdtoq %f0,%f0 546207151Smarius std %f0,[%sp+2231] 547207151Smarius ldx [%sp+2231],%i0 548207151Smarius std %f2,[%sp+2231] 549207151Smarius ldx [%sp+2231],%i1 550207151Smarius 551207151Smarius ret 552207151Smarius restore 553207151Smarius 554207151Smarius/* 555207151Smarius------------------------------------------------------------------------------- 556207151Smarius------------------------------------------------------------------------------- 557207151Smarius*/ 558207151Smarius .align 4 559207151Smarius .global syst_float64_add 560207151Smariussyst_float64_add: 561207151Smarius save %sp,-192,%sp 562207151Smarius 563207151Smarius stx %i0,[%sp+2231] 564207151Smarius ldd [%sp+2231],%f0 565207151Smarius stx %i1,[%sp+2231] 566207151Smarius ldd [%sp+2231],%f2 567207151Smarius faddd %f0,%f2,%f0 568207151Smarius std %f0,[%sp+2231] 569207151Smarius ldx [%sp+2231],%i0 570207151Smarius 571207151Smarius ret 572207151Smarius restore 573207151Smarius 574207151Smarius/* 575207151Smarius------------------------------------------------------------------------------- 576207151Smarius------------------------------------------------------------------------------- 577207151Smarius*/ 578207151Smarius .align 4 579207151Smarius .global syst_float64_sub 580207151Smariussyst_float64_sub: 581207151Smarius save %sp,-192,%sp 582207151Smarius 583207151Smarius stx %i0,[%sp+2231] 584207151Smarius ldd [%sp+2231],%f0 585207151Smarius stx %i1,[%sp+2231] 586207151Smarius ldd [%sp+2231],%f2 587207151Smarius fsubd %f0,%f2,%f0 588207151Smarius std %f0,[%sp+2231] 589207151Smarius ldx [%sp+2231],%i0 590207151Smarius 591207151Smarius ret 592207151Smarius restore 593207151Smarius 594207151Smarius/* 595207151Smarius------------------------------------------------------------------------------- 596207151Smarius------------------------------------------------------------------------------- 597207151Smarius*/ 598207151Smarius .align 4 599207151Smarius .global syst_float64_mul 600207151Smariussyst_float64_mul: 601207151Smarius save %sp,-192,%sp 602207151Smarius 603207151Smarius stx %i0,[%sp+2231] 604207151Smarius ldd [%sp+2231],%f0 605207151Smarius stx %i1,[%sp+2231] 606207151Smarius ldd [%sp+2231],%f2 607207151Smarius fmuld %f0,%f2,%f0 608207151Smarius std %f0,[%sp+2231] 609207151Smarius ldx [%sp+2231],%i0 610207151Smarius 611207151Smarius ret 612207151Smarius restore 613207151Smarius 614207151Smarius/* 615207151Smarius------------------------------------------------------------------------------- 616207151Smarius------------------------------------------------------------------------------- 617207151Smarius*/ 618207151Smarius .align 4 619207151Smarius .global syst_float64_div 620207151Smariussyst_float64_div: 621207151Smarius save %sp,-192,%sp 622207151Smarius 623207151Smarius stx %i0,[%sp+2231] 624207151Smarius ldd [%sp+2231],%f0 625207151Smarius stx %i1,[%sp+2231] 626207151Smarius ldd [%sp+2231],%f2 627207151Smarius fdivd %f0,%f2,%f0 628207151Smarius std %f0,[%sp+2231] 629207151Smarius ldx [%sp+2231],%i0 630207151Smarius 631207151Smarius ret 632207151Smarius restore 633207151Smarius 634207151Smarius/* 635207151Smarius------------------------------------------------------------------------------- 636207151Smarius------------------------------------------------------------------------------- 637207151Smarius*/ 638207151Smarius .align 4 639207151Smarius .global syst_float64_sqrt 640207151Smariussyst_float64_sqrt: 641207151Smarius save %sp,-192,%sp 642207151Smarius 643207151Smarius stx %i0,[%sp+2231] 644207151Smarius ldd [%sp+2231],%f0 645207151Smarius fsqrtd %f0,%f0 646207151Smarius std %f0,[%sp+2231] 647207151Smarius ldx [%sp+2231],%i0 648207151Smarius 649207151Smarius ret 650207151Smarius restore 651207151Smarius 652207151Smarius/* 653207151Smarius------------------------------------------------------------------------------- 654207151Smarius------------------------------------------------------------------------------- 655207151Smarius*/ 656207151Smarius .align 4 657207151Smarius .global syst_float64_eq 658207151Smariussyst_float64_eq: 659207151Smarius save %sp,-192,%sp 660207151Smarius 661207151Smarius stx %i0,[%sp+2231] 662207151Smarius ldd [%sp+2231],%f0 663207151Smarius stx %i1,[%sp+2231] 664207151Smarius ldd [%sp+2231],%f2 665207151Smarius fcmpd %fcc0,%f0,%f2 666207151Smarius mov 0,%i0 667207151Smarius move %fcc0,1,%i0 668207151Smarius 669207151Smarius ret 670207151Smarius restore 671207151Smarius 672207151Smarius/* 673207151Smarius------------------------------------------------------------------------------- 674207151Smarius------------------------------------------------------------------------------- 675207151Smarius*/ 676207151Smarius .align 4 677207151Smarius .global syst_float64_le 678207151Smariussyst_float64_le: 679207151Smarius save %sp,-192,%sp 680207151Smarius 681207151Smarius stx %i0,[%sp+2231] 682207151Smarius ldd [%sp+2231],%f0 683207151Smarius stx %i1,[%sp+2231] 684207151Smarius ldd [%sp+2231],%f2 685207151Smarius fcmped %fcc0,%f0,%f2 686207151Smarius mov 0,%i0 687207151Smarius movle %fcc0,1,%i0 688207151Smarius 689207151Smarius ret 690207151Smarius restore 691207151Smarius 692207151Smarius/* 693207151Smarius------------------------------------------------------------------------------- 694207151Smarius------------------------------------------------------------------------------- 695207151Smarius*/ 696207151Smarius .align 4 697207151Smarius .global syst_float64_lt 698207151Smariussyst_float64_lt: 699207151Smarius save %sp,-192,%sp 700207151Smarius 701207151Smarius stx %i0,[%sp+2231] 702207151Smarius ldd [%sp+2231],%f0 703207151Smarius stx %i1,[%sp+2231] 704207151Smarius ldd [%sp+2231],%f2 705207151Smarius fcmped %fcc0,%f0,%f2 706207151Smarius mov 0,%i0 707207151Smarius movl %fcc0,1,%i0 708207151Smarius 709207151Smarius ret 710207151Smarius restore 711207151Smarius 712207151Smarius/* 713207151Smarius------------------------------------------------------------------------------- 714207151Smarius------------------------------------------------------------------------------- 715207151Smarius*/ 716207151Smarius .align 4 717207151Smarius .global syst_float64_eq_signaling 718207151Smariussyst_float64_eq_signaling: 719207151Smarius save %sp,-192,%sp 720207151Smarius 721207151Smarius stx %i0,[%sp+2231] 722207151Smarius ldd [%sp+2231],%f0 723207151Smarius stx %i1,[%sp+2231] 724207151Smarius ldd [%sp+2231],%f2 725207151Smarius fcmped %fcc0,%f0,%f2 726207151Smarius mov 0,%i0 727207151Smarius move %fcc0,1,%i0 728207151Smarius 729207151Smarius ret 730207151Smarius restore 731207151Smarius 732207151Smarius/* 733207151Smarius------------------------------------------------------------------------------- 734207151Smarius------------------------------------------------------------------------------- 735207151Smarius*/ 736207151Smarius .align 4 737207151Smarius .global syst_float64_le_quiet 738207151Smariussyst_float64_le_quiet: 739207151Smarius save %sp,-192,%sp 740207151Smarius 741207151Smarius stx %i0,[%sp+2231] 742207151Smarius ldd [%sp+2231],%f0 743207151Smarius stx %i1,[%sp+2231] 744207151Smarius ldd [%sp+2231],%f2 745207151Smarius fcmpd %fcc0,%f0,%f2 746207151Smarius mov 0,%i0 747207151Smarius movle %fcc0,1,%i0 748207151Smarius 749207151Smarius ret 750207151Smarius restore 751207151Smarius 752207151Smarius/* 753207151Smarius------------------------------------------------------------------------------- 754207151Smarius------------------------------------------------------------------------------- 755207151Smarius*/ 756207151Smarius .align 4 757207151Smarius .global syst_float64_lt_quiet 758207151Smariussyst_float64_lt_quiet: 759207151Smarius save %sp,-192,%sp 760207151Smarius 761207151Smarius stx %i0,[%sp+2231] 762207151Smarius ldd [%sp+2231],%f0 763207151Smarius stx %i1,[%sp+2231] 764207151Smarius ldd [%sp+2231],%f2 765207151Smarius fcmpd %fcc0,%f0,%f2 766207151Smarius mov 0,%i0 767207151Smarius movl %fcc0,1,%i0 768207151Smarius 769207151Smarius ret 770207151Smarius restore 771207151Smarius 772207151Smarius/* 773207151Smarius------------------------------------------------------------------------------- 774207151Smarius------------------------------------------------------------------------------- 775207151Smarius*/ 776207151Smarius .align 4 777207151Smarius .global syst_float128_to_int32_round_to_zero 778207151Smariussyst_float128_to_int32_round_to_zero: 779207151Smarius save %sp,-192,%sp 780207151Smarius 781207151Smarius stx %i0,[%sp+2231] 782207151Smarius ldd [%sp+2231],%f0 783207151Smarius stx %i1,[%sp+2231] 784207151Smarius ldd [%sp+2231],%f2 785207151Smarius fqtoi %f0,%f0 786207151Smarius st %f0,[%sp+2231] 787207151Smarius ld [%sp+2231],%i0 788207151Smarius 789207151Smarius ret 790207151Smarius restore 791207151Smarius 792207151Smarius/* 793207151Smarius------------------------------------------------------------------------------- 794207151Smarius------------------------------------------------------------------------------- 795207151Smarius*/ 796207151Smarius .align 4 797207151Smarius .global syst_float128_to_int64_round_to_zero 798207151Smariussyst_float128_to_int64_round_to_zero: 799207151Smarius save %sp,-192,%sp 800207151Smarius 801207151Smarius stx %i0,[%sp+2231] 802207151Smarius ldd [%sp+2231],%f0 803207151Smarius stx %i1,[%sp+2231] 804207151Smarius ldd [%sp+2231],%f2 805207151Smarius fqtox %f0,%f0 806207151Smarius std %f0,[%sp+2231] 807207151Smarius ldx [%sp+2231],%i0 808207151Smarius 809207151Smarius ret 810207151Smarius restore 811207151Smarius 812207151Smarius/* 813207151Smarius------------------------------------------------------------------------------- 814207151Smarius------------------------------------------------------------------------------- 815207151Smarius*/ 816207151Smarius .align 4 817207151Smarius .global syst_float128_to_float32 818207151Smariussyst_float128_to_float32: 819207151Smarius save %sp,-192,%sp 820207151Smarius 821207151Smarius stx %i0,[%sp+2231] 822207151Smarius ldd [%sp+2231],%f0 823207151Smarius stx %i1,[%sp+2231] 824207151Smarius ldd [%sp+2231],%f2 825207151Smarius fqtos %f0,%f0 826207151Smarius st %f0,[%sp+2231] 827207151Smarius ld [%sp+2231],%i0 828207151Smarius 829207151Smarius ret 830207151Smarius restore 831207151Smarius 832207151Smarius/* 833207151Smarius------------------------------------------------------------------------------- 834207151Smarius------------------------------------------------------------------------------- 835207151Smarius*/ 836207151Smarius .align 4 837207151Smarius .global syst_float128_to_float64 838207151Smariussyst_float128_to_float64: 839207151Smarius save %sp,-192,%sp 840207151Smarius 841207151Smarius stx %i0,[%sp+2231] 842207151Smarius ldd [%sp+2231],%f0 843207151Smarius stx %i1,[%sp+2231] 844207151Smarius ldd [%sp+2231],%f2 845207151Smarius fqtod %f0,%f0 846207151Smarius std %f0,[%sp+2231] 847207151Smarius ldx [%sp+2231],%i0 848207151Smarius 849207151Smarius ret 850207151Smarius restore 851207151Smarius 852207151Smarius/* 853207151Smarius------------------------------------------------------------------------------- 854207151Smarius------------------------------------------------------------------------------- 855207151Smarius*/ 856207151Smarius .align 4 857207151Smarius .global syst_float128_add 858207151Smariussyst_float128_add: 859207151Smarius save %sp,-192,%sp 860207151Smarius 861207151Smarius stx %i0,[%sp+2231] 862207151Smarius ldd [%sp+2231],%f0 863207151Smarius stx %i1,[%sp+2231] 864207151Smarius ldd [%sp+2231],%f2 865207151Smarius stx %i2,[%sp+2231] 866207151Smarius ldd [%sp+2231],%f4 867207151Smarius stx %i3,[%sp+2231] 868207151Smarius ldd [%sp+2231],%f6 869207151Smarius faddq %f0,%f4,%f0 870207151Smarius std %f0,[%sp+2231] 871207151Smarius ldx [%sp+2231],%i0 872207151Smarius std %f2,[%sp+2231] 873207151Smarius ldx [%sp+2231],%i1 874207151Smarius 875207151Smarius ret 876207151Smarius restore 877207151Smarius 878207151Smarius/* 879207151Smarius------------------------------------------------------------------------------- 880207151Smarius------------------------------------------------------------------------------- 881207151Smarius*/ 882207151Smarius .align 4 883207151Smarius .global syst_float128_sub 884207151Smariussyst_float128_sub: 885207151Smarius save %sp,-192,%sp 886207151Smarius 887207151Smarius stx %i0,[%sp+2231] 888207151Smarius ldd [%sp+2231],%f0 889207151Smarius stx %i1,[%sp+2231] 890207151Smarius ldd [%sp+2231],%f2 891207151Smarius stx %i2,[%sp+2231] 892207151Smarius ldd [%sp+2231],%f4 893207151Smarius stx %i3,[%sp+2231] 894207151Smarius ldd [%sp+2231],%f6 895207151Smarius fsubq %f0,%f4,%f0 896207151Smarius std %f0,[%sp+2231] 897207151Smarius ldx [%sp+2231],%i0 898207151Smarius std %f2,[%sp+2231] 899207151Smarius ldx [%sp+2231],%i1 900207151Smarius 901207151Smarius ret 902207151Smarius restore 903207151Smarius 904207151Smarius/* 905207151Smarius------------------------------------------------------------------------------- 906207151Smarius------------------------------------------------------------------------------- 907207151Smarius*/ 908207151Smarius .align 4 909207151Smarius .global syst_float128_mul 910207151Smariussyst_float128_mul: 911207151Smarius save %sp,-192,%sp 912207151Smarius 913207151Smarius stx %i0,[%sp+2231] 914207151Smarius ldd [%sp+2231],%f0 915207151Smarius stx %i1,[%sp+2231] 916207151Smarius ldd [%sp+2231],%f2 917207151Smarius stx %i2,[%sp+2231] 918207151Smarius ldd [%sp+2231],%f4 919207151Smarius stx %i3,[%sp+2231] 920207151Smarius ldd [%sp+2231],%f6 921207151Smarius fmulq %f0,%f4,%f0 922207151Smarius std %f0,[%sp+2231] 923207151Smarius ldx [%sp+2231],%i0 924207151Smarius std %f2,[%sp+2231] 925207151Smarius ldx [%sp+2231],%i1 926207151Smarius 927207151Smarius ret 928207151Smarius restore 929207151Smarius 930207151Smarius/* 931207151Smarius------------------------------------------------------------------------------- 932207151Smarius------------------------------------------------------------------------------- 933207151Smarius*/ 934207151Smarius .align 4 935207151Smarius .global syst_float128_div 936207151Smariussyst_float128_div: 937207151Smarius save %sp,-192,%sp 938207151Smarius 939207151Smarius stx %i0,[%sp+2231] 940207151Smarius ldd [%sp+2231],%f0 941207151Smarius stx %i1,[%sp+2231] 942207151Smarius ldd [%sp+2231],%f2 943207151Smarius stx %i2,[%sp+2231] 944207151Smarius ldd [%sp+2231],%f4 945207151Smarius stx %i3,[%sp+2231] 946207151Smarius ldd [%sp+2231],%f6 947207151Smarius fdivq %f0,%f4,%f0 948207151Smarius std %f0,[%sp+2231] 949207151Smarius ldx [%sp+2231],%i0 950207151Smarius std %f2,[%sp+2231] 951207151Smarius ldx [%sp+2231],%i1 952207151Smarius 953207151Smarius ret 954207151Smarius restore 955207151Smarius 956207151Smarius/* 957207151Smarius------------------------------------------------------------------------------- 958207151Smarius------------------------------------------------------------------------------- 959207151Smarius*/ 960207151Smarius .align 4 961207151Smarius .global syst_float128_sqrt 962207151Smariussyst_float128_sqrt: 963207151Smarius save %sp,-192,%sp 964207151Smarius 965207151Smarius stx %i0,[%sp+2231] 966207151Smarius ldd [%sp+2231],%f0 967207151Smarius stx %i1,[%sp+2231] 968207151Smarius ldd [%sp+2231],%f2 969207151Smarius fsqrtq %f0,%f0 970207151Smarius std %f0,[%sp+2231] 971207151Smarius ldx [%sp+2231],%i0 972207151Smarius std %f2,[%sp+2231] 973207151Smarius ldx [%sp+2231],%i1 974207151Smarius 975207151Smarius ret 976207151Smarius restore 977207151Smarius 978207151Smarius/* 979207151Smarius------------------------------------------------------------------------------- 980207151Smarius------------------------------------------------------------------------------- 981207151Smarius*/ 982207151Smarius .align 4 983207151Smarius .global syst_float128_eq 984207151Smariussyst_float128_eq: 985207151Smarius save %sp,-192,%sp 986207151Smarius 987207151Smarius stx %i0,[%sp+2231] 988207151Smarius ldd [%sp+2231],%f0 989207151Smarius stx %i1,[%sp+2231] 990207151Smarius ldd [%sp+2231],%f2 991207151Smarius stx %i2,[%sp+2231] 992207151Smarius ldd [%sp+2231],%f4 993207151Smarius stx %i3,[%sp+2231] 994207151Smarius ldd [%sp+2231],%f6 995207151Smarius fcmpq %fcc0,%f0,%f4 996207151Smarius mov 0,%i0 997207151Smarius move %fcc0,1,%i0 998207151Smarius 999207151Smarius ret 1000207151Smarius restore 1001207151Smarius 1002207151Smarius/* 1003207151Smarius------------------------------------------------------------------------------- 1004207151Smarius------------------------------------------------------------------------------- 1005207151Smarius*/ 1006207151Smarius .align 4 1007207151Smarius .global syst_float128_le 1008207151Smariussyst_float128_le: 1009207151Smarius save %sp,-192,%sp 1010207151Smarius 1011207151Smarius stx %i0,[%sp+2231] 1012207151Smarius ldd [%sp+2231],%f0 1013207151Smarius stx %i1,[%sp+2231] 1014207151Smarius ldd [%sp+2231],%f2 1015207151Smarius stx %i2,[%sp+2231] 1016207151Smarius ldd [%sp+2231],%f4 1017207151Smarius stx %i3,[%sp+2231] 1018207151Smarius ldd [%sp+2231],%f6 1019207151Smarius fcmpeq %fcc0,%f0,%f4 1020207151Smarius mov 0,%i0 1021207151Smarius movle %fcc0,1,%i0 1022207151Smarius 1023207151Smarius ret 1024207151Smarius restore 1025207151Smarius 1026207151Smarius/* 1027207151Smarius------------------------------------------------------------------------------- 1028207151Smarius------------------------------------------------------------------------------- 1029207151Smarius*/ 1030207151Smarius .align 4 1031207151Smarius .global syst_float128_lt 1032207151Smariussyst_float128_lt: 1033207151Smarius save %sp,-192,%sp 1034207151Smarius 1035207151Smarius stx %i0,[%sp+2231] 1036207151Smarius ldd [%sp+2231],%f0 1037207151Smarius stx %i1,[%sp+2231] 1038207151Smarius ldd [%sp+2231],%f2 1039207151Smarius stx %i2,[%sp+2231] 1040207151Smarius ldd [%sp+2231],%f4 1041207151Smarius stx %i3,[%sp+2231] 1042207151Smarius ldd [%sp+2231],%f6 1043207151Smarius fcmpeq %fcc0,%f0,%f4 1044207151Smarius mov 0,%i0 1045207151Smarius movl %fcc0,1,%i0 1046207151Smarius 1047207151Smarius ret 1048207151Smarius restore 1049207151Smarius 1050207151Smarius/* 1051207151Smarius------------------------------------------------------------------------------- 1052207151Smarius------------------------------------------------------------------------------- 1053207151Smarius*/ 1054207151Smarius .align 4 1055207151Smarius .global syst_float128_eq_signaling 1056207151Smariussyst_float128_eq_signaling: 1057207151Smarius save %sp,-192,%sp 1058207151Smarius 1059207151Smarius stx %i0,[%sp+2231] 1060207151Smarius ldd [%sp+2231],%f0 1061207151Smarius stx %i1,[%sp+2231] 1062207151Smarius ldd [%sp+2231],%f2 1063207151Smarius stx %i2,[%sp+2231] 1064207151Smarius ldd [%sp+2231],%f4 1065207151Smarius stx %i3,[%sp+2231] 1066207151Smarius ldd [%sp+2231],%f6 1067207151Smarius fcmpeq %fcc0,%f0,%f4 1068207151Smarius mov 0,%i0 1069207151Smarius move %fcc0,1,%i0 1070207151Smarius 1071207151Smarius ret 1072207151Smarius restore 1073207151Smarius 1074207151Smarius/* 1075207151Smarius------------------------------------------------------------------------------- 1076207151Smarius------------------------------------------------------------------------------- 1077207151Smarius*/ 1078207151Smarius .align 4 1079207151Smarius .global syst_float128_le_quiet 1080207151Smariussyst_float128_le_quiet: 1081207151Smarius save %sp,-192,%sp 1082207151Smarius 1083207151Smarius stx %i0,[%sp+2231] 1084207151Smarius ldd [%sp+2231],%f0 1085207151Smarius stx %i1,[%sp+2231] 1086207151Smarius ldd [%sp+2231],%f2 1087207151Smarius stx %i2,[%sp+2231] 1088207151Smarius ldd [%sp+2231],%f4 1089207151Smarius stx %i3,[%sp+2231] 1090207151Smarius ldd [%sp+2231],%f6 1091207151Smarius fcmpq %fcc0,%f0,%f4 1092207151Smarius mov 0,%i0 1093207151Smarius movle %fcc0,1,%i0 1094207151Smarius 1095207151Smarius ret 1096207151Smarius restore 1097207151Smarius 1098207151Smarius/* 1099207151Smarius------------------------------------------------------------------------------- 1100207151Smarius------------------------------------------------------------------------------- 1101207151Smarius*/ 1102207151Smarius .align 4 1103207151Smarius .global syst_float128_lt_quiet 1104207151Smariussyst_float128_lt_quiet: 1105207151Smarius save %sp,-192,%sp 1106207151Smarius 1107207151Smarius stx %i0,[%sp+2231] 1108207151Smarius ldd [%sp+2231],%f0 1109207151Smarius stx %i1,[%sp+2231] 1110207151Smarius ldd [%sp+2231],%f2 1111207151Smarius stx %i2,[%sp+2231] 1112207151Smarius ldd [%sp+2231],%f4 1113207151Smarius stx %i3,[%sp+2231] 1114207151Smarius ldd [%sp+2231],%f6 1115207151Smarius fcmpq %fcc0,%f0,%f4 1116207151Smarius mov 0,%i0 1117207151Smarius movl %fcc0,1,%i0 1118207151Smarius 1119207151Smarius ret 1120207151Smarius restore 1121