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