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 "__vcos_ultra3.S" 30 31 #include "libm.h" 32 .weak __vcos 33 .type __vcos,#function 34 __vcos = __vcos_ultra3 35 36 RO_DATA 37 .align 64 38 constants: 39 .word 0x42c80000,0x00000000 ! 3 * 2^44 40 .word 0x43380000,0x00000000 ! 3 * 2^51 41 .word 0x3fe45f30,0x6dc9c883 ! invpio2 42 .word 0x3ff921fb,0x54442c00 ! pio2_1 43 .word 0x3d318469,0x898cc400 ! pio2_2 44 .word 0x3a71701b,0x839a2520 ! pio2_3 45 .word 0xbfc55555,0x55555533 ! pp1 46 .word 0x3f811111,0x10e7d53b ! pp2 47 .word 0xbf2a0167,0xe6b3cf9b ! pp3 48 .word 0xbfdfffff,0xffffff65 ! qq1 49 .word 0x3fa55555,0x54f88ed0 ! qq2 50 .word 0xbf56c12c,0xdd185f60 ! qq3 51 52 ! local storage indices 53 54 #define xsave STACK_BIAS-0x8 55 #define ysave STACK_BIAS-0x10 56 #define nsave STACK_BIAS-0x14 57 #define sxsave STACK_BIAS-0x18 58 #define sysave STACK_BIAS-0x1c 59 #define biguns STACK_BIAS-0x20 60 #define nk3 STACK_BIAS-0x24 61 #define nk2 STACK_BIAS-0x28 62 #define nk1 STACK_BIAS-0x2c 63 #define nk0 STACK_BIAS-0x30 64 #define junk STACK_BIAS-0x38 65 ! sizeof temp storage - must be a multiple of 16 for V9 66 #define tmps 0x40 67 68 ! register use 69 70 ! i0 n 71 ! i1 x 72 ! i2 stridex 73 ! i3 y 74 ! i4 stridey 75 ! i5 0x80000000 76 77 ! l0 hx0 78 ! l1 hx1 79 ! l2 hx2 80 ! l3 hx3 81 ! l4 k0 82 ! l5 k1 83 ! l6 k2 84 ! l7 k3 85 86 ! the following are 64-bit registers in both V8+ and V9 87 88 ! g1 __vlibm_TBL_sincos2 89 ! g5 scratch 90 91 ! o0 py0 92 ! o1 py1 93 ! o2 py2 94 ! o3 py3 95 ! o4 0x3e400000 96 ! o5 0x3fe921fb,0x4099251e 97 ! o7 scratch 98 99 ! f0 hx0 100 ! f2 101 ! f4 102 ! f6 103 ! f8 hx1 104 ! f10 105 ! f12 106 ! f14 107 ! f16 hx2 108 ! f18 109 ! f20 110 ! f22 111 ! f24 hx3 112 ! f26 113 ! f28 114 ! f30 115 ! f32 116 ! f34 117 ! f36 118 ! f38 119 120 #define c3two44 %f40 121 #define c3two51 %f42 122 #define invpio2 %f44 123 #define pio2_1 %f46 124 #define pio2_2 %f48 125 #define pio2_3 %f50 126 #define pp1 %f52 127 #define pp2 %f54 128 #define pp3 %f56 129 #define qq1 %f58 130 #define qq2 %f60 131 #define qq3 %f62 132 133 ENTRY(__vcos_ultra3) 134 save %sp,-SA(MINFRAME)-tmps,%sp 135 PIC_SETUP(l7) 136 PIC_SET(l7,constants,o0) 137 PIC_SET(l7,__vlibm_TBL_sincos2,o1) 138 mov %o1,%g1 139 wr %g0,0x82,%asi ! set %asi for non-faulting loads 140 #ifdef __sparcv9 141 stx %i1,[%fp+xsave] ! save arguments 142 stx %i3,[%fp+ysave] 143 #else 144 st %i1,[%fp+xsave] ! save arguments 145 st %i3,[%fp+ysave] 146 #endif 147 st %i0,[%fp+nsave] 148 st %i2,[%fp+sxsave] 149 st %i4,[%fp+sysave] 150 st %g0,[%fp+biguns] ! biguns = 0 151 ldd [%o0+0x00],c3two44 ! load/set up constants 152 ldd [%o0+0x08],c3two51 153 ldd [%o0+0x10],invpio2 154 ldd [%o0+0x18],pio2_1 155 ldd [%o0+0x20],pio2_2 156 ldd [%o0+0x28],pio2_3 157 ldd [%o0+0x30],pp1 158 ldd [%o0+0x38],pp2 159 ldd [%o0+0x40],pp3 160 ldd [%o0+0x48],qq1 161 ldd [%o0+0x50],qq2 162 ldd [%o0+0x58],qq3 163 sethi %hi(0x80000000),%i5 164 sethi %hi(0x3e400000),%o4 165 sethi %hi(0x3fe921fb),%o5 166 or %o5,%lo(0x3fe921fb),%o5 167 sllx %o5,32,%o5 168 sethi %hi(0x4099251e),%o7 169 or %o7,%lo(0x4099251e),%o7 170 or %o5,%o7,%o5 171 sll %i2,3,%i2 ! scale strides 172 sll %i4,3,%i4 173 add %fp,junk,%o1 ! loop prologue 174 add %fp,junk,%o2 175 add %fp,junk,%o3 176 ld [%i1],%l0 ! *x 177 ld [%i1],%f0 178 ld [%i1+4],%f3 179 andn %l0,%i5,%l0 ! mask off sign 180 add %i1,%i2,%i1 ! x += stridex 181 ba .loop0 182 nop 183 184 ! 16-byte aligned 185 .align 16 186 .loop0: 187 lda [%i1]%asi,%l1 ! preload next argument 188 sub %l0,%o4,%g5 189 sub %o5,%l0,%o7 190 fabss %f0,%f2 191 192 lda [%i1]%asi,%f8 193 orcc %o7,%g5,%g0 194 mov %i3,%o0 ! py0 = y 195 bl,pn %icc,.range0 ! hx < 0x3e400000 or hx > 0x4099251e 196 197 ! delay slot 198 lda [%i1+4]%asi,%f11 199 addcc %i0,-1,%i0 200 add %i3,%i4,%i3 ! y += stridey 201 ble,pn %icc,.last1 202 203 ! delay slot 204 andn %l1,%i5,%l1 205 add %i1,%i2,%i1 ! x += stridex 206 faddd %f2,c3two44,%f4 207 st %f15,[%o1+4] 208 209 .loop1: 210 lda [%i1]%asi,%l2 ! preload next argument 211 sub %l1,%o4,%g5 212 sub %o5,%l1,%o7 213 fabss %f8,%f10 214 215 lda [%i1]%asi,%f16 216 orcc %o7,%g5,%g0 217 mov %i3,%o1 ! py1 = y 218 bl,pn %icc,.range1 ! hx < 0x3e400000 or hx > 0x4099251e 219 220 ! delay slot 221 lda [%i1+4]%asi,%f19 222 addcc %i0,-1,%i0 223 add %i3,%i4,%i3 ! y += stridey 224 ble,pn %icc,.last2 225 226 ! delay slot 227 andn %l2,%i5,%l2 228 add %i1,%i2,%i1 ! x += stridex 229 faddd %f10,c3two44,%f12 230 st %f23,[%o2+4] 231 232 .loop2: 233 lda [%i1]%asi,%l3 ! preload next argument 234 sub %l2,%o4,%g5 235 sub %o5,%l2,%o7 236 fabss %f16,%f18 237 238 lda [%i1]%asi,%f24 239 orcc %o7,%g5,%g0 240 mov %i3,%o2 ! py2 = y 241 bl,pn %icc,.range2 ! hx < 0x3e400000 or hx > 0x4099251e 242 243 ! delay slot 244 lda [%i1+4]%asi,%f27 245 addcc %i0,-1,%i0 246 add %i3,%i4,%i3 ! y += stridey 247 ble,pn %icc,.last3 248 249 ! delay slot 250 andn %l3,%i5,%l3 251 add %i1,%i2,%i1 ! x += stridex 252 faddd %f18,c3two44,%f20 253 st %f31,[%o3+4] 254 255 .loop3: 256 sub %l3,%o4,%g5 257 sub %o5,%l3,%o7 258 fabss %f24,%f26 259 st %f5,[%fp+nk0] 260 261 orcc %o7,%g5,%g0 262 mov %i3,%o3 ! py3 = y 263 bl,pn %icc,.range3 ! hx < 0x3e400000 or > hx 0x4099251e 264 ! delay slot 265 st %f13,[%fp+nk1] 266 267 !!! DONE? 268 .cont: 269 srlx %o5,32,%o7 270 add %i3,%i4,%i3 ! y += stridey 271 fmovs %f3,%f1 272 st %f21,[%fp+nk2] 273 274 sub %o7,%l0,%l0 275 sub %o7,%l1,%l1 276 faddd %f26,c3two44,%f28 277 st %f29,[%fp+nk3] 278 279 sub %o7,%l2,%l2 280 sub %o7,%l3,%l3 281 fmovs %f11,%f9 282 283 or %l0,%l1,%l0 284 or %l2,%l3,%l2 285 fmovs %f19,%f17 286 287 fmovs %f27,%f25 288 fmuld %f0,invpio2,%f6 ! x * invpio2, for medium range 289 290 fmuld %f8,invpio2,%f14 291 ld [%fp+nk0],%l4 292 293 fmuld %f16,invpio2,%f22 294 ld [%fp+nk1],%l5 295 296 orcc %l0,%l2,%g0 297 bl,pn %icc,.medium 298 ! delay slot 299 fmuld %f24,invpio2,%f30 300 ld [%fp+nk2],%l6 301 302 ld [%fp+nk3],%l7 303 sll %l4,5,%l4 ! k 304 fcmpd %fcc0,%f0,pio2_3 ! x < pio2_3 iff x < 0 305 306 sll %l5,5,%l5 307 ldd [%l4+%g1],%f4 308 fcmpd %fcc1,%f8,pio2_3 309 310 sll %l6,5,%l6 311 ldd [%l5+%g1],%f12 312 fcmpd %fcc2,%f16,pio2_3 313 314 sll %l7,5,%l7 315 ldd [%l6+%g1],%f20 316 fcmpd %fcc3,%f24,pio2_3 317 318 ldd [%l7+%g1],%f28 319 fsubd %f2,%f4,%f2 ! x -= __vlibm_TBL_sincos2[k] 320 321 fsubd %f10,%f12,%f10 322 323 fsubd %f18,%f20,%f18 324 325 fsubd %f26,%f28,%f26 326 327 fmuld %f2,%f2,%f0 ! z = x * x 328 329 fmuld %f10,%f10,%f8 330 331 fmuld %f18,%f18,%f16 332 333 fmuld %f26,%f26,%f24 334 335 fmuld %f0,qq3,%f6 336 337 fmuld %f8,qq3,%f14 338 339 fmuld %f16,qq3,%f22 340 341 fmuld %f24,qq3,%f30 342 343 faddd %f6,qq2,%f6 344 fmuld %f0,pp2,%f4 345 346 faddd %f14,qq2,%f14 347 fmuld %f8,pp2,%f12 348 349 faddd %f22,qq2,%f22 350 fmuld %f16,pp2,%f20 351 352 faddd %f30,qq2,%f30 353 fmuld %f24,pp2,%f28 354 355 fmuld %f0,%f6,%f6 356 faddd %f4,pp1,%f4 357 358 fmuld %f8,%f14,%f14 359 faddd %f12,pp1,%f12 360 361 fmuld %f16,%f22,%f22 362 faddd %f20,pp1,%f20 363 364 fmuld %f24,%f30,%f30 365 faddd %f28,pp1,%f28 366 367 faddd %f6,qq1,%f6 368 fmuld %f0,%f4,%f4 369 add %l4,%g1,%l4 370 371 faddd %f14,qq1,%f14 372 fmuld %f8,%f12,%f12 373 add %l5,%g1,%l5 374 375 faddd %f22,qq1,%f22 376 fmuld %f16,%f20,%f20 377 add %l6,%g1,%l6 378 379 faddd %f30,qq1,%f30 380 fmuld %f24,%f28,%f28 381 add %l7,%g1,%l7 382 383 fmuld %f2,%f4,%f4 384 385 fmuld %f10,%f12,%f12 386 387 fmuld %f18,%f20,%f20 388 389 fmuld %f26,%f28,%f28 390 391 fmuld %f0,%f6,%f6 392 faddd %f4,%f2,%f4 393 ldd [%l4+16],%f32 394 395 fmuld %f8,%f14,%f14 396 faddd %f12,%f10,%f12 397 ldd [%l5+16],%f34 398 399 fmuld %f16,%f22,%f22 400 faddd %f20,%f18,%f20 401 ldd [%l6+16],%f36 402 403 fmuld %f24,%f30,%f30 404 faddd %f28,%f26,%f28 405 ldd [%l7+16],%f38 406 407 fmuld %f32,%f6,%f6 408 ldd [%l4+8],%f2 409 410 fmuld %f34,%f14,%f14 411 ldd [%l5+8],%f10 412 413 fmuld %f36,%f22,%f22 414 ldd [%l6+8],%f18 415 416 fmuld %f38,%f30,%f30 417 ldd [%l7+8],%f26 418 419 fmuld %f2,%f4,%f4 420 421 fmuld %f10,%f12,%f12 422 423 fmuld %f18,%f20,%f20 424 425 fmuld %f26,%f28,%f28 426 427 fsubd %f6,%f4,%f6 428 lda [%i1]%asi,%l0 ! preload next argument 429 430 fsubd %f14,%f12,%f14 431 lda [%i1]%asi,%f0 432 433 fsubd %f22,%f20,%f22 434 lda [%i1+4]%asi,%f3 435 436 fsubd %f30,%f28,%f30 437 andn %l0,%i5,%l0 438 add %i1,%i2,%i1 439 440 faddd %f6,%f32,%f6 441 st %f6,[%o0] 442 443 faddd %f14,%f34,%f14 444 st %f14,[%o1] 445 446 faddd %f22,%f36,%f22 447 st %f22,[%o2] 448 449 faddd %f30,%f38,%f30 450 st %f30,[%o3] 451 addcc %i0,-1,%i0 452 453 bg,pt %icc,.loop0 454 ! delay slot 455 st %f7,[%o0+4] 456 457 ba,pt %icc,.end 458 ! delay slot 459 nop 460 461 462 .align 16 463 .medium: 464 faddd %f6,c3two51,%f4 465 st %f5,[%fp+nk0] 466 467 faddd %f14,c3two51,%f12 468 st %f13,[%fp+nk1] 469 470 faddd %f22,c3two51,%f20 471 st %f21,[%fp+nk2] 472 473 faddd %f30,c3two51,%f28 474 st %f29,[%fp+nk3] 475 476 fsubd %f4,c3two51,%f6 477 478 fsubd %f12,c3two51,%f14 479 480 fsubd %f20,c3two51,%f22 481 482 fsubd %f28,c3two51,%f30 483 484 fmuld %f6,pio2_1,%f2 485 ld [%fp+nk0],%l0 ! n 486 487 fmuld %f14,pio2_1,%f10 488 ld [%fp+nk1],%l1 489 490 fmuld %f22,pio2_1,%f18 491 ld [%fp+nk2],%l2 492 493 fmuld %f30,pio2_1,%f26 494 ld [%fp+nk3],%l3 495 496 fsubd %f0,%f2,%f0 497 fmuld %f6,pio2_2,%f4 498 add %l0,1,%l0 499 500 fsubd %f8,%f10,%f8 501 fmuld %f14,pio2_2,%f12 502 add %l1,1,%l1 503 504 fsubd %f16,%f18,%f16 505 fmuld %f22,pio2_2,%f20 506 add %l2,1,%l2 507 508 fsubd %f24,%f26,%f24 509 fmuld %f30,pio2_2,%f28 510 add %l3,1,%l3 511 512 fsubd %f0,%f4,%f32 513 514 fsubd %f8,%f12,%f34 515 516 fsubd %f16,%f20,%f36 517 518 fsubd %f24,%f28,%f38 519 520 fsubd %f0,%f32,%f0 521 fcmple32 %f32,pio2_3,%l4 ! x <= pio2_3 iff x < 0 522 523 fsubd %f8,%f34,%f8 524 fcmple32 %f34,pio2_3,%l5 525 526 fsubd %f16,%f36,%f16 527 fcmple32 %f36,pio2_3,%l6 528 529 fsubd %f24,%f38,%f24 530 fcmple32 %f38,pio2_3,%l7 531 532 fsubd %f0,%f4,%f0 533 fmuld %f6,pio2_3,%f6 534 sll %l4,30,%l4 ! if (x < 0) n = -n ^ 2 535 536 fsubd %f8,%f12,%f8 537 fmuld %f14,pio2_3,%f14 538 sll %l5,30,%l5 539 540 fsubd %f16,%f20,%f16 541 fmuld %f22,pio2_3,%f22 542 sll %l6,30,%l6 543 544 fsubd %f24,%f28,%f24 545 fmuld %f30,pio2_3,%f30 546 sll %l7,30,%l7 547 548 fsubd %f6,%f0,%f6 549 sra %l4,31,%l4 550 551 fsubd %f14,%f8,%f14 552 sra %l5,31,%l5 553 554 fsubd %f22,%f16,%f22 555 sra %l6,31,%l6 556 557 fsubd %f30,%f24,%f30 558 sra %l7,31,%l7 559 560 fsubd %f32,%f6,%f0 ! reduced x 561 xor %l0,%l4,%l0 562 563 fsubd %f34,%f14,%f8 564 xor %l1,%l5,%l1 565 566 fsubd %f36,%f22,%f16 567 xor %l2,%l6,%l2 568 569 fsubd %f38,%f30,%f24 570 xor %l3,%l7,%l3 571 572 fabsd %f0,%f2 573 sub %l0,%l4,%l0 574 575 fabsd %f8,%f10 576 sub %l1,%l5,%l1 577 578 fabsd %f16,%f18 579 sub %l2,%l6,%l2 580 581 fabsd %f24,%f26 582 sub %l3,%l7,%l3 583 584 faddd %f2,c3two44,%f4 585 st %f5,[%fp+nk0] 586 and %l4,2,%l4 587 588 faddd %f10,c3two44,%f12 589 st %f13,[%fp+nk1] 590 and %l5,2,%l5 591 592 faddd %f18,c3two44,%f20 593 st %f21,[%fp+nk2] 594 and %l6,2,%l6 595 596 faddd %f26,c3two44,%f28 597 st %f29,[%fp+nk3] 598 and %l7,2,%l7 599 600 fsubd %f32,%f0,%f4 601 xor %l0,%l4,%l0 602 603 fsubd %f34,%f8,%f12 604 xor %l1,%l5,%l1 605 606 fsubd %f36,%f16,%f20 607 xor %l2,%l6,%l2 608 609 fsubd %f38,%f24,%f28 610 xor %l3,%l7,%l3 611 612 fzero %f38 613 ld [%fp+nk0],%l4 614 615 fsubd %f4,%f6,%f6 ! w 616 ld [%fp+nk1],%l5 617 618 fsubd %f12,%f14,%f14 619 ld [%fp+nk2],%l6 620 621 fnegd %f38,%f38 622 ld [%fp+nk3],%l7 623 sll %l4,5,%l4 ! k 624 625 fsubd %f20,%f22,%f22 626 sll %l5,5,%l5 627 628 fsubd %f28,%f30,%f30 629 sll %l6,5,%l6 630 631 fand %f0,%f38,%f32 ! sign bit of x 632 ldd [%l4+%g1],%f4 633 sll %l7,5,%l7 634 635 fand %f8,%f38,%f34 636 ldd [%l5+%g1],%f12 637 638 fand %f16,%f38,%f36 639 ldd [%l6+%g1],%f20 640 641 fand %f24,%f38,%f38 642 ldd [%l7+%g1],%f28 643 644 fsubd %f2,%f4,%f2 ! x -= __vlibm_TBL_sincos2[k] 645 646 fsubd %f10,%f12,%f10 647 648 fsubd %f18,%f20,%f18 649 nop 650 651 fsubd %f26,%f28,%f26 652 nop 653 654 ! 16-byte aligned 655 fmuld %f2,%f2,%f0 ! z = x * x 656 andcc %l0,1,%g0 657 bz,pn %icc,.case8 658 ! delay slot 659 fxor %f6,%f32,%f32 660 661 fmuld %f10,%f10,%f8 662 andcc %l1,1,%g0 663 bz,pn %icc,.case4 664 ! delay slot 665 fxor %f14,%f34,%f34 666 667 fmuld %f18,%f18,%f16 668 andcc %l2,1,%g0 669 bz,pn %icc,.case2 670 ! delay slot 671 fxor %f22,%f36,%f36 672 673 fmuld %f26,%f26,%f24 674 andcc %l3,1,%g0 675 bz,pn %icc,.case1 676 ! delay slot 677 fxor %f30,%f38,%f38 678 679 !.case0: 680 fmuld %f0,qq3,%f6 ! cos(x0) 681 682 fmuld %f8,qq3,%f14 ! cos(x1) 683 684 fmuld %f16,qq3,%f22 ! cos(x2) 685 686 fmuld %f24,qq3,%f30 ! cos(x3) 687 688 faddd %f6,qq2,%f6 689 fmuld %f0,pp2,%f4 690 691 faddd %f14,qq2,%f14 692 fmuld %f8,pp2,%f12 693 694 faddd %f22,qq2,%f22 695 fmuld %f16,pp2,%f20 696 697 faddd %f30,qq2,%f30 698 fmuld %f24,pp2,%f28 699 700 fmuld %f0,%f6,%f6 701 faddd %f4,pp1,%f4 702 703 fmuld %f8,%f14,%f14 704 faddd %f12,pp1,%f12 705 706 fmuld %f16,%f22,%f22 707 faddd %f20,pp1,%f20 708 709 fmuld %f24,%f30,%f30 710 faddd %f28,pp1,%f28 711 712 faddd %f6,qq1,%f6 713 fmuld %f0,%f4,%f4 714 add %l4,%g1,%l4 715 716 faddd %f14,qq1,%f14 717 fmuld %f8,%f12,%f12 718 add %l5,%g1,%l5 719 720 faddd %f22,qq1,%f22 721 fmuld %f16,%f20,%f20 722 add %l6,%g1,%l6 723 724 faddd %f30,qq1,%f30 725 fmuld %f24,%f28,%f28 726 add %l7,%g1,%l7 727 728 fmuld %f2,%f4,%f4 729 730 fmuld %f10,%f12,%f12 731 732 fmuld %f18,%f20,%f20 733 734 fmuld %f26,%f28,%f28 735 736 fmuld %f0,%f6,%f6 737 faddd %f4,%f32,%f4 738 ldd [%l4+16],%f0 739 740 fmuld %f8,%f14,%f14 741 faddd %f12,%f34,%f12 742 ldd [%l5+16],%f8 743 744 fmuld %f16,%f22,%f22 745 faddd %f20,%f36,%f20 746 ldd [%l6+16],%f16 747 748 fmuld %f24,%f30,%f30 749 faddd %f28,%f38,%f28 750 ldd [%l7+16],%f24 751 752 fmuld %f0,%f6,%f6 753 faddd %f4,%f2,%f4 754 ldd [%l4+8],%f32 755 756 fmuld %f8,%f14,%f14 757 faddd %f12,%f10,%f12 758 ldd [%l5+8],%f34 759 760 fmuld %f16,%f22,%f22 761 faddd %f20,%f18,%f20 762 ldd [%l6+8],%f36 763 764 fmuld %f24,%f30,%f30 765 faddd %f28,%f26,%f28 766 ldd [%l7+8],%f38 767 768 fmuld %f32,%f4,%f4 769 770 fmuld %f34,%f12,%f12 771 772 fmuld %f36,%f20,%f20 773 774 fmuld %f38,%f28,%f28 775 776 fsubd %f6,%f4,%f6 777 778 fsubd %f14,%f12,%f14 779 780 fsubd %f22,%f20,%f22 781 782 fsubd %f30,%f28,%f30 783 784 faddd %f6,%f0,%f6 785 786 faddd %f14,%f8,%f14 787 788 faddd %f22,%f16,%f22 789 790 faddd %f30,%f24,%f30 791 mov %l0,%l4 792 793 fnegd %f6,%f4 794 lda [%i1]%asi,%l0 ! preload next argument 795 796 fnegd %f14,%f12 797 lda [%i1]%asi,%f0 798 799 fnegd %f22,%f20 800 lda [%i1+4]%asi,%f3 801 802 fnegd %f30,%f28 803 andn %l0,%i5,%l0 804 add %i1,%i2,%i1 805 806 andcc %l4,2,%g0 807 fmovdnz %icc,%f4,%f6 808 st %f6,[%o0] 809 810 andcc %l1,2,%g0 811 fmovdnz %icc,%f12,%f14 812 st %f14,[%o1] 813 814 andcc %l2,2,%g0 815 fmovdnz %icc,%f20,%f22 816 st %f22,[%o2] 817 818 andcc %l3,2,%g0 819 fmovdnz %icc,%f28,%f30 820 st %f30,[%o3] 821 822 addcc %i0,-1,%i0 823 bg,pt %icc,.loop0 824 ! delay slot 825 st %f7,[%o0+4] 826 827 ba,pt %icc,.end 828 ! delay slot 829 nop 830 831 .align 16 832 .case1: 833 fmuld %f24,pp3,%f30 ! sin(x3) 834 835 fmuld %f0,qq3,%f6 ! cos(x0) 836 837 fmuld %f8,qq3,%f14 ! cos(x1) 838 839 fmuld %f16,qq3,%f22 ! cos(x2) 840 841 faddd %f30,pp2,%f30 842 fmuld %f24,qq2,%f28 843 844 faddd %f6,qq2,%f6 845 fmuld %f0,pp2,%f4 846 847 faddd %f14,qq2,%f14 848 fmuld %f8,pp2,%f12 849 850 faddd %f22,qq2,%f22 851 fmuld %f16,pp2,%f20 852 853 fmuld %f24,%f30,%f30 854 faddd %f28,qq1,%f28 855 856 fmuld %f0,%f6,%f6 857 faddd %f4,pp1,%f4 858 859 fmuld %f8,%f14,%f14 860 faddd %f12,pp1,%f12 861 862 fmuld %f16,%f22,%f22 863 faddd %f20,pp1,%f20 864 865 faddd %f30,pp1,%f30 866 fmuld %f24,%f28,%f28 867 add %l7,%g1,%l7 868 869 faddd %f6,qq1,%f6 870 fmuld %f0,%f4,%f4 871 add %l4,%g1,%l4 872 873 faddd %f14,qq1,%f14 874 fmuld %f8,%f12,%f12 875 add %l5,%g1,%l5 876 877 faddd %f22,qq1,%f22 878 fmuld %f16,%f20,%f20 879 add %l6,%g1,%l6 880 881 fmuld %f24,%f30,%f30 882 883 fmuld %f2,%f4,%f4 884 885 fmuld %f10,%f12,%f12 886 887 fmuld %f18,%f20,%f20 888 889 fmuld %f26,%f30,%f30 890 ldd [%l7+8],%f24 891 892 fmuld %f0,%f6,%f6 893 faddd %f4,%f32,%f4 894 ldd [%l4+16],%f0 895 896 fmuld %f8,%f14,%f14 897 faddd %f12,%f34,%f12 898 ldd [%l5+16],%f8 899 900 fmuld %f16,%f22,%f22 901 faddd %f20,%f36,%f20 902 ldd [%l6+16],%f16 903 904 fmuld %f24,%f28,%f28 905 faddd %f38,%f30,%f30 906 907 fmuld %f0,%f6,%f6 908 faddd %f4,%f2,%f4 909 ldd [%l4+8],%f32 910 911 fmuld %f8,%f14,%f14 912 faddd %f12,%f10,%f12 913 ldd [%l5+8],%f34 914 915 fmuld %f16,%f22,%f22 916 faddd %f20,%f18,%f20 917 ldd [%l6+8],%f36 918 919 faddd %f26,%f30,%f30 920 ldd [%l7+16],%f38 921 922 fmuld %f32,%f4,%f4 923 924 fmuld %f34,%f12,%f12 925 926 fmuld %f36,%f20,%f20 927 928 fmuld %f38,%f30,%f30 929 930 fsubd %f6,%f4,%f6 931 932 fsubd %f14,%f12,%f14 933 934 fsubd %f22,%f20,%f22 935 936 faddd %f30,%f28,%f30 937 938 faddd %f6,%f0,%f6 939 940 faddd %f14,%f8,%f14 941 942 faddd %f22,%f16,%f22 943 944 faddd %f30,%f24,%f30 945 mov %l0,%l4 946 947 fnegd %f6,%f4 948 lda [%i1]%asi,%l0 ! preload next argument 949 950 fnegd %f14,%f12 951 lda [%i1]%asi,%f0 952 953 fnegd %f22,%f20 954 lda [%i1+4]%asi,%f3 955 956 fnegd %f30,%f28 957 andn %l0,%i5,%l0 958 add %i1,%i2,%i1 959 960 andcc %l4,2,%g0 961 fmovdnz %icc,%f4,%f6 962 st %f6,[%o0] 963 964 andcc %l1,2,%g0 965 fmovdnz %icc,%f12,%f14 966 st %f14,[%o1] 967 968 andcc %l2,2,%g0 969 fmovdnz %icc,%f20,%f22 970 st %f22,[%o2] 971 972 andcc %l3,2,%g0 973 fmovdnz %icc,%f28,%f30 974 st %f30,[%o3] 975 976 addcc %i0,-1,%i0 977 bg,pt %icc,.loop0 978 ! delay slot 979 st %f7,[%o0+4] 980 981 ba,pt %icc,.end 982 ! delay slot 983 nop 984 985 .align 16 986 .case2: 987 fmuld %f26,%f26,%f24 988 andcc %l3,1,%g0 989 bz,pn %icc,.case3 990 ! delay slot 991 fxor %f30,%f38,%f38 992 993 fmuld %f16,pp3,%f22 ! sin(x2) 994 995 fmuld %f0,qq3,%f6 ! cos(x0) 996 997 fmuld %f8,qq3,%f14 ! cos(x1) 998 999 faddd %f22,pp2,%f22 1000 fmuld %f16,qq2,%f20 1001 1002 fmuld %f24,qq3,%f30 ! cos(x3) 1003 1004 faddd %f6,qq2,%f6 1005 fmuld %f0,pp2,%f4 1006 1007 faddd %f14,qq2,%f14 1008 fmuld %f8,pp2,%f12 1009 1010 fmuld %f16,%f22,%f22 1011 faddd %f20,qq1,%f20 1012 1013 faddd %f30,qq2,%f30 1014 fmuld %f24,pp2,%f28 1015 1016 fmuld %f0,%f6,%f6 1017 faddd %f4,pp1,%f4 1018 1019 fmuld %f8,%f14,%f14 1020 faddd %f12,pp1,%f12 1021 1022 faddd %f22,pp1,%f22 1023 fmuld %f16,%f20,%f20 1024 add %l6,%g1,%l6 1025 1026 fmuld %f24,%f30,%f30 1027 faddd %f28,pp1,%f28 1028 1029 faddd %f6,qq1,%f6 1030 fmuld %f0,%f4,%f4 1031 add %l4,%g1,%l4 1032 1033 faddd %f14,qq1,%f14 1034 fmuld %f8,%f12,%f12 1035 add %l5,%g1,%l5 1036 1037 fmuld %f16,%f22,%f22 1038 1039 faddd %f30,qq1,%f30 1040 fmuld %f24,%f28,%f28 1041 add %l7,%g1,%l7 1042 1043 fmuld %f2,%f4,%f4 1044 1045 fmuld %f10,%f12,%f12 1046 1047 fmuld %f18,%f22,%f22 1048 ldd [%l6+8],%f16 1049 1050 fmuld %f26,%f28,%f28 1051 1052 fmuld %f0,%f6,%f6 1053 faddd %f4,%f32,%f4 1054 ldd [%l4+16],%f0 1055 1056 fmuld %f8,%f14,%f14 1057 faddd %f12,%f34,%f12 1058 ldd [%l5+16],%f8 1059 1060 fmuld %f16,%f20,%f20 1061 faddd %f36,%f22,%f22 1062 1063 fmuld %f24,%f30,%f30 1064 faddd %f28,%f38,%f28 1065 ldd [%l7+16],%f24 1066 1067 fmuld %f0,%f6,%f6 1068 faddd %f4,%f2,%f4 1069 ldd [%l4+8],%f32 1070 1071 fmuld %f8,%f14,%f14 1072 faddd %f12,%f10,%f12 1073 ldd [%l5+8],%f34 1074 1075 faddd %f18,%f22,%f22 1076 ldd [%l6+16],%f36 1077 1078 fmuld %f24,%f30,%f30 1079 faddd %f28,%f26,%f28 1080 ldd [%l7+8],%f38 1081 1082 fmuld %f32,%f4,%f4 1083 1084 fmuld %f34,%f12,%f12 1085 1086 fmuld %f36,%f22,%f22 1087 1088 fmuld %f38,%f28,%f28 1089 1090 fsubd %f6,%f4,%f6 1091 1092 fsubd %f14,%f12,%f14 1093 1094 faddd %f22,%f20,%f22 1095 1096 fsubd %f30,%f28,%f30 1097 1098 faddd %f6,%f0,%f6 1099 1100 faddd %f14,%f8,%f14 1101 1102 faddd %f22,%f16,%f22 1103 1104 faddd %f30,%f24,%f30 1105 mov %l0,%l4 1106 1107 fnegd %f6,%f4 1108 lda [%i1]%asi,%l0 ! preload next argument 1109 1110 fnegd %f14,%f12 1111 lda [%i1]%asi,%f0 1112 1113 fnegd %f22,%f20 1114 lda [%i1+4]%asi,%f3 1115 1116 fnegd %f30,%f28 1117 andn %l0,%i5,%l0 1118 add %i1,%i2,%i1 1119 1120 andcc %l4,2,%g0 1121 fmovdnz %icc,%f4,%f6 1122 st %f6,[%o0] 1123 1124 andcc %l1,2,%g0 1125 fmovdnz %icc,%f12,%f14 1126 st %f14,[%o1] 1127 1128 andcc %l2,2,%g0 1129 fmovdnz %icc,%f20,%f22 1130 st %f22,[%o2] 1131 1132 andcc %l3,2,%g0 1133 fmovdnz %icc,%f28,%f30 1134 st %f30,[%o3] 1135 1136 addcc %i0,-1,%i0 1137 bg,pt %icc,.loop0 1138 ! delay slot 1139 st %f7,[%o0+4] 1140 1141 ba,pt %icc,.end 1142 ! delay slot 1143 nop 1144 1145 .align 16 1146 .case3: 1147 fmuld %f16,pp3,%f22 ! sin(x2) 1148 1149 fmuld %f24,pp3,%f30 ! sin(x3) 1150 1151 fmuld %f0,qq3,%f6 ! cos(x0) 1152 1153 fmuld %f8,qq3,%f14 ! cos(x1) 1154 1155 faddd %f22,pp2,%f22 1156 fmuld %f16,qq2,%f20 1157 1158 faddd %f30,pp2,%f30 1159 fmuld %f24,qq2,%f28 1160 1161 faddd %f6,qq2,%f6 1162 fmuld %f0,pp2,%f4 1163 1164 faddd %f14,qq2,%f14 1165 fmuld %f8,pp2,%f12 1166 1167 fmuld %f16,%f22,%f22 1168 faddd %f20,qq1,%f20 1169 1170 fmuld %f24,%f30,%f30 1171 faddd %f28,qq1,%f28 1172 1173 fmuld %f0,%f6,%f6 1174 faddd %f4,pp1,%f4 1175 1176 fmuld %f8,%f14,%f14 1177 faddd %f12,pp1,%f12 1178 1179 faddd %f22,pp1,%f22 1180 fmuld %f16,%f20,%f20 1181 add %l6,%g1,%l6 1182 1183 faddd %f30,pp1,%f30 1184 fmuld %f24,%f28,%f28 1185 add %l7,%g1,%l7 1186 1187 faddd %f6,qq1,%f6 1188 fmuld %f0,%f4,%f4 1189 add %l4,%g1,%l4 1190 1191 faddd %f14,qq1,%f14 1192 fmuld %f8,%f12,%f12 1193 add %l5,%g1,%l5 1194 1195 fmuld %f16,%f22,%f22 1196 1197 fmuld %f24,%f30,%f30 1198 1199 fmuld %f2,%f4,%f4 1200 1201 fmuld %f10,%f12,%f12 1202 1203 fmuld %f18,%f22,%f22 1204 ldd [%l6+8],%f16 1205 1206 fmuld %f26,%f30,%f30 1207 ldd [%l7+8],%f24 1208 1209 fmuld %f0,%f6,%f6 1210 faddd %f4,%f32,%f4 1211 ldd [%l4+16],%f0 1212 1213 fmuld %f8,%f14,%f14 1214 faddd %f12,%f34,%f12 1215 ldd [%l5+16],%f8 1216 1217 fmuld %f16,%f20,%f20 1218 faddd %f36,%f22,%f22 1219 1220 fmuld %f24,%f28,%f28 1221 faddd %f38,%f30,%f30 1222 1223 fmuld %f0,%f6,%f6 1224 faddd %f4,%f2,%f4 1225 ldd [%l4+8],%f32 1226 1227 fmuld %f8,%f14,%f14 1228 faddd %f12,%f10,%f12 1229 ldd [%l5+8],%f34 1230 1231 faddd %f18,%f22,%f22 1232 ldd [%l6+16],%f36 1233 1234 faddd %f26,%f30,%f30 1235 ldd [%l7+16],%f38 1236 1237 fmuld %f32,%f4,%f4 1238 1239 fmuld %f34,%f12,%f12 1240 1241 fmuld %f36,%f22,%f22 1242 1243 fmuld %f38,%f30,%f30 1244 1245 fsubd %f6,%f4,%f6 1246 1247 fsubd %f14,%f12,%f14 1248 1249 faddd %f22,%f20,%f22 1250 1251 faddd %f30,%f28,%f30 1252 1253 faddd %f6,%f0,%f6 1254 1255 faddd %f14,%f8,%f14 1256 1257 faddd %f22,%f16,%f22 1258 1259 faddd %f30,%f24,%f30 1260 mov %l0,%l4 1261 1262 fnegd %f6,%f4 1263 lda [%i1]%asi,%l0 ! preload next argument 1264 1265 fnegd %f14,%f12 1266 lda [%i1]%asi,%f0 1267 1268 fnegd %f22,%f20 1269 lda [%i1+4]%asi,%f3 1270 1271 fnegd %f30,%f28 1272 andn %l0,%i5,%l0 1273 add %i1,%i2,%i1 1274 1275 andcc %l4,2,%g0 1276 fmovdnz %icc,%f4,%f6 1277 st %f6,[%o0] 1278 1279 andcc %l1,2,%g0 1280 fmovdnz %icc,%f12,%f14 1281 st %f14,[%o1] 1282 1283 andcc %l2,2,%g0 1284 fmovdnz %icc,%f20,%f22 1285 st %f22,[%o2] 1286 1287 andcc %l3,2,%g0 1288 fmovdnz %icc,%f28,%f30 1289 st %f30,[%o3] 1290 1291 addcc %i0,-1,%i0 1292 bg,pt %icc,.loop0 1293 ! delay slot 1294 st %f7,[%o0+4] 1295 1296 ba,pt %icc,.end 1297 ! delay slot 1298 nop 1299 1300 .align 16 1301 .case4: 1302 fmuld %f18,%f18,%f16 1303 andcc %l2,1,%g0 1304 bz,pn %icc,.case6 1305 ! delay slot 1306 fxor %f22,%f36,%f36 1307 1308 fmuld %f26,%f26,%f24 1309 andcc %l3,1,%g0 1310 bz,pn %icc,.case5 1311 ! delay slot 1312 fxor %f30,%f38,%f38 1313 1314 fmuld %f8,pp3,%f14 ! sin(x1) 1315 1316 fmuld %f0,qq3,%f6 ! cos(x0) 1317 1318 faddd %f14,pp2,%f14 1319 fmuld %f8,qq2,%f12 1320 1321 fmuld %f16,qq3,%f22 ! cos(x2) 1322 1323 fmuld %f24,qq3,%f30 ! cos(x3) 1324 1325 faddd %f6,qq2,%f6 1326 fmuld %f0,pp2,%f4 1327 1328 fmuld %f8,%f14,%f14 1329 faddd %f12,qq1,%f12 1330 1331 faddd %f22,qq2,%f22 1332 fmuld %f16,pp2,%f20 1333 1334 faddd %f30,qq2,%f30 1335 fmuld %f24,pp2,%f28 1336 1337 fmuld %f0,%f6,%f6 1338 faddd %f4,pp1,%f4 1339 1340 faddd %f14,pp1,%f14 1341 fmuld %f8,%f12,%f12 1342 add %l5,%g1,%l5 1343 1344 fmuld %f16,%f22,%f22 1345 faddd %f20,pp1,%f20 1346 1347 fmuld %f24,%f30,%f30 1348 faddd %f28,pp1,%f28 1349 1350 faddd %f6,qq1,%f6 1351 fmuld %f0,%f4,%f4 1352 add %l4,%g1,%l4 1353 1354 fmuld %f8,%f14,%f14 1355 1356 faddd %f22,qq1,%f22 1357 fmuld %f16,%f20,%f20 1358 add %l6,%g1,%l6 1359 1360 faddd %f30,qq1,%f30 1361 fmuld %f24,%f28,%f28 1362 add %l7,%g1,%l7 1363 1364 fmuld %f2,%f4,%f4 1365 1366 fmuld %f10,%f14,%f14 1367 ldd [%l5+8],%f8 1368 1369 fmuld %f18,%f20,%f20 1370 1371 fmuld %f26,%f28,%f28 1372 1373 fmuld %f0,%f6,%f6 1374 faddd %f4,%f32,%f4 1375 ldd [%l4+16],%f0 1376 1377 fmuld %f8,%f12,%f12 1378 faddd %f34,%f14,%f14 1379 1380 fmuld %f16,%f22,%f22 1381 faddd %f20,%f36,%f20 1382 ldd [%l6+16],%f16 1383 1384 fmuld %f24,%f30,%f30 1385 faddd %f28,%f38,%f28 1386 ldd [%l7+16],%f24 1387 1388 fmuld %f0,%f6,%f6 1389 faddd %f4,%f2,%f4 1390 ldd [%l4+8],%f32 1391 1392 faddd %f10,%f14,%f14 1393 ldd [%l5+16],%f34 1394 1395 fmuld %f16,%f22,%f22 1396 faddd %f20,%f18,%f20 1397 ldd [%l6+8],%f36 1398 1399 fmuld %f24,%f30,%f30 1400 faddd %f28,%f26,%f28 1401 ldd [%l7+8],%f38 1402 1403 fmuld %f32,%f4,%f4 1404 1405 fmuld %f34,%f14,%f14 1406 1407 fmuld %f36,%f20,%f20 1408 1409 fmuld %f38,%f28,%f28 1410 1411 fsubd %f6,%f4,%f6 1412 1413 faddd %f14,%f12,%f14 1414 1415 fsubd %f22,%f20,%f22 1416 1417 fsubd %f30,%f28,%f30 1418 1419 faddd %f6,%f0,%f6 1420 1421 faddd %f14,%f8,%f14 1422 1423 faddd %f22,%f16,%f22 1424 1425 faddd %f30,%f24,%f30 1426 mov %l0,%l4 1427 1428 fnegd %f6,%f4 1429 lda [%i1]%asi,%l0 ! preload next argument 1430 1431 fnegd %f14,%f12 1432 lda [%i1]%asi,%f0 1433 1434 fnegd %f22,%f20 1435 lda [%i1+4]%asi,%f3 1436 1437 fnegd %f30,%f28 1438 andn %l0,%i5,%l0 1439 add %i1,%i2,%i1 1440 1441 andcc %l4,2,%g0 1442 fmovdnz %icc,%f4,%f6 1443 st %f6,[%o0] 1444 1445 andcc %l1,2,%g0 1446 fmovdnz %icc,%f12,%f14 1447 st %f14,[%o1] 1448 1449 andcc %l2,2,%g0 1450 fmovdnz %icc,%f20,%f22 1451 st %f22,[%o2] 1452 1453 andcc %l3,2,%g0 1454 fmovdnz %icc,%f28,%f30 1455 st %f30,[%o3] 1456 1457 addcc %i0,-1,%i0 1458 bg,pt %icc,.loop0 1459 ! delay slot 1460 st %f7,[%o0+4] 1461 1462 ba,pt %icc,.end 1463 ! delay slot 1464 nop 1465 1466 .align 16 1467 .case5: 1468 fmuld %f8,pp3,%f14 ! sin(x1) 1469 1470 fmuld %f24,pp3,%f30 ! sin(x3) 1471 1472 fmuld %f0,qq3,%f6 ! cos(x0) 1473 1474 faddd %f14,pp2,%f14 1475 fmuld %f8,qq2,%f12 1476 1477 fmuld %f16,qq3,%f22 ! cos(x2) 1478 1479 faddd %f30,pp2,%f30 1480 fmuld %f24,qq2,%f28 1481 1482 faddd %f6,qq2,%f6 1483 fmuld %f0,pp2,%f4 1484 1485 fmuld %f8,%f14,%f14 1486 faddd %f12,qq1,%f12 1487 1488 faddd %f22,qq2,%f22 1489 fmuld %f16,pp2,%f20 1490 1491 fmuld %f24,%f30,%f30 1492 faddd %f28,qq1,%f28 1493 1494 fmuld %f0,%f6,%f6 1495 faddd %f4,pp1,%f4 1496 1497 faddd %f14,pp1,%f14 1498 fmuld %f8,%f12,%f12 1499 add %l5,%g1,%l5 1500 1501 fmuld %f16,%f22,%f22 1502 faddd %f20,pp1,%f20 1503 1504 faddd %f30,pp1,%f30 1505 fmuld %f24,%f28,%f28 1506 add %l7,%g1,%l7 1507 1508 faddd %f6,qq1,%f6 1509 fmuld %f0,%f4,%f4 1510 add %l4,%g1,%l4 1511 1512 fmuld %f8,%f14,%f14 1513 1514 faddd %f22,qq1,%f22 1515 fmuld %f16,%f20,%f20 1516 add %l6,%g1,%l6 1517 1518 fmuld %f24,%f30,%f30 1519 1520 fmuld %f2,%f4,%f4 1521 1522 fmuld %f10,%f14,%f14 1523 ldd [%l5+8],%f8 1524 1525 fmuld %f18,%f20,%f20 1526 1527 fmuld %f26,%f30,%f30 1528 ldd [%l7+8],%f24 1529 1530 fmuld %f0,%f6,%f6 1531 faddd %f4,%f32,%f4 1532 ldd [%l4+16],%f0 1533 1534 fmuld %f8,%f12,%f12 1535 faddd %f34,%f14,%f14 1536 1537 fmuld %f16,%f22,%f22 1538 faddd %f20,%f36,%f20 1539 ldd [%l6+16],%f16 1540 1541 fmuld %f24,%f28,%f28 1542 faddd %f38,%f30,%f30 1543 1544 fmuld %f0,%f6,%f6 1545 faddd %f4,%f2,%f4 1546 ldd [%l4+8],%f32 1547 1548 faddd %f10,%f14,%f14 1549 ldd [%l5+16],%f34 1550 1551 fmuld %f16,%f22,%f22 1552 faddd %f20,%f18,%f20 1553 ldd [%l6+8],%f36 1554 1555 faddd %f26,%f30,%f30 1556 ldd [%l7+16],%f38 1557 1558 fmuld %f32,%f4,%f4 1559 1560 fmuld %f34,%f14,%f14 1561 1562 fmuld %f36,%f20,%f20 1563 1564 fmuld %f38,%f30,%f30 1565 1566 fsubd %f6,%f4,%f6 1567 1568 faddd %f14,%f12,%f14 1569 1570 fsubd %f22,%f20,%f22 1571 1572 faddd %f30,%f28,%f30 1573 1574 faddd %f6,%f0,%f6 1575 1576 faddd %f14,%f8,%f14 1577 1578 faddd %f22,%f16,%f22 1579 1580 faddd %f30,%f24,%f30 1581 mov %l0,%l4 1582 1583 fnegd %f6,%f4 1584 lda [%i1]%asi,%l0 ! preload next argument 1585 1586 fnegd %f14,%f12 1587 lda [%i1]%asi,%f0 1588 1589 fnegd %f22,%f20 1590 lda [%i1+4]%asi,%f3 1591 1592 fnegd %f30,%f28 1593 andn %l0,%i5,%l0 1594 add %i1,%i2,%i1 1595 1596 andcc %l4,2,%g0 1597 fmovdnz %icc,%f4,%f6 1598 st %f6,[%o0] 1599 1600 andcc %l1,2,%g0 1601 fmovdnz %icc,%f12,%f14 1602 st %f14,[%o1] 1603 1604 andcc %l2,2,%g0 1605 fmovdnz %icc,%f20,%f22 1606 st %f22,[%o2] 1607 1608 andcc %l3,2,%g0 1609 fmovdnz %icc,%f28,%f30 1610 st %f30,[%o3] 1611 1612 addcc %i0,-1,%i0 1613 bg,pt %icc,.loop0 1614 ! delay slot 1615 st %f7,[%o0+4] 1616 1617 ba,pt %icc,.end 1618 ! delay slot 1619 nop 1620 1621 .align 16 1622 .case6: 1623 fmuld %f26,%f26,%f24 1624 andcc %l3,1,%g0 1625 bz,pn %icc,.case7 1626 ! delay slot 1627 fxor %f30,%f38,%f38 1628 1629 fmuld %f8,pp3,%f14 ! sin(x1) 1630 1631 fmuld %f16,pp3,%f22 ! sin(x2) 1632 1633 fmuld %f0,qq3,%f6 ! cos(x0) 1634 1635 faddd %f14,pp2,%f14 1636 fmuld %f8,qq2,%f12 1637 1638 faddd %f22,pp2,%f22 1639 fmuld %f16,qq2,%f20 1640 1641 fmuld %f24,qq3,%f30 ! cos(x3) 1642 1643 faddd %f6,qq2,%f6 1644 fmuld %f0,pp2,%f4 1645 1646 fmuld %f8,%f14,%f14 1647 faddd %f12,qq1,%f12 1648 1649 fmuld %f16,%f22,%f22 1650 faddd %f20,qq1,%f20 1651 1652 faddd %f30,qq2,%f30 1653 fmuld %f24,pp2,%f28 1654 1655 fmuld %f0,%f6,%f6 1656 faddd %f4,pp1,%f4 1657 1658 faddd %f14,pp1,%f14 1659 fmuld %f8,%f12,%f12 1660 add %l5,%g1,%l5 1661 1662 faddd %f22,pp1,%f22 1663 fmuld %f16,%f20,%f20 1664 add %l6,%g1,%l6 1665 1666 fmuld %f24,%f30,%f30 1667 faddd %f28,pp1,%f28 1668 1669 faddd %f6,qq1,%f6 1670 fmuld %f0,%f4,%f4 1671 add %l4,%g1,%l4 1672 1673 fmuld %f8,%f14,%f14 1674 1675 fmuld %f16,%f22,%f22 1676 1677 faddd %f30,qq1,%f30 1678 fmuld %f24,%f28,%f28 1679 add %l7,%g1,%l7 1680 1681 fmuld %f2,%f4,%f4 1682 1683 fmuld %f10,%f14,%f14 1684 ldd [%l5+8],%f8 1685 1686 fmuld %f18,%f22,%f22 1687 ldd [%l6+8],%f16 1688 1689 fmuld %f26,%f28,%f28 1690 1691 fmuld %f0,%f6,%f6 1692 faddd %f4,%f32,%f4 1693 ldd [%l4+16],%f0 1694 1695 fmuld %f8,%f12,%f12 1696 faddd %f34,%f14,%f14 1697 1698 fmuld %f16,%f20,%f20 1699 faddd %f36,%f22,%f22 1700 1701 fmuld %f24,%f30,%f30 1702 faddd %f28,%f38,%f28 1703 ldd [%l7+16],%f24 1704 1705 fmuld %f0,%f6,%f6 1706 faddd %f4,%f2,%f4 1707 ldd [%l4+8],%f32 1708 1709 faddd %f10,%f14,%f14 1710 ldd [%l5+16],%f34 1711 1712 faddd %f18,%f22,%f22 1713 ldd [%l6+16],%f36 1714 1715 fmuld %f24,%f30,%f30 1716 faddd %f28,%f26,%f28 1717 ldd [%l7+8],%f38 1718 1719 fmuld %f32,%f4,%f4 1720 1721 fmuld %f34,%f14,%f14 1722 1723 fmuld %f36,%f22,%f22 1724 1725 fmuld %f38,%f28,%f28 1726 1727 fsubd %f6,%f4,%f6 1728 1729 faddd %f14,%f12,%f14 1730 1731 faddd %f22,%f20,%f22 1732 1733 fsubd %f30,%f28,%f30 1734 1735 faddd %f6,%f0,%f6 1736 1737 faddd %f14,%f8,%f14 1738 1739 faddd %f22,%f16,%f22 1740 1741 faddd %f30,%f24,%f30 1742 mov %l0,%l4 1743 1744 fnegd %f6,%f4 1745 lda [%i1]%asi,%l0 ! preload next argument 1746 1747 fnegd %f14,%f12 1748 lda [%i1]%asi,%f0 1749 1750 fnegd %f22,%f20 1751 lda [%i1+4]%asi,%f3 1752 1753 fnegd %f30,%f28 1754 andn %l0,%i5,%l0 1755 add %i1,%i2,%i1 1756 1757 andcc %l4,2,%g0 1758 fmovdnz %icc,%f4,%f6 1759 st %f6,[%o0] 1760 1761 andcc %l1,2,%g0 1762 fmovdnz %icc,%f12,%f14 1763 st %f14,[%o1] 1764 1765 andcc %l2,2,%g0 1766 fmovdnz %icc,%f20,%f22 1767 st %f22,[%o2] 1768 1769 andcc %l3,2,%g0 1770 fmovdnz %icc,%f28,%f30 1771 st %f30,[%o3] 1772 1773 addcc %i0,-1,%i0 1774 bg,pt %icc,.loop0 1775 ! delay slot 1776 st %f7,[%o0+4] 1777 1778 ba,pt %icc,.end 1779 ! delay slot 1780 nop 1781 1782 .align 16 1783 .case7: 1784 fmuld %f8,pp3,%f14 ! sin(x1) 1785 1786 fmuld %f16,pp3,%f22 ! sin(x2) 1787 1788 fmuld %f24,pp3,%f30 ! sin(x3) 1789 1790 fmuld %f0,qq3,%f6 ! cos(x0) 1791 1792 faddd %f14,pp2,%f14 1793 fmuld %f8,qq2,%f12 1794 1795 faddd %f22,pp2,%f22 1796 fmuld %f16,qq2,%f20 1797 1798 faddd %f30,pp2,%f30 1799 fmuld %f24,qq2,%f28 1800 1801 faddd %f6,qq2,%f6 1802 fmuld %f0,pp2,%f4 1803 1804 fmuld %f8,%f14,%f14 1805 faddd %f12,qq1,%f12 1806 1807 fmuld %f16,%f22,%f22 1808 faddd %f20,qq1,%f20 1809 1810 fmuld %f24,%f30,%f30 1811 faddd %f28,qq1,%f28 1812 1813 fmuld %f0,%f6,%f6 1814 faddd %f4,pp1,%f4 1815 1816 faddd %f14,pp1,%f14 1817 fmuld %f8,%f12,%f12 1818 add %l5,%g1,%l5 1819 1820 faddd %f22,pp1,%f22 1821 fmuld %f16,%f20,%f20 1822 add %l6,%g1,%l6 1823 1824 faddd %f30,pp1,%f30 1825 fmuld %f24,%f28,%f28 1826 add %l7,%g1,%l7 1827 1828 faddd %f6,qq1,%f6 1829 fmuld %f0,%f4,%f4 1830 add %l4,%g1,%l4 1831 1832 fmuld %f8,%f14,%f14 1833 1834 fmuld %f16,%f22,%f22 1835 1836 fmuld %f24,%f30,%f30 1837 1838 fmuld %f2,%f4,%f4 1839 1840 fmuld %f10,%f14,%f14 1841 ldd [%l5+8],%f8 1842 1843 fmuld %f18,%f22,%f22 1844 ldd [%l6+8],%f16 1845 1846 fmuld %f26,%f30,%f30 1847 ldd [%l7+8],%f24 1848 1849 fmuld %f0,%f6,%f6 1850 faddd %f4,%f32,%f4 1851 ldd [%l4+16],%f0 1852 1853 fmuld %f8,%f12,%f12 1854 faddd %f34,%f14,%f14 1855 1856 fmuld %f16,%f20,%f20 1857 faddd %f36,%f22,%f22 1858 1859 fmuld %f24,%f28,%f28 1860 faddd %f38,%f30,%f30 1861 1862 fmuld %f0,%f6,%f6 1863 faddd %f4,%f2,%f4 1864 ldd [%l4+8],%f32 1865 1866 faddd %f10,%f14,%f14 1867 ldd [%l5+16],%f34 1868 1869 faddd %f18,%f22,%f22 1870 ldd [%l6+16],%f36 1871 1872 faddd %f26,%f30,%f30 1873 ldd [%l7+16],%f38 1874 1875 fmuld %f32,%f4,%f4 1876 1877 fmuld %f34,%f14,%f14 1878 1879 fmuld %f36,%f22,%f22 1880 1881 fmuld %f38,%f30,%f30 1882 1883 fsubd %f6,%f4,%f6 1884 1885 faddd %f14,%f12,%f14 1886 1887 faddd %f22,%f20,%f22 1888 1889 faddd %f30,%f28,%f30 1890 1891 faddd %f6,%f0,%f6 1892 1893 faddd %f14,%f8,%f14 1894 1895 faddd %f22,%f16,%f22 1896 1897 faddd %f30,%f24,%f30 1898 mov %l0,%l4 1899 1900 fnegd %f6,%f4 1901 lda [%i1]%asi,%l0 ! preload next argument 1902 1903 fnegd %f14,%f12 1904 lda [%i1]%asi,%f0 1905 1906 fnegd %f22,%f20 1907 lda [%i1+4]%asi,%f3 1908 1909 fnegd %f30,%f28 1910 andn %l0,%i5,%l0 1911 add %i1,%i2,%i1 1912 1913 andcc %l4,2,%g0 1914 fmovdnz %icc,%f4,%f6 1915 st %f6,[%o0] 1916 1917 andcc %l1,2,%g0 1918 fmovdnz %icc,%f12,%f14 1919 st %f14,[%o1] 1920 1921 andcc %l2,2,%g0 1922 fmovdnz %icc,%f20,%f22 1923 st %f22,[%o2] 1924 1925 andcc %l3,2,%g0 1926 fmovdnz %icc,%f28,%f30 1927 st %f30,[%o3] 1928 1929 addcc %i0,-1,%i0 1930 bg,pt %icc,.loop0 1931 ! delay slot 1932 st %f7,[%o0+4] 1933 1934 ba,pt %icc,.end 1935 ! delay slot 1936 nop 1937 1938 .align 16 1939 .case8: 1940 fmuld %f10,%f10,%f8 1941 andcc %l1,1,%g0 1942 bz,pn %icc,.case12 1943 ! delay slot 1944 fxor %f14,%f34,%f34 1945 1946 fmuld %f18,%f18,%f16 1947 andcc %l2,1,%g0 1948 bz,pn %icc,.case10 1949 ! delay slot 1950 fxor %f22,%f36,%f36 1951 1952 fmuld %f26,%f26,%f24 1953 andcc %l3,1,%g0 1954 bz,pn %icc,.case9 1955 ! delay slot 1956 fxor %f30,%f38,%f38 1957 1958 fmuld %f0,pp3,%f6 ! sin(x0) 1959 1960 faddd %f6,pp2,%f6 1961 fmuld %f0,qq2,%f4 1962 1963 fmuld %f8,qq3,%f14 ! cos(x1) 1964 1965 fmuld %f16,qq3,%f22 ! cos(x2) 1966 1967 fmuld %f24,qq3,%f30 ! cos(x3) 1968 1969 fmuld %f0,%f6,%f6 1970 faddd %f4,qq1,%f4 1971 1972 faddd %f14,qq2,%f14 1973 fmuld %f8,pp2,%f12 1974 1975 faddd %f22,qq2,%f22 1976 fmuld %f16,pp2,%f20 1977 1978 faddd %f30,qq2,%f30 1979 fmuld %f24,pp2,%f28 1980 1981 faddd %f6,pp1,%f6 1982 fmuld %f0,%f4,%f4 1983 add %l4,%g1,%l4 1984 1985 fmuld %f8,%f14,%f14 1986 faddd %f12,pp1,%f12 1987 1988 fmuld %f16,%f22,%f22 1989 faddd %f20,pp1,%f20 1990 1991 fmuld %f24,%f30,%f30 1992 faddd %f28,pp1,%f28 1993 1994 fmuld %f0,%f6,%f6 1995 1996 faddd %f14,qq1,%f14 1997 fmuld %f8,%f12,%f12 1998 add %l5,%g1,%l5 1999 2000 faddd %f22,qq1,%f22 2001 fmuld %f16,%f20,%f20 2002 add %l6,%g1,%l6 2003 2004 faddd %f30,qq1,%f30 2005 fmuld %f24,%f28,%f28 2006 add %l7,%g1,%l7 2007 2008 fmuld %f2,%f6,%f6 2009 ldd [%l4+8],%f0 2010 2011 fmuld %f10,%f12,%f12 2012 2013 fmuld %f18,%f20,%f20 2014 2015 fmuld %f26,%f28,%f28 2016 2017 fmuld %f0,%f4,%f4 2018 faddd %f32,%f6,%f6 2019 2020 fmuld %f8,%f14,%f14 2021 faddd %f12,%f34,%f12 2022 ldd [%l5+16],%f8 2023 2024 fmuld %f16,%f22,%f22 2025 faddd %f20,%f36,%f20 2026 ldd [%l6+16],%f16 2027 2028 fmuld %f24,%f30,%f30 2029 faddd %f28,%f38,%f28 2030 ldd [%l7+16],%f24 2031 2032 faddd %f2,%f6,%f6 2033 ldd [%l4+16],%f32 2034 2035 fmuld %f8,%f14,%f14 2036 faddd %f12,%f10,%f12 2037 ldd [%l5+8],%f34 2038 2039 fmuld %f16,%f22,%f22 2040 faddd %f20,%f18,%f20 2041 ldd [%l6+8],%f36 2042 2043 fmuld %f24,%f30,%f30 2044 faddd %f28,%f26,%f28 2045 ldd [%l7+8],%f38 2046 2047 fmuld %f32,%f6,%f6 2048 2049 fmuld %f34,%f12,%f12 2050 2051 fmuld %f36,%f20,%f20 2052 2053 fmuld %f38,%f28,%f28 2054 2055 faddd %f6,%f4,%f6 2056 2057 fsubd %f14,%f12,%f14 2058 2059 fsubd %f22,%f20,%f22 2060 2061 fsubd %f30,%f28,%f30 2062 2063 faddd %f6,%f0,%f6 2064 2065 faddd %f14,%f8,%f14 2066 2067 faddd %f22,%f16,%f22 2068 2069 faddd %f30,%f24,%f30 2070 mov %l0,%l4 2071 2072 fnegd %f6,%f4 2073 lda [%i1]%asi,%l0 ! preload next argument 2074 2075 fnegd %f14,%f12 2076 lda [%i1]%asi,%f0 2077 2078 fnegd %f22,%f20 2079 lda [%i1+4]%asi,%f3 2080 2081 fnegd %f30,%f28 2082 andn %l0,%i5,%l0 2083 add %i1,%i2,%i1 2084 2085 andcc %l4,2,%g0 2086 fmovdnz %icc,%f4,%f6 2087 st %f6,[%o0] 2088 2089 andcc %l1,2,%g0 2090 fmovdnz %icc,%f12,%f14 2091 st %f14,[%o1] 2092 2093 andcc %l2,2,%g0 2094 fmovdnz %icc,%f20,%f22 2095 st %f22,[%o2] 2096 2097 andcc %l3,2,%g0 2098 fmovdnz %icc,%f28,%f30 2099 st %f30,[%o3] 2100 2101 addcc %i0,-1,%i0 2102 bg,pt %icc,.loop0 2103 ! delay slot 2104 st %f7,[%o0+4] 2105 2106 ba,pt %icc,.end 2107 ! delay slot 2108 nop 2109 2110 .align 16 2111 .case9: 2112 fmuld %f0,pp3,%f6 ! sin(x0) 2113 2114 fmuld %f24,pp3,%f30 ! sin(x3) 2115 2116 faddd %f6,pp2,%f6 2117 fmuld %f0,qq2,%f4 2118 2119 fmuld %f8,qq3,%f14 ! cos(x1) 2120 2121 fmuld %f16,qq3,%f22 ! cos(x2) 2122 2123 faddd %f30,pp2,%f30 2124 fmuld %f24,qq2,%f28 2125 2126 fmuld %f0,%f6,%f6 2127 faddd %f4,qq1,%f4 2128 2129 faddd %f14,qq2,%f14 2130 fmuld %f8,pp2,%f12 2131 2132 faddd %f22,qq2,%f22 2133 fmuld %f16,pp2,%f20 2134 2135 fmuld %f24,%f30,%f30 2136 faddd %f28,qq1,%f28 2137 2138 faddd %f6,pp1,%f6 2139 fmuld %f0,%f4,%f4 2140 add %l4,%g1,%l4 2141 2142 fmuld %f8,%f14,%f14 2143 faddd %f12,pp1,%f12 2144 2145 fmuld %f16,%f22,%f22 2146 faddd %f20,pp1,%f20 2147 2148 faddd %f30,pp1,%f30 2149 fmuld %f24,%f28,%f28 2150 add %l7,%g1,%l7 2151 2152 fmuld %f0,%f6,%f6 2153 2154 faddd %f14,qq1,%f14 2155 fmuld %f8,%f12,%f12 2156 add %l5,%g1,%l5 2157 2158 faddd %f22,qq1,%f22 2159 fmuld %f16,%f20,%f20 2160 add %l6,%g1,%l6 2161 2162 fmuld %f24,%f30,%f30 2163 2164 fmuld %f2,%f6,%f6 2165 ldd [%l4+8],%f0 2166 2167 fmuld %f10,%f12,%f12 2168 2169 fmuld %f18,%f20,%f20 2170 2171 fmuld %f26,%f30,%f30 2172 ldd [%l7+8],%f24 2173 2174 fmuld %f0,%f4,%f4 2175 faddd %f32,%f6,%f6 2176 2177 fmuld %f8,%f14,%f14 2178 faddd %f12,%f34,%f12 2179 ldd [%l5+16],%f8 2180 2181 fmuld %f16,%f22,%f22 2182 faddd %f20,%f36,%f20 2183 ldd [%l6+16],%f16 2184 2185 fmuld %f24,%f28,%f28 2186 faddd %f38,%f30,%f30 2187 2188 faddd %f2,%f6,%f6 2189 ldd [%l4+16],%f32 2190 2191 fmuld %f8,%f14,%f14 2192 faddd %f12,%f10,%f12 2193 ldd [%l5+8],%f34 2194 2195 fmuld %f16,%f22,%f22 2196 faddd %f20,%f18,%f20 2197 ldd [%l6+8],%f36 2198 2199 faddd %f26,%f30,%f30 2200 ldd [%l7+16],%f38 2201 2202 fmuld %f32,%f6,%f6 2203 2204 fmuld %f34,%f12,%f12 2205 2206 fmuld %f36,%f20,%f20 2207 2208 fmuld %f38,%f30,%f30 2209 2210 faddd %f6,%f4,%f6 2211 2212 fsubd %f14,%f12,%f14 2213 2214 fsubd %f22,%f20,%f22 2215 2216 faddd %f30,%f28,%f30 2217 2218 faddd %f6,%f0,%f6 2219 2220 faddd %f14,%f8,%f14 2221 2222 faddd %f22,%f16,%f22 2223 2224 faddd %f30,%f24,%f30 2225 mov %l0,%l4 2226 2227 fnegd %f6,%f4 2228 lda [%i1]%asi,%l0 ! preload next argument 2229 2230 fnegd %f14,%f12 2231 lda [%i1]%asi,%f0 2232 2233 fnegd %f22,%f20 2234 lda [%i1+4]%asi,%f3 2235 2236 fnegd %f30,%f28 2237 andn %l0,%i5,%l0 2238 add %i1,%i2,%i1 2239 2240 andcc %l4,2,%g0 2241 fmovdnz %icc,%f4,%f6 2242 st %f6,[%o0] 2243 2244 andcc %l1,2,%g0 2245 fmovdnz %icc,%f12,%f14 2246 st %f14,[%o1] 2247 2248 andcc %l2,2,%g0 2249 fmovdnz %icc,%f20,%f22 2250 st %f22,[%o2] 2251 2252 andcc %l3,2,%g0 2253 fmovdnz %icc,%f28,%f30 2254 st %f30,[%o3] 2255 2256 addcc %i0,-1,%i0 2257 bg,pt %icc,.loop0 2258 ! delay slot 2259 st %f7,[%o0+4] 2260 2261 ba,pt %icc,.end 2262 ! delay slot 2263 nop 2264 2265 .align 16 2266 .case10: 2267 fmuld %f26,%f26,%f24 2268 andcc %l3,1,%g0 2269 bz,pn %icc,.case11 2270 ! delay slot 2271 fxor %f30,%f38,%f38 2272 2273 fmuld %f0,pp3,%f6 ! sin(x0) 2274 2275 fmuld %f16,pp3,%f22 ! sin(x2) 2276 2277 faddd %f6,pp2,%f6 2278 fmuld %f0,qq2,%f4 2279 2280 fmuld %f8,qq3,%f14 ! cos(x1) 2281 2282 faddd %f22,pp2,%f22 2283 fmuld %f16,qq2,%f20 2284 2285 fmuld %f24,qq3,%f30 ! cos(x3) 2286 2287 fmuld %f0,%f6,%f6 2288 faddd %f4,qq1,%f4 2289 2290 faddd %f14,qq2,%f14 2291 fmuld %f8,pp2,%f12 2292 2293 fmuld %f16,%f22,%f22 2294 faddd %f20,qq1,%f20 2295 2296 faddd %f30,qq2,%f30 2297 fmuld %f24,pp2,%f28 2298 2299 faddd %f6,pp1,%f6 2300 fmuld %f0,%f4,%f4 2301 add %l4,%g1,%l4 2302 2303 fmuld %f8,%f14,%f14 2304 faddd %f12,pp1,%f12 2305 2306 faddd %f22,pp1,%f22 2307 fmuld %f16,%f20,%f20 2308 add %l6,%g1,%l6 2309 2310 fmuld %f24,%f30,%f30 2311 faddd %f28,pp1,%f28 2312 2313 fmuld %f0,%f6,%f6 2314 2315 faddd %f14,qq1,%f14 2316 fmuld %f8,%f12,%f12 2317 add %l5,%g1,%l5 2318 2319 fmuld %f16,%f22,%f22 2320 2321 faddd %f30,qq1,%f30 2322 fmuld %f24,%f28,%f28 2323 add %l7,%g1,%l7 2324 2325 fmuld %f2,%f6,%f6 2326 ldd [%l4+8],%f0 2327 2328 fmuld %f10,%f12,%f12 2329 2330 fmuld %f18,%f22,%f22 2331 ldd [%l6+8],%f16 2332 2333 fmuld %f26,%f28,%f28 2334 2335 fmuld %f0,%f4,%f4 2336 faddd %f32,%f6,%f6 2337 2338 fmuld %f8,%f14,%f14 2339 faddd %f12,%f34,%f12 2340 ldd [%l5+16],%f8 2341 2342 fmuld %f16,%f20,%f20 2343 faddd %f36,%f22,%f22 2344 2345 fmuld %f24,%f30,%f30 2346 faddd %f28,%f38,%f28 2347 ldd [%l7+16],%f24 2348 2349 faddd %f2,%f6,%f6 2350 ldd [%l4+16],%f32 2351 2352 fmuld %f8,%f14,%f14 2353 faddd %f12,%f10,%f12 2354 ldd [%l5+8],%f34 2355 2356 faddd %f18,%f22,%f22 2357 ldd [%l6+16],%f36 2358 2359 fmuld %f24,%f30,%f30 2360 faddd %f28,%f26,%f28 2361 ldd [%l7+8],%f38 2362 2363 fmuld %f32,%f6,%f6 2364 2365 fmuld %f34,%f12,%f12 2366 2367 fmuld %f36,%f22,%f22 2368 2369 fmuld %f38,%f28,%f28 2370 2371 faddd %f6,%f4,%f6 2372 2373 fsubd %f14,%f12,%f14 2374 2375 faddd %f22,%f20,%f22 2376 2377 fsubd %f30,%f28,%f30 2378 2379 faddd %f6,%f0,%f6 2380 2381 faddd %f14,%f8,%f14 2382 2383 faddd %f22,%f16,%f22 2384 2385 faddd %f30,%f24,%f30 2386 mov %l0,%l4 2387 2388 fnegd %f6,%f4 2389 lda [%i1]%asi,%l0 ! preload next argument 2390 2391 fnegd %f14,%f12 2392 lda [%i1]%asi,%f0 2393 2394 fnegd %f22,%f20 2395 lda [%i1+4]%asi,%f3 2396 2397 fnegd %f30,%f28 2398 andn %l0,%i5,%l0 2399 add %i1,%i2,%i1 2400 2401 andcc %l4,2,%g0 2402 fmovdnz %icc,%f4,%f6 2403 st %f6,[%o0] 2404 2405 andcc %l1,2,%g0 2406 fmovdnz %icc,%f12,%f14 2407 st %f14,[%o1] 2408 2409 andcc %l2,2,%g0 2410 fmovdnz %icc,%f20,%f22 2411 st %f22,[%o2] 2412 2413 andcc %l3,2,%g0 2414 fmovdnz %icc,%f28,%f30 2415 st %f30,[%o3] 2416 2417 addcc %i0,-1,%i0 2418 bg,pt %icc,.loop0 2419 ! delay slot 2420 st %f7,[%o0+4] 2421 2422 ba,pt %icc,.end 2423 ! delay slot 2424 nop 2425 2426 .align 16 2427 .case11: 2428 fmuld %f0,pp3,%f6 ! sin(x0) 2429 2430 fmuld %f16,pp3,%f22 ! sin(x2) 2431 2432 fmuld %f24,pp3,%f30 ! sin(x3) 2433 2434 faddd %f6,pp2,%f6 2435 fmuld %f0,qq2,%f4 2436 2437 fmuld %f8,qq3,%f14 ! cos(x1) 2438 2439 faddd %f22,pp2,%f22 2440 fmuld %f16,qq2,%f20 2441 2442 faddd %f30,pp2,%f30 2443 fmuld %f24,qq2,%f28 2444 2445 fmuld %f0,%f6,%f6 2446 faddd %f4,qq1,%f4 2447 2448 faddd %f14,qq2,%f14 2449 fmuld %f8,pp2,%f12 2450 2451 fmuld %f16,%f22,%f22 2452 faddd %f20,qq1,%f20 2453 2454 fmuld %f24,%f30,%f30 2455 faddd %f28,qq1,%f28 2456 2457 faddd %f6,pp1,%f6 2458 fmuld %f0,%f4,%f4 2459 add %l4,%g1,%l4 2460 2461 fmuld %f8,%f14,%f14 2462 faddd %f12,pp1,%f12 2463 2464 faddd %f22,pp1,%f22 2465 fmuld %f16,%f20,%f20 2466 add %l6,%g1,%l6 2467 2468 faddd %f30,pp1,%f30 2469 fmuld %f24,%f28,%f28 2470 add %l7,%g1,%l7 2471 2472 fmuld %f0,%f6,%f6 2473 2474 faddd %f14,qq1,%f14 2475 fmuld %f8,%f12,%f12 2476 add %l5,%g1,%l5 2477 2478 fmuld %f16,%f22,%f22 2479 2480 fmuld %f24,%f30,%f30 2481 2482 fmuld %f2,%f6,%f6 2483 ldd [%l4+8],%f0 2484 2485 fmuld %f10,%f12,%f12 2486 2487 fmuld %f18,%f22,%f22 2488 ldd [%l6+8],%f16 2489 2490 fmuld %f26,%f30,%f30 2491 ldd [%l7+8],%f24 2492 2493 fmuld %f0,%f4,%f4 2494 faddd %f32,%f6,%f6 2495 2496 fmuld %f8,%f14,%f14 2497 faddd %f12,%f34,%f12 2498 ldd [%l5+16],%f8 2499 2500 fmuld %f16,%f20,%f20 2501 faddd %f36,%f22,%f22 2502 2503 fmuld %f24,%f28,%f28 2504 faddd %f38,%f30,%f30 2505 2506 faddd %f2,%f6,%f6 2507 ldd [%l4+16],%f32 2508 2509 fmuld %f8,%f14,%f14 2510 faddd %f12,%f10,%f12 2511 ldd [%l5+8],%f34 2512 2513 faddd %f18,%f22,%f22 2514 ldd [%l6+16],%f36 2515 2516 faddd %f26,%f30,%f30 2517 ldd [%l7+16],%f38 2518 2519 fmuld %f32,%f6,%f6 2520 2521 fmuld %f34,%f12,%f12 2522 2523 fmuld %f36,%f22,%f22 2524 2525 fmuld %f38,%f30,%f30 2526 2527 faddd %f6,%f4,%f6 2528 2529 fsubd %f14,%f12,%f14 2530 2531 faddd %f22,%f20,%f22 2532 2533 faddd %f30,%f28,%f30 2534 2535 faddd %f6,%f0,%f6 2536 2537 faddd %f14,%f8,%f14 2538 2539 faddd %f22,%f16,%f22 2540 2541 faddd %f30,%f24,%f30 2542 mov %l0,%l4 2543 2544 fnegd %f6,%f4 2545 lda [%i1]%asi,%l0 ! preload next argument 2546 2547 fnegd %f14,%f12 2548 lda [%i1]%asi,%f0 2549 2550 fnegd %f22,%f20 2551 lda [%i1+4]%asi,%f3 2552 2553 fnegd %f30,%f28 2554 andn %l0,%i5,%l0 2555 add %i1,%i2,%i1 2556 2557 andcc %l4,2,%g0 2558 fmovdnz %icc,%f4,%f6 2559 st %f6,[%o0] 2560 2561 andcc %l1,2,%g0 2562 fmovdnz %icc,%f12,%f14 2563 st %f14,[%o1] 2564 2565 andcc %l2,2,%g0 2566 fmovdnz %icc,%f20,%f22 2567 st %f22,[%o2] 2568 2569 andcc %l3,2,%g0 2570 fmovdnz %icc,%f28,%f30 2571 st %f30,[%o3] 2572 2573 addcc %i0,-1,%i0 2574 bg,pt %icc,.loop0 2575 ! delay slot 2576 st %f7,[%o0+4] 2577 2578 ba,pt %icc,.end 2579 ! delay slot 2580 nop 2581 2582 .align 16 2583 .case12: 2584 fmuld %f18,%f18,%f16 2585 andcc %l2,1,%g0 2586 bz,pn %icc,.case14 2587 ! delay slot 2588 fxor %f22,%f36,%f36 2589 2590 fmuld %f26,%f26,%f24 2591 andcc %l3,1,%g0 2592 bz,pn %icc,.case13 2593 ! delay slot 2594 fxor %f30,%f38,%f38 2595 2596 fmuld %f0,pp3,%f6 ! sin(x0) 2597 2598 fmuld %f8,pp3,%f14 ! sin(x1) 2599 2600 faddd %f6,pp2,%f6 2601 fmuld %f0,qq2,%f4 2602 2603 faddd %f14,pp2,%f14 2604 fmuld %f8,qq2,%f12 2605 2606 fmuld %f16,qq3,%f22 ! cos(x2) 2607 2608 fmuld %f24,qq3,%f30 ! cos(x3) 2609 2610 fmuld %f0,%f6,%f6 2611 faddd %f4,qq1,%f4 2612 2613 fmuld %f8,%f14,%f14 2614 faddd %f12,qq1,%f12 2615 2616 faddd %f22,qq2,%f22 2617 fmuld %f16,pp2,%f20 2618 2619 faddd %f30,qq2,%f30 2620 fmuld %f24,pp2,%f28 2621 2622 faddd %f6,pp1,%f6 2623 fmuld %f0,%f4,%f4 2624 add %l4,%g1,%l4 2625 2626 faddd %f14,pp1,%f14 2627 fmuld %f8,%f12,%f12 2628 add %l5,%g1,%l5 2629 2630 fmuld %f16,%f22,%f22 2631 faddd %f20,pp1,%f20 2632 2633 fmuld %f24,%f30,%f30 2634 faddd %f28,pp1,%f28 2635 2636 fmuld %f0,%f6,%f6 2637 2638 fmuld %f8,%f14,%f14 2639 2640 faddd %f22,qq1,%f22 2641 fmuld %f16,%f20,%f20 2642 add %l6,%g1,%l6 2643 2644 faddd %f30,qq1,%f30 2645 fmuld %f24,%f28,%f28 2646 add %l7,%g1,%l7 2647 2648 fmuld %f2,%f6,%f6 2649 ldd [%l4+8],%f0 2650 2651 fmuld %f10,%f14,%f14 2652 ldd [%l5+8],%f8 2653 2654 fmuld %f18,%f20,%f20 2655 2656 fmuld %f26,%f28,%f28 2657 2658 fmuld %f0,%f4,%f4 2659 faddd %f32,%f6,%f6 2660 2661 fmuld %f8,%f12,%f12 2662 faddd %f34,%f14,%f14 2663 2664 fmuld %f16,%f22,%f22 2665 faddd %f20,%f36,%f20 2666 ldd [%l6+16],%f16 2667 2668 fmuld %f24,%f30,%f30 2669 faddd %f28,%f38,%f28 2670 ldd [%l7+16],%f24 2671 2672 faddd %f2,%f6,%f6 2673 ldd [%l4+16],%f32 2674 2675 faddd %f10,%f14,%f14 2676 ldd [%l5+16],%f34 2677 2678 fmuld %f16,%f22,%f22 2679 faddd %f20,%f18,%f20 2680 ldd [%l6+8],%f36 2681 2682 fmuld %f24,%f30,%f30 2683 faddd %f28,%f26,%f28 2684 ldd [%l7+8],%f38 2685 2686 fmuld %f32,%f6,%f6 2687 2688 fmuld %f34,%f14,%f14 2689 2690 fmuld %f36,%f20,%f20 2691 2692 fmuld %f38,%f28,%f28 2693 2694 faddd %f6,%f4,%f6 2695 2696 faddd %f14,%f12,%f14 2697 2698 fsubd %f22,%f20,%f22 2699 2700 fsubd %f30,%f28,%f30 2701 2702 faddd %f6,%f0,%f6 2703 2704 faddd %f14,%f8,%f14 2705 2706 faddd %f22,%f16,%f22 2707 2708 faddd %f30,%f24,%f30 2709 mov %l0,%l4 2710 2711 fnegd %f6,%f4 2712 lda [%i1]%asi,%l0 ! preload next argument 2713 2714 fnegd %f14,%f12 2715 lda [%i1]%asi,%f0 2716 2717 fnegd %f22,%f20 2718 lda [%i1+4]%asi,%f3 2719 2720 fnegd %f30,%f28 2721 andn %l0,%i5,%l0 2722 add %i1,%i2,%i1 2723 2724 andcc %l4,2,%g0 2725 fmovdnz %icc,%f4,%f6 2726 st %f6,[%o0] 2727 2728 andcc %l1,2,%g0 2729 fmovdnz %icc,%f12,%f14 2730 st %f14,[%o1] 2731 2732 andcc %l2,2,%g0 2733 fmovdnz %icc,%f20,%f22 2734 st %f22,[%o2] 2735 2736 andcc %l3,2,%g0 2737 fmovdnz %icc,%f28,%f30 2738 st %f30,[%o3] 2739 2740 addcc %i0,-1,%i0 2741 bg,pt %icc,.loop0 2742 ! delay slot 2743 st %f7,[%o0+4] 2744 2745 ba,pt %icc,.end 2746 ! delay slot 2747 nop 2748 2749 .align 16 2750 .case13: 2751 fmuld %f0,pp3,%f6 ! sin(x0) 2752 2753 fmuld %f8,pp3,%f14 ! sin(x1) 2754 2755 fmuld %f24,pp3,%f30 ! sin(x3) 2756 2757 faddd %f6,pp2,%f6 2758 fmuld %f0,qq2,%f4 2759 2760 faddd %f14,pp2,%f14 2761 fmuld %f8,qq2,%f12 2762 2763 fmuld %f16,qq3,%f22 ! cos(x2) 2764 2765 faddd %f30,pp2,%f30 2766 fmuld %f24,qq2,%f28 2767 2768 fmuld %f0,%f6,%f6 2769 faddd %f4,qq1,%f4 2770 2771 fmuld %f8,%f14,%f14 2772 faddd %f12,qq1,%f12 2773 2774 faddd %f22,qq2,%f22 2775 fmuld %f16,pp2,%f20 2776 2777 fmuld %f24,%f30,%f30 2778 faddd %f28,qq1,%f28 2779 2780 faddd %f6,pp1,%f6 2781 fmuld %f0,%f4,%f4 2782 add %l4,%g1,%l4 2783 2784 faddd %f14,pp1,%f14 2785 fmuld %f8,%f12,%f12 2786 add %l5,%g1,%l5 2787 2788 fmuld %f16,%f22,%f22 2789 faddd %f20,pp1,%f20 2790 2791 faddd %f30,pp1,%f30 2792 fmuld %f24,%f28,%f28 2793 add %l7,%g1,%l7 2794 2795 fmuld %f0,%f6,%f6 2796 2797 fmuld %f8,%f14,%f14 2798 2799 faddd %f22,qq1,%f22 2800 fmuld %f16,%f20,%f20 2801 add %l6,%g1,%l6 2802 2803 fmuld %f24,%f30,%f30 2804 2805 fmuld %f2,%f6,%f6 2806 ldd [%l4+8],%f0 2807 2808 fmuld %f10,%f14,%f14 2809 ldd [%l5+8],%f8 2810 2811 fmuld %f18,%f20,%f20 2812 2813 fmuld %f26,%f30,%f30 2814 ldd [%l7+8],%f24 2815 2816 fmuld %f0,%f4,%f4 2817 faddd %f32,%f6,%f6 2818 2819 fmuld %f8,%f12,%f12 2820 faddd %f34,%f14,%f14 2821 2822 fmuld %f16,%f22,%f22 2823 faddd %f20,%f36,%f20 2824 ldd [%l6+16],%f16 2825 2826 fmuld %f24,%f28,%f28 2827 faddd %f38,%f30,%f30 2828 2829 faddd %f2,%f6,%f6 2830 ldd [%l4+16],%f32 2831 2832 faddd %f10,%f14,%f14 2833 ldd [%l5+16],%f34 2834 2835 fmuld %f16,%f22,%f22 2836 faddd %f20,%f18,%f20 2837 ldd [%l6+8],%f36 2838 2839 faddd %f26,%f30,%f30 2840 ldd [%l7+16],%f38 2841 2842 fmuld %f32,%f6,%f6 2843 2844 fmuld %f34,%f14,%f14 2845 2846 fmuld %f36,%f20,%f20 2847 2848 fmuld %f38,%f30,%f30 2849 2850 faddd %f6,%f4,%f6 2851 2852 faddd %f14,%f12,%f14 2853 2854 fsubd %f22,%f20,%f22 2855 2856 faddd %f30,%f28,%f30 2857 2858 faddd %f6,%f0,%f6 2859 2860 faddd %f14,%f8,%f14 2861 2862 faddd %f22,%f16,%f22 2863 2864 faddd %f30,%f24,%f30 2865 mov %l0,%l4 2866 2867 fnegd %f6,%f4 2868 lda [%i1]%asi,%l0 ! preload next argument 2869 2870 fnegd %f14,%f12 2871 lda [%i1]%asi,%f0 2872 2873 fnegd %f22,%f20 2874 lda [%i1+4]%asi,%f3 2875 2876 fnegd %f30,%f28 2877 andn %l0,%i5,%l0 2878 add %i1,%i2,%i1 2879 2880 andcc %l4,2,%g0 2881 fmovdnz %icc,%f4,%f6 2882 st %f6,[%o0] 2883 2884 andcc %l1,2,%g0 2885 fmovdnz %icc,%f12,%f14 2886 st %f14,[%o1] 2887 2888 andcc %l2,2,%g0 2889 fmovdnz %icc,%f20,%f22 2890 st %f22,[%o2] 2891 2892 andcc %l3,2,%g0 2893 fmovdnz %icc,%f28,%f30 2894 st %f30,[%o3] 2895 2896 addcc %i0,-1,%i0 2897 bg,pt %icc,.loop0 2898 ! delay slot 2899 st %f7,[%o0+4] 2900 2901 ba,pt %icc,.end 2902 ! delay slot 2903 nop 2904 2905 .align 16 2906 .case14: 2907 fmuld %f26,%f26,%f24 2908 andcc %l3,1,%g0 2909 bz,pn %icc,.case15 2910 ! delay slot 2911 fxor %f30,%f38,%f38 2912 2913 fmuld %f0,pp3,%f6 ! sin(x0) 2914 2915 fmuld %f8,pp3,%f14 ! sin(x1) 2916 2917 fmuld %f16,pp3,%f22 ! sin(x2) 2918 2919 faddd %f6,pp2,%f6 2920 fmuld %f0,qq2,%f4 2921 2922 faddd %f14,pp2,%f14 2923 fmuld %f8,qq2,%f12 2924 2925 faddd %f22,pp2,%f22 2926 fmuld %f16,qq2,%f20 2927 2928 fmuld %f24,qq3,%f30 ! cos(x3) 2929 2930 fmuld %f0,%f6,%f6 2931 faddd %f4,qq1,%f4 2932 2933 fmuld %f8,%f14,%f14 2934 faddd %f12,qq1,%f12 2935 2936 fmuld %f16,%f22,%f22 2937 faddd %f20,qq1,%f20 2938 2939 faddd %f30,qq2,%f30 2940 fmuld %f24,pp2,%f28 2941 2942 faddd %f6,pp1,%f6 2943 fmuld %f0,%f4,%f4 2944 add %l4,%g1,%l4 2945 2946 faddd %f14,pp1,%f14 2947 fmuld %f8,%f12,%f12 2948 add %l5,%g1,%l5 2949 2950 faddd %f22,pp1,%f22 2951 fmuld %f16,%f20,%f20 2952 add %l6,%g1,%l6 2953 2954 fmuld %f24,%f30,%f30 2955 faddd %f28,pp1,%f28 2956 2957 fmuld %f0,%f6,%f6 2958 2959 fmuld %f8,%f14,%f14 2960 2961 fmuld %f16,%f22,%f22 2962 2963 faddd %f30,qq1,%f30 2964 fmuld %f24,%f28,%f28 2965 add %l7,%g1,%l7 2966 2967 fmuld %f2,%f6,%f6 2968 ldd [%l4+8],%f0 2969 2970 fmuld %f10,%f14,%f14 2971 ldd [%l5+8],%f8 2972 2973 fmuld %f18,%f22,%f22 2974 ldd [%l6+8],%f16 2975 2976 fmuld %f26,%f28,%f28 2977 2978 fmuld %f0,%f4,%f4 2979 faddd %f32,%f6,%f6 2980 2981 fmuld %f8,%f12,%f12 2982 faddd %f34,%f14,%f14 2983 2984 fmuld %f16,%f20,%f20 2985 faddd %f36,%f22,%f22 2986 2987 fmuld %f24,%f30,%f30 2988 faddd %f28,%f38,%f28 2989 ldd [%l7+16],%f24 2990 2991 faddd %f2,%f6,%f6 2992 ldd [%l4+16],%f32 2993 2994 faddd %f10,%f14,%f14 2995 ldd [%l5+16],%f34 2996 2997 faddd %f18,%f22,%f22 2998 ldd [%l6+16],%f36 2999 3000 fmuld %f24,%f30,%f30 3001 faddd %f28,%f26,%f28 3002 ldd [%l7+8],%f38 3003 3004 fmuld %f32,%f6,%f6 3005 3006 fmuld %f34,%f14,%f14 3007 3008 fmuld %f36,%f22,%f22 3009 3010 fmuld %f38,%f28,%f28 3011 3012 faddd %f6,%f4,%f6 3013 3014 faddd %f14,%f12,%f14 3015 3016 faddd %f22,%f20,%f22 3017 3018 fsubd %f30,%f28,%f30 3019 3020 faddd %f6,%f0,%f6 3021 3022 faddd %f14,%f8,%f14 3023 3024 faddd %f22,%f16,%f22 3025 3026 faddd %f30,%f24,%f30 3027 mov %l0,%l4 3028 3029 fnegd %f6,%f4 3030 lda [%i1]%asi,%l0 ! preload next argument 3031 3032 fnegd %f14,%f12 3033 lda [%i1]%asi,%f0 3034 3035 fnegd %f22,%f20 3036 lda [%i1+4]%asi,%f3 3037 3038 fnegd %f30,%f28 3039 andn %l0,%i5,%l0 3040 add %i1,%i2,%i1 3041 3042 andcc %l4,2,%g0 3043 fmovdnz %icc,%f4,%f6 3044 st %f6,[%o0] 3045 3046 andcc %l1,2,%g0 3047 fmovdnz %icc,%f12,%f14 3048 st %f14,[%o1] 3049 3050 andcc %l2,2,%g0 3051 fmovdnz %icc,%f20,%f22 3052 st %f22,[%o2] 3053 3054 andcc %l3,2,%g0 3055 fmovdnz %icc,%f28,%f30 3056 st %f30,[%o3] 3057 3058 addcc %i0,-1,%i0 3059 bg,pt %icc,.loop0 3060 ! delay slot 3061 st %f7,[%o0+4] 3062 3063 ba,pt %icc,.end 3064 ! delay slot 3065 nop 3066 3067 .align 16 3068 .case15: 3069 fmuld %f0,pp3,%f6 ! sin(x0) 3070 3071 fmuld %f8,pp3,%f14 ! sin(x1) 3072 3073 fmuld %f16,pp3,%f22 ! sin(x2) 3074 3075 fmuld %f24,pp3,%f30 ! sin(x3) 3076 3077 faddd %f6,pp2,%f6 3078 fmuld %f0,qq2,%f4 3079 3080 faddd %f14,pp2,%f14 3081 fmuld %f8,qq2,%f12 3082 3083 faddd %f22,pp2,%f22 3084 fmuld %f16,qq2,%f20 3085 3086 faddd %f30,pp2,%f30 3087 fmuld %f24,qq2,%f28 3088 3089 fmuld %f0,%f6,%f6 3090 faddd %f4,qq1,%f4 3091 3092 fmuld %f8,%f14,%f14 3093 faddd %f12,qq1,%f12 3094 3095 fmuld %f16,%f22,%f22 3096 faddd %f20,qq1,%f20 3097 3098 fmuld %f24,%f30,%f30 3099 faddd %f28,qq1,%f28 3100 3101 faddd %f6,pp1,%f6 3102 fmuld %f0,%f4,%f4 3103 add %l4,%g1,%l4 3104 3105 faddd %f14,pp1,%f14 3106 fmuld %f8,%f12,%f12 3107 add %l5,%g1,%l5 3108 3109 faddd %f22,pp1,%f22 3110 fmuld %f16,%f20,%f20 3111 add %l6,%g1,%l6 3112 3113 faddd %f30,pp1,%f30 3114 fmuld %f24,%f28,%f28 3115 add %l7,%g1,%l7 3116 3117 fmuld %f0,%f6,%f6 3118 3119 fmuld %f8,%f14,%f14 3120 3121 fmuld %f16,%f22,%f22 3122 3123 fmuld %f24,%f30,%f30 3124 3125 fmuld %f2,%f6,%f6 3126 ldd [%l4+8],%f0 3127 3128 fmuld %f10,%f14,%f14 3129 ldd [%l5+8],%f8 3130 3131 fmuld %f18,%f22,%f22 3132 ldd [%l6+8],%f16 3133 3134 fmuld %f26,%f30,%f30 3135 ldd [%l7+8],%f24 3136 3137 fmuld %f0,%f4,%f4 3138 faddd %f32,%f6,%f6 3139 3140 fmuld %f8,%f12,%f12 3141 faddd %f34,%f14,%f14 3142 3143 fmuld %f16,%f20,%f20 3144 faddd %f36,%f22,%f22 3145 3146 fmuld %f24,%f28,%f28 3147 faddd %f38,%f30,%f30 3148 3149 faddd %f2,%f6,%f6 3150 ldd [%l4+16],%f32 3151 3152 faddd %f10,%f14,%f14 3153 ldd [%l5+16],%f34 3154 3155 faddd %f18,%f22,%f22 3156 ldd [%l6+16],%f36 3157 3158 faddd %f26,%f30,%f30 3159 ldd [%l7+16],%f38 3160 3161 fmuld %f32,%f6,%f6 3162 3163 fmuld %f34,%f14,%f14 3164 3165 fmuld %f36,%f22,%f22 3166 3167 fmuld %f38,%f30,%f30 3168 3169 faddd %f6,%f4,%f6 3170 3171 faddd %f14,%f12,%f14 3172 3173 faddd %f22,%f20,%f22 3174 3175 faddd %f30,%f28,%f30 3176 3177 faddd %f6,%f0,%f6 3178 3179 faddd %f14,%f8,%f14 3180 3181 faddd %f22,%f16,%f22 3182 3183 faddd %f30,%f24,%f30 3184 mov %l0,%l4 3185 3186 fnegd %f6,%f4 3187 lda [%i1]%asi,%l0 ! preload next argument 3188 3189 fnegd %f14,%f12 3190 lda [%i1]%asi,%f0 3191 3192 fnegd %f22,%f20 3193 lda [%i1+4]%asi,%f3 3194 3195 fnegd %f30,%f28 3196 andn %l0,%i5,%l0 3197 add %i1,%i2,%i1 3198 3199 andcc %l4,2,%g0 3200 fmovdnz %icc,%f4,%f6 3201 st %f6,[%o0] 3202 3203 andcc %l1,2,%g0 3204 fmovdnz %icc,%f12,%f14 3205 st %f14,[%o1] 3206 3207 andcc %l2,2,%g0 3208 fmovdnz %icc,%f20,%f22 3209 st %f22,[%o2] 3210 3211 andcc %l3,2,%g0 3212 fmovdnz %icc,%f28,%f30 3213 st %f30,[%o3] 3214 3215 addcc %i0,-1,%i0 3216 bg,pt %icc,.loop0 3217 ! delay slot 3218 st %f7,[%o0+4] 3219 3220 ba,pt %icc,.end 3221 ! delay slot 3222 nop 3223 3224 3225 .align 16 3226 .end: 3227 st %f15,[%o1+4] 3228 st %f23,[%o2+4] 3229 st %f31,[%o3+4] 3230 ld [%fp+biguns],%i5 3231 tst %i5 ! check for huge arguments remaining 3232 be,pt %icc,.exit 3233 ! delay slot 3234 nop 3235 #ifdef __sparcv9 3236 ldx [%fp+xsave],%o1 3237 ldx [%fp+ysave],%o3 3238 #else 3239 ld [%fp+xsave],%o1 3240 ld [%fp+ysave],%o3 3241 #endif 3242 ld [%fp+nsave],%o0 3243 ld [%fp+sxsave],%o2 3244 ld [%fp+sysave],%o4 3245 sra %o2,0,%o2 ! sign-extend for V9 3246 sra %o4,0,%o4 3247 call __vlibm_vcos_big_ultra3 3248 sra %o5,0,%o5 ! delay slot 3249 3250 .exit: 3251 ret 3252 restore 3253 3254 3255 .align 16 3256 .last1: 3257 faddd %f2,c3two44,%f4 3258 st %f15,[%o1+4] 3259 .last1_from_range1: 3260 mov 0,%l1 3261 fzeros %f8 3262 fzero %f10 3263 add %fp,junk,%o1 3264 .last2: 3265 faddd %f10,c3two44,%f12 3266 st %f23,[%o2+4] 3267 .last2_from_range2: 3268 mov 0,%l2 3269 fzeros %f16 3270 fzero %f18 3271 add %fp,junk,%o2 3272 .last3: 3273 faddd %f18,c3two44,%f20 3274 st %f31,[%o3+4] 3275 st %f5,[%fp+nk0] 3276 st %f13,[%fp+nk1] 3277 .last3_from_range3: 3278 mov 0,%l3 3279 fzeros %f24 3280 fzero %f26 3281 ba,pt %icc,.cont 3282 ! delay slot 3283 add %fp,junk,%o3 3284 3285 3286 .align 16 3287 .range0: 3288 cmp %l0,%o4 3289 bl,pt %icc,1f ! hx < 0x3e400000 3290 ! delay slot, harmless if branch taken 3291 sethi %hi(0x7ff00000),%o7 3292 cmp %l0,%o7 3293 bl,a,pt %icc,2f ! branch if finite 3294 ! delay slot, squashed if branch not taken 3295 st %o4,[%fp+biguns] ! set biguns 3296 fzero %f0 3297 fmuld %f2,%f0,%f2 3298 st %f2,[%o0] 3299 ba,pt %icc,2f 3300 ! delay slot 3301 st %f3,[%o0+4] 3302 1: 3303 fdtoi %f2,%f4 ! raise inexact if not zero 3304 sethi %hi(0x3ff00000),%o7 3305 st %o7,[%o0] 3306 st %g0,[%o0+4] 3307 2: 3308 addcc %i0,-1,%i0 3309 ble,pn %icc,.end 3310 ! delay slot, harmless if branch taken 3311 add %i3,%i4,%i3 ! y += stridey 3312 andn %l1,%i5,%l0 ! hx &= ~0x80000000 3313 fmovs %f8,%f0 3314 fmovs %f11,%f3 3315 ba,pt %icc,.loop0 3316 ! delay slot 3317 add %i1,%i2,%i1 ! x += stridex 3318 3319 3320 .align 16 3321 .range1: 3322 cmp %l1,%o4 3323 bl,pt %icc,1f ! hx < 0x3e400000 3324 ! delay slot, harmless if branch taken 3325 sethi %hi(0x7ff00000),%o7 3326 cmp %l1,%o7 3327 bl,a,pt %icc,2f ! branch if finite 3328 ! delay slot, squashed if branch not taken 3329 st %o4,[%fp+biguns] ! set biguns 3330 fzero %f8 3331 fmuld %f10,%f8,%f10 3332 st %f10,[%o1] 3333 ba,pt %icc,2f 3334 ! delay slot 3335 st %f11,[%o1+4] 3336 1: 3337 fdtoi %f10,%f12 ! raise inexact if not zero 3338 sethi %hi(0x3ff00000),%o7 3339 st %o7,[%o1] 3340 st %g0,[%o1+4] 3341 2: 3342 addcc %i0,-1,%i0 3343 ble,pn %icc,.last1_from_range1 3344 ! delay slot, harmless if branch taken 3345 add %i3,%i4,%i3 ! y += stridey 3346 andn %l2,%i5,%l1 ! hx &= ~0x80000000 3347 fmovs %f16,%f8 3348 fmovs %f19,%f11 3349 ba,pt %icc,.loop1 3350 ! delay slot 3351 add %i1,%i2,%i1 ! x += stridex 3352 3353 3354 .align 16 3355 .range2: 3356 cmp %l2,%o4 3357 bl,pt %icc,1f ! hx < 0x3e400000 3358 ! delay slot, harmless if branch taken 3359 sethi %hi(0x7ff00000),%o7 3360 cmp %l2,%o7 3361 bl,a,pt %icc,2f ! branch if finite 3362 ! delay slot, squashed if branch not taken 3363 st %o4,[%fp+biguns] ! set biguns 3364 fzero %f16 3365 fmuld %f18,%f16,%f18 3366 st %f18,[%o2] 3367 ba,pt %icc,2f 3368 ! delay slot 3369 st %f19,[%o2+4] 3370 1: 3371 fdtoi %f18,%f20 ! raise inexact if not zero 3372 sethi %hi(0x3ff00000),%o7 3373 st %o7,[%o2] 3374 st %g0,[%o2+4] 3375 2: 3376 addcc %i0,-1,%i0 3377 ble,pn %icc,.last2_from_range2 3378 ! delay slot, harmless if branch taken 3379 add %i3,%i4,%i3 ! y += stridey 3380 andn %l3,%i5,%l2 ! hx &= ~0x80000000 3381 fmovs %f24,%f16 3382 fmovs %f27,%f19 3383 ba,pt %icc,.loop2 3384 ! delay slot 3385 add %i1,%i2,%i1 ! x += stridex 3386 3387 3388 .align 16 3389 .range3: 3390 cmp %l3,%o4 3391 bl,pt %icc,1f ! hx < 0x3e400000 3392 ! delay slot, harmless if branch taken 3393 sethi %hi(0x7ff00000),%o7 3394 cmp %l3,%o7 3395 bl,a,pt %icc,2f ! branch if finite 3396 ! delay slot, squashed if branch not taken 3397 st %o4,[%fp+biguns] ! set biguns 3398 fzero %f24 3399 fmuld %f26,%f24,%f26 3400 st %f26,[%o3] 3401 ba,pt %icc,2f 3402 ! delay slot 3403 st %f27,[%o3+4] 3404 1: 3405 fdtoi %f26,%f28 ! raise inexact if not zero 3406 sethi %hi(0x3ff00000),%o7 3407 st %o7,[%o3] 3408 st %g0,[%o3+4] 3409 2: 3410 addcc %i0,-1,%i0 3411 ble,pn %icc,.last3_from_range3 3412 ! delay slot, harmless if branch taken 3413 add %i3,%i4,%i3 ! y += stridey 3414 ld [%i1],%l3 3415 ld [%i1],%f24 3416 ld [%i1+4],%f27 3417 andn %l3,%i5,%l3 ! hx &= ~0x80000000 3418 ba,pt %icc,.loop3 3419 ! delay slot 3420 add %i1,%i2,%i1 ! x += stridex 3421 3422 SET_SIZE(__vcos_ultra3) 3423