mont_mulf_v9.s revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (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 2003 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
.align 8
!
!
.word 1089470464
.word 0
!
!
.word 1055916032
.word 0
!
!
Zero:
.word 0
.word 0
!
!
.word 1106247680
.word 0
!
!
.word 1039138816
.word 0
! 1 !/*
! 2 ! * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
! 3 ! * Use is subject to license terms.
! 4 ! */
! 6 !#pragma ident "%Z%%M% %I% %E% SMI"
! 9 !/*
! 10 ! * If compiled without -DRF_INLINE_MACROS then needs -lm at link time
! 11 ! * If compiled with -DRF_INLINE_MACROS then needs conv.il at compile time
! 12 ! * (i.e. cc <compileer_flags> -DRF_INLINE_MACROS conv.il mont_mulf.c )
! 13 ! */
! 16 !#include <math.h>
! 24 !#ifdef RF_INLINE_MACROS
! 26 !double upper32(double);
! 27 !double lower32(double, double);
! 28 !double mod(double, double, double);
! 30 !#else
! 32 !static double
! 33 !upper32(double x)
! 34 !{
! 36 !}
! 39 !/* ARGSUSED */
! 40 !static double
! 41 !lower32(double x, double y)
! 42 !{
! 44 !}
! 46 !static double
! 48 !{
! 50 !}
! 52 !#endif
! 55 !static void
! 57 !{
!
!
! 58 ! int i;
! 64 ! x = dt[i];
/* 0x00bc */ nop
! 70 ! }
! 71 !}
! 74 !/* ARGSUSED */
! 75 !void
! 77 !{
!
!
! 78 ! int i;
! 80 ! a, b, c, d; /* because more efficient code is */
! 81 ! /* generated this way, and there */
! 82 ! /* is no overflow */
! 83 ! t1 = 0;
! 89 ! t = (a >> 32);
! 94 ! t1 = t;
! 95 ! a = c;
! 96 ! b = d;
! 97 ! }
! 99 ! t = (a >> 32);
!
!
! 102 !}
! 104 !void
! 106 !{
!
!
! 107 ! int i;
! 109 !#pragma pipeloop(0)
! 110 ! for (i = 0; i < len; i++)
/* 0x0134 */ nop
!
!
! 112 !}
! 115 !void
! 117 !{
!
!
! 118 ! int i;
! 119 ! uint32_t a;
! 121 !#pragma pipeloop(0)
! 122 ! for (i = 0; i < len; i++) {
! 123 ! a = i32[i];
/* 0x00d0 122 */ nop ! volatile
/* 0x00d4 */ nop ! volatile
/* 0x00d8 */ nop ! volatile
!
!
! 126 ! }
! 127 !}
! 129 !#ifdef RF_INLINE_MACROS
! 131 !void
! 133 ! const double *, /* 2^16 */
! 134 ! const double *, /* 0 */
! 135 ! double *, /* result16 */
! 136 ! double *, /* result32 */
! 137 ! float *); /* source - should be unsigned int* */
! 138 ! /* converted to float* */
! 140 !#else
! 143 !/* ARGSUSED */
! 144 !static void
! 148 ! double *result16,
! 149 ! double *result32,
! 151 ! /* converted to float* */
! 152 !{
! 154 ! uint32_t a, b, c, d;
! 157 ! a = i32[0];
! 163 ! result32[0] = (double)a;
! 173 !}
! 175 !#endif
! 178 !void
! 180 !{
!
!
! 181 ! int i;
! 182 ! uint32_t a;
! 184 !#pragma pipeloop(0)
! 188 ! (float *)(&(i32[i])));
! 189 ! }
! 190 ! for (; i < len; i++) {
/* 0x0134 */ nop
! 191 ! a = i32[i];
/* 0x0208 190 */ nop ! volatile
/* 0x020c */ nop ! volatile
/* 0x0210 */ nop ! volatile
/* 0x0214 */ nop ! volatile
/* 0x0284 190 */ nop ! volatile
/* 0x0288 */ nop ! volatile
/* 0x028c */ nop ! volatile
/* 0x0290 */ nop ! volatile
/* 0x0300 190 */ nop ! volatile
/* 0x0304 */ nop ! volatile
/* 0x0308 */ nop ! volatile
/* 0x030c */ nop ! volatile
! 195 ! }
! 196 !}
! 199 !static void
! 201 !{
!
!
! 203 ! int i;
! 206 ! i = -1;
! 207 ! else {
/* 0x0038 */ nop
/* 0x0054 */ nop
! 210 ! }
! 211 ! }
! 213 ! acc = 0;
! 214 ! for (i = 0; i < len; i++) {
/* 0x0060 */ nop
/* 0x0168 */ nop
! 218 ! }
! 219 ! }
! 220 !}
! 223 !/*
! 224 ! * the lengths of the input arrays should be at least the following:
! 225 ! * result[nlen+1], dm1[nlen], dm2[2*nlen+1], dt[4*nlen+2], dn[nlen], nint[nlen]
! 226 ! * all of them should be different from one another
! 227 ! */
! 232 !{
!
!
! 233 ! int i, j, jj;
! 255 !#pragma pipeloop(0)
! 258 ! }
! 261 ! jj = 0;
! 262 ! }
! 266 ! }
! 267 ! } else {
/* 0x00bc */ nop ! volatile
!1
!2
!3
!4
!5
!6
!7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!19
!20
!21
!22
!23
!24
!25
!26
!27
!28
!29
!30
!31
!32
!33
!34
!35
!36
!37
!38
!39
!40
!41
!42
!43
!44
!45
!46
!47
!48
!49
!50
!51
!52
!53
!54
!55
! 321 ! }
! 322 ! }
/* 0x0c18 */ nop
/* 0x0c34 */ nop
/* 0x0c40 */ nop
.xstabs ".stab.index","Xa ; O ; P ; V=3.1 ; R=Sun WorkShop 6 update 1 C 5.2 Patch 109513-02 2001/02/04",60,0,0,0 ! (/tmp/acompAAAnPa4q5:1)
.xstabs ".stab.index","/home/ferenc/venus/userland/rsa; /ws/cpg-tools/SUNWspro/SC6.1/bin/../WS6U1/bin/cc -DRF_INLINE_MACROS -fast -xarch=v9 -xO5 -xstrconst -xdepend -Xa -xchip=ultra2 -KPIC -Wc,-Qrm-Qd -Wc,-Qrm-Qf -Wc,-assembly -V -c conv_v9.il -o mont_mulf.o mont_mulf.c -W0,-xp",52,0,0,0 ! (/tmp/acompAAAnPa4q5:2)
.ident "cg: Sun WorkShop 6 update 1 Compiler Common 6.1 Patch 109505-04 2001/03/07" ! (NO SOURCE LINE)