/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
.file "__vhypot.S"
#include "libm.h"
.align 64
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! !!!!! algorithm !!!!!
! ((float*)&x)[0] = ((float*)px)[0];
!
! ((float*)&y)[0] = ((float*)py)[0];
!
! x = fabs(x);
! y = fabs(y);
!
!
! if ( (c0 & 2) != 0 )
! {
!
! hx &= 0x7fffffff;
! hy &= 0x7fffffff;
!
! j0 &= 0x7ff00000;
! if ( j0 >= 0x7ff00000 )
! {
! else res = x * y;
!
! }
! else
! {
! {!
! x *= D2ONM1022;
! y *= D2ONM1022;
!
!
!
! }
! else
! {
! res = x + y;
! }
! }
! continue;
! }
! if ( (c1 & 2) != 0 )
! {
! x *= D2ONP1022;
! y *= D2ONP1022;
!
!
!
! continue;
! }
!
! dmax = x;
!
!
! x *= dnorm;
! y *= dnorm;
!
!
!
!
!
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#ifdef __sparcv9
#else
#endif
.begin:
.begin1:
.cont0:
.cont1:
.cont2:
.cont3:
.cont4:
.cont5:
.cont6:
.cont7:
.cont8:
.cont9:
.align 16
.cont10:
.cont11:
.cont12:
.cont13:
.cont14:
.cont15:
.cont16:
.cont17:
.tail:
.align 16
.spec0:
2:
1:
1:
1:
2:
.align 16
.spec1:
.align 16
.update0:
.align 16
.update1:
.align 16
.update2:
.align 16
.update3:
.align 16
.update4:
.align 16
.update5:
.align 16
.update6:
.align 16
.update7:
.align 16
.update8:
.align 16
.update9:
.align 16
.update10:
.align 16
.update11:
.align 16
.update12:
.align 16
.update13:
.align 16
.update14:
.align 16
.update15:
.align 16
.update16:
.align 16
.update17:
.align 16
.exit: