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   "__vsqrtf.S"
  30 
  31 #include "libm.h"
  32 
  33         .section        ".text"
  34         .file   "__vsqrtf.S"
  35 
  36         ENTRY(__vsqrtf)
  37 
  38         lda     [%o1]0x82,%f0
  39         subcc   %o0,1,%o0
  40         bneg,pn %icc,.exit
  41         sll     %o2,2,%o2
  42         ba      .loop
  43         sll     %o4,2,%o4
  44 
  45         .align  16
  46 .loop:
  47         fsqrts  %f0,%f2
  48         lda     [%o1+%o2]0x82,%f0
  49         add     %o1,%o2,%o1
  50         subcc   %o0,1,%o0
  51         st      %f2,[%o3]
  52         bpos,pt %icc,.loop
  53         add     %o3,%o4,%o3
  54 .exit:
  55         retl
  56         nop
  57 
  58         SET_SIZE(__vsqrtf)
  59