1*5d9d9091SRichard Lowe/* 2*5d9d9091SRichard Lowe * CDDL HEADER START 3*5d9d9091SRichard Lowe * 4*5d9d9091SRichard Lowe * The contents of this file are subject to the terms of the 5*5d9d9091SRichard Lowe * Common Development and Distribution License, Version 1.0 only 6*5d9d9091SRichard Lowe * (the "License"). You may not use this file except in compliance 7*5d9d9091SRichard Lowe * with the License. 8*5d9d9091SRichard Lowe * 9*5d9d9091SRichard Lowe * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*5d9d9091SRichard Lowe * or http://www.opensolaris.org/os/licensing. 11*5d9d9091SRichard Lowe * See the License for the specific language governing permissions 12*5d9d9091SRichard Lowe * and limitations under the License. 13*5d9d9091SRichard Lowe * 14*5d9d9091SRichard Lowe * When distributing Covered Code, include this CDDL HEADER in each 15*5d9d9091SRichard Lowe * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*5d9d9091SRichard Lowe * If applicable, add the following below this CDDL HEADER, with the 17*5d9d9091SRichard Lowe * fields enclosed by brackets "[]" replaced with your own identifying 18*5d9d9091SRichard Lowe * information: Portions Copyright [yyyy] [name of copyright owner] 19*5d9d9091SRichard Lowe * 20*5d9d9091SRichard Lowe * CDDL HEADER END 21*5d9d9091SRichard Lowe */ 22*5d9d9091SRichard Lowe 23*5d9d9091SRichard Lowe/* 24*5d9d9091SRichard Lowe * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 25*5d9d9091SRichard Lowe * Use is subject to license terms. 26*5d9d9091SRichard Lowe */ 27*5d9d9091SRichard Lowe 28*5d9d9091SRichard Lowe/* 29*5d9d9091SRichard Lowe * These are functions corresponding to some which used to be inline, with Sun 30*5d9d9091SRichard Lowe * Studio. Someone may want to make them into gcc inline asm. 31*5d9d9091SRichard Lowe */ 32*5d9d9091SRichard Lowe 33*5d9d9091SRichard Lowe#include <sys/asm_linkage.h> 34*5d9d9091SRichard Lowe 35*5d9d9091SRichard Lowe ENTRY_NP(__quad_getfsrp) 36*5d9d9091SRichard Lowe retl 37*5d9d9091SRichard Lowe st %fsr,[%o0] 38*5d9d9091SRichard Lowe SET_SIZE(__quad_getfsrp) 39*5d9d9091SRichard Lowe 40*5d9d9091SRichard Lowe ENTRY_NP(__quad_setfsrp) 41*5d9d9091SRichard Lowe retl 42*5d9d9091SRichard Lowe ld [%o0],%fsr 43*5d9d9091SRichard Lowe SET_SIZE(__quad_setfsrp) 44*5d9d9091SRichard Lowe 45*5d9d9091SRichard Lowe ENTRY_NP(__quad_dp_sqrt) 46*5d9d9091SRichard Lowe ldd [%o0],%f0 47*5d9d9091SRichard Lowe fsqrtd %f0,%f0 48*5d9d9091SRichard Lowe retl 49*5d9d9091SRichard Lowe nop 50*5d9d9091SRichard Lowe SET_SIZE(__quad_dp_sqrt) 51*5d9d9091SRichard Lowe 52*5d9d9091SRichard Lowe ENTRY_NP(__quad_faddq) 53*5d9d9091SRichard Lowe ldd [%o0],%f0 54*5d9d9091SRichard Lowe ldd [%o0+8],%f2 55*5d9d9091SRichard Lowe ldd [%o1],%f4 56*5d9d9091SRichard Lowe ldd [%o1+8],%f6 57*5d9d9091SRichard Lowe faddq %f0,%f4,%f8 58*5d9d9091SRichard Lowe std %f8,[%o2] 59*5d9d9091SRichard Lowe retl 60*5d9d9091SRichard Lowe std %f10,[%o2+8] 61*5d9d9091SRichard Lowe SET_SIZE(__quad_faddq) 62*5d9d9091SRichard Lowe 63*5d9d9091SRichard Lowe ENTRY_NP(__quad_fsubq) 64*5d9d9091SRichard Lowe ldd [%o0],%f0 65*5d9d9091SRichard Lowe ldd [%o0+8],%f2 66*5d9d9091SRichard Lowe ldd [%o1],%f4 67*5d9d9091SRichard Lowe ldd [%o1+8],%f6 68*5d9d9091SRichard Lowe fsubq %f0,%f4,%f8 69*5d9d9091SRichard Lowe std %f8,[%o2] 70*5d9d9091SRichard Lowe retl 71*5d9d9091SRichard Lowe std %f10,[%o2+8] 72*5d9d9091SRichard Lowe SET_SIZE(__quad_fsubq) 73*5d9d9091SRichard Lowe 74*5d9d9091SRichard Lowe ENTRY_NP(__quad_fmulq) 75*5d9d9091SRichard Lowe ldd [%o0],%f0 76*5d9d9091SRichard Lowe ldd [%o0+8],%f2 77*5d9d9091SRichard Lowe ldd [%o1],%f4 78*5d9d9091SRichard Lowe ldd [%o1+8],%f6 79*5d9d9091SRichard Lowe fmulq %f0,%f4,%f8 80*5d9d9091SRichard Lowe std %f8,[%o2] 81*5d9d9091SRichard Lowe retl 82*5d9d9091SRichard Lowe std %f10,[%o2+8] 83*5d9d9091SRichard Lowe SET_SIZE(__quad_fmulq) 84*5d9d9091SRichard Lowe 85*5d9d9091SRichard Lowe ENTRY_NP(__quad_fdivq) 86*5d9d9091SRichard Lowe ldd [%o0],%f0 87*5d9d9091SRichard Lowe ldd [%o0+8],%f2 88*5d9d9091SRichard Lowe ldd [%o1],%f4 89*5d9d9091SRichard Lowe ldd [%o1+8],%f6 90*5d9d9091SRichard Lowe fdivq %f0,%f4,%f8 91*5d9d9091SRichard Lowe std %f8,[%o2] 92*5d9d9091SRichard Lowe retl 93*5d9d9091SRichard Lowe std %f10,[%o2+8] 94*5d9d9091SRichard Lowe SET_SIZE(__quad_fdivq) 95*5d9d9091SRichard Lowe 96*5d9d9091SRichard Lowe ENTRY_NP(__quad_fsqrtq) 97*5d9d9091SRichard Lowe ldd [%o0],%f0 98*5d9d9091SRichard Lowe ldd [%o0+8],%f2 99*5d9d9091SRichard Lowe fsqrtq %f0,%f4 100*5d9d9091SRichard Lowe std %f4,[%o1] 101*5d9d9091SRichard Lowe retl 102*5d9d9091SRichard Lowe std %f6,[%o1+8] 103*5d9d9091SRichard Lowe SET_SIZE(__quad_fsqrtq) 104*5d9d9091SRichard Lowe 105*5d9d9091SRichard Lowe ENTRY_NP(__quad_fcmpq) 106*5d9d9091SRichard Lowe ldd [%o0],%f0 107*5d9d9091SRichard Lowe ldd [%o0+8],%f2 108*5d9d9091SRichard Lowe ldd [%o1],%f4 109*5d9d9091SRichard Lowe ldd [%o1+8],%f6 110*5d9d9091SRichard Lowe fcmpq %f0,%f4 111*5d9d9091SRichard Lowe retl 112*5d9d9091SRichard Lowe st %fsr,[%o2] 113*5d9d9091SRichard Lowe SET_SIZE(__quad_fcmpq) 114*5d9d9091SRichard Lowe 115*5d9d9091SRichard Lowe ENTRY_NP(__quad_fcmpeq) 116*5d9d9091SRichard Lowe ldd [%o0],%f0 117*5d9d9091SRichard Lowe ldd [%o0+8],%f2 118*5d9d9091SRichard Lowe ldd [%o1],%f4 119*5d9d9091SRichard Lowe ldd [%o1+8],%f6 120*5d9d9091SRichard Lowe fcmpeq %f0,%f4 121*5d9d9091SRichard Lowe retl 122*5d9d9091SRichard Lowe st %fsr,[%o2] 123*5d9d9091SRichard Lowe SET_SIZE(__quad_fcmpeq) 124*5d9d9091SRichard Lowe 125*5d9d9091SRichard Lowe ENTRY_NP(__quad_fstoq) 126*5d9d9091SRichard Lowe ld [%o0],%f0 127*5d9d9091SRichard Lowe fstoq %f0,%f4 128*5d9d9091SRichard Lowe std %f4,[%o1] 129*5d9d9091SRichard Lowe retl 130*5d9d9091SRichard Lowe std %f6,[%o1+8] 131*5d9d9091SRichard Lowe SET_SIZE(__quad_fstoq) 132*5d9d9091SRichard Lowe 133*5d9d9091SRichard Lowe ENTRY_NP(__quad_fdtoq) 134*5d9d9091SRichard Lowe ldd [%o0],%f0 135*5d9d9091SRichard Lowe fdtoq %f0,%f4 136*5d9d9091SRichard Lowe std %f4,[%o1] 137*5d9d9091SRichard Lowe retl 138*5d9d9091SRichard Lowe std %f6,[%o1+8] 139*5d9d9091SRichard Lowe SET_SIZE(__quad_fdtoq) 140*5d9d9091SRichard Lowe 141*5d9d9091SRichard Lowe ENTRY_NP(__quad_fqtoi) 142*5d9d9091SRichard Lowe ldd [%o0],%f0 143*5d9d9091SRichard Lowe ldd [%o0+8],%f2 144*5d9d9091SRichard Lowe fqtoi %f0,%f4 145*5d9d9091SRichard Lowe retl 146*5d9d9091SRichard Lowe st %f4,[%o1] 147*5d9d9091SRichard Lowe SET_SIZE(__quad_fqtoi) 148*5d9d9091SRichard Lowe 149*5d9d9091SRichard Lowe ENTRY_NP(__quad_fqtos) 150*5d9d9091SRichard Lowe ldd [%o0],%f0 151*5d9d9091SRichard Lowe ldd [%o0+8],%f2 152*5d9d9091SRichard Lowe fqtos %f0,%f4 153*5d9d9091SRichard Lowe retl 154*5d9d9091SRichard Lowe st %f4,[%o1] 155*5d9d9091SRichard Lowe SET_SIZE(__quad_fqtos) 156*5d9d9091SRichard Lowe 157*5d9d9091SRichard Lowe ENTRY_NP(__quad_fqtod) 158*5d9d9091SRichard Lowe ldd [%o0],%f0 159*5d9d9091SRichard Lowe ldd [%o0+8],%f2 160*5d9d9091SRichard Lowe fqtod %f0,%f4 161*5d9d9091SRichard Lowe retl 162*5d9d9091SRichard Lowe std %f4,[%o1] 163*5d9d9091SRichard Lowe SET_SIZE(__quad_fqtod) 164*5d9d9091SRichard Lowe 165*5d9d9091SRichard Lowe#if defined(__sparcv9) 166*5d9d9091SRichard Lowe ENTRY_NP(__quad_fqtox) 167*5d9d9091SRichard Lowe ldd [%o0],%f0 168*5d9d9091SRichard Lowe ldd [%o0+8],%f2 169*5d9d9091SRichard Lowe fqtox %f0,%f4 170*5d9d9091SRichard Lowe retl 171*5d9d9091SRichard Lowe std %f4,[%o1] 172*5d9d9091SRichard Lowe SET_SIZE(__quad_fqtox) 173*5d9d9091SRichard Lowe#endif 174