Add fr450 support.
[deliverable/binutils-gdb.git] / sim / testsuite / sim / frv / fr400 / smass.cgs
1 # frv testcase for smass $GRi,$GRj
2 # mach: fr405 fr450
3
4 .include "../testutils.inc"
5
6 start
7
8 .global smass
9 smass1:
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 1,iacc0l
15 smass gr7,gr8
16 test_gr_immed 3,gr7
17 test_gr_immed 2,gr8
18 test_spr_immed 7,iacc0l ; result 3*2+1
19 test_spr_immed 0,iacc0h
20 smass2:
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 1,iacc0l
25 smass gr7,gr8
26 test_gr_immed 1,gr7
27 test_gr_immed 2,gr8
28 test_spr_immed 3,iacc0l ; result 1*2+1
29 test_spr_immed 0,iacc0h
30 smass3:
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 1,iacc0l
35 smass gr7,gr8
36 test_gr_immed 1,gr8
37 test_gr_immed 2,gr7
38 test_spr_immed 3,iacc0l ; result 2*1+1
39 test_spr_immed 0,iacc0h
40 smass4:
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 smass gr7,gr8
46 test_gr_immed 2,gr8
47 test_gr_immed 0,gr7
48 test_spr_immed 1,iacc0l ; result 0*2+1
49 test_spr_immed 0,iacc0h
50 smass5:
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 smass gr7,gr8
56 test_gr_immed 0,gr8
57 test_gr_immed 2,gr7
58 test_spr_immed 1,iacc0l ; result 2*0+1
59 test_spr_immed 0,iacc0h
60 smass6:
61 set_gr_limmed 0x3fff,0xffff,gr7 ; 31 bit result
62 set_gr_immed 2,gr8
63 set_spr_immed 0,iacc0h
64 set_spr_immed 1,iacc0l
65 smass gr7,gr8
66 test_gr_immed 2,gr8
67 test_gr_limmed 0x3fff,0xffff,gr7
68 test_spr_limmed 0x7fff,0xffff,iacc0l ; 3fffffff*2+1
69 test_spr_immed 0,iacc0h
70 smass7:
71 set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result
72 set_gr_immed 2,gr8
73 set_spr_immed 0,iacc0h
74 set_spr_immed 1,iacc0l
75 smass gr7,gr8
76 test_gr_immed 2,gr8
77 test_gr_limmed 0x4000,0x0000,gr7
78 test_spr_limmed 0x8000,0x0001,iacc0l ; 40000000*2+1
79 test_spr_immed 0,iacc0h
80 smass8:
81 set_gr_limmed 0x4000,0x0000,gr7 ; 33 bit result
82 set_gr_immed 4,gr8
83 set_spr_immed 0,iacc0h
84 set_spr_immed 1,iacc0l
85 smass gr7,gr8
86 test_gr_immed 4,gr8
87 test_gr_limmed 0x4000,0x0000,gr7
88 test_spr_immed 1,iacc0l ; 40000000*4+1
89 test_spr_immed 1,iacc0h
90 smass9:
91 set_gr_limmed 0x7fff,0xffff,gr7 ; max positive result
92 set_gr_limmed 0x7fff,0xffff,gr8
93 set_spr_immed 0,iacc0h
94 set_spr_immed 1,iacc0l
95 smass gr7,gr8
96 test_gr_limmed 0x7fff,0xffff,gr8
97 test_gr_limmed 0x7fff,0xffff,gr7
98 test_spr_immed 0x00000002,iacc0l ; 7fffffff*7fffffff+1
99 test_spr_limmed 0x3fff,0xffff,iacc0h
100 smass10:
101 ; Mixed operands
102 set_gr_immed -3,gr7 ; multiply small numbers
103 set_gr_immed 2,gr8
104 set_spr_immed 0,iacc0h
105 set_spr_immed 1,iacc0l
106 smass gr7,gr8
107 test_gr_immed 2,gr8
108 test_gr_immed -3,gr7
109 test_spr_immed -5,iacc0l ; -3*2+1
110 test_spr_immed -1,iacc0h
111 smass11:
112 set_gr_immed 3,gr7 ; multiply small numbers
113 set_gr_immed -2,gr8
114 set_spr_immed 0,iacc0h
115 set_spr_immed 1,iacc0l
116 smass gr7,gr8
117 test_gr_immed -2,gr8
118 test_gr_immed 3,gr7
119 test_spr_immed -5,iacc0l ; 3*-2+1
120 test_spr_immed -1,iacc0h
121 smass12:
122 set_gr_immed 1,gr7 ; multiply by 1
123 set_gr_immed -2,gr8
124 set_spr_immed 0,iacc0h
125 set_spr_immed 1,iacc0l
126 smass gr7,gr8
127 test_gr_immed -2,gr8
128 test_gr_immed 1,gr7
129 test_spr_immed -1,iacc0l ; 1*-2+1
130 test_spr_immed -1,iacc0h
131 smass13:
132 set_gr_immed -2,gr7 ; multiply by 1
133 set_gr_immed 1,gr8
134 set_spr_immed 0,iacc0h
135 set_spr_immed 1,iacc0l
136 smass gr7,gr8
137 test_gr_immed 1,gr8
138 test_gr_immed -2,gr7
139 test_spr_immed -1,iacc0l ; -2*1+1
140 test_spr_immed -1,iacc0h
141 smass14:
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 smass gr7,gr8
147 test_gr_immed -2,gr8
148 test_gr_immed 0,gr7
149 test_spr_immed 1,iacc0l ; 0*-2+1
150 test_spr_immed 0,iacc0h
151 smass15:
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 smass gr7,gr8
157 test_gr_immed 0,gr8
158 test_gr_immed -2,gr7
159 test_spr_immed 1,iacc0l ; -2*0+1
160 test_spr_immed 0,iacc0h
161 smass16:
162 set_gr_limmed 0x2000,0x0001,gr7 ; 31 bit result
163 set_gr_immed -2,gr8
164 set_spr_immed 0,iacc0h
165 set_spr_immed 1,iacc0l
166 smass gr7,gr8
167 test_gr_immed -2,gr8
168 test_gr_limmed 0x2000,0x0001,gr7
169 test_spr_limmed 0xbfff,0xffff,iacc0l ; 20000001*-2+1
170 test_spr_limmed 0xffff,0xffff,iacc0h
171 smass17:
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 smass gr7,gr8
177 test_gr_immed -2,gr8
178 test_gr_limmed 0x4000,0x0000,gr7
179 test_spr_limmed 0x8000,0x0001,iacc0l ; 40000000*-2+1
180 test_spr_limmed 0xffff,0xffff,iacc0h
181 smass18:
182 set_gr_limmed 0x4000,0x0001,gr7 ; 32 bit result
183 set_gr_immed -2,gr8
184 set_spr_immed 0,iacc0h
185 set_spr_immed 1,iacc0l
186 smass gr7,gr8
187 test_gr_immed -2,gr8
188 test_gr_limmed 0x4000,0x0001,gr7
189 test_spr_limmed 0x7fff,0xffff,iacc0l ; 40000001*-2+1
190 test_spr_limmed 0xffff,0xffff,iacc0h
191 smass19:
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 smass gr7,gr8
197 test_gr_immed -4,gr8
198 test_gr_limmed 0x4000,0x0000,gr7
199 test_spr_limmed 0x0000,0x0001,iacc0l ; 40000000*-4+1
200 test_spr_limmed 0xffff,0xffff,iacc0h
201 smass20:
202 set_gr_limmed 0x7fff,0xffff,gr7 ; max negative result
203 set_gr_limmed 0x8000,0x0000,gr8
204 set_spr_immed 0,iacc0h
205 set_spr_immed 1,iacc0l
206 smass gr7,gr8
207 test_gr_limmed 0x8000,0x0000,gr8
208 test_gr_limmed 0x7fff,0xffff,gr7
209 test_spr_limmed 0x8000,0x0001,iacc0l ; 7fffffff*80000000+1
210 test_spr_limmed 0xc000,0x0000,iacc0h
211 smass21:
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 1,iacc0l
217 smass gr7,gr8
218 test_gr_immed -2,gr8
219 test_gr_immed -3,gr7
220 test_spr_immed 7,iacc0l ; -3*-2+1
221 test_spr_immed 0,iacc0h
222 smass22:
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 1,iacc0l
227 smass gr7,gr8
228 test_gr_immed -2,gr8
229 test_gr_immed -1,gr7
230 test_spr_immed 3,iacc0l ; -1*-2+1
231 test_spr_immed 0,iacc0h
232 smass23:
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 1,iacc0l
237 smass gr7,gr8
238 test_gr_immed -1,gr8
239 test_gr_immed -2,gr7
240 test_spr_immed 3,iacc0l ; -2*-1+1
241 test_spr_immed 0,iacc0h
242 smass24:
243 set_gr_limmed 0xc000,0x0001,gr7 ; 31 bit result
244 set_gr_immed -2,gr8
245 set_spr_immed 0,iacc0h
246 set_spr_immed 1,iacc0l
247 smass gr7,gr8
248 test_gr_immed -2,gr8
249 test_gr_limmed 0xc000,0x0001,gr7
250 test_spr_limmed 0x7fff,0xffff,iacc0l ; c0000001*-2+1
251 test_spr_immed 0,iacc0h
252 smass25:
253 set_gr_limmed 0xc000,0x0000,gr7 ; 32 bit result
254 set_gr_immed -2,gr8
255 set_spr_immed 0,iacc0h
256 set_spr_immed 1,iacc0l
257 smass gr7,gr8
258 test_gr_immed -2,gr8
259 test_gr_limmed 0xc000,0x0000,gr7
260 test_spr_limmed 0x8000,0x0001,iacc0l ; c0000000*-2+1
261 test_spr_immed 0,iacc0h
262 smass26:
263 set_gr_limmed 0xc000,0x0000,gr7 ; 33 bit result
264 set_gr_immed -4,gr8
265 set_spr_immed 0,iacc0h
266 set_spr_immed 1,iacc0l
267 smass gr7,gr8
268 test_gr_immed -4,gr8
269 test_gr_limmed 0xc000,0x0000,gr7
270 test_spr_immed 0x00000001,iacc0l ; c0000000*-4+1
271 test_spr_immed 1,iacc0h
272 smass27:
273 set_gr_limmed 0x8000,0x0001,gr7 ; almost max positive result
274 set_gr_limmed 0x8000,0x0001,gr8
275 set_spr_immed 0,iacc0h
276 set_spr_immed 1,iacc0l
277 smass gr7,gr8
278 test_gr_limmed 0x8000,0x0001,gr8
279 test_gr_limmed 0x8000,0x0001,gr7
280 test_spr_immed 0x00000002,iacc0l ; 80000001*80000001+1
281 test_spr_limmed 0x3fff,0xffff,iacc0h
282 smass28:
283 set_gr_limmed 0x8000,0x0000,gr7 ; max positive result
284 set_gr_limmed 0x8000,0x0000,gr8
285 set_spr_immed 0,iacc0h
286 set_spr_immed 1,iacc0l
287 smass gr7,gr8
288 test_gr_limmed 0x8000,0x0000,gr8
289 test_gr_limmed 0x8000,0x0000,gr7
290 test_spr_immed 0x00000001,iacc0l ; 80000000*80000000+1
291 test_spr_limmed 0x4000,0x0000,iacc0h
292
293 smass29:
294 set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (pos)
295 set_gr_limmed 0x7fff,0xffff,gr8
296 set_spr_limmed 0xffff,0xfffe,iacc0l
297 set_spr_limmed 0x4000,0x0000,iacc0h
298 smass gr7,gr8
299 test_gr_limmed 0x7fff,0xffff,gr8
300 test_gr_limmed 0x7fff,0xffff,gr7
301 test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffff*7fffffff+
302 test_spr_limmed 0x7fff,0xffff,iacc0h ; 40000000fffffffe
303
304 smass30:
305 set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (pos)
306 set_gr_limmed 0x7fff,0xffff,gr8
307 set_spr_limmed 0xffff,0xffff,iacc0l
308 set_spr_limmed 0x4000,0x0000,iacc0h
309 smass gr7,gr8
310 test_gr_limmed 0x7fff,0xffff,gr8
311 test_gr_limmed 0x7fff,0xffff,gr7
312 test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffff*7fffffff+
313 test_spr_limmed 0x7fff,0xffff,iacc0h ; 40000000ffffffff
314
315 smass31:
316 set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (pos)
317 set_gr_limmed 0x7fff,0xffff,gr8
318 set_spr_limmed 0xffff,0xffff,iacc0l
319 set_spr_limmed 0x7fff,0xffff,iacc0h
320 smass gr7,gr8
321 test_gr_limmed 0x7fff,0xffff,gr8
322 test_gr_limmed 0x7fff,0xffff,gr7
323 test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffff*7fffffff+
324 test_spr_limmed 0x7fff,0xffff,iacc0h ; 7fffffffffffffff
325
326 smass32:
327 set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (neg)
328 set_gr_limmed 0x8000,0x0000,gr8
329 set_spr_limmed 0x8000,0x0000,iacc0l
330 set_spr_limmed 0xbfff,0xffff,iacc0h
331 smass gr7,gr8
332 test_gr_limmed 0x8000,0x0000,gr8
333 test_gr_limmed 0x7fff,0xffff,gr7
334 test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+
335 test_spr_limmed 0x8000,0x0000,iacc0h ; bfffffff80000000
336
337 smass33:
338 set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (neg)
339 set_gr_limmed 0x8000,0x0000,gr8
340 set_spr_limmed 0x7fff,0xffff,iacc0l
341 set_spr_limmed 0xbfff,0xffff,iacc0h
342 smass gr7,gr8
343 test_gr_limmed 0x8000,0x0000,gr8
344 test_gr_limmed 0x7fff,0xffff,gr7
345 test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+
346 test_spr_limmed 0x8000,0x0000,iacc0h ; bfffffff7fffffff
347
348 smass34:
349 set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (neg)
350 set_gr_limmed 0x8000,0x0000,gr8
351 set_spr_limmed 0x0000,0x0000,iacc0l
352 set_spr_limmed 0x8000,0x0000,iacc0h
353 smass gr7,gr8
354 test_gr_limmed 0x8000,0x0000,gr8
355 test_gr_limmed 0x7fff,0xffff,gr7
356 test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+
357 test_spr_limmed 0x8000,0x0000,iacc0h ; 8000000000000000
358
359 pass
This page took 0.053934 seconds and 4 git commands to generate.