Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / tcg / xtensa / test_loop.S
1 #include "macros.inc"
2
3 test_suite loop
4
5 test loop
6     movi    a2, 0
7     movi    a3, 5
8     loop    a3, 1f
9     addi    a2, a2, 1
10 1:
11     assert  eqi, a2, 5
12 test_end
13
14 test loop0
15     movi    a2, 0
16     loop    a2, 1f
17     rsr     a2, lcount
18     assert  eqi, a2, -1
19     j       1f
20 1:
21 test_end
22
23 test loop_jump
24     movi    a2, 0
25     movi    a3, 5
26     loop    a3, 1f
27     addi    a2, a2, 1
28     j       1f
29 1:
30     assert  eqi, a2, 1
31 test_end
32
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
39 1:
40     assert  eqi, a2, 3
41 test_end
42
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
54 1:
55     addi    a2, a2, 1
56 2:
57     assert  eqi, a2, 6
58 test_end
59
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
70 1:
71     xor     a4, a4, a5
72     isync
73     wsr     a4, ps
74     assert  eqi, a2, 1
75 test_end
76
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
88 1:
89     addi    a2, a2, 1
90     j       2f
91 .align 4
92 2:
93     addi    a2, a2, 2
94     movi    a3, 2b
95     wsr     a3, lbeg
96     isync
97     nop
98 3:
99     assert  eqi, a2, 5
100 test_end
101
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
113 1:
114     addi    a2, a2, 1
115 2:
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
123 1:
124     assert  eqi, a2, 7
125 test_end
126
127 test loopnez
128     movi    a2, 0
129     movi    a3, 5
130     loopnez a3, 1f
131     addi    a2, a2, 1
132 1:
133     assert  eqi, a2, 5
134
135     movi    a2, 0
136     movi    a3, 0
137     loopnez a3, 1f
138     test_fail
139 1:
140 test_end
141
142 test loopgtz
143     movi    a2, 0
144     movi    a3, 5
145     loopgtz a3, 1f
146     addi    a2, a2, 1
147 1:
148     assert  eqi, a2, 5
149
150     movi    a2, 0
151     movi    a3, 0
152     loopgtz a3, 1f
153     test_fail
154 1:
155
156     movi    a2, 0
157     movi    a3, 0x80000000
158     loopgtz a3, 1f
159     test_fail
160 1:
161 test_end
162
163 test_suite_end