block/block-copy: add max_chunk and max_workers parameters
[qemu/kevin.git] / tests / tcg / xtensa / test_lsc.S
blob348822bdd3595573a34a9ce6227653d8c5f316c6
1 #include "macros.inc"
2 #include "fpu.h"
4 test_suite lsc
6 #if XCHAL_HAVE_FP
8 test lsi
9     movi    a2, 1
10     wsr     a2, cpenable
12     movi    a2, 1f
13     lsi     f1, a2, 4
14 #if DFPU
15     lsi     f2, a2, 8
16     lsip    f0, a2, 8
17 #else
18     lsi     f0, a2, 0
19     lsiu    f2, a2, 8
20 #endif
21     movi    a3, 1f + 8
22     assert  eq, a2, a3
23     rfr     a2, f0
24     movi    a3, 0x3f800000
25     assert  eq, a2, a3
26     rfr     a2, f1
27     movi    a3, 0x40000000
28     assert  eq, a2, a3
29     rfr     a2, f2
30     movi    a3, 0x40400000
31     assert  eq, a2, a3
32 .data
33     .align  4
35 .float 1, 2, 3
36 .text
37 test_end
39 test ssi
40     movi    a2, 1f
41     movi    a3, 0x40800000
42     wfr     f3, a3
43     movi    a3, 0x40a00000
44     wfr     f4, a3
45     movi    a3, 0x40c00000
46     wfr     f5, a3
47     ssi     f4, a2, 4
48 #if DFPU
49     ssi     f5, a2, 8
50     ssip    f3, a2, 8
51 #else
52     ssi     f3, a2, 0
53     ssiu    f5, a2, 8
54 #endif
55     movi    a3, 1f + 8
56     assert  eq, a2, a3
57     l32i    a4, a2, -8
58     movi    a3, 0x40800000
59     assert  eq, a4, a3
60     l32i    a4, a2, -4
61     movi    a3, 0x40a00000
62     assert  eq, a4, a3
63     l32i    a4, a2, 0
64     movi    a3, 0x40c00000
65     assert  eq, a4, a3
66 .data
67     .align  4
69 .float 0, 0, 0
70 .text
71 test_end
73 test lsx
74     movi    a2, 1f
75     movi    a3, 0
76     movi    a4, 4
77     movi    a5, 8
78     lsx     f7, a2, a4
79 #if DFPU
80     lsx     f8, a2, a5
81     lsxp    f6, a2, a5
82 #else
83     lsx     f6, a2, a3
84     lsxu    f8, a2, a5
85 #endif
86     movi    a3, 1f + 8
87     assert  eq, a2, a3
88     rfr     a2, f6
89     movi    a3, 0x40e00000
90     assert  eq, a2, a3
91     rfr     a2, f7
92     movi    a3, 0x41000000
93     assert  eq, a2, a3
94     rfr     a2, f8
95     movi    a3, 0x41100000
96     assert  eq, a2, a3
97 .data
98     .align  4
100 .float 7, 8, 9
101 .text
102 test_end
104 test ssx
105     movi    a2, 1f
106     movi    a4, 0x41200000
107     wfr     f9, a4
108     movi    a4, 0x41300000
109     wfr     f10, a4
110     movi    a4, 0x41400000
111     wfr     f11, a4
112     movi    a3, 0
113     movi    a4, 4
114     movi    a5, 8
115     ssx     f10, a2, a4
116 #if DFPU
117     ssx     f11, a2, a5
118     ssxp    f9, a2, a5
119 #else
120     ssx     f9, a2, a3
121     ssxu    f11, a2, a5
122 #endif
123     movi    a3, 1f + 8
124     assert  eq, a2, a3
125     l32i    a4, a2, -8
126     movi    a3, 0x41200000
127     assert  eq, a4, a3
128     l32i    a4, a2, -4
129     movi    a3, 0x41300000
130     assert  eq, a4, a3
131     l32i    a4, a2, 0
132     movi    a3, 0x41400000
133     assert  eq, a4, a3
134 .data
135     .align  4
137 .float 0, 0, 0
138 .text
139 test_end
141 #endif
143 #if XCHAL_HAVE_DFP
145 #if XCHAL_HAVE_BE
146 #define F64_HIGH_OFF 0
147 #else
148 #define F64_HIGH_OFF 4
149 #endif
151 .macro movdf fr, hi, lo
152     movi    a2, \hi
153     movi    a3, \lo
154     wfrd    \fr, a2, a3
155 .endm
157 test ldi
158     movi    a2, 1
159     wsr     a2, cpenable
161     movi    a2, 1f
162     ldi     f1, a2, 8
163     ldi     f2, a2, 16
164     ldip    f0, a2, 16
165     movi    a3, 1f + 16
166     assert  eq, a2, a3
167     rfrd    a2, f0
168     movi    a3, 0x3ff00000
169     assert  eq, a2, a3
170     rfrd    a2, f1
171     movi    a3, 0x40000000
172     assert  eq, a2, a3
173     rfrd    a2, f2
174     movi    a3, 0x40080000
175     assert  eq, a2, a3
176 .data
177     .align  8
179 .double 1, 2, 3
180 .text
181 test_end
183 test sdi
184     movdf   f3, 0x40800000, 0
185     movdf   f4, 0x40a00000, 0
186     movdf   f5, 0x40c00000, 0
187     movi    a2, 1f
188     sdi     f4, a2, 8
189     sdi     f5, a2, 16
190     sdip    f3, a2, 16
191     movi    a3, 1f + 16
192     assert  eq, a2, a3
193     l32i    a4, a2, -16 + F64_HIGH_OFF
194     movi    a3, 0x40800000
195     assert  eq, a4, a3
196     l32i    a4, a2, -8 + F64_HIGH_OFF
197     movi    a3, 0x40a00000
198     assert  eq, a4, a3
199     l32i    a4, a2, F64_HIGH_OFF
200     movi    a3, 0x40c00000
201     assert  eq, a4, a3
202 .data
203     .align  8
205 .double 0, 0, 0
206 .text
207 test_end
209 test ldx
210     movi    a2, 1f
211     movi    a3, 0
212     movi    a4, 8
213     movi    a5, 16
214     ldx     f7, a2, a4
215     ldx     f8, a2, a5
216     ldxp    f6, a2, a5
217     movi    a3, 1f + 16
218     assert  eq, a2, a3
219     rfrd    a2, f6
220     movi    a3, 0x401c0000
221     assert  eq, a2, a3
222     rfrd    a2, f7
223     movi    a3, 0x40200000
224     assert  eq, a2, a3
225     rfrd    a2, f8
226     movi    a3, 0x40220000
227     assert  eq, a2, a3
228 .data
229     .align  8
231 .double 7, 8, 9
232 .text
233 test_end
235 test sdx
236     movdf   f9, 0x41200000, 0
237     movdf   f10, 0x41300000, 0
238     movdf   f11, 0x41400000, 0
239     movi    a2, 1f
240     movi    a3, 0
241     movi    a4, 8
242     movi    a5, 16
243     sdx     f10, a2, a4
244     sdx     f11, a2, a5
245     sdxp    f9, a2, a5
246     movi    a3, 1f + 16
247     assert  eq, a2, a3
248     l32i    a4, a2, -16 + F64_HIGH_OFF
249     movi    a3, 0x41200000
250     assert  eq, a4, a3
251     l32i    a4, a2, -8 + F64_HIGH_OFF
252     movi    a3, 0x41300000
253     assert  eq, a4, a3
254     l32i    a4, a2, F64_HIGH_OFF
255     movi    a3, 0x41400000
256     assert  eq, a4, a3
257 .data
258     .align  8
260 .double 0, 0, 0
261 .text
262 test_end
264 #endif
266 test_suite_end