|
|
1.1 root 1: /*
2: * CPU integer arithmetics tests.
3: *
4: * This file is distributed under the GNU General Public License, version 2
5: * or at your option any later version. Read the file gpl.txt for details.
6: */
7:
8: #include <tos.h>
9:
10: extern char tst_abcd_1(void);
11: extern char tst_abcd_2(void);
12: extern char tst_abcd_3(void);
13: extern char tst_abcd_4(void);
14:
15: extern char tst_add_1(void);
16: extern char tst_add_2(void);
17: extern char tst_add_3(void);
18: extern char tst_add_4(void);
19: extern char tst_add_5(void);
20: extern char tst_add_6(void);
21: extern char tst_add_7(void);
22:
23: extern char tst_addi_1(void);
24: extern char tst_addi_2(void);
25: extern char tst_addi_3(void);
26: extern char tst_addi_4(void);
27: extern char tst_addi_5(void);
28: extern char tst_addi_6(void);
29:
30: extern char tst_addq_1(void);
31: extern char tst_addq_2(void);
32: extern char tst_addq_3(void);
33:
34: extern char tst_addx_1(void);
35: extern char tst_addx_2(void);
36:
37: extern char tst_shift_1(void);
38: extern char tst_shift_2(void);
39: extern char tst_shift_3(void);
40: extern char tst_shift_4(void);
41: extern char tst_shift_5(void);
42: extern char tst_shift_6(void);
43: extern char tst_shift_7(void);
44: extern char tst_shift_8(void);
45:
46: struct test
47: {
48: char *name;
49: char (*testfunc)(void);
50: };
51:
52: struct test tests[] =
53: {
54: { "abcd 1", tst_abcd_1 },
55: { "abcd 2", tst_abcd_2 },
56: { "abcd 3", tst_abcd_3 },
57: { "abcd 4", tst_abcd_4 },
58:
59: { "add 1", tst_add_1 },
60: { "add 2", tst_add_2 },
61: { "add 3", tst_add_3 },
62: { "add 4", tst_add_4 },
63: { "add 5", tst_add_5 },
64: { "add 6", tst_add_6 },
65: { "add 7", tst_add_7 },
66:
67: { "addi 1", tst_addi_1 },
68: { "addi 2", tst_addi_2 },
69: { "addi 3", tst_addi_3 },
70: { "addi 4", tst_addi_4 },
71: { "addi 5", tst_addi_5 },
72: { "addi 6", tst_addi_6 },
73:
74: { "addq 1", tst_addq_1 },
75: { "addq 2", tst_addq_2 },
76: { "addq 3", tst_addq_3 },
77:
78: { "addx 1", tst_addx_1 },
79: { "addx 2", tst_addx_2 },
80:
81: { "shift 1", tst_shift_1 },
82: { "shift 2", tst_shift_2 },
83: { "shift 3", tst_shift_3 },
84: { "shift 4", tst_shift_4 },
85: { "shift 5", tst_shift_5 },
86: { "shift 6", tst_shift_6 },
87: { "shift 7", tst_shift_7 },
88: { "shift 8", tst_shift_8 },
89:
90: { 0L, 0L }
91: };
92:
93: int main()
94: {
95: int failures = 0;
96: int idx;
97:
98: for (idx = 0; tests[idx].name != 0L; idx++)
99: {
100: Cconws("Test '");
101: Cconws(tests[idx].name);
102: Cconws("'\t: ");
103: if (tests[idx].testfunc() != 0)
104: {
105: Cconws("FAILED\n");
106: failures++;
107: }
108: else
109: {
110: Cconws("OK\n");
111: }
112: }
113:
114: // Crawcin();
115:
116: return !(failures == 0);
117: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.