Commit c5e9815da4e67d42d2a0f8dce4282e8e6d691b88

Authored by bellard
1 parent 9d8e9c09

added bcd tests


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@22 c046a42c-6fe2-441c-8c8c-71466251a162
tests/Makefile
@@ -2,7 +2,7 @@ CC=gcc @@ -2,7 +2,7 @@ CC=gcc
2 CFLAGS=-Wall -O2 -g 2 CFLAGS=-Wall -O2 -g
3 LDFLAGS= 3 LDFLAGS=
4 4
5 -TESTS=hello test1 test2 sha1 test-i386 5 +TESTS=hello test2 sha1 test-i386
6 TESTS+=op-i386.o #op-i386.o op-ppc.o op-arm.o op-mips.o op-sparc.o 6 TESTS+=op-i386.o #op-i386.o op-ppc.o op-arm.o op-mips.o op-sparc.o
7 7
8 GEMU=../gemu 8 GEMU=../gemu
@@ -12,9 +12,6 @@ all: $(TESTS) @@ -12,9 +12,6 @@ all: $(TESTS)
12 hello: hello.c 12 hello: hello.c
13 $(CC) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $< 13 $(CC) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $<
14 14
15 -test1: test1.c  
16 - $(CC) $(CFLAGS) -static $(LDFLAGS) -o $@ $<  
17 -  
18 test2: test2.c 15 test2: test2.c
19 $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< 16 $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
20 17
tests/test-i386.c
@@ -490,6 +490,9 @@ void test_fcvt(double a) @@ -490,6 +490,9 @@ void test_fcvt(double a)
490 la = a; 490 la = a;
491 printf("(float)%f = %f\n", a, fa); 491 printf("(float)%f = %f\n", a, fa);
492 printf("(long double)%f = %Lf\n", a, la); 492 printf("(long double)%f = %Lf\n", a, la);
  493 + printf("a=%016Lx\n", *(long long *)&a);
  494 + printf("la=%016Lx %04x\n", *(long long *)&la,
  495 + *(unsigned short *)((char *)(&la) + 8));
493 printf("a=%f floor(a)=%f\n", a, floor(a)); 496 printf("a=%f floor(a)=%f\n", a, floor(a));
494 printf("a=%f ceil(a)=%f\n", a, ceil(a)); 497 printf("a=%f ceil(a)=%f\n", a, ceil(a));
495 printf("a=%f rint(a)=%f\n", a, rint(a)); 498 printf("a=%f rint(a)=%f\n", a, rint(a));
@@ -511,6 +514,17 @@ void test_fconst(void) @@ -511,6 +514,17 @@ void test_fconst(void)
511 TEST(z); 514 TEST(z);
512 } 515 }
513 516
  517 +void test_fbcd(double a)
  518 +{
  519 + unsigned short bcd[5];
  520 + double b;
  521 +
  522 + asm("fbstp %0" : "=m" (bcd[0]) : "t" (a) : "st");
  523 + asm("fbld %1" : "=t" (b) : "m" (bcd[0]));
  524 + printf("a=%f bcd=%04x%04x%04x%04x%04x b=%f\n",
  525 + a, bcd[4], bcd[3], bcd[2], bcd[1], bcd[0], b);
  526 +}
  527 +
514 void test_floats(void) 528 void test_floats(void)
515 { 529 {
516 test_fops(2, 3); 530 test_fops(2, 3);
@@ -522,6 +536,8 @@ void test_floats(void) @@ -522,6 +536,8 @@ void test_floats(void)
522 test_fcvt(-1.0/9.0); 536 test_fcvt(-1.0/9.0);
523 test_fcvt(1e30); 537 test_fcvt(1e30);
524 test_fconst(); 538 test_fconst();
  539 + test_fbcd(1234567890123456);
  540 + test_fbcd(-123451234567890);
525 } 541 }
526 542
527 static void *call_end __init_call = NULL; 543 static void *call_end __init_call = NULL;