]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge amd64 'fxtract' test from trunk.
authorJulian Seward <jseward@acm.org>
Tue, 7 Mar 2006 01:41:59 +0000 (01:41 +0000)
committerJulian Seward <jseward@acm.org>
Tue, 7 Mar 2006 01:41:59 +0000 (01:41 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_1_BRANCH@5717

none/tests/amd64/Makefile.am
none/tests/amd64/fxtract.c [new file with mode: 0644]
none/tests/amd64/fxtract.stderr.exp [new file with mode: 0644]
none/tests/amd64/fxtract.stdout.exp [new file with mode: 0644]
none/tests/amd64/fxtract.vgtest [new file with mode: 0644]

index 42b58f5f735f7279a3701242f80112a3571a2b69..a6f210e43838995f728568bc38127fd723a98326 100644 (file)
@@ -6,6 +6,7 @@ INSN_TESTS = insn_basic insn_mmx insn_sse insn_sse2 insn_fpu
 
 EXTRA_DIST = $(noinst_SCRIPTS) \
        faultstatus.vgtest faultstatus.stderr.exp \
+       fxtract.vgtest fxtract.stderr.exp fxtract.stdout.exp \
        $(addsuffix .stderr.exp,$(INSN_TESTS)) \
        $(addsuffix .stdout.exp,$(INSN_TESTS)) \
        $(addsuffix .vgtest,$(INSN_TESTS)) \
@@ -16,7 +17,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) \
 
 
 check_PROGRAMS = \
-       faultstatus $(INSN_TESTS) looper jrcxz smc1 shrld
+       faultstatus fxtract $(INSN_TESTS) looper jrcxz smc1 shrld
 
 AM_CFLAGS   = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include
 AM_CXXFLAGS = $(AM_CFLAGS)
@@ -32,6 +33,7 @@ insn_sse2_SOURCES     = insn_sse2.def
 insn_sse2_LDADD                = -lm
 insn_fpu_SOURCES       = insn_fpu.def
 insn_fpu_LDADD         = -lm
+fxtract_LDADD          = -lm
 
 .def.c: $(srcdir)/gen_insn_test.pl
        $(PERL) $(srcdir)/gen_insn_test.pl < $< > $@
diff --git a/none/tests/amd64/fxtract.c b/none/tests/amd64/fxtract.c
new file mode 100644 (file)
index 0000000..4dff2a1
--- /dev/null
@@ -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 = x * 1.414213562373049;
+  res1 = res2 = 0.0;
+  do_fxtract();
+  printf("%17.10e  -> %14.10f %14.10f\n", arg, res1, res2);
+}
+
+int main ( void )
+{
+  int i;
+
+  /* positives */
+
+  for (i = 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 = 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;
+}
diff --git a/none/tests/amd64/fxtract.stderr.exp b/none/tests/amd64/fxtract.stderr.exp
new file mode 100644 (file)
index 0000000..139597f
--- /dev/null
@@ -0,0 +1,2 @@
+
+
diff --git a/none/tests/amd64/fxtract.stdout.exp b/none/tests/amd64/fxtract.stdout.exp
new file mode 100644 (file)
index 0000000..4508fd6
--- /dev/null
@@ -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
diff --git a/none/tests/amd64/fxtract.vgtest b/none/tests/amd64/fxtract.vgtest
new file mode 100644 (file)
index 0000000..341b15a
--- /dev/null
@@ -0,0 +1 @@
+prog: fxtract