1*01298368SAndrew Turner /* 2*01298368SAndrew Turner * Copyright (C) 2012 Andrew Turner 3*01298368SAndrew Turner * All rights reserved. 4*01298368SAndrew Turner * 5*01298368SAndrew Turner * Redistribution and use in source and binary forms, with or without 6*01298368SAndrew Turner * modification, are permitted provided that the following conditions 7*01298368SAndrew Turner * are met: 8*01298368SAndrew Turner * 1. Redistributions of source code must retain the above copyright 9*01298368SAndrew Turner * notice, this list of conditions and the following disclaimer. 10*01298368SAndrew Turner * 2. Redistributions in binary form must reproduce the above copyright 11*01298368SAndrew Turner * notice, this list of conditions and the following disclaimer in the 12*01298368SAndrew Turner * documentation and/or other materials provided with the distribution. 13*01298368SAndrew Turner * 14*01298368SAndrew Turner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*01298368SAndrew Turner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*01298368SAndrew Turner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*01298368SAndrew Turner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*01298368SAndrew Turner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*01298368SAndrew Turner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*01298368SAndrew Turner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*01298368SAndrew Turner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*01298368SAndrew Turner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*01298368SAndrew Turner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*01298368SAndrew Turner * SUCH DAMAGE. 25*01298368SAndrew Turner * 26*01298368SAndrew Turner */ 27*01298368SAndrew Turner 28*01298368SAndrew Turner #include <sys/cdefs.h> 29*01298368SAndrew Turner __FBSDID("$FreeBSD$"); 30*01298368SAndrew Turner 31*01298368SAndrew Turner #include "softfloat-for-gcc.h" 32*01298368SAndrew Turner #include "milieu.h" 33*01298368SAndrew Turner #include "softfloat.h" 34*01298368SAndrew Turner 35*01298368SAndrew Turner flag __unordsf2(float32, float32); 36*01298368SAndrew Turner 37*01298368SAndrew Turner int __aeabi_fcmpeq(float32 a, float32 b) 38*01298368SAndrew Turner { 39*01298368SAndrew Turner return float32_eq(a, b); 40*01298368SAndrew Turner } 41*01298368SAndrew Turner 42*01298368SAndrew Turner int __aeabi_fcmplt(float32 a, float32 b) 43*01298368SAndrew Turner { 44*01298368SAndrew Turner return float32_lt(a, b); 45*01298368SAndrew Turner } 46*01298368SAndrew Turner 47*01298368SAndrew Turner int __aeabi_fcmple(float32 a, float32 b) 48*01298368SAndrew Turner { 49*01298368SAndrew Turner return float32_le(a, b); 50*01298368SAndrew Turner } 51*01298368SAndrew Turner 52*01298368SAndrew Turner int __aeabi_fcmpge(float32 a, float32 b) 53*01298368SAndrew Turner { 54*01298368SAndrew Turner return float32_le(b, a); 55*01298368SAndrew Turner } 56*01298368SAndrew Turner 57*01298368SAndrew Turner int __aeabi_fcmpgt(float32 a, float32 b) 58*01298368SAndrew Turner { 59*01298368SAndrew Turner return float32_lt(b, a); 60*01298368SAndrew Turner } 61*01298368SAndrew Turner 62*01298368SAndrew Turner int __aeabi_fcmpun(float32 a, float32 b) 63*01298368SAndrew Turner { 64*01298368SAndrew Turner return __unordsf2(a, b); 65*01298368SAndrew Turner } 66*01298368SAndrew Turner 67*01298368SAndrew Turner int __aeabi_f2iz(float32 a) 68*01298368SAndrew Turner { 69*01298368SAndrew Turner return float32_to_int32_round_to_zero(a); 70*01298368SAndrew Turner } 71*01298368SAndrew Turner 72*01298368SAndrew Turner float32 __aeabi_f2d(float32 a) 73*01298368SAndrew Turner { 74*01298368SAndrew Turner return float32_to_float64(a); 75*01298368SAndrew Turner } 76*01298368SAndrew Turner 77*01298368SAndrew Turner float32 __aeabi_i2f(int a) 78*01298368SAndrew Turner { 79*01298368SAndrew Turner return int32_to_float32(a); 80*01298368SAndrew Turner } 81*01298368SAndrew Turner 82*01298368SAndrew Turner float32 __aeabi_fadd(float32 a, float32 b) 83*01298368SAndrew Turner { 84*01298368SAndrew Turner return float32_add(a, b); 85*01298368SAndrew Turner } 86*01298368SAndrew Turner 87*01298368SAndrew Turner float32 __aeabi_fdiv(float32 a, float32 b) 88*01298368SAndrew Turner { 89*01298368SAndrew Turner return float32_div(a, b); 90*01298368SAndrew Turner } 91*01298368SAndrew Turner 92*01298368SAndrew Turner float32 __aeabi_fmul(float32 a, float32 b) 93*01298368SAndrew Turner { 94*01298368SAndrew Turner return float32_mul(a, b); 95*01298368SAndrew Turner } 96*01298368SAndrew Turner 97*01298368SAndrew Turner float32 __aeabi_fsub(float32 a, float32 b) 98*01298368SAndrew Turner { 99*01298368SAndrew Turner return float32_sub(a, b); 100*01298368SAndrew Turner } 101*01298368SAndrew Turner 102