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