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