target-xtensa: add tests for LOOPNEZ and LOOPGTZ
[qemu/kevin.git] / tests / tcg / xtensa / test_loop.S
blob1c240e8e9bbf1068041c26772f8e0bd53bb5fd73
1 .include "macros.inc"
3 test_suite loop
5 test loop
6     movi    a2, 0
7     movi    a3, 5
8     loop    a3, 1f
9     addi    a2, a2, 1
11     assert  eqi, a2, 5
12 test_end
14 test loop0
15     movi    a2, 0
16     loop    a2, 1f
17     rsr     a2, lcount
18     assert  eqi, a2, -1
19     j       1f
21 test_end
23 test loop_jump
24     movi    a2, 0
25     movi    a3, 5
26     loop    a3, 1f
27     addi    a2, a2, 1
28     j       1f
30     assert  eqi, a2, 1
31 test_end
33 test loop_branch
34     movi    a2, 0
35     movi    a3, 5
36     loop    a3, 1f
37     addi    a2, a2, 1
38     beqi    a2, 3, 1f
40     assert  eqi, a2, 3
41 test_end
43 test loop_manual
44     movi    a2, 0
45     movi    a3, 5
46     movi    a4, 1f
47     movi    a5, 2f
48     wsr     a3, lcount
49     wsr     a4, lbeg
50     wsr     a5, lend
51     isync
52     j       1f
53 .align 4
55     addi    a2, a2, 1
57     assert  eqi, a2, 6
58 test_end
60 test loop_excm
61     movi    a2, 0
62     movi    a3, 5
63     rsr     a4, ps
64     movi    a5, 0x10
65     or      a4, a4, a5
66     wsr     a4, ps
67     isync
68     loop    a3, 1f
69     addi    a2, a2, 1
71     xor     a4, a4, a5
72     isync
73     wsr     a4, ps
74     assert  eqi, a2, 1
75 test_end
77 test lbeg_invalidation
78     movi    a2, 0
79     movi    a3, 1
80     movi    a4, 1f
81     movi    a5, 3f
82     wsr     a3, lcount
83     wsr     a4, lbeg
84     wsr     a5, lend
85     isync
86     j       1f
87 .align 4
89     addi    a2, a2, 1
90     j       2f
91 .align 4
93     addi    a2, a2, 2
94     movi    a3, 2b
95     wsr     a3, lbeg
96     isync
97     nop
99     assert  eqi, a2, 5
100 test_end
102 test lend_invalidation
103     movi    a2, 0
104     movi    a3, 5
105     movi    a4, 1f
106     movi    a5, 2f
107     wsr     a3, lcount
108     wsr     a4, lbeg
109     wsr     a5, lend
110     isync
111     j       1f
112 .align 4
114     addi    a2, a2, 1
116     beqi    a3, 3, 1f
117     assert  eqi, a2, 6
118     movi    a3, 3
119     wsr     a3, lcount
120     wsr     a4, lend
121     isync
122     j       1b
124     assert  eqi, a2, 7
125 test_end
127 test loopnez
128     movi    a2, 0
129     movi    a3, 5
130     loopnez a3, 1f
131     addi    a2, a2, 1
133     assert  eqi, a2, 5
135     movi    a2, 0
136     movi    a3, 0
137     loopnez a3, 1f
138     test_fail
140 test_end
142 test loopgtz
143     movi    a2, 0
144     movi    a3, 5
145     loopgtz a3, 1f
146     addi    a2, a2, 1
148     assert  eqi, a2, 5
150     movi    a2, 0
151     movi    a3, 0
152     loopgtz a3, 1f
153     test_fail
156     movi    a2, 0
157     movi    a3, 0x80000000
158     loopgtz a3, 1f
159     test_fail
161 test_end
163 test_suite_end