aboutsummaryrefslogtreecommitdiff
path: root/src/pkg
diff options
context:
space:
mode:
authorMichał Derkacz <ziutek@lnet.pl>2012-08-03 16:15:11 -0400
committerRuss Cox <rsc@golang.org>2012-08-03 16:15:11 -0400
commitdee5adcf74d249adf1d6ba83eb906dbb60e2ee4f (patch)
tree5c3027f3d853a56d6c38667ed117cd390e4f330a /src/pkg
parent823962c52186415d61f23a819af298dd45ed3a52 (diff)
downloadgo-dee5adcf74d249adf1d6ba83eb906dbb60e2ee4f.tar.xz
5a, 5l, math: Add support for ABSD, ABSF floating point instructions.
R=golang-dev, dave, rsc, minux.ma CC=golang-dev https://golang.org/cl/6225051
Diffstat (limited to 'src/pkg')
-rw-r--r--src/pkg/runtime/softfloat_arm.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/pkg/runtime/softfloat_arm.c b/src/pkg/runtime/softfloat_arm.c
index bd73cb15b5..9a54406302 100644
--- a/src/pkg/runtime/softfloat_arm.c
+++ b/src/pkg/runtime/softfloat_arm.c
@@ -420,6 +420,23 @@ stage3: // regd, regm are 4bit variables
regd, regm, m->freghi[regd], m->freglo[regd]);
break;
+ case 0xeeb00bc0: // D[regd] = abs D[regm]
+ m->freglo[regd] = m->freglo[regm];
+ m->freghi[regd] = m->freghi[regm] & ((1<<31)-1);
+
+ if(trace)
+ runtime·printf("*** D[%d] = abs D[%d] %x-%x\n",
+ regd, regm, m->freghi[regd], m->freglo[regd]);
+ break;
+
+ case 0xeeb00ac0: // F[regd] = abs F[regm]
+ m->freglo[regd] = m->freglo[regm] & ((1<<31)-1);
+
+ if(trace)
+ runtime·printf("*** F[%d] = abs F[%d] %x\n",
+ regd, regm, m->freglo[regd]);
+ break;
+
case 0xeeb40bc0: // D[regd] :: D[regm] (CMPD)
runtime·fcmp64c(getd(regd), getd(regm), &cmp, &nan);
m->fflag = fstatus(nan, cmp);