xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/frv/cmqmulhs.cgs (revision b2c35e17b976cf7ccd7250c86c6f5e95090ed636)
1# frv testcase for cmqmulhs $GRi,$GRj,$ACCk,$CCi,$cond
2# mach: all
3
4	.include "testutils.inc"
5
6	start
7
8	.global cmqmulhs
9cmqmulhs:
10	set_spr_immed	0x1b1b,cccr
11
12	; Positive operands
13	set_fr_iimmed  	2,3,fr8		; multiply small numbers
14	set_fr_iimmed  	3,2,fr10
15	set_fr_iimmed  	0,1,fr9		; multiply by 0
16	set_fr_iimmed  	2,0,fr11
17	cmqmulhs      	fr8,fr10,acc0,cc0,1
18	test_accg_immed 	0,accg0
19	test_acc_immed 	6,acc0
20	test_accg_immed 	0,accg1
21	test_acc_immed 	6,acc1
22	test_accg_immed 	0,accg2
23	test_acc_immed 	0,acc2
24	test_accg_immed 	0,accg3
25	test_acc_immed 	0,acc3
26
27	set_fr_iimmed  	2,1,fr8		; multiply by 1
28	set_fr_iimmed  	1,2,fr10
29	set_fr_iimmed	0x3fff,2,fr9	; 15 bit result
30	set_fr_iimmed  	2,0x3fff,fr11
31	cmqmulhs      	fr8,fr10,acc0,cc0,1
32	test_accg_immed 	0,accg0
33	test_acc_immed 	2,acc0
34	test_accg_immed 	0,accg1
35	test_acc_immed 	2,acc1
36	test_accg_immed 	0,accg2
37	test_acc_limmed	0,0x7ffe,acc2
38	test_accg_immed 	0,accg3
39	test_acc_limmed	0,0x7ffe,acc3
40
41	set_fr_iimmed	0x4000,2,fr8	; 16 bit result
42	set_fr_iimmed  	2,0x4000,fr10
43	set_fr_iimmed	0x7fff,0x7fff,fr9	; max positive result
44	set_fr_iimmed	0x7fff,0x7fff,fr11
45	cmqmulhs      	fr8,fr10,acc0,cc0,1
46	test_accg_immed 	0,accg0
47	test_acc_limmed	0x0000,0x8000,acc0
48	test_accg_immed 	0,accg1
49	test_acc_limmed	0x0000,0x8000,acc1
50	test_accg_immed 	0,accg2
51	test_acc_limmed 0x3fff,0x0001,acc2
52	test_accg_immed 	0,accg3
53	test_acc_limmed 0x3fff,0x0001,acc3
54
55	; Mixed operands
56	set_fr_iimmed  	2,0xfffd,fr8		; multiply small numbers
57	set_fr_iimmed  	0xfffd,2,fr10
58	set_fr_iimmed  	0xfffe,1,fr9		; multiply by 1
59	set_fr_iimmed  	1,0xfffe,fr11
60	cmqmulhs      	fr8,fr10,acc0,cc0,1
61	test_accg_immed 	0xff,accg0
62	test_acc_immed 	-6,acc0
63	test_accg_immed 	0xff,accg1
64	test_acc_immed 	-6,acc1
65	test_accg_immed 	0xff,accg2
66	test_acc_immed 	-2,acc2
67	test_accg_immed 	0xff,accg3
68	test_acc_immed 	-2,acc3
69
70	set_fr_iimmed  	0xfffe,0,fr8		; multiply by 0
71	set_fr_iimmed  	0,0xfffe,fr10
72	set_fr_iimmed  	0x2001,0xfffe,fr9	; 15 bit result
73	set_fr_iimmed  	0xfffe,0x2001,fr11
74	cmqmulhs      	fr8,fr10,acc0,cc4,1
75	test_accg_immed 	0,accg0
76	test_acc_immed 	0,acc0
77	test_accg_immed 	0,accg1
78	test_acc_immed 	0,acc1
79	test_accg_immed 	0xff,accg2
80	test_acc_limmed	0xffff,0xbffe,acc2
81	test_accg_immed 	0xff,accg3
82	test_acc_limmed	0xffff,0xbffe,acc3
83
84	set_fr_iimmed	0x4000,0xfffe,fr8	; 16 bit result
85	set_fr_iimmed  	0xfffe,0x4000,fr10
86	set_fr_iimmed	0x7fff,0x8000,fr9	; max negative result
87	set_fr_iimmed	0x8000,0x7fff,fr11
88	cmqmulhs      	fr8,fr10,acc0,cc4,1
89	test_accg_immed 	0xff,accg0
90	test_acc_limmed	0xffff,0x8000,acc0
91	test_accg_immed 	0xff,accg1
92	test_acc_limmed	0xffff,0x8000,acc1
93	test_accg_immed 	0xff,accg2
94	test_acc_limmed	0xc000,0x8000,acc2
95	test_accg_immed 	0xff,accg3
96	test_acc_limmed	0xc000,0x8000,acc3
97
98	; Negative operands
99	set_fr_iimmed  	0xfffe,0xfffd,fr8		; multiply small numbers
100	set_fr_iimmed  	0xfffd,0xfffe,fr10
101	set_fr_iimmed  	0xffff,0xfffe,fr9		; multiply by -1
102	set_fr_iimmed  	0xfffe,0xffff,fr11
103	cmqmulhs      	fr8,fr10,acc0,cc4,1
104	test_accg_immed 	0,accg0
105	test_acc_immed 	6,acc0
106	test_accg_immed 	0,accg1
107	test_acc_immed 	6,acc1
108	test_accg_immed 	0,accg2
109	test_acc_immed 	2,acc2
110	test_accg_immed 	0,accg3
111	test_acc_immed 	2,acc3
112
113	set_fr_iimmed	0x8001,0x8001,fr8	; almost max positive result
114	set_fr_iimmed	0x8001,0x8001,fr10
115	set_fr_iimmed	0x8000,0x8000,fr9	; max positive result
116	set_fr_iimmed	0x8000,0x8000,fr11
117	cmqmulhs      	fr8,fr10,acc0,cc4,1
118	test_accg_immed 	0,accg0
119	test_acc_immed 	0x3fff0001,acc0
120	test_accg_immed 	0,accg1
121	test_acc_immed 	0x3fff0001,acc1
122	test_accg_immed 	0,accg2
123	test_acc_immed 	0x40000000,acc2
124	test_accg_immed 	0,accg3
125	test_acc_immed 	0x40000000,acc3
126
127	; Positive operands
128	set_fr_iimmed  	2,3,fr8		; multiply small numbers
129	set_fr_iimmed  	3,2,fr10
130	set_fr_iimmed  	0,1,fr9		; multiply by 0
131	set_fr_iimmed  	2,0,fr11
132	cmqmulhs      	fr8,fr10,acc0,cc1,0
133	test_accg_immed 	0,accg0
134	test_acc_immed 	6,acc0
135	test_accg_immed 	0,accg1
136	test_acc_immed 	6,acc1
137	test_accg_immed 	0,accg2
138	test_acc_immed 	0,acc2
139	test_accg_immed 	0,accg3
140	test_acc_immed 	0,acc3
141
142	set_fr_iimmed  	2,1,fr8		; multiply by 1
143	set_fr_iimmed  	1,2,fr10
144	set_fr_iimmed	0x3fff,2,fr9	; 15 bit result
145	set_fr_iimmed  	2,0x3fff,fr11
146	cmqmulhs      	fr8,fr10,acc0,cc1,0
147	test_accg_immed 	0,accg0
148	test_acc_immed 	2,acc0
149	test_accg_immed 	0,accg1
150	test_acc_immed 	2,acc1
151	test_accg_immed 	0,accg2
152	test_acc_limmed	0,0x7ffe,acc2
153	test_accg_immed 	0,accg3
154	test_acc_limmed	0,0x7ffe,acc3
155
156	set_fr_iimmed	0x4000,2,fr8	; 16 bit result
157	set_fr_iimmed  	2,0x4000,fr10
158	set_fr_iimmed	0x7fff,0x7fff,fr9	; max positive result
159	set_fr_iimmed	0x7fff,0x7fff,fr11
160	cmqmulhs      	fr8,fr10,acc0,cc1,0
161	test_accg_immed 	0,accg0
162	test_acc_limmed	0x0000,0x8000,acc0
163	test_accg_immed 	0,accg1
164	test_acc_limmed	0x0000,0x8000,acc1
165	test_accg_immed 	0,accg2
166	test_acc_limmed 0x3fff,0x0001,acc2
167	test_accg_immed 	0,accg3
168	test_acc_limmed 0x3fff,0x0001,acc3
169
170	; Mixed operands
171	set_fr_iimmed  	2,0xfffd,fr8		; multiply small numbers
172	set_fr_iimmed  	0xfffd,2,fr10
173	set_fr_iimmed  	0xfffe,1,fr9		; multiply by 1
174	set_fr_iimmed  	1,0xfffe,fr11
175	cmqmulhs      	fr8,fr10,acc0,cc1,0
176	test_accg_immed 	0xff,accg0
177	test_acc_immed 	-6,acc0
178	test_accg_immed 	0xff,accg1
179	test_acc_immed 	-6,acc1
180	test_accg_immed 	0xff,accg2
181	test_acc_immed 	-2,acc2
182	test_accg_immed 	0xff,accg3
183	test_acc_immed 	-2,acc3
184
185	set_fr_iimmed  	0xfffe,0,fr8		; multiply by 0
186	set_fr_iimmed  	0,0xfffe,fr10
187	set_fr_iimmed  	0x2001,0xfffe,fr9	; 15 bit result
188	set_fr_iimmed  	0xfffe,0x2001,fr11
189	cmqmulhs      	fr8,fr10,acc0,cc5,0
190	test_accg_immed 	0,accg0
191	test_acc_immed 	0,acc0
192	test_accg_immed 	0,accg1
193	test_acc_immed 	0,acc1
194	test_accg_immed 	0xff,accg2
195	test_acc_limmed	0xffff,0xbffe,acc2
196	test_accg_immed 	0xff,accg3
197	test_acc_limmed	0xffff,0xbffe,acc3
198
199	set_fr_iimmed	0x4000,0xfffe,fr8	; 16 bit result
200	set_fr_iimmed  	0xfffe,0x4000,fr10
201	set_fr_iimmed	0x7fff,0x8000,fr9	; max negative result
202	set_fr_iimmed	0x8000,0x7fff,fr11
203	cmqmulhs      	fr8,fr10,acc0,cc5,0
204	test_accg_immed 	0xff,accg0
205	test_acc_limmed	0xffff,0x8000,acc0
206	test_accg_immed 	0xff,accg1
207	test_acc_limmed	0xffff,0x8000,acc1
208	test_accg_immed 	0xff,accg2
209	test_acc_limmed	0xc000,0x8000,acc2
210	test_accg_immed 	0xff,accg3
211	test_acc_limmed	0xc000,0x8000,acc3
212
213	; Negative operands
214	set_fr_iimmed  	0xfffe,0xfffd,fr8		; multiply small numbers
215	set_fr_iimmed  	0xfffd,0xfffe,fr10
216	set_fr_iimmed  	0xffff,0xfffe,fr9		; multiply by -1
217	set_fr_iimmed  	0xfffe,0xffff,fr11
218	cmqmulhs      	fr8,fr10,acc0,cc5,0
219	test_accg_immed 	0,accg0
220	test_acc_immed 	6,acc0
221	test_accg_immed 	0,accg1
222	test_acc_immed 	6,acc1
223	test_accg_immed 	0,accg2
224	test_acc_immed 	2,acc2
225	test_accg_immed 	0,accg3
226	test_acc_immed 	2,acc3
227
228	set_fr_iimmed	0x8001,0x8001,fr8	; almost max positive result
229	set_fr_iimmed	0x8001,0x8001,fr10
230	set_fr_iimmed	0x8000,0x8000,fr9	; max positive result
231	set_fr_iimmed	0x8000,0x8000,fr11
232	cmqmulhs      	fr8,fr10,acc0,cc5,0
233	test_accg_immed 	0,accg0
234	test_acc_immed 	0x3fff0001,acc0
235	test_accg_immed 	0,accg1
236	test_acc_immed 	0x3fff0001,acc1
237	test_accg_immed 	0,accg2
238	test_acc_immed 	0x40000000,acc2
239	test_accg_immed 	0,accg3
240	test_acc_immed 	0x40000000,acc3
241
242	; Positive operands
243	set_accg_immed 	0x00000011,accg0
244	set_acc_immed 	0x11111111,acc0
245	set_accg_immed 	0x00000022,accg1
246	set_acc_immed 	0x22222222,acc1
247	set_accg_immed 	0x00000033,accg2
248	set_acc_immed 	0x33333333,acc2
249	set_accg_immed 	0x00000044,accg3
250	set_acc_immed 	0x44444444,acc3
251	set_fr_iimmed  	2,3,fr8		; multiply small numbers
252	set_fr_iimmed  	3,2,fr10
253	set_fr_iimmed  	0,1,fr9		; multiply by 0
254	set_fr_iimmed  	2,0,fr11
255	cmqmulhs      	fr8,fr10,acc0,cc0,0
256	test_accg_immed 	0x00000011,accg0
257	test_acc_immed 	0x11111111,acc0
258	test_accg_immed 	0x00000022,accg1
259	test_acc_immed 	0x22222222,acc1
260	test_accg_immed 	0x00000033,accg2
261	test_acc_immed 	0x33333333,acc2
262	test_accg_immed 	0x00000044,accg3
263	test_acc_immed 	0x44444444,acc3
264
265	set_fr_iimmed  	2,1,fr8		; multiply by 1
266	set_fr_iimmed  	1,2,fr10
267	set_fr_iimmed	0x3fff,2,fr9	; 15 bit result
268	set_fr_iimmed  	2,0x3fff,fr11
269	cmqmulhs      	fr8,fr10,acc0,cc0,0
270	test_accg_immed 	0x00000011,accg0
271	test_acc_immed 	0x11111111,acc0
272	test_accg_immed 	0x00000022,accg1
273	test_acc_immed 	0x22222222,acc1
274	test_accg_immed 	0x00000033,accg2
275	test_acc_immed 	0x33333333,acc2
276	test_accg_immed 	0x00000044,accg3
277	test_acc_immed 	0x44444444,acc3
278
279	set_fr_iimmed	0x4000,2,fr8	; 16 bit result
280	set_fr_iimmed  	2,0x4000,fr10
281	set_fr_iimmed	0x7fff,0x7fff,fr9	; max positive result
282	set_fr_iimmed	0x7fff,0x7fff,fr11
283	cmqmulhs      	fr8,fr10,acc0,cc0,0
284	test_accg_immed 	0x00000011,accg0
285	test_acc_immed 	0x11111111,acc0
286	test_accg_immed 	0x00000022,accg1
287	test_acc_immed 	0x22222222,acc1
288	test_accg_immed 	0x00000033,accg2
289	test_acc_immed 	0x33333333,acc2
290	test_accg_immed 	0x00000044,accg3
291	test_acc_immed 	0x44444444,acc3
292
293	; Mixed operands
294	set_fr_iimmed  	2,0xfffd,fr8		; multiply small numbers
295	set_fr_iimmed  	0xfffd,2,fr10
296	set_fr_iimmed  	0xfffe,1,fr9		; multiply by 1
297	set_fr_iimmed  	1,0xfffe,fr11
298	cmqmulhs      	fr8,fr10,acc0,cc0,0
299	test_accg_immed 	0x00000011,accg0
300	test_acc_immed 	0x11111111,acc0
301	test_accg_immed 	0x00000022,accg1
302	test_acc_immed 	0x22222222,acc1
303	test_accg_immed 	0x00000033,accg2
304	test_acc_immed 	0x33333333,acc2
305	test_accg_immed 	0x00000044,accg3
306	test_acc_immed 	0x44444444,acc3
307
308	set_fr_iimmed  	0xfffe,0,fr8		; multiply by 0
309	set_fr_iimmed  	0,0xfffe,fr10
310	set_fr_iimmed  	0x2001,0xfffe,fr9	; 15 bit result
311	set_fr_iimmed  	0xfffe,0x2001,fr11
312	cmqmulhs      	fr8,fr10,acc0,cc4,0
313	test_accg_immed 	0x00000011,accg0
314	test_acc_immed 	0x11111111,acc0
315	test_accg_immed 	0x00000022,accg1
316	test_acc_immed 	0x22222222,acc1
317	test_accg_immed 	0x00000033,accg2
318	test_acc_immed 	0x33333333,acc2
319	test_accg_immed 	0x00000044,accg3
320	test_acc_immed 	0x44444444,acc3
321
322	set_fr_iimmed	0x4000,0xfffe,fr8	; 16 bit result
323	set_fr_iimmed  	0xfffe,0x4000,fr10
324	set_fr_iimmed	0x7fff,0x8000,fr9	; max negative result
325	set_fr_iimmed	0x8000,0x7fff,fr11
326	cmqmulhs      	fr8,fr10,acc0,cc4,0
327	test_accg_immed 	0x00000011,accg0
328	test_acc_immed 	0x11111111,acc0
329	test_accg_immed 	0x00000022,accg1
330	test_acc_immed 	0x22222222,acc1
331	test_accg_immed 	0x00000033,accg2
332	test_acc_immed 	0x33333333,acc2
333	test_accg_immed 	0x00000044,accg3
334	test_acc_immed 	0x44444444,acc3
335
336	; Negative operands
337	set_fr_iimmed  	0xfffe,0xfffd,fr8		; multiply small numbers
338	set_fr_iimmed  	0xfffd,0xfffe,fr10
339	set_fr_iimmed  	0xffff,0xfffe,fr9		; multiply by -1
340	set_fr_iimmed  	0xfffe,0xffff,fr11
341	cmqmulhs      	fr8,fr10,acc0,cc4,0
342	test_accg_immed 	0x00000011,accg0
343	test_acc_immed 	0x11111111,acc0
344	test_accg_immed 	0x00000022,accg1
345	test_acc_immed 	0x22222222,acc1
346	test_accg_immed 	0x00000033,accg2
347	test_acc_immed 	0x33333333,acc2
348	test_accg_immed 	0x00000044,accg3
349	test_acc_immed 	0x44444444,acc3
350
351	set_fr_iimmed	0x8001,0x8001,fr8	; almost max positive result
352	set_fr_iimmed	0x8001,0x8001,fr10
353	set_fr_iimmed	0x8000,0x8000,fr9	; max positive result
354	set_fr_iimmed	0x8000,0x8000,fr11
355	cmqmulhs      	fr8,fr10,acc0,cc4,0
356	test_accg_immed 	0x00000011,accg0
357	test_acc_immed 	0x11111111,acc0
358	test_accg_immed 	0x00000022,accg1
359	test_acc_immed 	0x22222222,acc1
360	test_accg_immed 	0x00000033,accg2
361	test_acc_immed 	0x33333333,acc2
362	test_accg_immed 	0x00000044,accg3
363	test_acc_immed 	0x44444444,acc3
364
365	; Positive operands
366	set_accg_immed 	0x00000011,accg0
367	set_acc_immed 	0x11111111,acc0
368	set_accg_immed 	0x00000022,accg1
369	set_acc_immed 	0x22222222,acc1
370	set_accg_immed 	0x00000033,accg2
371	set_acc_immed 	0x33333333,acc2
372	set_accg_immed 	0x00000044,accg3
373	set_acc_immed 	0x44444444,acc3
374	set_fr_iimmed  	2,3,fr8		; multiply small numbers
375	set_fr_iimmed  	3,2,fr10
376	set_fr_iimmed  	0,1,fr9		; multiply by 0
377	set_fr_iimmed  	2,0,fr11
378	cmqmulhs      	fr8,fr10,acc0,cc1,1
379	test_accg_immed 	0x00000011,accg0
380	test_acc_immed 	0x11111111,acc0
381	test_accg_immed 	0x00000022,accg1
382	test_acc_immed 	0x22222222,acc1
383	test_accg_immed 	0x00000033,accg2
384	test_acc_immed 	0x33333333,acc2
385	test_accg_immed 	0x00000044,accg3
386	test_acc_immed 	0x44444444,acc3
387
388	set_fr_iimmed  	2,1,fr8		; multiply by 1
389	set_fr_iimmed  	1,2,fr10
390	set_fr_iimmed	0x3fff,2,fr9	; 15 bit result
391	set_fr_iimmed  	2,0x3fff,fr11
392	cmqmulhs      	fr8,fr10,acc0,cc1,1
393	test_accg_immed 	0x00000011,accg0
394	test_acc_immed 	0x11111111,acc0
395	test_accg_immed 	0x00000022,accg1
396	test_acc_immed 	0x22222222,acc1
397	test_accg_immed 	0x00000033,accg2
398	test_acc_immed 	0x33333333,acc2
399	test_accg_immed 	0x00000044,accg3
400	test_acc_immed 	0x44444444,acc3
401
402	set_fr_iimmed	0x4000,2,fr8	; 16 bit result
403	set_fr_iimmed  	2,0x4000,fr10
404	set_fr_iimmed	0x7fff,0x7fff,fr9	; max positive result
405	set_fr_iimmed	0x7fff,0x7fff,fr11
406	cmqmulhs      	fr8,fr10,acc0,cc1,1
407	test_accg_immed 	0x00000011,accg0
408	test_acc_immed 	0x11111111,acc0
409	test_accg_immed 	0x00000022,accg1
410	test_acc_immed 	0x22222222,acc1
411	test_accg_immed 	0x00000033,accg2
412	test_acc_immed 	0x33333333,acc2
413	test_accg_immed 	0x00000044,accg3
414	test_acc_immed 	0x44444444,acc3
415
416	; Mixed operands
417	set_fr_iimmed  	2,0xfffd,fr8		; multiply small numbers
418	set_fr_iimmed  	0xfffd,2,fr10
419	set_fr_iimmed  	0xfffe,1,fr9		; multiply by 1
420	set_fr_iimmed  	1,0xfffe,fr11
421	cmqmulhs      	fr8,fr10,acc0,cc1,1
422	test_accg_immed 	0x00000011,accg0
423	test_acc_immed 	0x11111111,acc0
424	test_accg_immed 	0x00000022,accg1
425	test_acc_immed 	0x22222222,acc1
426	test_accg_immed 	0x00000033,accg2
427	test_acc_immed 	0x33333333,acc2
428	test_accg_immed 	0x00000044,accg3
429	test_acc_immed 	0x44444444,acc3
430
431	set_fr_iimmed  	0xfffe,0,fr8		; multiply by 0
432	set_fr_iimmed  	0,0xfffe,fr10
433	set_fr_iimmed  	0x2001,0xfffe,fr9	; 15 bit result
434	set_fr_iimmed  	0xfffe,0x2001,fr11
435	cmqmulhs      	fr8,fr10,acc0,cc5,1
436	test_accg_immed 	0x00000011,accg0
437	test_acc_immed 	0x11111111,acc0
438	test_accg_immed 	0x00000022,accg1
439	test_acc_immed 	0x22222222,acc1
440	test_accg_immed 	0x00000033,accg2
441	test_acc_immed 	0x33333333,acc2
442	test_accg_immed 	0x00000044,accg3
443	test_acc_immed 	0x44444444,acc3
444
445	set_fr_iimmed	0x4000,0xfffe,fr8	; 16 bit result
446	set_fr_iimmed  	0xfffe,0x4000,fr10
447	set_fr_iimmed	0x7fff,0x8000,fr9	; max negative result
448	set_fr_iimmed	0x8000,0x7fff,fr11
449	cmqmulhs      	fr8,fr10,acc0,cc5,1
450	test_accg_immed 	0x00000011,accg0
451	test_acc_immed 	0x11111111,acc0
452	test_accg_immed 	0x00000022,accg1
453	test_acc_immed 	0x22222222,acc1
454	test_accg_immed 	0x00000033,accg2
455	test_acc_immed 	0x33333333,acc2
456	test_accg_immed 	0x00000044,accg3
457	test_acc_immed 	0x44444444,acc3
458
459	; Negative operands
460	set_fr_iimmed  	0xfffe,0xfffd,fr8		; multiply small numbers
461	set_fr_iimmed  	0xfffd,0xfffe,fr10
462	set_fr_iimmed  	0xffff,0xfffe,fr9		; multiply by -1
463	set_fr_iimmed  	0xfffe,0xffff,fr11
464	cmqmulhs      	fr8,fr10,acc0,cc5,1
465	test_accg_immed 	0x00000011,accg0
466	test_acc_immed 	0x11111111,acc0
467	test_accg_immed 	0x00000022,accg1
468	test_acc_immed 	0x22222222,acc1
469	test_accg_immed 	0x00000033,accg2
470	test_acc_immed 	0x33333333,acc2
471	test_accg_immed 	0x00000044,accg3
472	test_acc_immed 	0x44444444,acc3
473
474	set_fr_iimmed	0x8001,0x8001,fr8	; almost max positive result
475	set_fr_iimmed	0x8001,0x8001,fr10
476	set_fr_iimmed	0x8000,0x8000,fr9	; max positive result
477	set_fr_iimmed	0x8000,0x8000,fr11
478	cmqmulhs      	fr8,fr10,acc0,cc5,1
479	test_accg_immed 	0x00000011,accg0
480	test_acc_immed 	0x11111111,acc0
481	test_accg_immed 	0x00000022,accg1
482	test_acc_immed 	0x22222222,acc1
483	test_accg_immed 	0x00000033,accg2
484	test_acc_immed 	0x33333333,acc2
485	test_accg_immed 	0x00000044,accg3
486	test_acc_immed 	0x44444444,acc3
487
488	; Positive operands
489	set_accg_immed 	0x00000011,accg0
490	set_acc_immed 	0x11111111,acc0
491	set_accg_immed 	0x00000022,accg1
492	set_acc_immed 	0x22222222,acc1
493	set_accg_immed 	0x00000033,accg2
494	set_acc_immed 	0x33333333,acc2
495	set_accg_immed 	0x00000044,accg3
496	set_acc_immed 	0x44444444,acc3
497	set_fr_iimmed  	2,3,fr8		; multiply small numbers
498	set_fr_iimmed  	3,2,fr10
499	set_fr_iimmed  	0,1,fr9		; multiply by 0
500	set_fr_iimmed  	2,0,fr11
501	cmqmulhs      	fr8,fr10,acc0,cc2,1
502	test_accg_immed 	0x00000011,accg0
503	test_acc_immed 	0x11111111,acc0
504	test_accg_immed 	0x00000022,accg1
505	test_acc_immed 	0x22222222,acc1
506	test_accg_immed 	0x00000033,accg2
507	test_acc_immed 	0x33333333,acc2
508	test_accg_immed 	0x00000044,accg3
509	test_acc_immed 	0x44444444,acc3
510
511	set_fr_iimmed  	2,1,fr8		; multiply by 1
512	set_fr_iimmed  	1,2,fr10
513	set_fr_iimmed	0x3fff,2,fr9	; 15 bit result
514	set_fr_iimmed  	2,0x3fff,fr11
515	cmqmulhs      	fr8,fr10,acc0,cc2,0
516	test_accg_immed 	0x00000011,accg0
517	test_acc_immed 	0x11111111,acc0
518	test_accg_immed 	0x00000022,accg1
519	test_acc_immed 	0x22222222,acc1
520	test_accg_immed 	0x00000033,accg2
521	test_acc_immed 	0x33333333,acc2
522	test_accg_immed 	0x00000044,accg3
523	test_acc_immed 	0x44444444,acc3
524
525	set_fr_iimmed	0x4000,2,fr8	; 16 bit result
526	set_fr_iimmed  	2,0x4000,fr10
527	set_fr_iimmed	0x7fff,0x7fff,fr9	; max positive result
528	set_fr_iimmed	0x7fff,0x7fff,fr11
529	cmqmulhs      	fr8,fr10,acc0,cc2,1
530	test_accg_immed 	0x00000011,accg0
531	test_acc_immed 	0x11111111,acc0
532	test_accg_immed 	0x00000022,accg1
533	test_acc_immed 	0x22222222,acc1
534	test_accg_immed 	0x00000033,accg2
535	test_acc_immed 	0x33333333,acc2
536	test_accg_immed 	0x00000044,accg3
537	test_acc_immed 	0x44444444,acc3
538
539	; Mixed operands
540	set_fr_iimmed  	2,0xfffd,fr8		; multiply small numbers
541	set_fr_iimmed  	0xfffd,2,fr10
542	set_fr_iimmed  	0xfffe,1,fr9		; multiply by 1
543	set_fr_iimmed  	1,0xfffe,fr11
544	cmqmulhs      	fr8,fr10,acc0,cc2,0
545	test_accg_immed 	0x00000011,accg0
546	test_acc_immed 	0x11111111,acc0
547	test_accg_immed 	0x00000022,accg1
548	test_acc_immed 	0x22222222,acc1
549	test_accg_immed 	0x00000033,accg2
550	test_acc_immed 	0x33333333,acc2
551	test_accg_immed 	0x00000044,accg3
552	test_acc_immed 	0x44444444,acc3
553
554	set_fr_iimmed  	0xfffe,0,fr8		; multiply by 0
555	set_fr_iimmed  	0,0xfffe,fr10
556	set_fr_iimmed  	0x2001,0xfffe,fr9	; 15 bit result
557	set_fr_iimmed  	0xfffe,0x2001,fr11
558	cmqmulhs      	fr8,fr10,acc0,cc6,1
559	test_accg_immed 	0x00000011,accg0
560	test_acc_immed 	0x11111111,acc0
561	test_accg_immed 	0x00000022,accg1
562	test_acc_immed 	0x22222222,acc1
563	test_accg_immed 	0x00000033,accg2
564	test_acc_immed 	0x33333333,acc2
565	test_accg_immed 	0x00000044,accg3
566	test_acc_immed 	0x44444444,acc3
567
568	set_fr_iimmed	0x4000,0xfffe,fr8	; 16 bit result
569	set_fr_iimmed  	0xfffe,0x4000,fr10
570	set_fr_iimmed	0x7fff,0x8000,fr9	; max negative result
571	set_fr_iimmed	0x8000,0x7fff,fr11
572	cmqmulhs      	fr8,fr10,acc0,cc6,0
573	test_accg_immed 	0x00000011,accg0
574	test_acc_immed 	0x11111111,acc0
575	test_accg_immed 	0x00000022,accg1
576	test_acc_immed 	0x22222222,acc1
577	test_accg_immed 	0x00000033,accg2
578	test_acc_immed 	0x33333333,acc2
579	test_accg_immed 	0x00000044,accg3
580	test_acc_immed 	0x44444444,acc3
581
582	; Negative operands
583	set_fr_iimmed  	0xfffe,0xfffd,fr8		; multiply small numbers
584	set_fr_iimmed  	0xfffd,0xfffe,fr10
585	set_fr_iimmed  	0xffff,0xfffe,fr9		; multiply by -1
586	set_fr_iimmed  	0xfffe,0xffff,fr11
587	cmqmulhs      	fr8,fr10,acc0,cc6,1
588	test_accg_immed 	0x00000011,accg0
589	test_acc_immed 	0x11111111,acc0
590	test_accg_immed 	0x00000022,accg1
591	test_acc_immed 	0x22222222,acc1
592	test_accg_immed 	0x00000033,accg2
593	test_acc_immed 	0x33333333,acc2
594	test_accg_immed 	0x00000044,accg3
595	test_acc_immed 	0x44444444,acc3
596
597	set_fr_iimmed	0x8001,0x8001,fr8	; almost max positive result
598	set_fr_iimmed	0x8001,0x8001,fr10
599	set_fr_iimmed	0x8000,0x8000,fr9	; max positive result
600	set_fr_iimmed	0x8000,0x8000,fr11
601	cmqmulhs      	fr8,fr10,acc0,cc6,0
602	test_accg_immed 	0x00000011,accg0
603	test_acc_immed 	0x11111111,acc0
604	test_accg_immed 	0x00000022,accg1
605	test_acc_immed 	0x22222222,acc1
606	test_accg_immed 	0x00000033,accg2
607	test_acc_immed 	0x33333333,acc2
608	test_accg_immed 	0x00000044,accg3
609	test_acc_immed 	0x44444444,acc3
610;
611	; Positive operands
612	set_accg_immed 	0x00000011,accg0
613	set_acc_immed 	0x11111111,acc0
614	set_accg_immed 	0x00000022,accg1
615	set_acc_immed 	0x22222222,acc1
616	set_accg_immed 	0x00000033,accg2
617	set_acc_immed 	0x33333333,acc2
618	set_accg_immed 	0x00000044,accg3
619	set_acc_immed 	0x44444444,acc3
620	set_fr_iimmed  	2,3,fr8		; multiply small numbers
621	set_fr_iimmed  	3,2,fr10
622	set_fr_iimmed  	0,1,fr9		; multiply by 0
623	set_fr_iimmed  	2,0,fr11
624	cmqmulhs      	fr8,fr10,acc0,cc3,1
625	test_accg_immed 	0x00000011,accg0
626	test_acc_immed 	0x11111111,acc0
627	test_accg_immed 	0x00000022,accg1
628	test_acc_immed 	0x22222222,acc1
629	test_accg_immed 	0x00000033,accg2
630	test_acc_immed 	0x33333333,acc2
631	test_accg_immed 	0x00000044,accg3
632	test_acc_immed 	0x44444444,acc3
633
634	set_fr_iimmed  	2,1,fr8		; multiply by 1
635	set_fr_iimmed  	1,2,fr10
636	set_fr_iimmed	0x3fff,2,fr9	; 15 bit result
637	set_fr_iimmed  	2,0x3fff,fr11
638	cmqmulhs      	fr8,fr10,acc0,cc3,0
639	test_accg_immed 	0x00000011,accg0
640	test_acc_immed 	0x11111111,acc0
641	test_accg_immed 	0x00000022,accg1
642	test_acc_immed 	0x22222222,acc1
643	test_accg_immed 	0x00000033,accg2
644	test_acc_immed 	0x33333333,acc2
645	test_accg_immed 	0x00000044,accg3
646	test_acc_immed 	0x44444444,acc3
647
648	set_fr_iimmed	0x4000,2,fr8	; 16 bit result
649	set_fr_iimmed  	2,0x4000,fr10
650	set_fr_iimmed	0x7fff,0x7fff,fr9	; max positive result
651	set_fr_iimmed	0x7fff,0x7fff,fr11
652	cmqmulhs      	fr8,fr10,acc0,cc3,1
653	test_accg_immed 	0x00000011,accg0
654	test_acc_immed 	0x11111111,acc0
655	test_accg_immed 	0x00000022,accg1
656	test_acc_immed 	0x22222222,acc1
657	test_accg_immed 	0x00000033,accg2
658	test_acc_immed 	0x33333333,acc2
659	test_accg_immed 	0x00000044,accg3
660	test_acc_immed 	0x44444444,acc3
661
662	; Mixed operands
663	set_fr_iimmed  	2,0xfffd,fr8		; multiply small numbers
664	set_fr_iimmed  	0xfffd,2,fr10
665	set_fr_iimmed  	0xfffe,1,fr9		; multiply by 1
666	set_fr_iimmed  	1,0xfffe,fr11
667	cmqmulhs      	fr8,fr10,acc0,cc3,0
668	test_accg_immed 	0x00000011,accg0
669	test_acc_immed 	0x11111111,acc0
670	test_accg_immed 	0x00000022,accg1
671	test_acc_immed 	0x22222222,acc1
672	test_accg_immed 	0x00000033,accg2
673	test_acc_immed 	0x33333333,acc2
674	test_accg_immed 	0x00000044,accg3
675	test_acc_immed 	0x44444444,acc3
676
677	set_fr_iimmed  	0xfffe,0,fr8		; multiply by 0
678	set_fr_iimmed  	0,0xfffe,fr10
679	set_fr_iimmed  	0x2001,0xfffe,fr9	; 15 bit result
680	set_fr_iimmed  	0xfffe,0x2001,fr11
681	cmqmulhs      	fr8,fr10,acc0,cc7,1
682	test_accg_immed 	0x00000011,accg0
683	test_acc_immed 	0x11111111,acc0
684	test_accg_immed 	0x00000022,accg1
685	test_acc_immed 	0x22222222,acc1
686	test_accg_immed 	0x00000033,accg2
687	test_acc_immed 	0x33333333,acc2
688	test_accg_immed 	0x00000044,accg3
689	test_acc_immed 	0x44444444,acc3
690
691	set_fr_iimmed	0x4000,0xfffe,fr8	; 16 bit result
692	set_fr_iimmed  	0xfffe,0x4000,fr10
693	set_fr_iimmed	0x7fff,0x8000,fr9	; max negative result
694	set_fr_iimmed	0x8000,0x7fff,fr11
695	cmqmulhs      	fr8,fr10,acc0,cc7,0
696	test_accg_immed 	0x00000011,accg0
697	test_acc_immed 	0x11111111,acc0
698	test_accg_immed 	0x00000022,accg1
699	test_acc_immed 	0x22222222,acc1
700	test_accg_immed 	0x00000033,accg2
701	test_acc_immed 	0x33333333,acc2
702	test_accg_immed 	0x00000044,accg3
703	test_acc_immed 	0x44444444,acc3
704
705	; Negative operands
706	set_fr_iimmed  	0xfffe,0xfffd,fr8		; multiply small numbers
707	set_fr_iimmed  	0xfffd,0xfffe,fr10
708	set_fr_iimmed  	0xffff,0xfffe,fr9		; multiply by -1
709	set_fr_iimmed  	0xfffe,0xffff,fr11
710	cmqmulhs      	fr8,fr10,acc0,cc7,1
711	test_accg_immed 	0x00000011,accg0
712	test_acc_immed 	0x11111111,acc0
713	test_accg_immed 	0x00000022,accg1
714	test_acc_immed 	0x22222222,acc1
715	test_accg_immed 	0x00000033,accg2
716	test_acc_immed 	0x33333333,acc2
717	test_accg_immed 	0x00000044,accg3
718	test_acc_immed 	0x44444444,acc3
719
720	set_fr_iimmed	0x8001,0x8001,fr8	; almost max positive result
721	set_fr_iimmed	0x8001,0x8001,fr10
722	set_fr_iimmed	0x8000,0x8000,fr9	; max positive result
723	set_fr_iimmed	0x8000,0x8000,fr11
724	cmqmulhs      	fr8,fr10,acc0,cc7,0
725	test_accg_immed 	0x00000011,accg0
726	test_acc_immed 	0x11111111,acc0
727	test_accg_immed 	0x00000022,accg1
728	test_acc_immed 	0x22222222,acc1
729	test_accg_immed 	0x00000033,accg2
730	test_acc_immed 	0x33333333,acc2
731	test_accg_immed 	0x00000044,accg3
732	test_acc_immed 	0x44444444,acc3
733
734	pass
735