aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/arm/softfloat.c
diff options
context:
space:
mode:
authorFan Hongjian <fan.howard@gmail.com>2011-06-09 17:19:08 -0400
committerRuss Cox <rsc@golang.org>2011-06-09 17:19:08 -0400
commitfc41e621e875838bb62a111ac8ad97fa39f2bb2b (patch)
tree6749f57b3aa15b868e58a177835c00f4d15cb597 /src/pkg/runtime/arm/softfloat.c
parent965ff4bb3a01a87b70d061ad0eb2766352e7d598 (diff)
downloadgo-fc41e621e875838bb62a111ac8ad97fa39f2bb2b.tar.xz
math: add sqrt_arm.s and sqrtGoC.go as fallback to soft fp emulation
5a: add SQRTF and SQRTD 5l: add ASQRTF and ASQRTD Use ARMv7 VFP VSQRT instruction to speed up math.Sqrt R=rsc, dave, m CC=golang-dev https://golang.org/cl/4551082
Diffstat (limited to 'src/pkg/runtime/arm/softfloat.c')
-rw-r--r--src/pkg/runtime/arm/softfloat.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/pkg/runtime/arm/softfloat.c b/src/pkg/runtime/arm/softfloat.c
index f91a6fc09b..c5da888743 100644
--- a/src/pkg/runtime/arm/softfloat.c
+++ b/src/pkg/runtime/arm/softfloat.c
@@ -357,6 +357,15 @@ stage3: // regd, regm are 4bit variables
regd, regm, m->freghi[regd], m->freglo[regd]);
break;
+ case 0xeeb10bc0: // D[regd] = sqrt D[regm]
+ math·sqrtGoC(getd(regm), &uval);
+ putd(regd, uval);
+
+ if(trace)
+ runtime·printf("*** D[%d] = sqrt D[%d] %x-%x\n",
+ regd, regm, m->freghi[regd], m->freglo[regd]);
+ break;
+
case 0xeeb40bc0: // D[regd] :: D[regm] (CMPD)
runtime·fcmp64c(getd(regd), getd(regm), &cmp, &nan);
m->fflag = fstatus(nan, cmp);