master
s 266 lines 4.59 KB
Raw
1 #include "macros.inc"
2 #include "fpu.h"
3
4 test_suite lsc
5
6 #if XCHAL_HAVE_FP
7
8 test lsi
9 movi a2, 1
10 wsr a2, cpenable
11
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
34 1:
35 .float 1, 2, 3
36 .text
37 test_end
38
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
68 1:
69 .float 0, 0, 0
70 .text
71 test_end
72
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
99 1:
100 .float 7, 8, 9
101 .text
102 test_end
103
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
136 1:
137 .float 0, 0, 0
138 .text
139 test_end
140
141 #endif
142
143 #if XCHAL_HAVE_DFP
144
145 #if XCHAL_HAVE_BE
146 #define F64_HIGH_OFF 0
147 #else
148 #define F64_HIGH_OFF 4
149 #endif
150
151 .macro movdf fr, hi, lo
152 movi a2, \hi
153 movi a3, \lo
154 wfrd \fr, a2, a3
155 .endm
156
157 test ldi
158 movi a2, 1
159 wsr a2, cpenable
160
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
178 1:
179 .double 1, 2, 3
180 .text
181 test_end
182
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
204 1:
205 .double 0, 0, 0
206 .text
207 test_end
208
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
230 1:
231 .double 7, 8, 9
232 .text
233 test_end
234
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
259 1:
260 .double 0, 0, 0
261 .text
262 test_end
263
264 #endif
265
266 test_suite_end