filename | test/randmath.c |
changeset | 1131:4727c2006e0f |
next | 1169:23a9613aceb1 |
author | nkeynes |
date | Wed Nov 10 08:37:42 2010 +1000 (13 years ago) |
permissions | -rw-r--r-- |
last change | Add chain pointer to the xlat cache, so that we can maintain multiple blocks for the same address. This prevents thrashing in cases where we would other keep retranslating the same blocks over and over again due to varying xlat_sh4_mode values |
view | annotate | diff | log | raw |
1 #include <stdlib.h>
2 #include <stdio.h>
4 typedef unsigned char uint8_t;
5 typedef signed char int8_t;
6 typedef unsigned short uint16_t;
7 typedef signed short int16_t;
8 typedef unsigned int uint32_t;
9 typedef signed int int32_t;
10 typedef unsigned long long uint64_t;
11 typedef signed long long int64_t;
13 #define TEST_REPS 64
15 void printuint8_t(uint8_t a) { printf( "%08X ", (unsigned int)a ); }
16 void printint8_t(int8_t a) { printf( "%08X ", (unsigned int)(uint8_t)a ); }
17 void printuint16_t(uint16_t a) { printf( "%08X ", (unsigned int)a ); }
18 void printint16_t(int16_t a) { printf( "%08X ", (unsigned int)(uint16_t)a ); }
19 void printuint32_t(uint32_t a) { printf( "%08X ", (unsigned int)a ); }
20 void printint32_t(int32_t a) { printf( "%08X ", (unsigned int)a ); }
21 void printuint64_t(uint64_t a) { printf( "%08X%08X ", (unsigned int)(a>>32),(unsigned int)a ); }
22 void printint64_t(int64_t a) { printf( "%08X%08X ", (unsigned int)(a>>32),(unsigned int)a ); }
24 #define TEST_TYPE(T) \
25 void test##T() { \
26 T a, b, c, d, e, f; \
27 read(0,&a,sizeof(a)); read(0,&b,sizeof(b)); read(0,&c,sizeof(c)); read(0,&d,sizeof(d)); \
28 e = a * b - c * d;\
29 if( b != 0 && c != 0 ) { f = a / b + 1/c; }\
30 T g = e - f / 2 + (uint32_t)b;\
31 T h = b * c / d; T i = a / -d; \
32 printf( "%d| ", sizeof(a) ); \
33 print##T(a); print##T(b); print##T(c); print##T(d); \
34 printf( ": " ); print##T(e); print##T(f); print##T(g); \
35 print##T(h); print##T(i); \
36 printf( "\n" ); \
37 }
39 TEST_TYPE(uint8_t);
40 TEST_TYPE(int8_t);
41 TEST_TYPE(uint16_t);
42 TEST_TYPE(int16_t);
43 TEST_TYPE(uint32_t);
44 TEST_TYPE(int32_t);
45 TEST_TYPE(uint64_t);
46 TEST_TYPE(int64_t);
48 int main(int argc, char *argv[]) {
49 unsigned i;
51 for(i=0;i<TEST_REPS;i++ ) { testuint64_t(); }
52 for(i=0;i<TEST_REPS;i++ ) { testint64_t(); }
53 for(i=0;i<TEST_REPS;i++ ) { testuint32_t(); }
54 for(i=0;i<TEST_REPS;i++ ) { testint32_t(); }
55 for(i=0;i<TEST_REPS;i++ ) { testuint16_t(); }
56 for(i=0;i<TEST_REPS;i++ ) { testint16_t(); }
57 for(i=0;i<TEST_REPS;i++ ) { testuint8_t(); }
58 for(i=0;i<TEST_REPS;i++ ) { testint8_t(); }
59 return 0;
60 }
.