]> git.proxmox.com Git - qemu.git/commitdiff
added bcd tests
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 5 Mar 2003 22:24:26 +0000 (22:24 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 5 Mar 2003 22:24:26 +0000 (22:24 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@22 c046a42c-6fe2-441c-8c8c-71466251a162

tests/Makefile
tests/test-i386.c

index 7decbf5426ddbf15321e2a71a4996dceb2ed0f03..5fc813c2363cb556ee3dc5e2b3acf2db6f13d6ae 100644 (file)
@@ -2,7 +2,7 @@ CC=gcc
 CFLAGS=-Wall -O2 -g
 LDFLAGS=
 
-TESTS=hello test1 test2 sha1 test-i386
+TESTS=hello test2 sha1 test-i386
 TESTS+=op-i386.o #op-i386.o op-ppc.o op-arm.o op-mips.o op-sparc.o
 
 GEMU=../gemu
@@ -12,9 +12,6 @@ all: $(TESTS)
 hello: hello.c
        $(CC) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $<
 
-test1: test1.c
-       $(CC) $(CFLAGS) -static $(LDFLAGS) -o $@ $<
-
 test2: test2.c
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
 
index bef997a1aa6cf9c0685fb346ae38eaf27d30c2ff..86a070935345f3390ebcff86c265b3fe325107a6 100644 (file)
@@ -490,6 +490,9 @@ void test_fcvt(double a)
     la = a;
     printf("(float)%f = %f\n", a, fa);
     printf("(long double)%f = %Lf\n", a, la);
+    printf("a=%016Lx\n", *(long long *)&a);
+    printf("la=%016Lx %04x\n", *(long long *)&la, 
+           *(unsigned short *)((char *)(&la) + 8));
     printf("a=%f floor(a)=%f\n", a, floor(a));
     printf("a=%f ceil(a)=%f\n", a, ceil(a));
     printf("a=%f rint(a)=%f\n", a, rint(a));
@@ -511,6 +514,17 @@ void test_fconst(void)
     TEST(z);
 }
 
+void test_fbcd(double a)
+{
+    unsigned short bcd[5];
+    double b;
+
+    asm("fbstp %0" : "=m" (bcd[0]) : "t" (a) : "st");
+    asm("fbld %1" : "=t" (b) : "m" (bcd[0]));
+    printf("a=%f bcd=%04x%04x%04x%04x%04x b=%f\n", 
+           a, bcd[4], bcd[3], bcd[2], bcd[1], bcd[0], b);
+}
+
 void test_floats(void)
 {
     test_fops(2, 3);
@@ -522,6 +536,8 @@ void test_floats(void)
     test_fcvt(-1.0/9.0);
     test_fcvt(1e30);
     test_fconst();
+    test_fbcd(1234567890123456);
+    test_fbcd(-123451234567890);
 }
 
 static void *call_end __init_call = NULL;