1# frv testcase for cmqmulhu $GRi,$GRj,$GRk,$CCi,$cond
2# mach: all
3
4	.include "testutils.inc"
5
6	start
7
8	.global cmqmulhu
9cmqmulhu:
10	set_spr_immed	0x1b1b,cccr
11
12	set_fr_iimmed  	3,2,fr8		; multiply small numbers
13	set_fr_iimmed  	2,3,fr10
14	set_fr_iimmed  	1,2,fr9		; multiply by 1
15	set_fr_iimmed  	2,1,fr11
16	cmqmulhu      	fr8,fr10,acc0,cc0,1
17	test_accg_immed 	0,accg0
18	test_acc_immed 	6,acc0
19	test_accg_immed 	0,accg1
20	test_acc_immed 	6,acc1
21	test_accg_immed 	0,accg2
22	test_acc_immed 	2,acc2
23	test_accg_immed 	0,accg3
24	test_acc_immed 	2,acc3
25
26	set_fr_iimmed  	0,2,fr8		; multiply by 0
27	set_fr_iimmed  	2,0,fr10
28	set_fr_iimmed 	0x3fff,2,fr9	; 15 bit result
29	set_fr_iimmed  	2,0x3fff,fr11
30	cmqmulhu      	fr8,fr10,acc0,cc0,1
31	test_accg_immed 	0,accg0
32	test_acc_immed 	0,acc0
33	test_accg_immed 	0,accg1
34	test_acc_immed 	0,acc1
35	test_accg_immed 	0,accg2
36	test_acc_limmed	0x0000,0x7ffe,acc2
37	test_accg_immed 	0,accg3
38	test_acc_limmed	0x0000,0x7ffe,acc3
39
40	set_fr_iimmed  	0x4000,2,fr8	; 16 bit result
41	set_fr_iimmed  	2,0x4000,fr10
42	set_fr_iimmed  	0x8000,2,fr9	; 17 bit result
43	set_fr_iimmed  	2,0x8000,fr11
44	cmqmulhu      	fr8,fr10,acc0,cc4,1
45	test_accg_immed 	0,accg0
46	test_acc_limmed	0x0000,0x8000,acc0
47	test_accg_immed 	0,accg1
48	test_acc_limmed	0x0000,0x8000,acc1
49	test_accg_immed 	0,accg2
50	test_acc_immed 	0x00010000,acc2
51	test_accg_immed 	0,accg3
52	test_acc_immed 	0x00010000,acc3
53
54	set_fr_iimmed  	0x7fff,0x7fff,fr8	; max positive result
55	set_fr_iimmed  	0x7fff,0x7fff,fr10
56	set_fr_iimmed  	0x8000,0x8000,fr9	; max positive result
57	set_fr_iimmed  	0x8000,0x8000,fr11
58	cmqmulhu      	fr8,fr10,acc0,cc4,1
59	test_accg_immed 	0,accg0
60	test_acc_immed 	0x3fff0001,acc0
61	test_accg_immed 	0,accg1
62	test_acc_immed 	0x3fff0001,acc1
63	test_accg_immed 	0,accg2
64	test_acc_limmed	0x4000,0x0000,acc2
65	test_accg_immed 	0,accg3
66	test_acc_limmed	0x4000,0x0000,acc3
67
68	set_fr_iimmed  	0xffff,0xffff,fr8	; max positive result
69	set_fr_iimmed  	0xffff,0xffff,fr10
70	set_fr_iimmed  	0xffff,0xffff,fr9	; max positive result
71	set_fr_iimmed  	0xffff,0xffff,fr11
72	cmqmulhu      	fr8,fr10,acc0,cc4,1
73	test_accg_immed 	0,accg0
74	test_acc_limmed	0xfffe,0x0001,acc0
75	test_accg_immed 	0,accg1
76	test_acc_limmed	0xfffe,0x0001,acc1
77	test_accg_immed 	0,accg2
78	test_acc_limmed	0xfffe,0x0001,acc2
79	test_accg_immed 	0,accg3
80	test_acc_limmed	0xfffe,0x0001,acc3
81
82	set_fr_iimmed  	3,2,fr8		; multiply small numbers
83	set_fr_iimmed  	2,3,fr10
84	set_fr_iimmed  	1,2,fr9		; multiply by 1
85	set_fr_iimmed  	2,1,fr11
86	cmqmulhu      	fr8,fr10,acc0,cc1,0
87	test_accg_immed 	0,accg0
88	test_acc_immed 	6,acc0
89	test_accg_immed 	0,accg1
90	test_acc_immed 	6,acc1
91	test_accg_immed 	0,accg2
92	test_acc_immed 	2,acc2
93	test_accg_immed 	0,accg3
94	test_acc_immed 	2,acc3
95
96	set_fr_iimmed  	0,2,fr8		; multiply by 0
97	set_fr_iimmed  	2,0,fr10
98	set_fr_iimmed 	0x3fff,2,fr9	; 15 bit result
99	set_fr_iimmed  	2,0x3fff,fr11
100	cmqmulhu      	fr8,fr10,acc0,cc1,0
101	test_accg_immed 	0,accg0
102	test_acc_immed 	0,acc0
103	test_accg_immed 	0,accg1
104	test_acc_immed 	0,acc1
105	test_accg_immed 	0,accg2
106	test_acc_limmed	0x0000,0x7ffe,acc2
107	test_accg_immed 	0,accg3
108	test_acc_limmed	0x0000,0x7ffe,acc3
109
110	set_fr_iimmed  	0x4000,2,fr8	; 16 bit result
111	set_fr_iimmed  	2,0x4000,fr10
112	set_fr_iimmed  	0x8000,2,fr9	; 17 bit result
113	set_fr_iimmed  	2,0x8000,fr11
114	cmqmulhu      	fr8,fr10,acc0,cc5,0
115	test_accg_immed 	0,accg0
116	test_acc_limmed	0x0000,0x8000,acc0
117	test_accg_immed 	0,accg1
118	test_acc_limmed	0x0000,0x8000,acc1
119	test_accg_immed 	0,accg2
120	test_acc_immed 	0x00010000,acc2
121	test_accg_immed 	0,accg3
122	test_acc_immed 	0x00010000,acc3
123
124	set_fr_iimmed  	0x7fff,0x7fff,fr8	; max positive result
125	set_fr_iimmed  	0x7fff,0x7fff,fr10
126	set_fr_iimmed  	0x8000,0x8000,fr9	; max positive result
127	set_fr_iimmed  	0x8000,0x8000,fr11
128	cmqmulhu      	fr8,fr10,acc0,cc5,0
129	test_accg_immed 	0,accg0
130	test_acc_immed 	0x3fff0001,acc0
131	test_accg_immed 	0,accg1
132	test_acc_immed 	0x3fff0001,acc1
133	test_accg_immed 	0,accg2
134	test_acc_limmed	0x4000,0x0000,acc2
135	test_accg_immed 	0,accg3
136	test_acc_limmed	0x4000,0x0000,acc3
137
138	set_fr_iimmed  	0xffff,0xffff,fr8	; max positive result
139	set_fr_iimmed  	0xffff,0xffff,fr10
140	set_fr_iimmed  	0xffff,0xffff,fr9	; max positive result
141	set_fr_iimmed  	0xffff,0xffff,fr11
142	cmqmulhu      	fr8,fr10,acc0,cc5,0
143	test_accg_immed 	0,accg0
144	test_acc_limmed	0xfffe,0x0001,acc0
145	test_accg_immed 	0,accg1
146	test_acc_limmed	0xfffe,0x0001,acc1
147	test_accg_immed 	0,accg2
148	test_acc_limmed	0xfffe,0x0001,acc2
149	test_accg_immed 	0,accg3
150	test_acc_limmed	0xfffe,0x0001,acc3
151
152	set_accg_immed 	0x00000011,accg0
153	set_acc_immed 	0x11111111,acc0
154	set_accg_immed 	0x00000022,accg1
155	set_acc_immed 	0x22222222,acc1
156	set_accg_immed 	0x00000033,accg2
157	set_acc_immed 	0x33333333,acc2
158	set_accg_immed 	0x00000044,accg3
159	set_acc_immed 	0x44444444,acc3
160	set_fr_iimmed  	3,2,fr8		; multiply small numbers
161	set_fr_iimmed  	2,3,fr10
162	set_fr_iimmed  	1,2,fr9		; multiply by 1
163	set_fr_iimmed  	2,1,fr11
164	cmqmulhu      	fr8,fr10,acc0,cc0,0
165	test_accg_immed 	0x00000011,accg0
166	test_acc_immed 	0x11111111,acc0
167	test_accg_immed 	0x00000022,accg1
168	test_acc_immed 	0x22222222,acc1
169	test_accg_immed 	0x00000033,accg2
170	test_acc_immed 	0x33333333,acc2
171	test_accg_immed 	0x00000044,accg3
172	test_acc_immed 	0x44444444,acc3
173
174	set_fr_iimmed  	0,2,fr8		; multiply by 0
175	set_fr_iimmed  	2,0,fr10
176	set_fr_iimmed 	0x3fff,2,fr9	; 15 bit result
177	set_fr_iimmed  	2,0x3fff,fr11
178	cmqmulhu      	fr8,fr10,acc0,cc0,0
179	test_accg_immed 	0x00000011,accg0
180	test_acc_immed 	0x11111111,acc0
181	test_accg_immed 	0x00000022,accg1
182	test_acc_immed 	0x22222222,acc1
183	test_accg_immed 	0x00000033,accg2
184	test_acc_immed 	0x33333333,acc2
185	test_accg_immed 	0x00000044,accg3
186	test_acc_immed 	0x44444444,acc3
187
188	set_fr_iimmed  	0x4000,2,fr8	; 16 bit result
189	set_fr_iimmed  	2,0x4000,fr10
190	set_fr_iimmed  	0x8000,2,fr9	; 17 bit result
191	set_fr_iimmed  	2,0x8000,fr11
192	cmqmulhu      	fr8,fr10,acc0,cc4,0
193	test_accg_immed 	0x00000011,accg0
194	test_acc_immed 	0x11111111,acc0
195	test_accg_immed 	0x00000022,accg1
196	test_acc_immed 	0x22222222,acc1
197	test_accg_immed 	0x00000033,accg2
198	test_acc_immed 	0x33333333,acc2
199	test_accg_immed 	0x00000044,accg3
200	test_acc_immed 	0x44444444,acc3
201
202	set_fr_iimmed  	0x7fff,0x7fff,fr8	; max positive result
203	set_fr_iimmed  	0x7fff,0x7fff,fr10
204	set_fr_iimmed  	0x8000,0x8000,fr9	; max positive result
205	set_fr_iimmed  	0x8000,0x8000,fr11
206	cmqmulhu      	fr8,fr10,acc0,cc4,0
207	test_accg_immed 	0x00000011,accg0
208	test_acc_immed 	0x11111111,acc0
209	test_accg_immed 	0x00000022,accg1
210	test_acc_immed 	0x22222222,acc1
211	test_accg_immed 	0x00000033,accg2
212	test_acc_immed 	0x33333333,acc2
213	test_accg_immed 	0x00000044,accg3
214	test_acc_immed 	0x44444444,acc3
215
216	set_fr_iimmed  	0xffff,0xffff,fr8	; max positive result
217	set_fr_iimmed  	0xffff,0xffff,fr10
218	set_fr_iimmed  	0xffff,0xffff,fr9	; max positive result
219	set_fr_iimmed  	0xffff,0xffff,fr11
220	cmqmulhu      	fr8,fr10,acc0,cc4,0
221	test_accg_immed 	0x00000011,accg0
222	test_acc_immed 	0x11111111,acc0
223	test_accg_immed 	0x00000022,accg1
224	test_acc_immed 	0x22222222,acc1
225	test_accg_immed 	0x00000033,accg2
226	test_acc_immed 	0x33333333,acc2
227	test_accg_immed 	0x00000044,accg3
228	test_acc_immed 	0x44444444,acc3
229
230	set_accg_immed 	0x00000011,accg0
231	set_acc_immed 	0x11111111,acc0
232	set_accg_immed 	0x00000022,accg1
233	set_acc_immed 	0x22222222,acc1
234	set_accg_immed 	0x00000033,accg2
235	set_acc_immed 	0x33333333,acc2
236	set_accg_immed 	0x00000044,accg3
237	set_acc_immed 	0x44444444,acc3
238	set_fr_iimmed  	3,2,fr8		; multiply small numbers
239	set_fr_iimmed  	2,3,fr10
240	set_fr_iimmed  	1,2,fr9		; multiply by 1
241	set_fr_iimmed  	2,1,fr11
242	cmqmulhu      	fr8,fr10,acc0,cc1,1
243	test_accg_immed 	0x00000011,accg0
244	test_acc_immed 	0x11111111,acc0
245	test_accg_immed 	0x00000022,accg1
246	test_acc_immed 	0x22222222,acc1
247	test_accg_immed 	0x00000033,accg2
248	test_acc_immed 	0x33333333,acc2
249	test_accg_immed 	0x00000044,accg3
250	test_acc_immed 	0x44444444,acc3
251
252	set_fr_iimmed  	0,2,fr8		; multiply by 0
253	set_fr_iimmed  	2,0,fr10
254	set_fr_iimmed 	0x3fff,2,fr9	; 15 bit result
255	set_fr_iimmed  	2,0x3fff,fr11
256	cmqmulhu      	fr8,fr10,acc0,cc1,1
257	test_accg_immed 	0x00000011,accg0
258	test_acc_immed 	0x11111111,acc0
259	test_accg_immed 	0x00000022,accg1
260	test_acc_immed 	0x22222222,acc1
261	test_accg_immed 	0x00000033,accg2
262	test_acc_immed 	0x33333333,acc2
263	test_accg_immed 	0x00000044,accg3
264	test_acc_immed 	0x44444444,acc3
265
266	set_fr_iimmed  	0x4000,2,fr8	; 16 bit result
267	set_fr_iimmed  	2,0x4000,fr10
268	set_fr_iimmed  	0x8000,2,fr9	; 17 bit result
269	set_fr_iimmed  	2,0x8000,fr11
270	cmqmulhu      	fr8,fr10,acc0,cc5,1
271	test_accg_immed 	0x00000011,accg0
272	test_acc_immed 	0x11111111,acc0
273	test_accg_immed 	0x00000022,accg1
274	test_acc_immed 	0x22222222,acc1
275	test_accg_immed 	0x00000033,accg2
276	test_acc_immed 	0x33333333,acc2
277	test_accg_immed 	0x00000044,accg3
278	test_acc_immed 	0x44444444,acc3
279
280	set_fr_iimmed  	0x7fff,0x7fff,fr8	; max positive result
281	set_fr_iimmed  	0x7fff,0x7fff,fr10
282	set_fr_iimmed  	0x8000,0x8000,fr9	; max positive result
283	set_fr_iimmed  	0x8000,0x8000,fr11
284	cmqmulhu      	fr8,fr10,acc0,cc5,1
285	test_accg_immed 	0x00000011,accg0
286	test_acc_immed 	0x11111111,acc0
287	test_accg_immed 	0x00000022,accg1
288	test_acc_immed 	0x22222222,acc1
289	test_accg_immed 	0x00000033,accg2
290	test_acc_immed 	0x33333333,acc2
291	test_accg_immed 	0x00000044,accg3
292	test_acc_immed 	0x44444444,acc3
293
294	set_fr_iimmed  	0xffff,0xffff,fr8	; max positive result
295	set_fr_iimmed  	0xffff,0xffff,fr10
296	set_fr_iimmed  	0xffff,0xffff,fr9	; max positive result
297	set_fr_iimmed  	0xffff,0xffff,fr11
298	cmqmulhu      	fr8,fr10,acc0,cc5,1
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_accg_immed 	0x00000011,accg0
309	set_acc_immed 	0x11111111,acc0
310	set_accg_immed 	0x00000022,accg1
311	set_acc_immed 	0x22222222,acc1
312	set_accg_immed 	0x00000033,accg2
313	set_acc_immed 	0x33333333,acc2
314	set_accg_immed 	0x00000044,accg3
315	set_acc_immed 	0x44444444,acc3
316	set_fr_iimmed  	3,2,fr8		; multiply small numbers
317	set_fr_iimmed  	2,3,fr10
318	set_fr_iimmed  	1,2,fr9		; multiply by 1
319	set_fr_iimmed  	2,1,fr11
320	cmqmulhu      	fr8,fr10,acc0,cc2,1
321	test_accg_immed 	0x00000011,accg0
322	test_acc_immed 	0x11111111,acc0
323	test_accg_immed 	0x00000022,accg1
324	test_acc_immed 	0x22222222,acc1
325	test_accg_immed 	0x00000033,accg2
326	test_acc_immed 	0x33333333,acc2
327	test_accg_immed 	0x00000044,accg3
328	test_acc_immed 	0x44444444,acc3
329
330	set_fr_iimmed  	0,2,fr8		; multiply by 0
331	set_fr_iimmed  	2,0,fr10
332	set_fr_iimmed 	0x3fff,2,fr9	; 15 bit result
333	set_fr_iimmed  	2,0x3fff,fr11
334	cmqmulhu      	fr8,fr10,acc0,cc2,0
335	test_accg_immed 	0x00000011,accg0
336	test_acc_immed 	0x11111111,acc0
337	test_accg_immed 	0x00000022,accg1
338	test_acc_immed 	0x22222222,acc1
339	test_accg_immed 	0x00000033,accg2
340	test_acc_immed 	0x33333333,acc2
341	test_accg_immed 	0x00000044,accg3
342	test_acc_immed 	0x44444444,acc3
343
344	set_fr_iimmed  	0x4000,2,fr8	; 16 bit result
345	set_fr_iimmed  	2,0x4000,fr10
346	set_fr_iimmed  	0x8000,2,fr9	; 17 bit result
347	set_fr_iimmed  	2,0x8000,fr11
348	cmqmulhu      	fr8,fr10,acc0,cc6,1
349	test_accg_immed 	0x00000011,accg0
350	test_acc_immed 	0x11111111,acc0
351	test_accg_immed 	0x00000022,accg1
352	test_acc_immed 	0x22222222,acc1
353	test_accg_immed 	0x00000033,accg2
354	test_acc_immed 	0x33333333,acc2
355	test_accg_immed 	0x00000044,accg3
356	test_acc_immed 	0x44444444,acc3
357
358	set_fr_iimmed  	0x7fff,0x7fff,fr8	; max positive result
359	set_fr_iimmed  	0x7fff,0x7fff,fr10
360	set_fr_iimmed  	0x8000,0x8000,fr9	; max positive result
361	set_fr_iimmed  	0x8000,0x8000,fr11
362	cmqmulhu      	fr8,fr10,acc0,cc6,0
363	test_accg_immed 	0x00000011,accg0
364	test_acc_immed 	0x11111111,acc0
365	test_accg_immed 	0x00000022,accg1
366	test_acc_immed 	0x22222222,acc1
367	test_accg_immed 	0x00000033,accg2
368	test_acc_immed 	0x33333333,acc2
369	test_accg_immed 	0x00000044,accg3
370	test_acc_immed 	0x44444444,acc3
371
372	set_fr_iimmed  	0xffff,0xffff,fr8	; max positive result
373	set_fr_iimmed  	0xffff,0xffff,fr10
374	set_fr_iimmed  	0xffff,0xffff,fr9	; max positive result
375	set_fr_iimmed  	0xffff,0xffff,fr11
376	cmqmulhu      	fr8,fr10,acc0,cc6,1
377	test_accg_immed 	0x00000011,accg0
378	test_acc_immed 	0x11111111,acc0
379	test_accg_immed 	0x00000022,accg1
380	test_acc_immed 	0x22222222,acc1
381	test_accg_immed 	0x00000033,accg2
382	test_acc_immed 	0x33333333,acc2
383	test_accg_immed 	0x00000044,accg3
384	test_acc_immed 	0x44444444,acc3
385;
386	set_accg_immed 	0x00000011,accg0
387	set_acc_immed 	0x11111111,acc0
388	set_accg_immed 	0x00000022,accg1
389	set_acc_immed 	0x22222222,acc1
390	set_accg_immed 	0x00000033,accg2
391	set_acc_immed 	0x33333333,acc2
392	set_accg_immed 	0x00000044,accg3
393	set_acc_immed 	0x44444444,acc3
394	set_fr_iimmed  	3,2,fr8		; multiply small numbers
395	set_fr_iimmed  	2,3,fr10
396	set_fr_iimmed  	1,2,fr9		; multiply by 1
397	set_fr_iimmed  	2,1,fr11
398	cmqmulhu      	fr8,fr10,acc0,cc3,1
399	test_accg_immed 	0x00000011,accg0
400	test_acc_immed 	0x11111111,acc0
401	test_accg_immed 	0x00000022,accg1
402	test_acc_immed 	0x22222222,acc1
403	test_accg_immed 	0x00000033,accg2
404	test_acc_immed 	0x33333333,acc2
405	test_accg_immed 	0x00000044,accg3
406	test_acc_immed 	0x44444444,acc3
407
408	set_fr_iimmed  	0,2,fr8		; multiply by 0
409	set_fr_iimmed  	2,0,fr10
410	set_fr_iimmed 	0x3fff,2,fr9	; 15 bit result
411	set_fr_iimmed  	2,0x3fff,fr11
412	cmqmulhu      	fr8,fr10,acc0,cc3,0
413	test_accg_immed 	0x00000011,accg0
414	test_acc_immed 	0x11111111,acc0
415	test_accg_immed 	0x00000022,accg1
416	test_acc_immed 	0x22222222,acc1
417	test_accg_immed 	0x00000033,accg2
418	test_acc_immed 	0x33333333,acc2
419	test_accg_immed 	0x00000044,accg3
420	test_acc_immed 	0x44444444,acc3
421
422	set_fr_iimmed  	0x4000,2,fr8	; 16 bit result
423	set_fr_iimmed  	2,0x4000,fr10
424	set_fr_iimmed  	0x8000,2,fr9	; 17 bit result
425	set_fr_iimmed  	2,0x8000,fr11
426	cmqmulhu      	fr8,fr10,acc0,cc7,1
427	test_accg_immed 	0x00000011,accg0
428	test_acc_immed 	0x11111111,acc0
429	test_accg_immed 	0x00000022,accg1
430	test_acc_immed 	0x22222222,acc1
431	test_accg_immed 	0x00000033,accg2
432	test_acc_immed 	0x33333333,acc2
433	test_accg_immed 	0x00000044,accg3
434	test_acc_immed 	0x44444444,acc3
435
436	set_fr_iimmed  	0x7fff,0x7fff,fr8	; max positive result
437	set_fr_iimmed  	0x7fff,0x7fff,fr10
438	set_fr_iimmed  	0x8000,0x8000,fr9	; max positive result
439	set_fr_iimmed  	0x8000,0x8000,fr11
440	cmqmulhu      	fr8,fr10,acc0,cc7,0
441	test_accg_immed 	0x00000011,accg0
442	test_acc_immed 	0x11111111,acc0
443	test_accg_immed 	0x00000022,accg1
444	test_acc_immed 	0x22222222,acc1
445	test_accg_immed 	0x00000033,accg2
446	test_acc_immed 	0x33333333,acc2
447	test_accg_immed 	0x00000044,accg3
448	test_acc_immed 	0x44444444,acc3
449
450	set_fr_iimmed  	0xffff,0xffff,fr8	; max positive result
451	set_fr_iimmed  	0xffff,0xffff,fr10
452	set_fr_iimmed  	0xffff,0xffff,fr9	; max positive result
453	set_fr_iimmed  	0xffff,0xffff,fr11
454	cmqmulhu      	fr8,fr10,acc0,cc7,1
455	test_accg_immed 	0x00000011,accg0
456	test_acc_immed 	0x11111111,acc0
457	test_accg_immed 	0x00000022,accg1
458	test_acc_immed 	0x22222222,acc1
459	test_accg_immed 	0x00000033,accg2
460	test_acc_immed 	0x33333333,acc2
461	test_accg_immed 	0x00000044,accg3
462	test_acc_immed 	0x44444444,acc3
463
464	pass
465