|
From: <sv...@va...> - 2005-10-03 01:22:36
|
Author: sewardj
Date: 2005-10-03 02:22:29 +0100 (Mon, 03 Oct 2005)
New Revision: 4847
Log:
Test simulation of x86 'fxtract'.
Added:
trunk/none/tests/x86/fxtract.c
trunk/none/tests/x86/fxtract.stderr.exp
trunk/none/tests/x86/fxtract.stdout.exp
trunk/none/tests/x86/fxtract.vgtest
Modified:
trunk/none/tests/x86/Makefile.am
Modified: trunk/none/tests/x86/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/Makefile.am 2005-10-02 17:50:31 UTC (rev 4846)
+++ trunk/none/tests/x86/Makefile.am 2005-10-03 01:22:29 UTC (rev 4847)
@@ -11,6 +11,7 @@
cmpxchg8b.stderr.exp cmpxchg8b.stdout.exp cmpxchg8b.vgtest \
fpu_lazy_eflags.stderr.exp fpu_lazy_eflags.stdout.exp \
fpu_lazy_eflags.vgtest \
+ fxtract.stdout.exp fxtract.stderr.exp fxtract.vgtest \
getseg.stdout.exp getseg.stderr.exp getseg.vgtest \
int.stderr.exp int.stdout.exp int.vgtest \
$(addsuffix .stderr.exp,$(INSN_TESTS)) \
@@ -25,6 +26,7 @@
=20
check_PROGRAMS =3D \
badseg bt_everything bt_literal cmpxchg8b cpuid fpu_lazy_eflags \
+ fxtract \
getseg $(INSN_TESTS) \
looper int pushpopseg seg_override sigcontext smc1 yield
=20
@@ -38,6 +40,7 @@
cpuid_SOURCES =3D cpuid_c.c cpuid_s.s
# fpu_lazy_eflags must use these flags -- the bug only occurred with the=
m
fpu_lazy_eflags_CFLAGS =3D -O2 -march=3Dpentiumpro
+fxtract_LDADD =3D -lm
insn_basic_SOURCES =3D insn_basic.def
insn_basic_LDADD =3D -lm
insn_fpu_SOURCES =3D insn_fpu.def
Added: trunk/none/tests/x86/fxtract.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/fxtract.c 2005-10-02 17:50:31 UTC (rev 4846)
+++ trunk/none/tests/x86/fxtract.c 2005-10-03 01:22:29 UTC (rev 4847)
@@ -0,0 +1,99 @@
+
+#include <stdio.h>
+#include <math.h>
+
+double arg, res1, res2;
+
+extern void do_fxtract ( void );
+asm("\n"
+".global do_fxtract\n"
+"do_fxtract:\n"
+"\tfinit\n"
+"\tfldl arg\n"
+"\tfxtract\n"
+"\tfstpl res1\n"
+"\tfstpl res2\n"
+"\tret"
+);
+
+void try ( double x )
+{
+ arg =3D x * 1.414213562373049;
+ res1 =3D res2 =3D 0.0;
+ do_fxtract();
+ printf("%17.10e -> %14.10f %14.10f\n", arg, res1, res2);
+}
+
+int main ( void )
+{
+ int i;
+
+ /* positives */
+
+ for (i =3D 0; i < 40; i++)
+ try( 1.27 + (double)(i*10 - 200) );
+
+ try(+0.0);
+ try(1.0 / 0.0);
+ try(sqrt(-1.0));
+
+ try(5.1e-308);
+ try(4.1e-308);
+ try(3.1e-308);
+ try(2.1e-308);
+ try(1.1e-308);
+ try(0.9e-308);
+ try(0.7e-308);
+ try(0.6e-308);
+ try(0.5e-308);
+ try(0.4e-308);
+ try(0.3e-308);
+ try(0.1e-308);
+
+ try(1.3e-320);
+ try(1.3e-321);
+ try(1.3e-322);
+ try(1.3e-323);
+ try(0.9e-323);
+ try(0.7e-323);
+ try(0.5e-323);
+ try(0.3e-323);
+ try(0.2e-323);
+ try(1.3e-324);
+
+ /* negatives */
+
+ printf("\n");
+ for (i =3D 0; i < 40; i++)
+ try( - (1.27 + (double)(i*10 - 200)) );
+
+ try(-0.0);
+ try(-(1.0 / 0.0));
+ try(-sqrt(-1.0));
+
+ try(-5.1e-308);
+ try(-4.1e-308);
+ try(-3.1e-308);
+ try(-2.1e-308);
+ try(-1.1e-308);
+ try(-0.9e-308);
+ try(-0.7e-308);
+ try(-0.6e-308);
+ try(-0.5e-308);
+ try(-0.4e-308);
+ try(-0.3e-308);
+ try(-0.1e-308);
+
+ try(-1.3e-320);
+ try(-1.3e-321);
+ try(-1.3e-322);
+ try(-1.3e-323);
+ try(-0.9e-323);
+ try(-0.7e-323);
+ try(-0.5e-323);
+ try(-0.3e-323);
+ try(-0.2e-323);
+ try(-1.3e-324);
+
+ return 0;
+}
Added: trunk/none/tests/x86/fxtract.stderr.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/fxtract.stderr.exp 2005-10-02 17:50:31 UTC (rev =
4846)
+++ trunk/none/tests/x86/fxtract.stderr.exp 2005-10-03 01:22:29 UTC (rev =
4847)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/x86/fxtract.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/fxtract.stdout.exp 2005-10-02 17:50:31 UTC (rev =
4846)
+++ trunk/none/tests/x86/fxtract.stdout.exp 2005-10-03 01:22:29 UTC (rev =
4847)
@@ -0,0 +1,131 @@
+-2.8104666125e+02 -> -1.0978385205 8.0000000000
+-2.6690452563e+02 -> -1.0425958032 8.0000000000
+-2.5276239000e+02 -> -1.9747061719 7.0000000000
+-2.3862025438e+02 -> -1.8642207373 7.0000000000
+-2.2447811876e+02 -> -1.7537353028 7.0000000000
+-2.1033598313e+02 -> -1.6432498682 7.0000000000
+-1.9619384751e+02 -> -1.5327644337 7.0000000000
+-1.8205171188e+02 -> -1.4222789991 7.0000000000
+-1.6790957626e+02 -> -1.3117935645 7.0000000000
+-1.5376744064e+02 -> -1.2013081300 7.0000000000
+-1.3962530501e+02 -> -1.0908226954 7.0000000000
+-1.2548316939e+02 -> -1.9606745217 6.0000000000
+-1.1134103377e+02 -> -1.7397036526 6.0000000000
+-9.7198898142e+01 -> -1.5187327835 6.0000000000
+-8.3056762518e+01 -> -1.2977619143 6.0000000000
+-6.8914626894e+01 -> -1.0767910452 6.0000000000
+-5.4772491271e+01 -> -1.7116403522 5.0000000000
+-4.0630355647e+01 -> -1.2696986140 5.0000000000
+-2.6488220023e+01 -> -1.6555137515 4.0000000000
+-1.2346084400e+01 -> -1.5432605499 3.0000000000
+ 1.7960512242e+00 -> 1.7960512242 0.0000000000
+ 1.5938186848e+01 -> 1.9922733560 3.0000000000
+ 3.0080322472e+01 -> 1.8800201545 4.0000000000
+ 4.4222458095e+01 -> 1.3819518155 5.0000000000
+ 5.8364593719e+01 -> 1.8238935537 5.0000000000
+ 7.2506729343e+01 -> 1.1329176460 6.0000000000
+ 8.6648864967e+01 -> 1.3538885151 6.0000000000
+ 1.0079100059e+02 -> 1.5748593842 6.0000000000
+ 1.1493313621e+02 -> 1.7958302533 6.0000000000
+ 1.2907527184e+02 -> 1.0084005612 7.0000000000
+ 1.4321740746e+02 -> 1.1188859958 7.0000000000
+ 1.5735954309e+02 -> 1.2293714304 7.0000000000
+ 1.7150167871e+02 -> 1.3398568649 7.0000000000
+ 1.8564381433e+02 -> 1.4503422995 7.0000000000
+ 1.9978594996e+02 -> 1.5608277340 7.0000000000
+ 2.1392808558e+02 -> 1.6713131686 7.0000000000
+ 2.2807022120e+02 -> 1.7817986032 7.0000000000
+ 2.4221235683e+02 -> 1.8922840377 7.0000000000
+ 2.5635449245e+02 -> 1.0013847361 8.0000000000
+ 2.7049662808e+02 -> 1.0566274534 8.0000000000
+ 0.0000000000e+00 -> 0.0000000000 -inf
+ inf -> inf inf
+ nan -> nan nan
+7.2124891681e-308 -> 1.6207302828 -1021.0000000000
+5.7982756057e-308 -> 1.3029400313 -1021.0000000000
+4.3840620434e-308 -> 1.9702995595 -1022.0000000000
+2.9698484810e-308 -> 1.3347190565 -1022.0000000000
+1.5556349186e-308 -> 1.3982771068 -1023.0000000000
+1.2727922061e-308 -> 1.1440449055 -1023.0000000000
+9.8994949366e-309 -> 1.7796254086 -1024.0000000000
+8.4852813742e-309 -> 1.5253932074 -1024.0000000000
+7.0710678119e-309 -> 1.2711610062 -1024.0000000000
+5.6568542495e-309 -> 1.0169288049 -1024.0000000000
+4.2426406871e-309 -> 1.5253932074 -1025.0000000000
+1.4142135624e-309 -> 1.0169288049 -1026.0000000000
+1.8384182682e-320 -> 1.8168945312 -1063.0000000000
+1.8379242025e-321 -> 1.4531250000 -1066.0000000000
+1.8280428896e-322 -> 1.1562500000 -1069.0000000000
+1.9762625834e-323 -> 1.0000000000 -1072.0000000000
+1.4821969375e-323 -> 1.5000000000 -1073.0000000000
+4.9406564584e-324 -> 1.0000000000 -1074.0000000000
+4.9406564584e-324 -> 1.0000000000 -1074.0000000000
+4.9406564584e-324 -> 1.0000000000 -1074.0000000000
+ 0.0000000000e+00 -> 0.0000000000 -inf
+ 0.0000000000e+00 -> 0.0000000000 -inf
+
+ 2.8104666125e+02 -> 1.0978385205 8.0000000000
+ 2.6690452563e+02 -> 1.0425958032 8.0000000000
+ 2.5276239000e+02 -> 1.9747061719 7.0000000000
+ 2.3862025438e+02 -> 1.8642207373 7.0000000000
+ 2.2447811876e+02 -> 1.7537353028 7.0000000000
+ 2.1033598313e+02 -> 1.6432498682 7.0000000000
+ 1.9619384751e+02 -> 1.5327644337 7.0000000000
+ 1.8205171188e+02 -> 1.4222789991 7.0000000000
+ 1.6790957626e+02 -> 1.3117935645 7.0000000000
+ 1.5376744064e+02 -> 1.2013081300 7.0000000000
+ 1.3962530501e+02 -> 1.0908226954 7.0000000000
+ 1.2548316939e+02 -> 1.9606745217 6.0000000000
+ 1.1134103377e+02 -> 1.7397036526 6.0000000000
+ 9.7198898142e+01 -> 1.5187327835 6.0000000000
+ 8.3056762518e+01 -> 1.2977619143 6.0000000000
+ 6.8914626894e+01 -> 1.0767910452 6.0000000000
+ 5.4772491271e+01 -> 1.7116403522 5.0000000000
+ 4.0630355647e+01 -> 1.2696986140 5.0000000000
+ 2.6488220023e+01 -> 1.6555137515 4.0000000000
+ 1.2346084400e+01 -> 1.5432605499 3.0000000000
+-1.7960512242e+00 -> -1.7960512242 0.0000000000
+-1.5938186848e+01 -> -1.9922733560 3.0000000000
+-3.0080322472e+01 -> -1.8800201545 4.0000000000
+-4.4222458095e+01 -> -1.3819518155 5.0000000000
+-5.8364593719e+01 -> -1.8238935537 5.0000000000
+-7.2506729343e+01 -> -1.1329176460 6.0000000000
+-8.6648864967e+01 -> -1.3538885151 6.0000000000
+-1.0079100059e+02 -> -1.5748593842 6.0000000000
+-1.1493313621e+02 -> -1.7958302533 6.0000000000
+-1.2907527184e+02 -> -1.0084005612 7.0000000000
+-1.4321740746e+02 -> -1.1188859958 7.0000000000
+-1.5735954309e+02 -> -1.2293714304 7.0000000000
+-1.7150167871e+02 -> -1.3398568649 7.0000000000
+-1.8564381433e+02 -> -1.4503422995 7.0000000000
+-1.9978594996e+02 -> -1.5608277340 7.0000000000
+-2.1392808558e+02 -> -1.6713131686 7.0000000000
+-2.2807022120e+02 -> -1.7817986032 7.0000000000
+-2.4221235683e+02 -> -1.8922840377 7.0000000000
+-2.5635449245e+02 -> -1.0013847361 8.0000000000
+-2.7049662808e+02 -> -1.0566274534 8.0000000000
+-0.0000000000e+00 -> -0.0000000000 -inf
+ -inf -> -inf inf
+ nan -> nan nan
+-7.2124891681e-308 -> -1.6207302828 -1021.0000000000
+-5.7982756057e-308 -> -1.3029400313 -1021.0000000000
+-4.3840620434e-308 -> -1.9702995595 -1022.0000000000
+-2.9698484810e-308 -> -1.3347190565 -1022.0000000000
+-1.5556349186e-308 -> -1.3982771068 -1023.0000000000
+-1.2727922061e-308 -> -1.1440449055 -1023.0000000000
+-9.8994949366e-309 -> -1.7796254086 -1024.0000000000
+-8.4852813742e-309 -> -1.5253932074 -1024.0000000000
+-7.0710678119e-309 -> -1.2711610062 -1024.0000000000
+-5.6568542495e-309 -> -1.0169288049 -1024.0000000000
+-4.2426406871e-309 -> -1.5253932074 -1025.0000000000
+-1.4142135624e-309 -> -1.0169288049 -1026.0000000000
+-1.8384182682e-320 -> -1.8168945312 -1063.0000000000
+-1.8379242025e-321 -> -1.4531250000 -1066.0000000000
+-1.8280428896e-322 -> -1.1562500000 -1069.0000000000
+-1.9762625834e-323 -> -1.0000000000 -1072.0000000000
+-1.4821969375e-323 -> -1.5000000000 -1073.0000000000
+-4.9406564584e-324 -> -1.0000000000 -1074.0000000000
+-4.9406564584e-324 -> -1.0000000000 -1074.0000000000
+-4.9406564584e-324 -> -1.0000000000 -1074.0000000000
+-0.0000000000e+00 -> -0.0000000000 -inf
+-0.0000000000e+00 -> -0.0000000000 -inf
Added: trunk/none/tests/x86/fxtract.vgtest
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/fxtract.vgtest 2005-10-02 17:50:31 UTC (rev 4846=
)
+++ trunk/none/tests/x86/fxtract.vgtest 2005-10-03 01:22:29 UTC (rev 4847=
)
@@ -0,0 +1 @@
+prog: fxtract
|