diff options
| author | Fan Hongjian <fan.howard@gmail.com> | 2011-06-09 17:19:08 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2011-06-09 17:19:08 -0400 |
| commit | fc41e621e875838bb62a111ac8ad97fa39f2bb2b (patch) | |
| tree | 6749f57b3aa15b868e58a177835c00f4d15cb597 /src/pkg/runtime/arm/softfloat.c | |
| parent | 965ff4bb3a01a87b70d061ad0eb2766352e7d598 (diff) | |
| download | go-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.c | 9 |
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); |
