aeabi_float.c revision 256281
129088Smarkm/*
229088Smarkm * Copyright (C) 2012 Andrew Turner
329088Smarkm * All rights reserved.
429088Smarkm *
529088Smarkm * Redistribution and use in source and binary forms, with or without
629088Smarkm * modification, are permitted provided that the following conditions
729088Smarkm * are met:
829088Smarkm * 1. Redistributions of source code must retain the above copyright
929088Smarkm *    notice, this list of conditions and the following disclaimer.
1029088Smarkm * 2. Redistributions in binary form must reproduce the above copyright
1129088Smarkm *    notice, this list of conditions and the following disclaimer in the
1229088Smarkm *    documentation and/or other materials provided with the distribution.
1329088Smarkm *
1429088Smarkm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1529088Smarkm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1629088Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1729088Smarkm * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1829088Smarkm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1929088Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2029088Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2129088Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2229088Smarkm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2329088Smarkm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2429088Smarkm * SUCH DAMAGE.
2529088Smarkm *
2629088Smarkm */
2729088Smarkm
2829088Smarkm#include <sys/cdefs.h>
2929088Smarkm__FBSDID("$FreeBSD: stable/10/lib/libc/arm/aeabi/aeabi_float.c 245655 2013-01-19 05:33:55Z andrew $");
3029088Smarkm
3129088Smarkm#include "softfloat-for-gcc.h"
3229088Smarkm#include "milieu.h"
3329088Smarkm#include "softfloat.h"
3484305Smarkm
3587139Smarkmflag __unordsf2(float32, float32);
3684305Smarkm
3784305Smarkmint __aeabi_fcmpeq(float32 a, float32 b)
3829088Smarkm{
3963248Speter	return float32_eq(a, b);
4029181Smarkm}
4163248Speter
4229088Smarkmint __aeabi_fcmplt(float32 a, float32 b)
4329088Smarkm{
4429088Smarkm	return float32_lt(a, b);
4529088Smarkm}
4629088Smarkm
4787139Smarkmint __aeabi_fcmple(float32 a, float32 b)
4887139Smarkm{
4929088Smarkm	return float32_le(a, b);
5029088Smarkm}
5129088Smarkm
5229088Smarkmint __aeabi_fcmpge(float32 a, float32 b)
5329088Smarkm{
5429088Smarkm	return float32_le(b, a);
5529088Smarkm}
5681965Smarkm
5787139Smarkmint __aeabi_fcmpgt(float32 a, float32 b)
5829088Smarkm{
5929088Smarkm	return float32_lt(b, a);
6081965Smarkm}
6129088Smarkm
6229088Smarkmint __aeabi_fcmpun(float32 a, float32 b)
6329088Smarkm{
6429088Smarkm	return __unordsf2(a, b);
6529088Smarkm}
6629088Smarkm
6729088Smarkmint __aeabi_f2iz(float32 a)
6829088Smarkm{
6929088Smarkm	return float32_to_int32_round_to_zero(a);
7029088Smarkm}
7129088Smarkm
7229088Smarkmfloat32 __aeabi_f2d(float32 a)
7329088Smarkm{
7429088Smarkm	return float32_to_float64(a);
7529088Smarkm}
7629088Smarkm
7729088Smarkmfloat32 __aeabi_i2f(int a)
7881965Smarkm{
7981965Smarkm	return int32_to_float32(a);
8029088Smarkm}
8181965Smarkm
8281965Smarkmfloat32 __aeabi_fadd(float32 a, float32 b)
8329088Smarkm{
8429088Smarkm	return float32_add(a, b);
8529088Smarkm}
8629088Smarkm
8729088Smarkmfloat32 __aeabi_fdiv(float32 a, float32 b)
8829088Smarkm{
8929088Smarkm	return float32_div(a, b);
9029088Smarkm}
9129088Smarkm
9229088Smarkmfloat32 __aeabi_fmul(float32 a, float32 b)
9329088Smarkm{
9429088Smarkm	return float32_mul(a, b);
9529088Smarkm}
9629088Smarkm
9729088Smarkmfloat32 __aeabi_fsub(float32 a, float32 b)
9829088Smarkm{
9929088Smarkm	return float32_sub(a, b);
10029088Smarkm}
10129088Smarkm
10229088Smarkm