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