xref: /openbmc/qemu/tests/tcg/xtensa/test_quo.S (revision dc5bd18f)
1#include "macros.inc"
2
3test_suite quo
4
5test quou_pp
6    movi    a2, 0x5a5a137f
7    mov     a3, a2
8    movi    a4, 0x137f5a5a
9    movi    a6, 0x4
10    quou    a5, a2, a4
11    assert  eq, a5, a6
12    quou    a2, a2, a4
13    assert  eq, a2, a6
14    quou    a4, a3, a4
15    assert  eq, a4, a6
16test_end
17
18test quou_np
19    movi    a2, 0xa5a5137f
20    mov     a3, a2
21    movi    a4, 0x137f5a5a
22    movi    a6, 0x8
23    quou    a5, a2, a4
24    assert  eq, a5, a6
25    quou    a2, a2, a4
26    assert  eq, a2, a6
27    quou    a4, a3, a4
28    assert  eq, a4, a6
29test_end
30
31test quou_pn
32    movi    a2, 0x5a5a137f
33    mov     a3, a2
34    movi    a4, 0xf7315a5a
35    movi    a6, 0
36    quou    a5, a2, a4
37    assert  eq, a5, a6
38    quou    a2, a2, a4
39    assert  eq, a2, a6
40    quou    a4, a3, a4
41    assert  eq, a4, a6
42test_end
43
44test quou_nn
45    movi    a2, 0xf7315a5a
46    mov     a3, a2
47    movi    a4, 0xa5a5137f
48    movi    a6, 0x1
49    quou    a5, a2, a4
50    assert  eq, a5, a6
51    quou    a2, a2, a4
52    assert  eq, a2, a6
53    quou    a4, a3, a4
54    assert  eq, a4, a6
55test_end
56
57test quou_exc
58    set_vector kernel, 2f
59    movi    a2, 0xf7315a5a
60    movi    a4, 0x00000000
611:
62    quou    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 quos_pp
73    movi    a2, 0x5a5a137f
74    mov     a3, a2
75    movi    a4, 0x137f5a5a
76    movi    a6, 0x4
77    quos    a5, a2, a4
78    assert  eq, a5, a6
79    quos    a2, a2, a4
80    assert  eq, a2, a6
81    quos    a4, a3, a4
82    assert  eq, a4, a6
83test_end
84
85test quos_np
86    movi    a2, 0xa5a5137f
87    mov     a3, a2
88    movi    a4, 0x137f5a5a
89    movi    a6, 0xfffffffc
90    quos    a5, a2, a4
91    assert  eq, a5, a6
92    quos    a2, a2, a4
93    assert  eq, a2, a6
94    quos    a4, a3, a4
95    assert  eq, a4, a6
96test_end
97
98test quos_pn
99    movi    a2, 0x5a5a137f
100    mov     a3, a2
101    movi    a4, 0xf7315a5a
102    movi    a6, 0xfffffff6
103    quos    a5, a2, a4
104    assert  eq, a5, a6
105    quos    a2, a2, a4
106    assert  eq, a2, a6
107    quos    a4, a3, a4
108    assert  eq, a4, a6
109test_end
110
111test quos_nn
112    movi    a2, 0xf7315a5a
113    mov     a3, a2
114    movi    a4, 0xa5a5137f
115    movi    a6, 0
116    quos    a5, a2, a4
117    assert  eq, a5, a6
118    quos    a2, a2, a4
119    assert  eq, a2, a6
120    quos    a4, a3, a4
121    assert  eq, a4, a6
122test_end
123
124test quos_over
125    movi    a2, 0x80000000
126    movi    a4, 0xffffffff
127    movi    a6, 0x80000000
128    quos    a5, a2, a4
129    assert  eq, a5, a6
130test_end
131
132test quos_exc
133    set_vector kernel, 2f
134    movi    a2, 0xf7315a5a
135    movi    a4, 0x00000000
1361:
137    quos    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