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 /*
23 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
24 */
25 /*
26 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
27 * Use is subject to license terms.
28 */
29
30 #if defined(ELFOBJ)
31 #pragma weak fmaf = __fmaf
32 #endif
33
34 #include "libm.h"
35 #include "fma.h"
36 #include "fenv_inlines.h"
37
38 #if defined(__sparc)
39
40 /*
41 * fmaf for SPARC: 32-bit single precision, big-endian
42 */
43 float
44 __fmaf(float x, float y, float z) {
45 union {
46 unsigned i[2];
47 double d;
48 } xy, zz;
49 unsigned u, s;
50 int exy, ez;
51
52 /*
|
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 /*
23 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
24 */
25 /*
26 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
27 * Use is subject to license terms.
28 */
29
30 #pragma weak fmaf = __fmaf
31
32 #include "libm.h"
33 #include "fma.h"
34 #include "fenv_inlines.h"
35
36 #if defined(__sparc)
37
38 /*
39 * fmaf for SPARC: 32-bit single precision, big-endian
40 */
41 float
42 __fmaf(float x, float y, float z) {
43 union {
44 unsigned i[2];
45 double d;
46 } xy, zz;
47 unsigned u, s;
48 int exy, ez;
49
50 /*
|