xref: /openbsd-src/lib/libc/arch/powerpc64/gen/fabs.c (revision e11d2af5d4ec4cbb24b31f0bfebeb108824be235)
1*e11d2af5Sdrahn /*	$OpenBSD: fabs.c,v 1.1 2020/06/25 02:03:55 drahn Exp $	*/
2*e11d2af5Sdrahn 
3*e11d2af5Sdrahn /*
4*e11d2af5Sdrahn  * Copyright (c) 2002 Theo de Raadt
5*e11d2af5Sdrahn  * All rights reserved.
6*e11d2af5Sdrahn  *
7*e11d2af5Sdrahn  * Redistribution and use in source and binary forms, with or without
8*e11d2af5Sdrahn  * modification, are permitted provided that the following conditions
9*e11d2af5Sdrahn  * are met:
10*e11d2af5Sdrahn  * 1. Redistributions of source code must retain the above copyright
11*e11d2af5Sdrahn  *    notice, this list of conditions and the following disclaimer.
12*e11d2af5Sdrahn  * 2. Redistributions in binary form must reproduce the above copyright
13*e11d2af5Sdrahn  *    notice, this list of conditions and the following disclaimer in the
14*e11d2af5Sdrahn  *    documentation and/or other materials provided with the distribution.
15*e11d2af5Sdrahn  *
16*e11d2af5Sdrahn  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17*e11d2af5Sdrahn  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18*e11d2af5Sdrahn  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19*e11d2af5Sdrahn  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20*e11d2af5Sdrahn  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21*e11d2af5Sdrahn  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22*e11d2af5Sdrahn  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23*e11d2af5Sdrahn  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*e11d2af5Sdrahn  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25*e11d2af5Sdrahn  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*e11d2af5Sdrahn  */
27*e11d2af5Sdrahn 
28*e11d2af5Sdrahn #include <math.h>
29*e11d2af5Sdrahn 
30*e11d2af5Sdrahn double
fabs(double x)31*e11d2af5Sdrahn fabs(double x)
32*e11d2af5Sdrahn {
33*e11d2af5Sdrahn 	__asm__ volatile("fabs %0,%1" : "=f"(x) : "f"(x));
34*e11d2af5Sdrahn 	return (x);
35*e11d2af5Sdrahn }
36*e11d2af5Sdrahn 
37*e11d2af5Sdrahn __strong_alias(fabsl, fabs);
38