From: Julian Seward Date: Tue, 7 Mar 2006 01:41:59 +0000 (+0000) Subject: Merge amd64 'fxtract' test from trunk. X-Git-Tag: svn/VALGRIND_3_1_1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51f7ba73ebbc8a526bead27812fb1ff8698e6826;p=thirdparty%2Fvalgrind.git Merge amd64 'fxtract' test from trunk. git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_1_BRANCH@5717 --- diff --git a/none/tests/amd64/Makefile.am b/none/tests/amd64/Makefile.am index 42b58f5f73..a6f210e438 100644 --- a/none/tests/amd64/Makefile.am +++ b/none/tests/amd64/Makefile.am @@ -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 index 0000000000..4dff2a1f93 --- /dev/null +++ b/none/tests/amd64/fxtract.c @@ -0,0 +1,99 @@ + +#include +#include + +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 index 0000000000..139597f9cb --- /dev/null +++ b/none/tests/amd64/fxtract.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/none/tests/amd64/fxtract.stdout.exp b/none/tests/amd64/fxtract.stdout.exp new file mode 100644 index 0000000000..4508fd6b69 --- /dev/null +++ b/none/tests/amd64/fxtract.stdout.exp @@ -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 index 0000000000..341b15a41f --- /dev/null +++ b/none/tests/amd64/fxtract.vgtest @@ -0,0 +1 @@ +prog: fxtract