|
From: <sv...@va...> - 2012-09-13 15:10:07
|
florian 2012-09-13 16:09:53 +0100 (Thu, 13 Sep 2012)
New Revision: 12968
Log:
s390: Add testcase for bfp multiply-and-add/sub
Added files:
trunk/none/tests/s390x/bfp-3.c
trunk/none/tests/s390x/bfp-3.stderr.exp
trunk/none/tests/s390x/bfp-3.stdout.exp
trunk/none/tests/s390x/bfp-3.vgtest
Modified directories:
trunk/none/tests/s390x/
Modified files:
trunk/none/tests/s390x/Makefile.am
Modified: trunk/none/tests/s390x/
Added: trunk/none/tests/s390x/bfp-3.stderr.exp (+2 -0)
===================================================================
--- trunk/none/tests/s390x/bfp-3.stderr.exp 2012-09-13 04:04:23 +01:00 (rev 12967)
+++ trunk/none/tests/s390x/bfp-3.stderr.exp 2012-09-13 16:09:53 +01:00 (rev 12968)
@@ -0,0 +1,2 @@
+
+
Modified: trunk/none/tests/s390x/Makefile.am (+2 -2)
===================================================================
--- trunk/none/tests/s390x/Makefile.am 2012-09-13 04:04:23 +01:00 (rev 12967)
+++ trunk/none/tests/s390x/Makefile.am 2012-09-13 16:09:53 +01:00 (rev 12968)
@@ -9,8 +9,8 @@
trto trot trtt tr tre cij cgij clij clgij crj cgrj clrj clgrj \
cs csg cds cdsg cu21 cu21_1 cu24 cu24_1 cu42 cu12 cu12_1 \
ex_sig ex_clone cu14 cu14_1 cu41 fpconv ecag fpext fpext_warn \
- rounding-1 rounding-2 rounding-3 rounding-4 rounding-5 bfp-1 \
- bfp-2
+ rounding-1 rounding-2 rounding-3 rounding-4 rounding-5 bfp-1 \
+ bfp-2 bfp-3
check_PROGRAMS = $(INSN_TESTS) \
allexec \
Added: trunk/none/tests/s390x/bfp-3.vgtest (+1 -0)
===================================================================
--- trunk/none/tests/s390x/bfp-3.vgtest 2012-09-13 04:04:23 +01:00 (rev 12967)
+++ trunk/none/tests/s390x/bfp-3.vgtest 2012-09-13 16:09:53 +01:00 (rev 12968)
@@ -0,0 +1 @@
+prog: bfp-3
Added: trunk/none/tests/s390x/bfp-3.stdout.exp (+4 -0)
===================================================================
--- trunk/none/tests/s390x/bfp-3.stdout.exp 2012-09-13 04:04:23 +01:00 (rev 12967)
+++ trunk/none/tests/s390x/bfp-3.stdout.exp 2012-09-13 16:09:53 +01:00 (rev 12968)
@@ -0,0 +1,4 @@
+maebr 20.250000 * 3.000000 + 10.500000 -> 71.250000
+madbr 42.750000 * -2.000000 + -10.500000 -> -96.000000
+msebr 20.250000 * 3.000000 - 10.500000 -> 50.250000
+msdbr 42.750000 * -2.000000 - -10.500000 -> -75.000000
Property changed: trunk/none/tests/s390x (+0 -0)
___________________________________________________________________
Name: svn:ignore
- .deps
add
add_EI
add_GE
allexec
and
and_EI
clc
clcle
cvb
cvd
div
ex_clone
ex_sig
flogr
icm
insert
insert_EI
lam_stam
lpr
Makefile
Makefile.in
mul
mul_GE
mvst
or
or_EI
srst
sub
sub_EI
tcxb
xc
xor
xor_EI
stck
stcke
stckf
op_exception
fgx
condloadstore
fold_And16
stfle
op00
cksm
clcl
mvcl
troo
trot
trto
trtt
tr
tre
clrj
clgrj
crj
cgrj
clij
clgij
cij
cgij
cs
csg
cds
cdsg
cu21
cu21_1
cu24
cu24_1
cu42
cu12
cu12_1
cu14
cu14_1
cu41
ecag
fpext
fpext_warn
fpconv
rounding-1
rounding-2
rounding-3
rounding-4
rounding-5
bfp-1
bfp-2
+ .deps
add
add_EI
add_GE
allexec
and
and_EI
clc
clcle
cvb
cvd
div
ex_clone
ex_sig
flogr
icm
insert
insert_EI
lam_stam
lpr
Makefile
Makefile.in
mul
mul_GE
mvst
or
or_EI
srst
sub
sub_EI
tcxb
xc
xor
xor_EI
stck
stcke
stckf
op_exception
fgx
condloadstore
fold_And16
stfle
op00
cksm
clcl
mvcl
troo
trot
trto
trtt
tr
tre
clrj
clgrj
crj
cgrj
clij
clgij
cij
cgij
cs
csg
cds
cdsg
cu21
cu21_1
cu24
cu24_1
cu42
cu12
cu12_1
cu14
cu14_1
cu41
ecag
fpext
fpext_warn
fpconv
rounding-1
rounding-2
rounding-3
rounding-4
rounding-5
bfp-1
bfp-2
bfp-3
Added: trunk/none/tests/s390x/bfp-3.c (+53 -0)
===================================================================
--- trunk/none/tests/s390x/bfp-3.c 2012-09-13 04:04:23 +01:00 (rev 12967)
+++ trunk/none/tests/s390x/bfp-3.c 2012-09-13 16:09:53 +01:00 (rev 12968)
@@ -0,0 +1,53 @@
+#include <stdio.h>
+
+/* Test BFP multiply and add/sub 32/64-bit. There are no such insns
+ working with 128-bit data */
+
+void maebr(float v1, float v2, float v3)
+{
+ float r1 = v1;
+
+ __asm__ volatile("maebr %[r1],%[r3],%[r2]"
+ : [r1]"+f"(r1) : [r2]"f"(v2), [r3]"f"(v3));
+ printf("maebr %f * %f + %f -> %f\n", v2, v3, v1, r1);
+}
+
+void madbr(double v1, double v2, double v3)
+{
+ double r1 = v1;
+
+ __asm__ volatile("madbr %[r1],%[r3],%[r2]"
+ : [r1]"+f"(r1) : [r2]"f"(v2), [r3]"f"(v3));
+ printf("madbr %f * %f + %f -> %f\n", v2, v3, v1, r1);
+}
+
+void msebr(float v1, float v2, float v3)
+{
+ float r1 = v1;
+
+ __asm__ volatile("msebr %[r1],%[r3],%[r2]"
+ : [r1]"+f"(r1) : [r2]"f"(v2), [r3]"f"(v3));
+ printf("msebr %f * %f - %f -> %f\n", v2, v3, v1, r1);
+}
+
+void msdbr(double v1, double v2, double v3)
+{
+ double r1 = v1;
+
+ __asm__ volatile("msdbr %[r1],%[r3],%[r2]"
+ : [r1]"+f"(r1) : [r2]"f"(v2), [r3]"f"(v3));
+ printf("msdbr %f * %f - %f -> %f\n", v2, v3, v1, r1);
+}
+
+int main(void)
+{
+ // multiply and add
+ maebr(10.5f, 20.25, 3.0); // 4 byte values
+ madbr(-10.5, 42.75, -2.0); // 8 byte values
+
+ // multiply and sub
+ msebr(10.5f, 20.25, 3.0); // 4 byte values
+ msdbr(-10.5, 42.75, -2.0); // 8 byte values
+
+ return 0;
+}
|