Statistics
| Branch: | Revision:

root / tests / cris / check_bound.c @ 7aaabde7

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
}