summaryrefslogtreecommitdiffstats
path: root/lib/libc/arm/aeabi/aeabi_vfp_double.S
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2014-10-22 13:50:38 +0000
committerandrew <andrew@FreeBSD.org>2014-10-22 13:50:38 +0000
commit58b9da93f03431d6fcab3cd00dd912dbb9b13e20 (patch)
tree6bd00b106ee88f162bf7d09fc60afd27155dd062 /lib/libc/arm/aeabi/aeabi_vfp_double.S
parenteb3582e16fc01e7c3e10471374605153ea6bd1f2 (diff)
downloadFreeBSD-src-58b9da93f03431d6fcab3cd00dd912dbb9b13e20.zip
FreeBSD-src-58b9da93f03431d6fcab3cd00dd912dbb9b13e20.tar.gz
MFC r273088:
Add support for the __aeabi_c*cmp* functions. These are similar to the existing functions with the exception they use the condition flags to store the result.
Diffstat (limited to 'lib/libc/arm/aeabi/aeabi_vfp_double.S')
-rw-r--r--lib/libc/arm/aeabi/aeabi_vfp_double.S27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/libc/arm/aeabi/aeabi_vfp_double.S b/lib/libc/arm/aeabi/aeabi_vfp_double.S
index 842412b..62100d2 100644
--- a/lib/libc/arm/aeabi/aeabi_vfp_double.S
+++ b/lib/libc/arm/aeabi/aeabi_vfp_double.S
@@ -33,6 +33,33 @@ __FBSDID("$FreeBSD$");
.fpu vfp
.syntax unified
+/* void __aeabi_cdcmpeq(double, double) */
+AEABI_ENTRY(cdcmpeq)
+ LOAD_DREG(d0, r0, r1)
+ LOAD_DREG(d1, r2, r3)
+ vcmp.f64 d0, d1
+ vmrs APSR_nzcv, fpscr
+ RET
+AEABI_END(cdcmpeq)
+
+/* void __aeabi_cdcmple(double, double) */
+AEABI_ENTRY(cdcmple)
+ LOAD_DREG(d0, r0, r1)
+ LOAD_DREG(d1, r2, r3)
+ vcmpe.f64 d0, d1
+ vmrs APSR_nzcv, fpscr
+ RET
+AEABI_END(cdcmple)
+
+/* void __aeabi_cdrcmple(double, double) */
+AEABI_ENTRY(cdrcmple)
+ LOAD_DREG(d0, r0, r1)
+ LOAD_DREG(d1, r2, r3)
+ vcmpe.f64 d1, d0
+ vmrs APSR_nzcv, fpscr
+ RET
+AEABI_END(cdrcmple)
+
/* int __aeabi_dcmpeq(double, double) */
AEABI_ENTRY(dcmpeq)
LOAD_DREG(d0, r0, r1)
OpenPOWER on IntegriCloud