Revision c5e9815d
b/tests/Makefile | ||
---|---|---|
2 | 2 |
CFLAGS=-Wall -O2 -g |
3 | 3 |
LDFLAGS= |
4 | 4 |
|
5 |
TESTS=hello test1 test2 sha1 test-i386
|
|
5 |
TESTS=hello test2 sha1 test-i386 |
|
6 | 6 |
TESTS+=op-i386.o #op-i386.o op-ppc.o op-arm.o op-mips.o op-sparc.o |
7 | 7 |
|
8 | 8 |
GEMU=../gemu |
... | ... | |
12 | 12 |
hello: hello.c |
13 | 13 |
$(CC) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $< |
14 | 14 |
|
15 |
test1: test1.c |
|
16 |
$(CC) $(CFLAGS) -static $(LDFLAGS) -o $@ $< |
|
17 |
|
|
18 | 15 |
test2: test2.c |
19 | 16 |
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< |
20 | 17 |
|
b/tests/test-i386.c | ||
---|---|---|
490 | 490 |
la = a; |
491 | 491 |
printf("(float)%f = %f\n", a, fa); |
492 | 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 | 496 |
printf("a=%f floor(a)=%f\n", a, floor(a)); |
494 | 497 |
printf("a=%f ceil(a)=%f\n", a, ceil(a)); |
495 | 498 |
printf("a=%f rint(a)=%f\n", a, rint(a)); |
... | ... | |
511 | 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 | 528 |
void test_floats(void) |
515 | 529 |
{ |
516 | 530 |
test_fops(2, 3); |
... | ... | |
522 | 536 |
test_fcvt(-1.0/9.0); |
523 | 537 |
test_fcvt(1e30); |
524 | 538 |
test_fconst(); |
539 |
test_fbcd(1234567890123456); |
|
540 |
test_fbcd(-123451234567890); |
|
525 | 541 |
} |
526 | 542 |
|
527 | 543 |
static void *call_end __init_call = NULL; |
Also available in: Unified diff