]> git.proxmox.com Git - qemu.git/blob - tests/cris/check_bound.c
CRIS testsuite, based on the SIM testsuite, by Edgar E. Iglesias.
[qemu.git] / tests / cris / check_bound.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdint.h>
4 #include "sys.h"
5 #include "crisutils.h"
6
7 extern inline int cris_bound_b(int v, int b) {
8 int r = v;
9 asm ("bound.b\t%1, %0\n" : "+r" (r) : "ri" (b));
10 return r;
11 }
12
13 extern inline int cris_bound_w(int v, int b) {
14 int r = v;
15 asm ("bound.w\t%1, %0\n" : "+r" (r) : "ri" (b));
16 return r;
17 }
18
19 extern inline int cris_bound_d(int v, int b) {
20 int r = v;
21 asm ("bound.d\t%1, %0\n" : "+r" (r) : "ri" (b));
22 return r;
23 }
24
25 int main(void)
26 {
27 int r;
28
29 cris_tst_cc_init();
30 r = cris_bound_d(-1, 2);
31 cris_tst_cc(0, 0, 0, 0);
32 if (r != 2)
33 err();
34
35 cris_tst_cc_init();
36 r = cris_bound_d(2, 0xffffffff);
37 cris_tst_cc(0, 0, 0, 0);
38 if (r != 2)
39 err();
40
41 cris_tst_cc_init();
42 r = cris_bound_d(0xffff, 0xffff);
43 cris_tst_cc(0, 0, 0, 0);
44 if (r != 0xffff)
45 err();
46
47 cris_tst_cc_init();
48 r = cris_bound_d(-1, 0xffffffff);
49 cris_tst_cc(1, 0, 0, 0);
50 if (r != 0xffffffff)
51 err();
52
53 cris_tst_cc_init();
54 r = cris_bound_d(0x78134452, 0x5432f789);
55 cris_tst_cc(0, 0, 0, 0);
56 if (r != 0x5432f789)
57 err();
58
59 cris_tst_cc_init();
60 r = cris_bound_w(-1, 2);
61 cris_tst_cc(0, 0, 0, 0);
62 if (r != 2)
63 err();
64
65 cris_tst_cc_init();
66 r = cris_bound_w(-1, 0xffff);
67 cris_tst_cc(0, 0, 0, 0);
68 if (r != 0xffff)
69 err();
70
71 cris_tst_cc_init();
72 r = cris_bound_w(2, 0xffff);
73 cris_tst_cc(0, 0, 0, 0);
74 if (r != 2)
75 err();
76
77 cris_tst_cc_init();
78 r = cris_bound_w(0xfedaffff, 0xffff);
79 cris_tst_cc(0, 0, 0, 0);
80 if (r != 0xffff)
81 err();
82
83 cris_tst_cc_init();
84 r = cris_bound_w(0x78134452, 0xf789);
85 cris_tst_cc(0, 0, 0, 0);
86 if (r != 0xf789)
87 err();
88
89 cris_tst_cc_init();
90 r = cris_bound_b(-1, 2);
91 cris_tst_cc(0, 0, 0, 0);
92 if (r != 2)
93 err();
94
95 cris_tst_cc_init();
96 r = cris_bound_b(2, 0xff);
97 cris_tst_cc(0, 0, 0, 0);
98 if (r != 2)
99 err();
100
101 cris_tst_cc_init();
102 r = cris_bound_b(-1, 0xff);
103 cris_tst_cc(0, 0, 0, 0);
104 if (r != 0xff)
105 err();
106
107 cris_tst_cc_init();
108 r = cris_bound_b(0xff, 0xff);
109 cris_tst_cc(0, 0, 0, 0);
110 if (r != 0xff)
111 err();
112
113 cris_tst_cc_init();
114 r = cris_bound_b(0xfeda49ff, 0xff);
115 cris_tst_cc(0, 0, 0, 0);
116 if (r != 0xff)
117 err();
118
119 cris_tst_cc_init();
120 r = cris_bound_b(0x78134452, 0x89);
121 cris_tst_cc(0, 0, 0, 0);
122 if (r != 0x89)
123 err();
124
125 cris_tst_cc_init();
126 r = cris_bound_w(0x78134452, 0);
127 cris_tst_cc(0, 1, 0, 0);
128 if (r != 0)
129 err();
130
131 cris_tst_cc_init();
132 r = cris_bound_b(0xffff, -1);
133 cris_tst_cc(0, 0, 0, 0);
134 if (r != 0xff)
135 err();
136
137 pass();
138 return 0;
139 }