cpu/
[deliverable/binutils-gdb.git] / sim / testsuite / sim / frv / fr400 / smsss.cgs
1 # frv testcase for smsss $GRi,$GRj
2 # mach: fr400
3
4 .include "../testutils.inc"
5
6 start
7
8 .global smsss
9 smsss1:
10 ; Positive operands
11 set_gr_immed 3,gr7 ; multiply small numbers
12 set_gr_immed 2,gr8
13 set_spr_immed 0,iacc0h
14 set_spr_immed 7,iacc0l
15 smsss gr7,gr8
16 test_gr_immed 3,gr7
17 test_gr_immed 2,gr8
18 test_spr_immed 1,iacc0l ; result 7-3*2
19 test_spr_immed 0,iacc0h
20 smsss2:
21 set_gr_immed 1,gr7 ; multiply by 1
22 set_gr_immed 2,gr8
23 set_spr_immed 0,iacc0h
24 set_spr_immed 3,iacc0l
25 smsss gr7,gr8
26 test_gr_immed 1,gr7
27 test_gr_immed 2,gr8
28 test_spr_immed 1,iacc0l ; result 3-1*2
29 test_spr_immed 0,iacc0h
30 smsss3:
31 set_gr_immed 2,gr7 ; multiply by 1
32 set_gr_immed 1,gr8
33 set_spr_immed 0,iacc0h
34 set_spr_immed 3,iacc0l
35 smsss gr7,gr8
36 test_gr_immed 1,gr8
37 test_gr_immed 2,gr7
38 test_spr_immed 1,iacc0l ; result 3-2*1
39 test_spr_immed 0,iacc0h
40 smsss4:
41 set_gr_immed 0,gr7 ; multiply by 0
42 set_gr_immed 2,gr8
43 set_spr_immed 0,iacc0h
44 set_spr_immed 1,iacc0l
45 smsss gr7,gr8
46 test_gr_immed 2,gr8
47 test_gr_immed 0,gr7
48 test_spr_immed 1,iacc0l ; result 1-0*2
49 test_spr_immed 0,iacc0h
50 smsss5:
51 set_gr_immed 2,gr7 ; multiply by 0
52 set_gr_immed 0,gr8
53 set_spr_immed 0,iacc0h
54 set_spr_immed 1,iacc0l
55 smsss gr7,gr8
56 test_gr_immed 0,gr8
57 test_gr_immed 2,gr7
58 test_spr_immed 1,iacc0l ; result 1-2*0
59 test_spr_immed 0,iacc0h
60 smsss6:
61 set_gr_limmed 0x3fff,0xffff,gr7 ; 31 bit result
62 set_gr_immed 2,gr8
63 set_spr_immed -1,iacc0h
64 set_spr_immed -1,iacc0l
65 smsss gr7,gr8
66 test_gr_immed 2,gr8
67 test_gr_limmed 0x3fff,0xffff,gr7
68 test_spr_limmed 0x8000,0x0001,iacc0l ; -1-3fffffff*2
69 test_spr_immed -1,iacc0h
70 smsss7:
71 set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result
72 set_gr_immed 2,gr8
73 set_spr_immed -1,iacc0h
74 set_spr_limmed 0x8000,0x0001,iacc0l
75 smsss gr7,gr8
76 test_gr_immed 2,gr8
77 test_gr_limmed 0x4000,0x0000,gr7
78 test_spr_immed 1,iacc0l ; ffffffff80000001-40000000*2
79 test_spr_immed -1,iacc0h
80 smsss8:
81 set_gr_limmed 0x4000,0x0000,gr7 ; 33 bit result
82 set_gr_immed 4,gr8
83 set_spr_immed -1,iacc0h
84 set_spr_immed 1,iacc0l
85 smsss gr7,gr8
86 test_gr_immed 4,gr8
87 test_gr_limmed 0x4000,0x0000,gr7
88 test_spr_immed 1,iacc0l ; ffffffff00000001-40000000*4
89 test_spr_immed -2,iacc0h
90 smsss9:
91 set_gr_limmed 0x7fff,0xffff,gr7 ; max positive result
92 set_gr_limmed 0x7fff,0xffff,gr8
93 set_spr_limmed 0x7fff,0xffff,iacc0h
94 set_spr_immed -1,iacc0l
95 smsss gr7,gr8
96 test_gr_limmed 0x7fff,0xffff,gr8
97 test_gr_limmed 0x7fff,0xffff,gr7
98 test_spr_limmed 0xffff,0xfffe,iacc0l ; 7fffffffffffffff-7fffffff*7fffffff
99 test_spr_limmed 0x4000,0x0000,iacc0h
100 smsss10:
101 ; Mixed operands
102 set_gr_immed -3,gr7 ; multiply small numbers
103 set_gr_immed 2,gr8
104 set_spr_immed -1,iacc0h
105 set_spr_immed -5,iacc0l
106 smsss gr7,gr8
107 test_gr_immed 2,gr8
108 test_gr_immed -3,gr7
109 test_spr_immed 1,iacc0l ; -5-(-3*2)
110 test_spr_immed 0,iacc0h
111 smsss11:
112 set_gr_immed 3,gr7 ; multiply small numbers
113 set_gr_immed -2,gr8
114 set_spr_immed -1,iacc0h
115 set_spr_immed -5,iacc0l
116 smsss gr7,gr8
117 test_gr_immed -2,gr8
118 test_gr_immed 3,gr7
119 test_spr_immed 1,iacc0l ; -5-(3*-2)
120 test_spr_immed 0,iacc0h
121 smsss12:
122 set_gr_immed 1,gr7 ; multiply by 1
123 set_gr_immed -2,gr8
124 set_spr_immed -1,iacc0h
125 set_spr_immed -1,iacc0l
126 smsss gr7,gr8
127 test_gr_immed -2,gr8
128 test_gr_immed 1,gr7
129 test_spr_immed 1,iacc0l ; -1-(1*-2)
130 test_spr_immed 0,iacc0h
131 smsss13:
132 set_gr_immed -2,gr7 ; multiply by 1
133 set_gr_immed 1,gr8
134 set_spr_immed -1,iacc0h
135 set_spr_immed -1,iacc0l
136 smsss gr7,gr8
137 test_gr_immed 1,gr8
138 test_gr_immed -2,gr7
139 test_spr_immed 1,iacc0l ; -1-(-2*1)
140 test_spr_immed 0,iacc0h
141 smsss14:
142 set_gr_immed 0,gr7 ; multiply by 0
143 set_gr_immed -2,gr8
144 set_spr_immed 0,iacc0h
145 set_spr_immed 1,iacc0l
146 smsss gr7,gr8
147 test_gr_immed -2,gr8
148 test_gr_immed 0,gr7
149 test_spr_immed 1,iacc0l ; 1-(0*-2)
150 test_spr_immed 0,iacc0h
151 smsss15:
152 set_gr_immed -2,gr7 ; multiply by 0
153 set_gr_immed 0,gr8
154 set_spr_immed 0,iacc0h
155 set_spr_immed 1,iacc0l
156 smsss gr7,gr8
157 test_gr_immed 0,gr8
158 test_gr_immed -2,gr7
159 test_spr_immed 1,iacc0l ; 1-(-2*0)
160 test_spr_immed 0,iacc0h
161 smsss16:
162 set_gr_limmed 0x2000,0x0000,gr7 ; 31 bit result
163 set_gr_immed -2,gr8
164 set_spr_immed 0,iacc0h
165 set_spr_limmed 0x3fff,0xffff,iacc0l
166 smsss gr7,gr8
167 test_gr_immed -2,gr8
168 test_gr_limmed 0x2000,0x0000,gr7
169 test_spr_limmed 0x7fff,0xffff,iacc0l
170 test_spr_immed 0,iacc0h ; 3fffffff-20000001*-2
171 smsss17:
172 set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result
173 set_gr_immed -2,gr8
174 set_spr_immed 0,iacc0h
175 set_spr_immed 1,iacc0l
176 smsss gr7,gr8
177 test_gr_immed -2,gr8
178 test_gr_limmed 0x4000,0x0000,gr7
179 test_spr_limmed 0x8000,0x0001,iacc0l ; 1-40000000*-2
180 test_spr_immed 0,iacc0h
181 smsss18:
182 set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result
183 set_gr_immed -2,gr8
184 set_spr_immed -1,iacc0h
185 set_spr_immed -1,iacc0l
186 smsss gr7,gr8
187 test_gr_immed -2,gr8
188 test_gr_limmed 0x4000,0x0000,gr7
189 test_spr_limmed 0x7fff,0xffff,iacc0l
190 test_spr_immed 0,iacc0h ; -1-40000000*-2
191 smsss19:
192 set_gr_limmed 0x4000,0x0000,gr7 ; 33 bit result
193 set_gr_immed -4,gr8
194 set_spr_immed 0,iacc0h
195 set_spr_immed 1,iacc0l
196 smsss gr7,gr8
197 test_gr_immed -4,gr8
198 test_gr_limmed 0x4000,0x0000,gr7
199 test_spr_immed 1,iacc0l ; 200000001-(40000000*-4)
200 test_spr_immed 1,iacc0h
201 smsss20:
202 set_gr_limmed 0x7fff,0xffff,gr7 ; max negative result
203 set_gr_limmed 0x7fff,0xffff,gr8
204 set_spr_limmed 0xbfff,0xffff,iacc0h
205 set_spr_limmed 0x0000,0x0001,iacc0l
206 smsss gr7,gr8
207 test_gr_limmed 0x7fff,0xffff,gr8
208 test_gr_limmed 0x7fff,0xffff,gr7
209 test_spr_immed 0,iacc0l ; bfffffff00000001-(7fffffff*7fffffff)
210 test_spr_limmed 0x8000,0x0000,iacc0h
211 smsss21:
212 ; Negative operands
213 set_gr_immed -3,gr7 ; multiply small numbers
214 set_gr_immed -2,gr8
215 set_spr_immed 0,iacc0h
216 set_spr_immed 7,iacc0l
217 smsss gr7,gr8
218 test_gr_immed -2,gr8
219 test_gr_immed -3,gr7
220 test_spr_immed 1,iacc0l ; 7-(-3*-2)
221 test_spr_immed 0,iacc0h
222 smsss22:
223 set_gr_immed -1,gr7 ; multiply by 1
224 set_gr_immed -2,gr8
225 set_spr_immed 0,iacc0h
226 set_spr_immed 3,iacc0l
227 smsss gr7,gr8
228 test_gr_immed -2,gr8
229 test_gr_immed -1,gr7
230 test_spr_immed 1,iacc0l ; 3-(-1*-2)
231 test_spr_immed 0,iacc0h
232 smsss23:
233 set_gr_immed -2,gr7 ; multiply by 1
234 set_gr_immed -1,gr8
235 set_spr_immed 0,iacc0h
236 set_spr_immed 3,iacc0l
237 smsss gr7,gr8
238 test_gr_immed -1,gr8
239 test_gr_immed -2,gr7
240 test_spr_immed 1,iacc0l ; 3-(-2*-1)
241 test_spr_immed 0,iacc0h
242 smsss24:
243 set_gr_immed -32768,gr7 ; 31 bit result
244 set_gr_immed -32768,gr8
245 set_spr_immed 0,iacc0h
246 set_spr_limmed 0xbfff,0xffff,iacc0l
247 smsss gr7,gr8
248 test_gr_immed -32768,gr8
249 test_gr_immed -32768,gr7
250 test_spr_limmed 0x7fff,0xffff,iacc0l ; 7ffffffb-(-2*-2)
251 test_spr_immed 0,iacc0h
252 smsss25:
253 set_gr_immed 0xffff,gr7 ; 32 bit result
254 set_gr_immed 0xffff,gr8
255 set_spr_immed 1,iacc0h
256 set_spr_limmed 0xfffe,0x0000,iacc0l
257 smsss gr7,gr8
258 test_gr_immed 0xffff,gr8
259 test_gr_immed 0xffff,gr7
260 test_spr_limmed 0xffff,0xffff,iacc0l ; 1fffe0000-ffff*ffff
261 test_spr_immed 0,iacc0h
262 smsss26:
263 set_gr_limmed 0x0001,0x0000,gr7 ; 33 bit result
264 set_gr_limmed 0x0001,0x0000,gr8
265 set_spr_immed 2,iacc0h
266 set_spr_immed 1,iacc0l
267 smsss gr7,gr8
268 test_gr_limmed 0x0001,0x0000,gr8
269 test_gr_limmed 0x0001,0x0000,gr7
270 test_spr_immed 1,iacc0l ; 0x200000001-0x10000*0x10000
271 test_spr_immed 1,iacc0h
272 smsss27:
273 set_gr_immed -2,gr7 ; almost max positive result
274 set_gr_immed -2,gr8
275 set_spr_limmed 0x7fff,0xffff,iacc0h
276 set_spr_limmed 0xffff,0xffff,iacc0l
277 smsss gr7,gr8
278 test_gr_immed -2,gr8
279 test_gr_immed -2,gr7
280 test_spr_limmed 0xffff,0xfffb,iacc0l ; maxpos - (-2*-2)
281 test_spr_limmed 0x7fff,0xffff,iacc0h
282 smsss28:
283 set_gr_immed 0,gr7 ; max positive result
284 set_gr_immed 0,gr8
285 set_spr_limmed 0x7fff,0xffff,iacc0h
286 set_spr_limmed 0xffff,0xffff,iacc0l
287 smsss gr7,gr8
288 test_gr_immed 0,gr8
289 test_gr_immed 0,gr7
290 test_spr_limmed 0xffff,0xffff,iacc0l ; maxpos-(0*0)
291 test_spr_limmed 0x7fff,0xffff,iacc0h
292 smsss29:
293 set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (pos)
294 set_gr_limmed 0x8000,0x0000,gr8
295 set_spr_limmed 0x4000,0x0000,iacc0h
296 set_spr_limmed 0x7fff,0xffff,iacc0l
297 smsss gr7,gr8
298 test_gr_limmed 0x8000,0x0000,gr8
299 test_gr_limmed 0x7fff,0xffff,gr7
300 test_spr_limmed 0xffff,0xffff,iacc0l ; 400000007fffffff -
301 test_spr_limmed 0x7fff,0xffff,iacc0h ; 0x80000000*0x7fffffff
302 smsss30:
303 set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (pos)
304 set_gr_limmed 0x8000,0x0000,gr8
305 set_spr_limmed 0x4000,0x0000,iacc0h
306 set_spr_limmed 0x8000,0x0000,iacc0l
307 smsss gr7,gr8
308 test_gr_limmed 0x8000,0x0000,gr8
309 test_gr_limmed 0x7fff,0xffff,gr7
310 test_spr_limmed 0xffff,0xffff,iacc0l ; 4000000080000000 -
311 test_spr_limmed 0x7fff,0xffff,iacc0h ; 0x80000000*0x7fffffff
312
313 smsss31:
314 set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (pos)
315 set_gr_limmed 0x8000,0x0000,gr8
316 set_spr_limmed 0xffff,0xffff,iacc0l
317 set_spr_limmed 0x7fff,0xffff,iacc0h
318 smsss gr7,gr8
319 test_gr_limmed 0x8000,0x0000,gr8
320 test_gr_limmed 0x7fff,0xffff,gr7
321 test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffffffffffff -
322 test_spr_limmed 0x7fff,0xffff,iacc0h ; 80000000*80000000
323 smsss32:
324 set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (neg)
325 set_gr_limmed 0x7fff,0xffff,gr8
326 set_spr_immed 1,iacc0l
327 set_spr_limmed 0xbfff,0xffff,iacc0h
328 smsss gr7,gr8
329 test_gr_limmed 0x7fff,0xffff,gr8
330 test_gr_limmed 0x7fff,0xffff,gr7
331 test_spr_limmed 0x0000,0x0000,iacc0l ; bfffffff00000001 -
332 test_spr_limmed 0x8000,0x0000,iacc0h ; 0x7fffffff*0x7fffffff
333 smsss33:
334 set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (neg)
335 set_gr_limmed 0x7fff,0xffff,gr8
336 set_spr_immed 0,iacc0l
337 set_spr_limmed 0xbfff,0xffff,iacc0h
338 smsss gr7,gr8
339 test_gr_limmed 0x7fff,0xffff,gr8
340 test_gr_limmed 0x7fff,0xffff,gr7
341 test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+
342 test_spr_limmed 0x8000,0x0000,iacc0h ; bfffffff7fffffff
343 smsss34:
344 set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (neg)
345 set_gr_limmed 0x7fff,0xffff,gr8
346 set_spr_limmed 0x0000,0x0000,iacc0l
347 set_spr_limmed 0x8000,0x0000,iacc0h
348 smsss gr7,gr8
349 test_gr_limmed 0x7fff,0xffff,gr8
350 test_gr_limmed 0x7fff,0xffff,gr7
351 test_spr_limmed 0x0000,0x0000,iacc0l ; 8000000000000000-
352 test_spr_limmed 0x8000,0x0000,iacc0h ; 7fffffff*7fffffff+
353
354 pass
This page took 0.037188 seconds and 4 git commands to generate.