root / tests / cris / check_bound.c @ f97572e5
History | View | Annotate | Download (2.4 kB)
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 |
} |