1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
.include "macros.inc"
test_suite rem
test remu_pp
movi a2, 0x5a5a137f
mov a3, a2
movi a4, 0x137f5a5a
movi a6, 0x0c5caa17
remu a5, a2, a4
assert eq, a5, a6
remu a2, a2, a4
assert eq, a2, a6
remu a4, a3, a4
assert eq, a4, a6
test_end
test remu_np
movi a2, 0xa5a5137f
mov a3, a2
movi a4, 0x137f5a5a
movi a6, 0x9aa40af
remu a5, a2, a4
assert eq, a5, a6
remu a2, a2, a4
assert eq, a2, a6
remu a4, a3, a4
assert eq, a4, a6
test_end
test remu_pn
movi a2, 0x5a5a137f
mov a3, a2
movi a4, 0xf7315a5a
movi a6, 0x5a5a137f
remu a5, a2, a4
assert eq, a5, a6
remu a2, a2, a4
assert eq, a2, a6
remu a4, a3, a4
assert eq, a4, a6
test_end
test remu_nn
movi a2, 0xf7315a5a
mov a3, a2
movi a4, 0xa5a5137f
movi a6, 0x518c46db
remu a5, a2, a4
assert eq, a5, a6
remu a2, a2, a4
assert eq, a2, a6
remu a4, a3, a4
assert eq, a4, a6
test_end
test remu_exc
set_vector kernel, 2f
movi a2, 0xf7315a5a
movi a4, 0x00000000
1:
remu a5, a2, a4
test_fail
2:
rsr a2, exccause
assert eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
rsr a2, epc1
movi a3, 1b
assert eq, a2, a3
test_end
test rems_pp
movi a2, 0x5a5a137f
mov a3, a2
movi a4, 0x137f5a5a
movi a6, 0x0c5caa17
rems a5, a2, a4
assert eq, a5, a6
rems a2, a2, a4
assert eq, a2, a6
rems a4, a3, a4
assert eq, a4, a6
test_end
test rems_np
movi a2, 0xa5a5137f
mov a3, a2
movi a4, 0x137f5a5a
movi a6, 0xf3a27ce7
rems a5, a2, a4
assert eq, a5, a6
rems a2, a2, a4
assert eq, a2, a6
rems a4, a3, a4
assert eq, a4, a6
test_end
test rems_pn
movi a2, 0x5a5a137f
mov a3, a2
movi a4, 0xf7315a5a
movi a6, 0x02479b03
rems a5, a2, a4
assert eq, a5, a6
rems a2, a2, a4
assert eq, a2, a6
rems a4, a3, a4
assert eq, a4, a6
test_end
test rems_nn
movi a2, 0xf7315a5a
mov a3, a2
movi a4, 0xa5a5137f
movi a6, 0xf7315a5a
rems a5, a2, a4
assert eq, a5, a6
rems a2, a2, a4
assert eq, a2, a6
rems a4, a3, a4
assert eq, a4, a6
test_end
test rems_over
movi a2, 0x80000000
movi a4, 0xffffffff
movi a6, 0
rems a5, a2, a4
assert eq, a5, a6
test_end
test rems_exc
set_vector kernel, 2f
movi a2, 0xf7315a5a
movi a4, 0x00000000
1:
rems a5, a2, a4
test_fail
2:
rsr a2, exccause
assert eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
rsr a2, epc1
movi a3, 1b
assert eq, a2, a3
test_end
test_suite_end
|