added bcd tests
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@22 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									9d8e9c0993
								
							
						
					
					
						commit
						c5e9815da4
					
				| 
						 | 
				
			
			@ -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 $@ $<
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue