1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21/* 22 * Copyright 2011 Nexenta Systems, Inc. All rights reserved. 23 */ 24/* 25 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 26 * Use is subject to license terms. 27 */ 28 29 .file "__vsinf.S" 30 31#include "libm.h" 32 33 RO_DATA 34 .align 64 35constants: 36 .word 0xbfc55554,0x60000000 37 .word 0x3f811077,0xe0000000 38 .word 0xbf29956b,0x60000000 39 .word 0x3ff00000,0x00000000 40 .word 0xbfe00000,0x00000000 41 .word 0x3fa55554,0xa0000000 42 .word 0xbf56c0c1,0xe0000000 43 .word 0x3ef99e24,0xe0000000 44 .word 0x3fe45f30,0x6dc9c883 45 .word 0x43380000,0x00000000 46 .word 0x3ff921fb,0x54400000 47 .word 0x3dd0b461,0x1a626331 48 .word 0x3f490fdb,0 49 .word 0x49c90fdb,0 50 .word 0x7f800000,0 51 .word 0x80000000,0 52 53#define S0 0x0 54#define S1 0x08 55#define S2 0x10 56#define one 0x18 57#define mhalf 0x20 58#define C0 0x28 59#define C1 0x30 60#define C2 0x38 61#define invpio2 0x40 62#define round 0x48 63#define pio2_1 0x50 64#define pio2_t 0x58 65#define thresh1 0x60 66#define thresh2 0x68 67#define inf 0x70 68#define signbit 0x78 69 70! local storage indices 71 72#define xsave STACK_BIAS-0x8 73#define ysave STACK_BIAS-0x10 74#define nsave STACK_BIAS-0x14 75#define sxsave STACK_BIAS-0x18 76#define sysave STACK_BIAS-0x1c 77#define junk STACK_BIAS-0x20 78#define n3 STACK_BIAS-0x24 79#define n2 STACK_BIAS-0x28 80#define n1 STACK_BIAS-0x2c 81#define n0 STACK_BIAS-0x30 82! sizeof temp storage - must be a multiple of 16 for V9 83#define tmps 0x30 84 85! register use 86 87! i0 n 88! i1 x 89! i2 stridex 90! i3 y 91! i4 stridey 92! i5 biguns 93 94! l0 n0 95! l1 n1 96! l2 n2 97! l3 n3 98! l4 99! l5 100! l6 101! l7 102 103! the following are 64-bit registers in both V8+ and V9 104 105! g1 106! g5 107 108! o0 py0 109! o1 py1 110! o2 py2 111! o3 py3 112! o4 113! o5 114! o7 115 116! f0 x0 117! f2 x1 118! f4 x2 119! f6 x3 120! f8 thresh1 (pi/4) 121! f10 y0 122! f12 y1 123! f14 y2 124! f16 y3 125! f18 thresh2 (2^19 pi) 126! f20 127! f22 128! f24 129! f26 130! f28 signbit 131! f30 132! f32 133! f34 134! f36 135! f38 inf 136! f40 S0 137! f42 S1 138! f44 S2 139! f46 one 140! f48 mhalf 141! f50 C0 142! f52 C1 143! f54 C2 144! f56 invpio2 145! f58 round 146! f60 pio2_1 147! f62 pio2_t 148 149 ENTRY(__vsinf) 150 save %sp,-SA(MINFRAME)-tmps,%sp 151 PIC_SETUP(l7) 152 PIC_SET(l7,constants,l1) 153 mov %l1,%g1 154 wr %g0,0x82,%asi ! set %asi for non-faulting loads 155#ifdef __sparcv9 156 stx %i1,[%fp+xsave] ! save arguments 157 stx %i3,[%fp+ysave] 158#else 159 st %i1,[%fp+xsave] ! save arguments 160 st %i3,[%fp+ysave] 161#endif 162 st %i0,[%fp+nsave] 163 st %i2,[%fp+sxsave] 164 st %i4,[%fp+sysave] 165 mov 0,%i5 ! biguns = 0 166 ldd [%g1+S0],%f40 ! load constants 167 ldd [%g1+S1],%f42 168 ldd [%g1+S2],%f44 169 ldd [%g1+one],%f46 170 ldd [%g1+mhalf],%f48 171 ldd [%g1+C0],%f50 172 ldd [%g1+C1],%f52 173 ldd [%g1+C2],%f54 174 ldd [%g1+invpio2],%f56 175 ldd [%g1+round],%f58 176 ldd [%g1+pio2_1],%f60 177 ldd [%g1+pio2_t],%f62 178 ldd [%g1+thresh1],%f8 179 ldd [%g1+thresh2],%f18 180 ldd [%g1+inf],%f38 181 ldd [%g1+signbit],%f28 182 sll %i2,2,%i2 ! scale strides 183 sll %i4,2,%i4 184 fzero %f10 ! loop prologue 185 add %fp,junk,%o0 186 fzero %f12 187 add %fp,junk,%o1 188 fzero %f14 189 add %fp,junk,%o2 190 fzero %f16 191 ba .start 192 add %fp,junk,%o3 193 194! 16-byte aligned 195 .align 16 196.start: 197 ld [%i1],%f0 ! *x 198 add %i1,%i2,%i1 ! x += stridex 199 addcc %i0,-1,%i0 200 fdtos %f10,%f10 201 202 st %f10,[%o0] 203 mov %i3,%o0 ! py0 = y 204 ble,pn %icc,.last1 205! delay slot 206 add %i3,%i4,%i3 ! y += stridey 207 208 ld [%i1],%f2 ! *x 209 add %i1,%i2,%i1 ! x += stridex 210 addcc %i0,-1,%i0 211 fdtos %f12,%f12 212 213 st %f12,[%o1] 214 mov %i3,%o1 ! py1 = y 215 ble,pn %icc,.last2 216! delay slot 217 add %i3,%i4,%i3 ! y += stridey 218 219 ld [%i1],%f4 ! *x 220 add %i1,%i2,%i1 ! x += stridex 221 addcc %i0,-1,%i0 222 fdtos %f14,%f14 223 224 st %f14,[%o2] 225 mov %i3,%o2 ! py2 = y 226 ble,pn %icc,.last3 227! delay slot 228 add %i3,%i4,%i3 ! y += stridey 229 230 ld [%i1],%f6 ! *x 231 add %i1,%i2,%i1 ! x += stridex 232 nop 233 fdtos %f16,%f16 234 235 st %f16,[%o3] 236 mov %i3,%o3 ! py3 = y 237 add %i3,%i4,%i3 ! y += stridey 238.cont: 239 fabsd %f0,%f30 240 241 fabsd %f2,%f32 242 243 fabsd %f4,%f34 244 245 fabsd %f6,%f36 246 fcmple32 %f30,%f18,%l0 247 248 fcmple32 %f32,%f18,%l1 249 250 fcmple32 %f34,%f18,%l2 251 252 fcmple32 %f36,%f18,%l3 253 nop 254 255! 16-byte aligned 256 andcc %l0,2,%g0 257 bz,pn %icc,.range0 ! branch if > 2^19 pi 258! delay slot 259 fcmple32 %f30,%f8,%l0 260 261.check1: 262 andcc %l1,2,%g0 263 bz,pn %icc,.range1 ! branch if > 2^19 pi 264! delay slot 265 fcmple32 %f32,%f8,%l1 266 267.check2: 268 andcc %l2,2,%g0 269 bz,pn %icc,.range2 ! branch if > 2^19 pi 270! delay slot 271 fcmple32 %f34,%f8,%l2 272 273.check3: 274 andcc %l3,2,%g0 275 bz,pn %icc,.range3 ! branch if > 2^19 pi 276! delay slot 277 fcmple32 %f36,%f8,%l3 278 279.checkprimary: 280 fsmuld %f0,%f0,%f30 281 fstod %f0,%f0 282 283 fsmuld %f2,%f2,%f32 284 fstod %f2,%f2 285 and %l0,%l1,%o4 286 287 fsmuld %f4,%f4,%f34 288 fstod %f4,%f4 289 290 fsmuld %f6,%f6,%f36 291 fstod %f6,%f6 292 and %l2,%l3,%o5 293 294 fmuld %f30,%f44,%f10 295 and %o4,%o5,%o5 296 297 fmuld %f32,%f44,%f12 298 andcc %o5,2,%g0 299 bz,pn %icc,.medium ! branch if any argument is > pi/4 300! delay slot 301 nop 302 303 fmuld %f34,%f44,%f14 304 305 fmuld %f36,%f44,%f16 306 307 fmuld %f30,%f40,%f20 308 faddd %f10,%f42,%f10 309 310 fmuld %f32,%f40,%f22 311 faddd %f12,%f42,%f12 312 313 fmuld %f34,%f40,%f24 314 faddd %f14,%f42,%f14 315 316 fmuld %f36,%f40,%f26 317 faddd %f16,%f42,%f16 318 319 fmuld %f30,%f30,%f30 320 faddd %f20,%f46,%f20 321 322 fmuld %f32,%f32,%f32 323 faddd %f22,%f46,%f22 324 325 fmuld %f34,%f34,%f34 326 faddd %f24,%f46,%f24 327 328 fmuld %f36,%f36,%f36 329 faddd %f26,%f46,%f26 330 331 fmuld %f30,%f10,%f10 332 333 fmuld %f32,%f12,%f12 334 335 fmuld %f34,%f14,%f14 336 337 fmuld %f36,%f16,%f16 338 339 faddd %f10,%f20,%f10 340 341 faddd %f12,%f22,%f12 342 343 faddd %f14,%f24,%f14 344 345 faddd %f16,%f26,%f16 346 347 fmuld %f0,%f10,%f10 348 349 fmuld %f2,%f12,%f12 350 351 fmuld %f4,%f14,%f14 352 353 addcc %i0,-1,%i0 354 bg,pt %icc,.start 355! delay slot 356 fmuld %f6,%f16,%f16 357 358 ba,pt %icc,.end 359! delay slot 360 nop 361 362 363 .align 16 364.medium: 365 fmuld %f0,%f56,%f10 366 367 fmuld %f2,%f56,%f12 368 369 fmuld %f4,%f56,%f14 370 371 fmuld %f6,%f56,%f16 372 373 faddd %f10,%f58,%f10 374 st %f11,[%fp+n0] 375 376 faddd %f12,%f58,%f12 377 st %f13,[%fp+n1] 378 379 faddd %f14,%f58,%f14 380 st %f15,[%fp+n2] 381 382 faddd %f16,%f58,%f16 383 st %f17,[%fp+n3] 384 385 fsubd %f10,%f58,%f10 386 387 fsubd %f12,%f58,%f12 388 389 fsubd %f14,%f58,%f14 390 391 fsubd %f16,%f58,%f16 392 393 fmuld %f10,%f60,%f20 394 ld [%fp+n0],%l0 395 396 fmuld %f12,%f60,%f22 397 ld [%fp+n1],%l1 398 399 fmuld %f14,%f60,%f24 400 ld [%fp+n2],%l2 401 402 fmuld %f16,%f60,%f26 403 ld [%fp+n3],%l3 404 405 fsubd %f0,%f20,%f0 406 fmuld %f10,%f62,%f30 407 408 fsubd %f2,%f22,%f2 409 fmuld %f12,%f62,%f32 410 411 fsubd %f4,%f24,%f4 412 fmuld %f14,%f62,%f34 413 414 fsubd %f6,%f26,%f6 415 fmuld %f16,%f62,%f36 416 417 fsubd %f0,%f30,%f0 418 419 fsubd %f2,%f32,%f2 420 421 fsubd %f4,%f34,%f4 422 423 fsubd %f6,%f36,%f6 424 andcc %l0,1,%g0 425 426 fmuld %f0,%f0,%f30 427 bz,pn %icc,.case8 428! delay slot 429 andcc %l1,1,%g0 430 431 fmuld %f2,%f2,%f32 432 bz,pn %icc,.case4 433! delay slot 434 andcc %l2,1,%g0 435 436 fmuld %f4,%f4,%f34 437 bz,pn %icc,.case2 438! delay slot 439 andcc %l3,1,%g0 440 441 fmuld %f6,%f6,%f36 442 bz,pn %icc,.case1 443! delay slot 444 nop 445 446!.case0: 447 fmuld %f30,%f54,%f10 ! cos(x0) 448 fzero %f0 449 450 fmuld %f32,%f54,%f12 ! cos(x1) 451 fzero %f2 452 453 fmuld %f34,%f54,%f14 ! cos(x2) 454 fzero %f4 455 456 fmuld %f36,%f54,%f16 ! cos(x3) 457 fzero %f6 458 459 fmuld %f30,%f48,%f20 460 faddd %f10,%f52,%f10 461 462 fmuld %f32,%f48,%f22 463 faddd %f12,%f52,%f12 464 465 fmuld %f34,%f48,%f24 466 faddd %f14,%f52,%f14 467 468 fmuld %f36,%f48,%f26 469 faddd %f16,%f52,%f16 470 471 fmuld %f30,%f10,%f10 472 faddd %f20,%f46,%f20 473 474 fmuld %f32,%f12,%f12 475 faddd %f22,%f46,%f22 476 477 fmuld %f34,%f14,%f14 478 faddd %f24,%f46,%f24 479 480 fmuld %f36,%f16,%f16 481 faddd %f26,%f46,%f26 482 483 fmuld %f30,%f30,%f30 484 faddd %f10,%f50,%f10 485 and %l0,2,%g1 486 487 fmuld %f32,%f32,%f32 488 faddd %f12,%f50,%f12 489 and %l1,2,%g5 490 491 fmuld %f34,%f34,%f34 492 faddd %f14,%f50,%f14 493 and %l2,2,%o4 494 495 fmuld %f36,%f36,%f36 496 faddd %f16,%f50,%f16 497 and %l3,2,%o5 498 499 fmuld %f30,%f10,%f10 500 fmovrdnz %g1,%f28,%f0 501 502 fmuld %f32,%f12,%f12 503 fmovrdnz %g5,%f28,%f2 504 505 fmuld %f34,%f14,%f14 506 fmovrdnz %o4,%f28,%f4 507 508 fmuld %f36,%f16,%f16 509 fmovrdnz %o5,%f28,%f6 510 511 faddd %f10,%f20,%f10 512 513 faddd %f12,%f22,%f12 514 515 faddd %f14,%f24,%f14 516 517 faddd %f16,%f26,%f16 518 519 fxor %f10,%f0,%f10 520 521 fxor %f12,%f2,%f12 522 523 fxor %f14,%f4,%f14 524 525 addcc %i0,-1,%i0 526 bg,pt %icc,.start 527! delay slot 528 fxor %f16,%f6,%f16 529 530 ba,pt %icc,.end 531! delay slot 532 nop 533 534 .align 16 535.case1: 536 fmuld %f30,%f54,%f10 ! cos(x0) 537 fzero %f0 538 539 fmuld %f32,%f54,%f12 ! cos(x1) 540 fzero %f2 541 542 fmuld %f34,%f54,%f14 ! cos(x2) 543 fzero %f4 544 545 fmuld %f36,%f44,%f16 ! sin(x3) 546 547 fmuld %f30,%f48,%f20 548 faddd %f10,%f52,%f10 549 550 fmuld %f32,%f48,%f22 551 faddd %f12,%f52,%f12 552 553 fmuld %f34,%f48,%f24 554 faddd %f14,%f52,%f14 555 556 fmuld %f36,%f40,%f26 557 faddd %f16,%f42,%f16 558 559 fmuld %f30,%f10,%f10 560 faddd %f20,%f46,%f20 561 562 fmuld %f32,%f12,%f12 563 faddd %f22,%f46,%f22 564 565 fmuld %f34,%f14,%f14 566 faddd %f24,%f46,%f24 567 568 fmuld %f36,%f36,%f36 569 faddd %f26,%f46,%f26 570 571 fmuld %f30,%f30,%f30 572 faddd %f10,%f50,%f10 573 and %l0,2,%g1 574 575 fmuld %f32,%f32,%f32 576 faddd %f12,%f50,%f12 577 and %l1,2,%g5 578 579 fmuld %f34,%f34,%f34 580 faddd %f14,%f50,%f14 581 and %l2,2,%o4 582 583 fmuld %f36,%f16,%f16 584 fzero %f36 585 586 fmuld %f30,%f10,%f10 587 fmovrdnz %g1,%f28,%f0 588 589 fmuld %f32,%f12,%f12 590 fmovrdnz %g5,%f28,%f2 591 592 fmuld %f34,%f14,%f14 593 fmovrdnz %o4,%f28,%f4 594 595 faddd %f16,%f26,%f16 596 and %l3,2,%o5 597 598 faddd %f10,%f20,%f10 599 600 faddd %f12,%f22,%f12 601 602 faddd %f14,%f24,%f14 603 604 fmuld %f6,%f16,%f16 605 fmovrdnz %o5,%f28,%f36 606 607 fxor %f10,%f0,%f10 608 609 fxor %f12,%f2,%f12 610 611 fxor %f14,%f4,%f14 612 613 addcc %i0,-1,%i0 614 bg,pt %icc,.start 615! delay slot 616 fxor %f16,%f36,%f16 617 618 ba,pt %icc,.end 619! delay slot 620 nop 621 622 .align 16 623.case2: 624 fmuld %f6,%f6,%f36 625 bz,pn %icc,.case3 626! delay slot 627 nop 628 629 fmuld %f30,%f54,%f10 ! cos(x0) 630 fzero %f0 631 632 fmuld %f32,%f54,%f12 ! cos(x1) 633 fzero %f2 634 635 fmuld %f34,%f44,%f14 ! sin(x2) 636 637 fmuld %f36,%f54,%f16 ! cos(x3) 638 fzero %f6 639 640 fmuld %f30,%f48,%f20 641 faddd %f10,%f52,%f10 642 643 fmuld %f32,%f48,%f22 644 faddd %f12,%f52,%f12 645 646 fmuld %f34,%f40,%f24 647 faddd %f14,%f42,%f14 648 649 fmuld %f36,%f48,%f26 650 faddd %f16,%f52,%f16 651 652 fmuld %f30,%f10,%f10 653 faddd %f20,%f46,%f20 654 655 fmuld %f32,%f12,%f12 656 faddd %f22,%f46,%f22 657 658 fmuld %f34,%f34,%f34 659 faddd %f24,%f46,%f24 660 661 fmuld %f36,%f16,%f16 662 faddd %f26,%f46,%f26 663 664 fmuld %f30,%f30,%f30 665 faddd %f10,%f50,%f10 666 and %l0,2,%g1 667 668 fmuld %f32,%f32,%f32 669 faddd %f12,%f50,%f12 670 and %l1,2,%g5 671 672 fmuld %f34,%f14,%f14 673 fzero %f34 674 675 fmuld %f36,%f36,%f36 676 faddd %f16,%f50,%f16 677 and %l3,2,%o5 678 679 fmuld %f30,%f10,%f10 680 fmovrdnz %g1,%f28,%f0 681 682 fmuld %f32,%f12,%f12 683 fmovrdnz %g5,%f28,%f2 684 685 faddd %f14,%f24,%f14 686 and %l2,2,%o4 687 688 fmuld %f36,%f16,%f16 689 fmovrdnz %o5,%f28,%f6 690 691 faddd %f10,%f20,%f10 692 693 faddd %f12,%f22,%f12 694 695 fmuld %f4,%f14,%f14 696 fmovrdnz %o4,%f28,%f34 697 698 faddd %f16,%f26,%f16 699 700 fxor %f10,%f0,%f10 701 702 fxor %f12,%f2,%f12 703 704 fxor %f14,%f34,%f14 705 706 addcc %i0,-1,%i0 707 bg,pt %icc,.start 708! delay slot 709 fxor %f16,%f6,%f16 710 711 ba,pt %icc,.end 712! delay slot 713 nop 714 715 .align 16 716.case3: 717 fmuld %f30,%f54,%f10 ! cos(x0) 718 fzero %f0 719 720 fmuld %f32,%f54,%f12 ! cos(x1) 721 fzero %f2 722 723 fmuld %f34,%f44,%f14 ! sin(x2) 724 725 fmuld %f36,%f44,%f16 ! sin(x3) 726 727 fmuld %f30,%f48,%f20 728 faddd %f10,%f52,%f10 729 730 fmuld %f32,%f48,%f22 731 faddd %f12,%f52,%f12 732 733 fmuld %f34,%f40,%f24 734 faddd %f14,%f42,%f14 735 736 fmuld %f36,%f40,%f26 737 faddd %f16,%f42,%f16 738 739 fmuld %f30,%f10,%f10 740 faddd %f20,%f46,%f20 741 742 fmuld %f32,%f12,%f12 743 faddd %f22,%f46,%f22 744 745 fmuld %f34,%f34,%f34 746 faddd %f24,%f46,%f24 747 748 fmuld %f36,%f36,%f36 749 faddd %f26,%f46,%f26 750 751 fmuld %f30,%f30,%f30 752 faddd %f10,%f50,%f10 753 and %l0,2,%g1 754 755 fmuld %f32,%f32,%f32 756 faddd %f12,%f50,%f12 757 and %l1,2,%g5 758 759 fmuld %f34,%f14,%f14 760 fzero %f34 761 762 fmuld %f36,%f16,%f16 763 fzero %f36 764 765 fmuld %f30,%f10,%f10 766 fmovrdnz %g1,%f28,%f0 767 768 fmuld %f32,%f12,%f12 769 fmovrdnz %g5,%f28,%f2 770 771 faddd %f14,%f24,%f14 772 and %l2,2,%o4 773 774 faddd %f16,%f26,%f16 775 and %l3,2,%o5 776 777 faddd %f10,%f20,%f10 778 779 faddd %f12,%f22,%f12 780 781 fmuld %f4,%f14,%f14 782 fmovrdnz %o4,%f28,%f34 783 784 fmuld %f6,%f16,%f16 785 fmovrdnz %o5,%f28,%f36 786 787 fxor %f10,%f0,%f10 788 789 fxor %f12,%f2,%f12 790 791 fxor %f14,%f34,%f14 792 793 addcc %i0,-1,%i0 794 bg,pt %icc,.start 795! delay slot 796 fxor %f16,%f36,%f16 797 798 ba,pt %icc,.end 799! delay slot 800 nop 801 802 .align 16 803.case4: 804 fmuld %f4,%f4,%f34 805 bz,pn %icc,.case6 806! delay slot 807 andcc %l3,1,%g0 808 809 fmuld %f6,%f6,%f36 810 bz,pn %icc,.case5 811! delay slot 812 nop 813 814 fmuld %f30,%f54,%f10 ! cos(x0) 815 fzero %f0 816 817 fmuld %f32,%f44,%f12 ! sin(x1) 818 819 fmuld %f34,%f54,%f14 ! cos(x2) 820 fzero %f4 821 822 fmuld %f36,%f54,%f16 ! cos(x3) 823 fzero %f6 824 825 fmuld %f30,%f48,%f20 826 faddd %f10,%f52,%f10 827 828 fmuld %f32,%f40,%f22 829 faddd %f12,%f42,%f12 830 831 fmuld %f34,%f48,%f24 832 faddd %f14,%f52,%f14 833 834 fmuld %f36,%f48,%f26 835 faddd %f16,%f52,%f16 836 837 fmuld %f30,%f10,%f10 838 faddd %f20,%f46,%f20 839 840 fmuld %f32,%f32,%f32 841 faddd %f22,%f46,%f22 842 843 fmuld %f34,%f14,%f14 844 faddd %f24,%f46,%f24 845 846 fmuld %f36,%f16,%f16 847 faddd %f26,%f46,%f26 848 849 fmuld %f30,%f30,%f30 850 faddd %f10,%f50,%f10 851 and %l0,2,%g1 852 853 fmuld %f32,%f12,%f12 854 fzero %f32 855 856 fmuld %f34,%f34,%f34 857 faddd %f14,%f50,%f14 858 and %l2,2,%o4 859 860 fmuld %f36,%f36,%f36 861 faddd %f16,%f50,%f16 862 and %l3,2,%o5 863 864 fmuld %f30,%f10,%f10 865 fmovrdnz %g1,%f28,%f0 866 867 faddd %f12,%f22,%f12 868 and %l1,2,%g5 869 870 fmuld %f34,%f14,%f14 871 fmovrdnz %o4,%f28,%f4 872 873 fmuld %f36,%f16,%f16 874 fmovrdnz %o5,%f28,%f6 875 876 faddd %f10,%f20,%f10 877 878 fmuld %f2,%f12,%f12 879 fmovrdnz %g5,%f28,%f32 880 881 faddd %f14,%f24,%f14 882 883 faddd %f16,%f26,%f16 884 885 fxor %f10,%f0,%f10 886 887 fxor %f12,%f32,%f12 888 889 fxor %f14,%f4,%f14 890 891 addcc %i0,-1,%i0 892 bg,pt %icc,.start 893! delay slot 894 fxor %f16,%f6,%f16 895 896 ba,pt %icc,.end 897! delay slot 898 nop 899 900 .align 16 901.case5: 902 fmuld %f30,%f54,%f10 ! cos(x0) 903 fzero %f0 904 905 fmuld %f32,%f44,%f12 ! sin(x1) 906 907 fmuld %f34,%f54,%f14 ! cos(x2) 908 fzero %f4 909 910 fmuld %f36,%f44,%f16 ! sin(x3) 911 912 fmuld %f30,%f48,%f20 913 faddd %f10,%f52,%f10 914 915 fmuld %f32,%f40,%f22 916 faddd %f12,%f42,%f12 917 918 fmuld %f34,%f48,%f24 919 faddd %f14,%f52,%f14 920 921 fmuld %f36,%f40,%f26 922 faddd %f16,%f42,%f16 923 924 fmuld %f30,%f10,%f10 925 faddd %f20,%f46,%f20 926 927 fmuld %f32,%f32,%f32 928 faddd %f22,%f46,%f22 929 930 fmuld %f34,%f14,%f14 931 faddd %f24,%f46,%f24 932 933 fmuld %f36,%f36,%f36 934 faddd %f26,%f46,%f26 935 936 fmuld %f30,%f30,%f30 937 faddd %f10,%f50,%f10 938 and %l0,2,%g1 939 940 fmuld %f32,%f12,%f12 941 fzero %f32 942 943 fmuld %f34,%f34,%f34 944 faddd %f14,%f50,%f14 945 and %l2,2,%o4 946 947 fmuld %f36,%f16,%f16 948 fzero %f36 949 950 fmuld %f30,%f10,%f10 951 fmovrdnz %g1,%f28,%f0 952 953 faddd %f12,%f22,%f12 954 and %l1,2,%g5 955 956 fmuld %f34,%f14,%f14 957 fmovrdnz %o4,%f28,%f4 958 959 faddd %f16,%f26,%f16 960 and %l3,2,%o5 961 962 faddd %f10,%f20,%f10 963 964 fmuld %f2,%f12,%f12 965 fmovrdnz %g5,%f28,%f32 966 967 faddd %f14,%f24,%f14 968 969 fmuld %f6,%f16,%f16 970 fmovrdnz %o5,%f28,%f36 971 972 fxor %f10,%f0,%f10 973 974 fxor %f12,%f32,%f12 975 976 fxor %f14,%f4,%f14 977 978 addcc %i0,-1,%i0 979 bg,pt %icc,.start 980! delay slot 981 fxor %f16,%f36,%f16 982 983 ba,pt %icc,.end 984! delay slot 985 nop 986 987 .align 16 988.case6: 989 fmuld %f6,%f6,%f36 990 bz,pn %icc,.case7 991! delay slot 992 nop 993 994 fmuld %f30,%f54,%f10 ! cos(x0) 995 fzero %f0 996 997 fmuld %f32,%f44,%f12 ! sin(x1) 998 999 fmuld %f34,%f44,%f14 ! sin(x2) 1000 1001 fmuld %f36,%f54,%f16 ! cos(x3) 1002 fzero %f6 1003 1004 fmuld %f30,%f48,%f20 1005 faddd %f10,%f52,%f10 1006 1007 fmuld %f32,%f40,%f22 1008 faddd %f12,%f42,%f12 1009 1010 fmuld %f34,%f40,%f24 1011 faddd %f14,%f42,%f14 1012 1013 fmuld %f36,%f48,%f26 1014 faddd %f16,%f52,%f16 1015 1016 fmuld %f30,%f10,%f10 1017 faddd %f20,%f46,%f20 1018 1019 fmuld %f32,%f32,%f32 1020 faddd %f22,%f46,%f22 1021 1022 fmuld %f34,%f34,%f34 1023 faddd %f24,%f46,%f24 1024 1025 fmuld %f36,%f16,%f16 1026 faddd %f26,%f46,%f26 1027 1028 fmuld %f30,%f30,%f30 1029 faddd %f10,%f50,%f10 1030 and %l0,2,%g1 1031 1032 fmuld %f32,%f12,%f12 1033 fzero %f32 1034 1035 fmuld %f34,%f14,%f14 1036 fzero %f34 1037 1038 fmuld %f36,%f36,%f36 1039 faddd %f16,%f50,%f16 1040 and %l3,2,%o5 1041 1042 fmuld %f30,%f10,%f10 1043 fmovrdnz %g1,%f28,%f0 1044 1045 faddd %f12,%f22,%f12 1046 and %l1,2,%g5 1047 1048 faddd %f14,%f24,%f14 1049 and %l2,2,%o4 1050 1051 fmuld %f36,%f16,%f16 1052 fmovrdnz %o5,%f28,%f6 1053 1054 faddd %f10,%f20,%f10 1055 1056 fmuld %f2,%f12,%f12 1057 fmovrdnz %g5,%f28,%f32 1058 1059 fmuld %f4,%f14,%f14 1060 fmovrdnz %o4,%f28,%f34 1061 1062 faddd %f16,%f26,%f16 1063 1064 fxor %f10,%f0,%f10 1065 1066 fxor %f12,%f32,%f12 1067 1068 fxor %f14,%f34,%f14 1069 1070 addcc %i0,-1,%i0 1071 bg,pt %icc,.start 1072! delay slot 1073 fxor %f16,%f6,%f16 1074 1075 ba,pt %icc,.end 1076! delay slot 1077 nop 1078 1079 .align 16 1080.case7: 1081 fmuld %f30,%f54,%f10 ! cos(x0) 1082 fzero %f0 1083 1084 fmuld %f32,%f44,%f12 ! sin(x1) 1085 1086 fmuld %f34,%f44,%f14 ! sin(x2) 1087 1088 fmuld %f36,%f44,%f16 ! sin(x3) 1089 1090 fmuld %f30,%f48,%f20 1091 faddd %f10,%f52,%f10 1092 1093 fmuld %f32,%f40,%f22 1094 faddd %f12,%f42,%f12 1095 1096 fmuld %f34,%f40,%f24 1097 faddd %f14,%f42,%f14 1098 1099 fmuld %f36,%f40,%f26 1100 faddd %f16,%f42,%f16 1101 1102 fmuld %f30,%f10,%f10 1103 faddd %f20,%f46,%f20 1104 1105 fmuld %f32,%f32,%f32 1106 faddd %f22,%f46,%f22 1107 1108 fmuld %f34,%f34,%f34 1109 faddd %f24,%f46,%f24 1110 1111 fmuld %f36,%f36,%f36 1112 faddd %f26,%f46,%f26 1113 1114 fmuld %f30,%f30,%f30 1115 faddd %f10,%f50,%f10 1116 and %l0,2,%g1 1117 1118 fmuld %f32,%f12,%f12 1119 fzero %f32 1120 1121 fmuld %f34,%f14,%f14 1122 fzero %f34 1123 1124 fmuld %f36,%f16,%f16 1125 fzero %f36 1126 1127 fmuld %f30,%f10,%f10 1128 fmovrdnz %g1,%f28,%f0 1129 1130 faddd %f12,%f22,%f12 1131 and %l1,2,%g5 1132 1133 faddd %f14,%f24,%f14 1134 and %l2,2,%o4 1135 1136 faddd %f16,%f26,%f16 1137 and %l3,2,%o5 1138 1139 faddd %f10,%f20,%f10 1140 1141 fmuld %f2,%f12,%f12 1142 fmovrdnz %g5,%f28,%f32 1143 1144 fmuld %f4,%f14,%f14 1145 fmovrdnz %o4,%f28,%f34 1146 1147 fmuld %f6,%f16,%f16 1148 fmovrdnz %o5,%f28,%f36 1149 1150 fxor %f10,%f0,%f10 1151 1152 fxor %f12,%f32,%f12 1153 1154 fxor %f14,%f34,%f14 1155 1156 addcc %i0,-1,%i0 1157 bg,pt %icc,.start 1158! delay slot 1159 fxor %f16,%f36,%f16 1160 1161 ba,pt %icc,.end 1162! delay slot 1163 nop 1164 1165 1166 .align 16 1167.case8: 1168 fmuld %f2,%f2,%f32 1169 bz,pn %icc,.case12 1170! delay slot 1171 andcc %l2,1,%g0 1172 1173 fmuld %f4,%f4,%f34 1174 bz,pn %icc,.case10 1175! delay slot 1176 andcc %l3,1,%g0 1177 1178 fmuld %f6,%f6,%f36 1179 bz,pn %icc,.case9 1180! delay slot 1181 nop 1182 1183 fmuld %f30,%f44,%f10 ! sin(x0) 1184 1185 fmuld %f32,%f54,%f12 ! cos(x1) 1186 fzero %f2 1187 1188 fmuld %f34,%f54,%f14 ! cos(x2) 1189 fzero %f4 1190 1191 fmuld %f36,%f54,%f16 ! cos(x3) 1192 fzero %f6 1193 1194 fmuld %f30,%f40,%f20 1195 faddd %f10,%f42,%f10 1196 1197 fmuld %f32,%f48,%f22 1198 faddd %f12,%f52,%f12 1199 1200 fmuld %f34,%f48,%f24 1201 faddd %f14,%f52,%f14 1202 1203 fmuld %f36,%f48,%f26 1204 faddd %f16,%f52,%f16 1205 1206 fmuld %f30,%f30,%f30 1207 faddd %f20,%f46,%f20 1208 1209 fmuld %f32,%f12,%f12 1210 faddd %f22,%f46,%f22 1211 1212 fmuld %f34,%f14,%f14 1213 faddd %f24,%f46,%f24 1214 1215 fmuld %f36,%f16,%f16 1216 faddd %f26,%f46,%f26 1217 1218 fmuld %f30,%f10,%f10 1219 fzero %f30 1220 1221 fmuld %f32,%f32,%f32 1222 faddd %f12,%f50,%f12 1223 and %l1,2,%g5 1224 1225 fmuld %f34,%f34,%f34 1226 faddd %f14,%f50,%f14 1227 and %l2,2,%o4 1228 1229 fmuld %f36,%f36,%f36 1230 faddd %f16,%f50,%f16 1231 and %l3,2,%o5 1232 1233 faddd %f10,%f20,%f10 1234 and %l0,2,%g1 1235 1236 fmuld %f32,%f12,%f12 1237 fmovrdnz %g5,%f28,%f2 1238 1239 fmuld %f34,%f14,%f14 1240 fmovrdnz %o4,%f28,%f4 1241 1242 fmuld %f36,%f16,%f16 1243 fmovrdnz %o5,%f28,%f6 1244 1245 fmuld %f0,%f10,%f10 1246 fmovrdnz %g1,%f28,%f30 1247 1248 faddd %f12,%f22,%f12 1249 1250 faddd %f14,%f24,%f14 1251 1252 faddd %f16,%f26,%f16 1253 1254 fxor %f10,%f30,%f10 1255 1256 fxor %f12,%f2,%f12 1257 1258 fxor %f14,%f4,%f14 1259 1260 addcc %i0,-1,%i0 1261 bg,pt %icc,.start 1262! delay slot 1263 fxor %f16,%f6,%f16 1264 1265 ba,pt %icc,.end 1266! delay slot 1267 nop 1268 1269 .align 16 1270.case9: 1271 fmuld %f30,%f44,%f10 ! sin(x0) 1272 1273 fmuld %f32,%f54,%f12 ! cos(x1) 1274 fzero %f2 1275 1276 fmuld %f34,%f54,%f14 ! cos(x2) 1277 fzero %f4 1278 1279 fmuld %f36,%f44,%f16 ! sin(x3) 1280 1281 fmuld %f30,%f40,%f20 1282 faddd %f10,%f42,%f10 1283 1284 fmuld %f32,%f48,%f22 1285 faddd %f12,%f52,%f12 1286 1287 fmuld %f34,%f48,%f24 1288 faddd %f14,%f52,%f14 1289 1290 fmuld %f36,%f40,%f26 1291 faddd %f16,%f42,%f16 1292 1293 fmuld %f30,%f30,%f30 1294 faddd %f20,%f46,%f20 1295 1296 fmuld %f32,%f12,%f12 1297 faddd %f22,%f46,%f22 1298 1299 fmuld %f34,%f14,%f14 1300 faddd %f24,%f46,%f24 1301 1302 fmuld %f36,%f36,%f36 1303 faddd %f26,%f46,%f26 1304 1305 fmuld %f30,%f10,%f10 1306 fzero %f30 1307 1308 fmuld %f32,%f32,%f32 1309 faddd %f12,%f50,%f12 1310 and %l1,2,%g5 1311 1312 fmuld %f34,%f34,%f34 1313 faddd %f14,%f50,%f14 1314 and %l2,2,%o4 1315 1316 fmuld %f36,%f16,%f16 1317 fzero %f36 1318 1319 faddd %f10,%f20,%f10 1320 and %l0,2,%g1 1321 1322 fmuld %f32,%f12,%f12 1323 fmovrdnz %g5,%f28,%f2 1324 1325 fmuld %f34,%f14,%f14 1326 fmovrdnz %o4,%f28,%f4 1327 1328 faddd %f16,%f26,%f16 1329 and %l3,2,%o5 1330 1331 fmuld %f0,%f10,%f10 1332 fmovrdnz %g1,%f28,%f30 1333 1334 faddd %f12,%f22,%f12 1335 1336 faddd %f14,%f24,%f14 1337 1338 fmuld %f6,%f16,%f16 1339 fmovrdnz %o5,%f28,%f36 1340 1341 fxor %f10,%f30,%f10 1342 1343 fxor %f12,%f2,%f12 1344 1345 fxor %f14,%f4,%f14 1346 1347 addcc %i0,-1,%i0 1348 bg,pt %icc,.start 1349! delay slot 1350 fxor %f16,%f36,%f16 1351 1352 ba,pt %icc,.end 1353! delay slot 1354 nop 1355 1356 .align 16 1357.case10: 1358 fmuld %f6,%f6,%f36 1359 bz,pn %icc,.case11 1360! delay slot 1361 nop 1362 1363 fmuld %f30,%f44,%f10 ! sin(x0) 1364 1365 fmuld %f32,%f54,%f12 ! cos(x1) 1366 fzero %f2 1367 1368 fmuld %f34,%f44,%f14 ! sin(x2) 1369 1370 fmuld %f36,%f54,%f16 ! cos(x3) 1371 fzero %f6 1372 1373 fmuld %f30,%f40,%f20 1374 faddd %f10,%f42,%f10 1375 1376 fmuld %f32,%f48,%f22 1377 faddd %f12,%f52,%f12 1378 1379 fmuld %f34,%f40,%f24 1380 faddd %f14,%f42,%f14 1381 1382 fmuld %f36,%f48,%f26 1383 faddd %f16,%f52,%f16 1384 1385 fmuld %f30,%f30,%f30 1386 faddd %f20,%f46,%f20 1387 1388 fmuld %f32,%f12,%f12 1389 faddd %f22,%f46,%f22 1390 1391 fmuld %f34,%f34,%f34 1392 faddd %f24,%f46,%f24 1393 1394 fmuld %f36,%f16,%f16 1395 faddd %f26,%f46,%f26 1396 1397 fmuld %f30,%f10,%f10 1398 fzero %f30 1399 1400 fmuld %f32,%f32,%f32 1401 faddd %f12,%f50,%f12 1402 and %l1,2,%g5 1403 1404 fmuld %f34,%f14,%f14 1405 fzero %f34 1406 1407 fmuld %f36,%f36,%f36 1408 faddd %f16,%f50,%f16 1409 and %l3,2,%o5 1410 1411 faddd %f10,%f20,%f10 1412 and %l0,2,%g1 1413 1414 fmuld %f32,%f12,%f12 1415 fmovrdnz %g5,%f28,%f2 1416 1417 faddd %f14,%f24,%f14 1418 and %l2,2,%o4 1419 1420 fmuld %f36,%f16,%f16 1421 fmovrdnz %o5,%f28,%f6 1422 1423 fmuld %f0,%f10,%f10 1424 fmovrdnz %g1,%f28,%f30 1425 1426 faddd %f12,%f22,%f12 1427 1428 fmuld %f4,%f14,%f14 1429 fmovrdnz %o4,%f28,%f34 1430 1431 faddd %f16,%f26,%f16 1432 1433 fxor %f10,%f30,%f10 1434 1435 fxor %f12,%f2,%f12 1436 1437 fxor %f14,%f34,%f14 1438 1439 addcc %i0,-1,%i0 1440 bg,pt %icc,.start 1441! delay slot 1442 fxor %f16,%f6,%f16 1443 1444 ba,pt %icc,.end 1445! delay slot 1446 nop 1447 1448 .align 16 1449.case11: 1450 fmuld %f30,%f44,%f10 ! sin(x0) 1451 1452 fmuld %f32,%f54,%f12 ! cos(x1) 1453 fzero %f2 1454 1455 fmuld %f34,%f44,%f14 ! sin(x2) 1456 1457 fmuld %f36,%f44,%f16 ! sin(x3) 1458 1459 fmuld %f30,%f40,%f20 1460 faddd %f10,%f42,%f10 1461 1462 fmuld %f32,%f48,%f22 1463 faddd %f12,%f52,%f12 1464 1465 fmuld %f34,%f40,%f24 1466 faddd %f14,%f42,%f14 1467 1468 fmuld %f36,%f40,%f26 1469 faddd %f16,%f42,%f16 1470 1471 fmuld %f30,%f30,%f30 1472 faddd %f20,%f46,%f20 1473 1474 fmuld %f32,%f12,%f12 1475 faddd %f22,%f46,%f22 1476 1477 fmuld %f34,%f34,%f34 1478 faddd %f24,%f46,%f24 1479 1480 fmuld %f36,%f36,%f36 1481 faddd %f26,%f46,%f26 1482 1483 fmuld %f30,%f10,%f10 1484 fzero %f30 1485 1486 fmuld %f32,%f32,%f32 1487 faddd %f12,%f50,%f12 1488 and %l1,2,%g5 1489 1490 fmuld %f34,%f14,%f14 1491 fzero %f34 1492 1493 fmuld %f36,%f16,%f16 1494 fzero %f36 1495 1496 faddd %f10,%f20,%f10 1497 and %l0,2,%g1 1498 1499 fmuld %f32,%f12,%f12 1500 fmovrdnz %g5,%f28,%f2 1501 1502 faddd %f14,%f24,%f14 1503 and %l2,2,%o4 1504 1505 faddd %f16,%f26,%f16 1506 and %l3,2,%o5 1507 1508 fmuld %f0,%f10,%f10 1509 fmovrdnz %g1,%f28,%f30 1510 1511 faddd %f12,%f22,%f12 1512 1513 fmuld %f4,%f14,%f14 1514 fmovrdnz %o4,%f28,%f34 1515 1516 fmuld %f6,%f16,%f16 1517 fmovrdnz %o5,%f28,%f36 1518 1519 fxor %f10,%f30,%f10 1520 1521 fxor %f12,%f2,%f12 1522 1523 fxor %f14,%f34,%f14 1524 1525 addcc %i0,-1,%i0 1526 bg,pt %icc,.start 1527! delay slot 1528 fxor %f16,%f36,%f16 1529 1530 ba,pt %icc,.end 1531! delay slot 1532 nop 1533 1534 .align 16 1535.case12: 1536 fmuld %f4,%f4,%f34 1537 bz,pn %icc,.case14 1538! delay slot 1539 andcc %l3,1,%g0 1540 1541 fmuld %f6,%f6,%f36 1542 bz,pn %icc,.case13 1543! delay slot 1544 nop 1545 1546 fmuld %f30,%f44,%f10 ! sin(x0) 1547 1548 fmuld %f32,%f44,%f12 ! sin(x1) 1549 1550 fmuld %f34,%f54,%f14 ! cos(x2) 1551 fzero %f4 1552 1553 fmuld %f36,%f54,%f16 ! cos(x3) 1554 fzero %f6 1555 1556 fmuld %f30,%f40,%f20 1557 faddd %f10,%f42,%f10 1558 1559 fmuld %f32,%f40,%f22 1560 faddd %f12,%f42,%f12 1561 1562 fmuld %f34,%f48,%f24 1563 faddd %f14,%f52,%f14 1564 1565 fmuld %f36,%f48,%f26 1566 faddd %f16,%f52,%f16 1567 1568 fmuld %f30,%f30,%f30 1569 faddd %f20,%f46,%f20 1570 1571 fmuld %f32,%f32,%f32 1572 faddd %f22,%f46,%f22 1573 1574 fmuld %f34,%f14,%f14 1575 faddd %f24,%f46,%f24 1576 1577 fmuld %f36,%f16,%f16 1578 faddd %f26,%f46,%f26 1579 1580 fmuld %f30,%f10,%f10 1581 fzero %f30 1582 1583 fmuld %f32,%f12,%f12 1584 fzero %f32 1585 1586 fmuld %f34,%f34,%f34 1587 faddd %f14,%f50,%f14 1588 and %l2,2,%o4 1589 1590 fmuld %f36,%f36,%f36 1591 faddd %f16,%f50,%f16 1592 and %l3,2,%o5 1593 1594 faddd %f10,%f20,%f10 1595 and %l0,2,%g1 1596 1597 faddd %f12,%f22,%f12 1598 and %l1,2,%g5 1599 1600 fmuld %f34,%f14,%f14 1601 fmovrdnz %o4,%f28,%f4 1602 1603 fmuld %f36,%f16,%f16 1604 fmovrdnz %o5,%f28,%f6 1605 1606 fmuld %f0,%f10,%f10 1607 fmovrdnz %g1,%f28,%f30 1608 1609 fmuld %f2,%f12,%f12 1610 fmovrdnz %g5,%f28,%f32 1611 1612 faddd %f14,%f24,%f14 1613 1614 faddd %f16,%f26,%f16 1615 1616 fxor %f10,%f30,%f10 1617 1618 fxor %f12,%f32,%f12 1619 1620 fxor %f14,%f4,%f14 1621 1622 addcc %i0,-1,%i0 1623 bg,pt %icc,.start 1624! delay slot 1625 fxor %f16,%f6,%f16 1626 1627 ba,pt %icc,.end 1628! delay slot 1629 nop 1630 1631 .align 16 1632.case13: 1633 fmuld %f30,%f44,%f10 ! sin(x0) 1634 1635 fmuld %f32,%f44,%f12 ! sin(x1) 1636 1637 fmuld %f34,%f54,%f14 ! cos(x2) 1638 fzero %f4 1639 1640 fmuld %f36,%f44,%f16 ! sin(x3) 1641 1642 fmuld %f30,%f40,%f20 1643 faddd %f10,%f42,%f10 1644 1645 fmuld %f32,%f40,%f22 1646 faddd %f12,%f42,%f12 1647 1648 fmuld %f34,%f48,%f24 1649 faddd %f14,%f52,%f14 1650 1651 fmuld %f36,%f40,%f26 1652 faddd %f16,%f42,%f16 1653 1654 fmuld %f30,%f30,%f30 1655 faddd %f20,%f46,%f20 1656 1657 fmuld %f32,%f32,%f32 1658 faddd %f22,%f46,%f22 1659 1660 fmuld %f34,%f14,%f14 1661 faddd %f24,%f46,%f24 1662 1663 fmuld %f36,%f36,%f36 1664 faddd %f26,%f46,%f26 1665 1666 fmuld %f30,%f10,%f10 1667 fzero %f30 1668 1669 fmuld %f32,%f12,%f12 1670 fzero %f32 1671 1672 fmuld %f34,%f34,%f34 1673 faddd %f14,%f50,%f14 1674 and %l2,2,%o4 1675 1676 fmuld %f36,%f16,%f16 1677 fzero %f36 1678 1679 faddd %f10,%f20,%f10 1680 and %l0,2,%g1 1681 1682 faddd %f12,%f22,%f12 1683 and %l1,2,%g5 1684 1685 fmuld %f34,%f14,%f14 1686 fmovrdnz %o4,%f28,%f4 1687 1688 faddd %f16,%f26,%f16 1689 and %l3,2,%o5 1690 1691 fmuld %f0,%f10,%f10 1692 fmovrdnz %g1,%f28,%f30 1693 1694 fmuld %f2,%f12,%f12 1695 fmovrdnz %g5,%f28,%f32 1696 1697 faddd %f14,%f24,%f14 1698 1699 fmuld %f6,%f16,%f16 1700 fmovrdnz %o5,%f28,%f36 1701 1702 fxor %f10,%f30,%f10 1703 1704 fxor %f12,%f32,%f12 1705 1706 fxor %f14,%f4,%f14 1707 1708 addcc %i0,-1,%i0 1709 bg,pt %icc,.start 1710! delay slot 1711 fxor %f16,%f36,%f16 1712 1713 ba,pt %icc,.end 1714! delay slot 1715 nop 1716 1717 .align 16 1718.case14: 1719 fmuld %f6,%f6,%f36 1720 bz,pn %icc,.case15 1721! delay slot 1722 nop 1723 1724 fmuld %f30,%f44,%f10 ! sin(x0) 1725 1726 fmuld %f32,%f44,%f12 ! sin(x1) 1727 1728 fmuld %f34,%f44,%f14 ! sin(x2) 1729 1730 fmuld %f36,%f54,%f16 ! cos(x3) 1731 fzero %f6 1732 1733 fmuld %f30,%f40,%f20 1734 faddd %f10,%f42,%f10 1735 1736 fmuld %f32,%f40,%f22 1737 faddd %f12,%f42,%f12 1738 1739 fmuld %f34,%f40,%f24 1740 faddd %f14,%f42,%f14 1741 1742 fmuld %f36,%f48,%f26 1743 faddd %f16,%f52,%f16 1744 1745 fmuld %f30,%f30,%f30 1746 faddd %f20,%f46,%f20 1747 1748 fmuld %f32,%f32,%f32 1749 faddd %f22,%f46,%f22 1750 1751 fmuld %f34,%f34,%f34 1752 faddd %f24,%f46,%f24 1753 1754 fmuld %f36,%f16,%f16 1755 faddd %f26,%f46,%f26 1756 1757 fmuld %f30,%f10,%f10 1758 fzero %f30 1759 1760 fmuld %f32,%f12,%f12 1761 fzero %f32 1762 1763 fmuld %f34,%f14,%f14 1764 fzero %f34 1765 1766 fmuld %f36,%f36,%f36 1767 faddd %f16,%f50,%f16 1768 and %l3,2,%o5 1769 1770 faddd %f10,%f20,%f10 1771 and %l0,2,%g1 1772 1773 faddd %f12,%f22,%f12 1774 and %l1,2,%g5 1775 1776 faddd %f14,%f24,%f14 1777 and %l2,2,%o4 1778 1779 fmuld %f36,%f16,%f16 1780 fmovrdnz %o5,%f28,%f6 1781 1782 fmuld %f0,%f10,%f10 1783 fmovrdnz %g1,%f28,%f30 1784 1785 fmuld %f2,%f12,%f12 1786 fmovrdnz %g5,%f28,%f32 1787 1788 fmuld %f4,%f14,%f14 1789 fmovrdnz %o4,%f28,%f34 1790 1791 faddd %f16,%f26,%f16 1792 1793 fxor %f10,%f30,%f10 1794 1795 fxor %f12,%f32,%f12 1796 1797 fxor %f14,%f34,%f14 1798 1799 addcc %i0,-1,%i0 1800 bg,pt %icc,.start 1801! delay slot 1802 fxor %f16,%f6,%f16 1803 1804 ba,pt %icc,.end 1805! delay slot 1806 nop 1807 1808 .align 16 1809.case15: 1810 fmuld %f30,%f44,%f10 ! sin(x0) 1811 1812 fmuld %f32,%f44,%f12 ! sin(x1) 1813 1814 fmuld %f34,%f44,%f14 ! sin(x2) 1815 1816 fmuld %f36,%f44,%f16 ! sin(x3) 1817 1818 fmuld %f30,%f40,%f20 1819 faddd %f10,%f42,%f10 1820 1821 fmuld %f32,%f40,%f22 1822 faddd %f12,%f42,%f12 1823 1824 fmuld %f34,%f40,%f24 1825 faddd %f14,%f42,%f14 1826 1827 fmuld %f36,%f40,%f26 1828 faddd %f16,%f42,%f16 1829 1830 fmuld %f30,%f30,%f30 1831 faddd %f20,%f46,%f20 1832 1833 fmuld %f32,%f32,%f32 1834 faddd %f22,%f46,%f22 1835 1836 fmuld %f34,%f34,%f34 1837 faddd %f24,%f46,%f24 1838 1839 fmuld %f36,%f36,%f36 1840 faddd %f26,%f46,%f26 1841 1842 fmuld %f30,%f10,%f10 1843 fzero %f30 1844 1845 fmuld %f32,%f12,%f12 1846 fzero %f32 1847 1848 fmuld %f34,%f14,%f14 1849 fzero %f34 1850 1851 fmuld %f36,%f16,%f16 1852 fzero %f36 1853 1854 faddd %f10,%f20,%f10 1855 and %l0,2,%g1 1856 1857 faddd %f12,%f22,%f12 1858 and %l1,2,%g5 1859 1860 faddd %f14,%f24,%f14 1861 and %l2,2,%o4 1862 1863 faddd %f16,%f26,%f16 1864 and %l3,2,%o5 1865 1866 fmuld %f0,%f10,%f10 1867 fmovrdnz %g1,%f28,%f30 1868 1869 fmuld %f2,%f12,%f12 1870 fmovrdnz %g5,%f28,%f32 1871 1872 fmuld %f4,%f14,%f14 1873 fmovrdnz %o4,%f28,%f34 1874 1875 fmuld %f6,%f16,%f16 1876 fmovrdnz %o5,%f28,%f36 1877 1878 fxor %f10,%f30,%f10 1879 1880 fxor %f12,%f32,%f12 1881 1882 fxor %f14,%f34,%f14 1883 1884 addcc %i0,-1,%i0 1885 bg,pt %icc,.start 1886! delay slot 1887 fxor %f16,%f36,%f16 1888 1889 ba,pt %icc,.end 1890! delay slot 1891 nop 1892 1893 1894 .align 32 1895.end: 1896 fdtos %f10,%f10 1897 st %f10,[%o0] 1898 fdtos %f12,%f12 1899 st %f12,[%o1] 1900 fdtos %f14,%f14 1901 st %f14,[%o2] 1902 fdtos %f16,%f16 1903 tst %i5 ! check for huge arguments remaining 1904 be,pt %icc,.exit 1905! delay slot 1906 st %f16,[%o3] 1907#ifdef __sparcv9 1908 ldx [%fp+xsave],%o1 1909 ldx [%fp+ysave],%o3 1910#else 1911 ld [%fp+xsave],%o1 1912 ld [%fp+ysave],%o3 1913#endif 1914 ld [%fp+nsave],%o0 1915 ld [%fp+sxsave],%o2 1916 ld [%fp+sysave],%o4 1917 sra %o2,0,%o2 ! sign-extend for V9 1918 call __vlibm_vsin_bigf 1919 sra %o4,0,%o4 ! delay slot 1920 1921.exit: 1922 ret 1923 restore 1924 1925 1926 .align 32 1927.last1: 1928 fdtos %f12,%f12 1929 st %f12,[%o1] 1930 fzeros %f2 1931 add %fp,junk,%o1 1932.last2: 1933 fdtos %f14,%f14 1934 st %f14,[%o2] 1935 fzeros %f4 1936 add %fp,junk,%o2 1937.last3: 1938 fdtos %f16,%f16 1939 st %f16,[%o3] 1940 fzeros %f6 1941 ba,pt %icc,.cont 1942! delay slot 1943 add %fp,junk,%o3 1944 1945 1946 .align 16 1947.range0: 1948 fcmpgt32 %f38,%f30,%l0 1949 andcc %l0,2,%g0 1950 bnz,a,pt %icc,1f ! branch if finite 1951! delay slot, squashed if branch not taken 1952 mov 1,%i5 ! set biguns 1953 fzeros %f1 1954 fmuls %f0,%f1,%f0 1955 st %f0,[%o0] 19561: 1957 addcc %i0,-1,%i0 1958 ble,pn %icc,1f 1959! delay slot 1960 nop 1961 ld [%i1],%f0 1962 add %i1,%i2,%i1 1963 mov %i3,%o0 1964 add %i3,%i4,%i3 1965 fabsd %f0,%f30 1966 fcmple32 %f30,%f18,%l0 1967 andcc %l0,2,%g0 1968 bz,pn %icc,.range0 1969! delay slot 1970 nop 1971 ba,pt %icc,.check1 1972! delay slot 1973 fcmple32 %f30,%f8,%l0 19741: 1975 fzero %f0 ! set up dummy argument 1976 add %fp,junk,%o0 1977 mov 2,%l0 1978 ba,pt %icc,.check1 1979! delay slot 1980 fzero %f30 1981 1982 1983 .align 16 1984.range1: 1985 fcmpgt32 %f38,%f32,%l1 1986 andcc %l1,2,%g0 1987 bnz,a,pt %icc,1f ! branch if finite 1988! delay slot, squashed if branch not taken 1989 mov 1,%i5 ! set biguns 1990 fzeros %f3 1991 fmuls %f2,%f3,%f2 1992 st %f2,[%o1] 19931: 1994 addcc %i0,-1,%i0 1995 ble,pn %icc,1f 1996! delay slot 1997 nop 1998 ld [%i1],%f2 1999 add %i1,%i2,%i1 2000 mov %i3,%o1 2001 add %i3,%i4,%i3 2002 fabsd %f2,%f32 2003 fcmple32 %f32,%f18,%l1 2004 andcc %l1,2,%g0 2005 bz,pn %icc,.range1 2006! delay slot 2007 nop 2008 ba,pt %icc,.check2 2009! delay slot 2010 fcmple32 %f32,%f8,%l1 20111: 2012 fzero %f2 ! set up dummy argument 2013 add %fp,junk,%o1 2014 mov 2,%l1 2015 ba,pt %icc,.check2 2016! delay slot 2017 fzero %f32 2018 2019 2020 .align 16 2021.range2: 2022 fcmpgt32 %f38,%f34,%l2 2023 andcc %l2,2,%g0 2024 bnz,a,pt %icc,1f ! branch if finite 2025! delay slot, squashed if branch not taken 2026 mov 1,%i5 ! set biguns 2027 fzeros %f5 2028 fmuls %f4,%f5,%f4 2029 st %f4,[%o2] 20301: 2031 addcc %i0,-1,%i0 2032 ble,pn %icc,1f 2033! delay slot 2034 nop 2035 ld [%i1],%f4 2036 add %i1,%i2,%i1 2037 mov %i3,%o2 2038 add %i3,%i4,%i3 2039 fabsd %f4,%f34 2040 fcmple32 %f34,%f18,%l2 2041 andcc %l2,2,%g0 2042 bz,pn %icc,.range2 2043! delay slot 2044 nop 2045 ba,pt %icc,.check3 2046! delay slot 2047 fcmple32 %f34,%f8,%l2 20481: 2049 fzero %f4 ! set up dummy argument 2050 add %fp,junk,%o2 2051 mov 2,%l2 2052 ba,pt %icc,.check3 2053! delay slot 2054 fzero %f34 2055 2056 2057 .align 16 2058.range3: 2059 fcmpgt32 %f38,%f36,%l3 2060 andcc %l3,2,%g0 2061 bnz,a,pt %icc,1f ! branch if finite 2062! delay slot, squashed if branch not taken 2063 mov 1,%i5 ! set biguns 2064 fzeros %f7 2065 fmuls %f6,%f7,%f6 2066 st %f6,[%o3] 20671: 2068 addcc %i0,-1,%i0 2069 ble,pn %icc,1f 2070! delay slot 2071 nop 2072 ld [%i1],%f6 2073 add %i1,%i2,%i1 2074 mov %i3,%o3 2075 add %i3,%i4,%i3 2076 fabsd %f6,%f36 2077 fcmple32 %f36,%f18,%l3 2078 andcc %l3,2,%g0 2079 bz,pn %icc,.range3 2080! delay slot 2081 nop 2082 ba,pt %icc,.checkprimary 2083! delay slot 2084 fcmple32 %f36,%f8,%l3 20851: 2086 fzero %f6 ! set up dummy argument 2087 add %fp,junk,%o3 2088 mov 2,%l3 2089 ba,pt %icc,.checkprimary 2090! delay slot 2091 fzero %f36 2092 2093 SET_SIZE(__vsinf) 2094 2095