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