Deleted Added
full compact
aeabi_float.c (256281) aeabi_float.c (266314)
1/*
2 * Copyright (C) 2012 Andrew Turner
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 */
27
28#include <sys/cdefs.h>
1/*
2 * Copyright (C) 2012 Andrew Turner
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 */
27
28#include <sys/cdefs.h>
29__FBSDID("$FreeBSD: stable/10/lib/libc/arm/aeabi/aeabi_float.c 245655 2013-01-19 05:33:55Z andrew $");
29__FBSDID("$FreeBSD: stable/10/lib/libc/arm/aeabi/aeabi_float.c 266314 2014-05-17 14:22:37Z ian $");
30
31#include "softfloat-for-gcc.h"
32#include "milieu.h"
33#include "softfloat.h"
34
30
31#include "softfloat-for-gcc.h"
32#include "milieu.h"
33#include "softfloat.h"
34
35flag __unordsf2(float32, float32);
35#include "aeabi_vfp.h"
36
36
37int __aeabi_fcmpeq(float32 a, float32 b)
38{
39 return float32_eq(a, b);
40}
37extern int _libc_arm_fpu_present;
41
38
42int __aeabi_fcmplt(float32 a, float32 b)
43{
44 return float32_lt(a, b);
45}
39flag __unordsf2(float32, float32);
46
40
47int __aeabi_fcmple(float32 a, float32 b)
48{
49 return float32_le(a, b);
50}
41/* These are written in asm and are only called from this file */
42int __aeabi_fcmpeq_vfp(float32, float32);
43int __aeabi_fcmplt_vfp(float32, float32);
44int __aeabi_fcmple_vfp(float32, float32);
45int __aeabi_fcmpgt_vfp(float32, float32);
46int __aeabi_fcmpge_vfp(float32, float32);
47int __aeabi_fcmpun_vfp(float32, float32);
48int __aeabi_f2iz_vfp(float32);
49float64 __aeabi_f2d_vfp(float32);
50float32 __aeabi_i2f_vfp(int);
51float32 __aeabi_fadd_vfp(float32, float32);
52float32 __aeabi_fdiv_vfp(float32, float32);
53float32 __aeabi_fmul_vfp(float32, float32);
54float32 __aeabi_fsub_vfp(float32, float32);
51
55
52int __aeabi_fcmpge(float32 a, float32 b)
53{
54 return float32_le(b, a);
55}
56/*
57 * Depending on the target these will:
58 * On armv6 with a vfp call the above function, or
59 * Call the softfloat function in the 3rd argument.
60 */
61int AEABI_FUNC2(fcmpeq, float32, float32_eq)
62int AEABI_FUNC2(fcmplt, float32, float32_lt)
63int AEABI_FUNC2(fcmple, float32, float32_le)
64int AEABI_FUNC2_REV(fcmpge, float32, float32_le)
65int AEABI_FUNC2_REV(fcmpgt, float32, float32_lt)
66int AEABI_FUNC2(fcmpun, float32, __unordsf2)
56
67
57int __aeabi_fcmpgt(float32 a, float32 b)
58{
59 return float32_lt(b, a);
60}
68int AEABI_FUNC(f2iz, float32, float32_to_int32_round_to_zero)
69float64 AEABI_FUNC(f2d, float32, float32_to_float64)
70float32 AEABI_FUNC(i2f, int, int32_to_float32)
61
71
62int __aeabi_fcmpun(float32 a, float32 b)
63{
64 return __unordsf2(a, b);
65}
72float32 AEABI_FUNC2(fadd, float32, float32_add)
73float32 AEABI_FUNC2(fdiv, float32, float32_div)
74float32 AEABI_FUNC2(fmul, float32, float32_mul)
75float32 AEABI_FUNC2(fsub, float32, float32_sub)
66
76
67int __aeabi_f2iz(float32 a)
68{
69 return float32_to_int32_round_to_zero(a);
70}
71
72float32 __aeabi_f2d(float32 a)
73{
74 return float32_to_float64(a);
75}
76
77float32 __aeabi_i2f(int a)
78{
79 return int32_to_float32(a);
80}
81
82float32 __aeabi_fadd(float32 a, float32 b)
83{
84 return float32_add(a, b);
85}
86
87float32 __aeabi_fdiv(float32 a, float32 b)
88{
89 return float32_div(a, b);
90}
91
92float32 __aeabi_fmul(float32 a, float32 b)
93{
94 return float32_mul(a, b);
95}
96
97float32 __aeabi_fsub(float32 a, float32 b)
98{
99 return float32_sub(a, b);
100}
101