1# frv testcase for cmqsubhus $FRi,$FRj,$FRj,$CCi,$cond
2# mach: all
3
4	.include "../testutils.inc"
5
6	start
7
8	.global cmqsubhus
9cmqsubhus:
10	set_spr_immed	0x1b1b,cccr
11
12	set_fr_iimmed	0x0000,0x0000,fr10
13	set_fr_iimmed	0xdead,0xbeef,fr11
14	set_fr_iimmed	0x0000,0x0000,fr12
15	set_fr_iimmed	0x0000,0x0000,fr13
16	cmqsubhus	fr10,fr12,fr14,cc0,1
17	test_fr_limmed	0x0000,0x0000,fr14
18	test_fr_limmed	0xdead,0xbeef,fr15
19	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
20	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
21	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
22	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
23
24	set_fr_iimmed	0x1234,0x5678,fr10
25	set_fr_iimmed	0x7ffe,0x7ffe,fr11
26	set_fr_iimmed	0x1111,0x1111,fr12
27	set_fr_iimmed	0x0002,0x0001,fr13
28	cmqsubhus	fr10,fr12,fr14,cc0,1
29	test_fr_limmed	0x0123,0x4567,fr14
30	test_fr_limmed	0x7ffc,0x7ffd,fr15
31	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
32	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
33	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
34	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
35
36	set_spr_immed	0,msr0
37	set_fr_iimmed	0x0001,0x0001,fr10
38	set_fr_iimmed	0x0001,0x0001,fr11
39	set_fr_iimmed	0x0001,0x0002,fr12
40	set_fr_iimmed	0x0002,0x0001,fr13
41	cmqsubhus	fr10,fr12,fr14,cc4,1
42	test_fr_limmed	0x0000,0x0000,fr14
43	test_fr_limmed	0x0000,0x0000,fr15
44	test_spr_bits	0x3c,2,0x6,msr0		; msr0.sie is set
45	test_spr_bits	2,1,1,msr0		; msr0.ovf set
46	test_spr_bits	1,0,1,msr0		; msr0.aovf set
47	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt set
48
49	set_spr_immed	0,msr0
50	set_fr_iimmed	0x0001,0x0001,fr10
51	set_fr_iimmed	0x0002,0x0002,fr11
52	set_fr_iimmed	0x0000,0x0001,fr12
53	set_fr_iimmed	0x0002,0x0003,fr13
54	cmqsubhus.p	fr10,fr10,fr14,cc4,1
55	cmqsubhus	fr10,fr12,fr16,cc4,1
56	test_fr_limmed	0x0000,0x0000,fr14
57	test_fr_limmed	0x0000,0x0000,fr15
58	test_fr_limmed	0x0001,0x0000,fr16
59	test_fr_limmed	0x0000,0x0000,fr17
60	test_spr_bits	0x3c,2,0x1,msr0		; msr0.sie is set
61	test_spr_bits	2,1,1,msr0		; msr0.ovf set
62	test_spr_bits	1,0,1,msr0		; msr0.aovf set
63	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt set
64
65	set_spr_immed	0,msr0
66	set_fr_iimmed	0x0000,0x0000,fr10
67	set_fr_iimmed	0xdead,0xbeef,fr11
68	set_fr_iimmed	0x0000,0x0000,fr12
69	set_fr_iimmed	0x0000,0x0000,fr13
70	cmqsubhus	fr10,fr12,fr14,cc1,0
71	test_fr_limmed	0x0000,0x0000,fr14
72	test_fr_limmed	0xdead,0xbeef,fr15
73	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
74	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
75	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
76	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
77
78	set_fr_iimmed	0x1234,0x5678,fr10
79	set_fr_iimmed	0x7ffe,0x7ffe,fr11
80	set_fr_iimmed	0x1111,0x1111,fr12
81	set_fr_iimmed	0x0002,0x0001,fr13
82	cmqsubhus	fr10,fr12,fr14,cc1,0
83	test_fr_limmed	0x0123,0x4567,fr14
84	test_fr_limmed	0x7ffc,0x7ffd,fr15
85	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
86	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
87	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
88	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
89
90	set_spr_immed	0,msr0
91	set_fr_iimmed	0x0001,0x0001,fr10
92	set_fr_iimmed	0x0001,0x0001,fr11
93	set_fr_iimmed	0x0001,0x0002,fr12
94	set_fr_iimmed	0x0002,0x0001,fr13
95	cmqsubhus	fr10,fr12,fr14,cc5,0
96	test_fr_limmed	0x0000,0x0000,fr14
97	test_fr_limmed	0x0000,0x0000,fr15
98	test_spr_bits	0x3c,2,0x6,msr0		; msr0.sie is set
99	test_spr_bits	2,1,1,msr0		; msr0.ovf set
100	test_spr_bits	1,0,1,msr0		; msr0.aovf set
101	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt set
102
103	set_spr_immed	0,msr0
104	set_fr_iimmed	0x0001,0x0001,fr10
105	set_fr_iimmed	0x0002,0x0002,fr11
106	set_fr_iimmed	0x0000,0x0001,fr12
107	set_fr_iimmed	0x0002,0x0003,fr13
108	cmqsubhus.p	fr10,fr10,fr14,cc5,0
109	cmqsubhus	fr10,fr12,fr16,cc5,0
110	test_fr_limmed	0x0000,0x0000,fr14
111	test_fr_limmed	0x0000,0x0000,fr15
112	test_fr_limmed	0x0001,0x0000,fr16
113	test_fr_limmed	0x0000,0x0000,fr17
114	test_spr_bits	0x3c,2,0x1,msr0		; msr0.sie is set
115	test_spr_bits	2,1,1,msr0		; msr0.ovf set
116	test_spr_bits	1,0,1,msr0		; msr0.aovf set
117	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt set
118
119	set_fr_iimmed	0x1111,0x1111,fr14
120	set_fr_iimmed	0x2222,0x2222,fr15
121	set_spr_immed	0,msr0
122	set_fr_iimmed	0x0000,0x0000,fr10
123	set_fr_iimmed	0xdead,0xbeef,fr11
124	set_fr_iimmed	0x0000,0x0000,fr12
125	set_fr_iimmed	0x0000,0x0000,fr13
126	cmqsubhus	fr10,fr12,fr14,cc0,0
127	test_fr_limmed	0x1111,0x1111,fr14
128	test_fr_limmed	0x2222,0x2222,fr15
129	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
130	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
131	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
132	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
133
134	set_fr_iimmed	0x1234,0x5678,fr10
135	set_fr_iimmed	0x7ffe,0x7ffe,fr11
136	set_fr_iimmed	0x1111,0x1111,fr12
137	set_fr_iimmed	0x0002,0x0001,fr13
138	cmqsubhus	fr10,fr12,fr14,cc0,0
139	test_fr_limmed	0x1111,0x1111,fr14
140	test_fr_limmed	0x2222,0x2222,fr15
141	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
142	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
143	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
144	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
145
146	set_spr_immed	0,msr0
147	set_fr_iimmed	0x0001,0x0001,fr10
148	set_fr_iimmed	0x0001,0x0001,fr11
149	set_fr_iimmed	0x0001,0x0002,fr12
150	set_fr_iimmed	0x0002,0x0001,fr13
151	cmqsubhus	fr10,fr12,fr14,cc4,0
152	test_fr_limmed	0x1111,0x1111,fr14
153	test_fr_limmed	0x2222,0x2222,fr15
154	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
155	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
156	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
157	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
158
159	set_fr_iimmed	0x3333,0x3333,fr16
160	set_fr_iimmed	0x4444,0x4444,fr17
161	set_spr_immed	0,msr0
162	set_fr_iimmed	0x0001,0x0001,fr10
163	set_fr_iimmed	0x0002,0x0002,fr11
164	set_fr_iimmed	0x0000,0x0001,fr12
165	set_fr_iimmed	0x0002,0x0003,fr13
166	cmqsubhus.p	fr10,fr10,fr14,cc4,0
167	cmqsubhus	fr10,fr12,fr16,cc4,0
168	test_fr_limmed	0x1111,0x1111,fr14
169	test_fr_limmed	0x2222,0x2222,fr15
170	test_fr_limmed	0x3333,0x3333,fr16
171	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
172	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
173	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
174	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
175	test_fr_limmed	0x4444,0x4444,fr17
176
177	set_fr_iimmed	0x1111,0x1111,fr14
178	set_fr_iimmed	0x2222,0x2222,fr15
179	set_spr_immed	0,msr0
180	set_fr_iimmed	0x0000,0x0000,fr10
181	set_fr_iimmed	0xdead,0xbeef,fr11
182	set_fr_iimmed	0x0000,0x0000,fr12
183	set_fr_iimmed	0x0000,0x0000,fr13
184	cmqsubhus	fr10,fr12,fr14,cc1,1
185	test_fr_limmed	0x1111,0x1111,fr14
186	test_fr_limmed	0x2222,0x2222,fr15
187	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
188	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
189	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
190	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
191
192	set_fr_iimmed	0x1234,0x5678,fr10
193	set_fr_iimmed	0x7ffe,0x7ffe,fr11
194	set_fr_iimmed	0x1111,0x1111,fr12
195	set_fr_iimmed	0x0002,0x0001,fr13
196	cmqsubhus	fr10,fr12,fr14,cc1,1
197	test_fr_limmed	0x1111,0x1111,fr14
198	test_fr_limmed	0x2222,0x2222,fr15
199	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
200	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
201	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
202	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
203
204	set_spr_immed	0,msr0
205	set_fr_iimmed	0x0001,0x0001,fr10
206	set_fr_iimmed	0x0001,0x0001,fr11
207	set_fr_iimmed	0x0001,0x0002,fr12
208	set_fr_iimmed	0x0002,0x0001,fr13
209	cmqsubhus	fr10,fr12,fr14,cc5,1
210	test_fr_limmed	0x1111,0x1111,fr14
211	test_fr_limmed	0x2222,0x2222,fr15
212	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
213	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
214	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
215	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
216
217	set_fr_iimmed	0x3333,0x3333,fr16
218	set_fr_iimmed	0x4444,0x4444,fr17
219	set_spr_immed	0,msr0
220	set_fr_iimmed	0x0001,0x0001,fr10
221	set_fr_iimmed	0x0002,0x0002,fr11
222	set_fr_iimmed	0x0000,0x0001,fr12
223	set_fr_iimmed	0x0002,0x0003,fr13
224	cmqsubhus.p	fr10,fr10,fr14,cc5,1
225	cmqsubhus	fr10,fr12,fr16,cc5,1
226	test_fr_limmed	0x1111,0x1111,fr14
227	test_fr_limmed	0x2222,0x2222,fr15
228	test_fr_limmed	0x3333,0x3333,fr16
229	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
230	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
231	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
232	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
233	test_fr_limmed	0x4444,0x4444,fr17
234
235	set_fr_iimmed	0x1111,0x1111,fr14
236	set_fr_iimmed	0x2222,0x2222,fr15
237	set_spr_immed	0,msr0
238	set_fr_iimmed	0x0000,0x0000,fr10
239	set_fr_iimmed	0xdead,0xbeef,fr11
240	set_fr_iimmed	0x0000,0x0000,fr12
241	set_fr_iimmed	0x0000,0x0000,fr13
242	cmqsubhus	fr10,fr12,fr14,cc2,1
243	test_fr_limmed	0x1111,0x1111,fr14
244	test_fr_limmed	0x2222,0x2222,fr15
245	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
246	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
247	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
248	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
249
250	set_fr_iimmed	0x1234,0x5678,fr10
251	set_fr_iimmed	0x7ffe,0x7ffe,fr11
252	set_fr_iimmed	0x1111,0x1111,fr12
253	set_fr_iimmed	0x0002,0x0001,fr13
254	cmqsubhus	fr10,fr12,fr14,cc2,0
255	test_fr_limmed	0x1111,0x1111,fr14
256	test_fr_limmed	0x2222,0x2222,fr15
257	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
258	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
259	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
260	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
261
262	set_spr_immed	0,msr0
263	set_fr_iimmed	0x0001,0x0001,fr10
264	set_fr_iimmed	0x0001,0x0001,fr11
265	set_fr_iimmed	0x0001,0x0002,fr12
266	set_fr_iimmed	0x0002,0x0001,fr13
267	cmqsubhus	fr10,fr12,fr14,cc6,1
268	test_fr_limmed	0x1111,0x1111,fr14
269	test_fr_limmed	0x2222,0x2222,fr15
270	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
271	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
272	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
273	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
274
275	set_fr_iimmed	0x3333,0x3333,fr16
276	set_fr_iimmed	0x4444,0x4444,fr17
277	set_spr_immed	0,msr0
278	set_fr_iimmed	0x0001,0x0001,fr10
279	set_fr_iimmed	0x0002,0x0002,fr11
280	set_fr_iimmed	0x0000,0x0001,fr12
281	set_fr_iimmed	0x0002,0x0003,fr13
282	cmqsubhus.p	fr10,fr10,fr14,cc6,0
283	cmqsubhus	fr10,fr12,fr16,cc6,1
284	test_fr_limmed	0x1111,0x1111,fr14
285	test_fr_limmed	0x2222,0x2222,fr15
286	test_fr_limmed	0x3333,0x3333,fr16
287	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
288	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
289	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
290	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
291	test_fr_limmed	0x4444,0x4444,fr17
292;
293	set_fr_iimmed	0x1111,0x1111,fr14
294	set_fr_iimmed	0x2222,0x2222,fr15
295	set_spr_immed	0,msr0
296	set_fr_iimmed	0x0000,0x0000,fr10
297	set_fr_iimmed	0xdead,0xbeef,fr11
298	set_fr_iimmed	0x0000,0x0000,fr12
299	set_fr_iimmed	0x0000,0x0000,fr13
300	cmqsubhus	fr10,fr12,fr14,cc3,1
301	test_fr_limmed	0x1111,0x1111,fr14
302	test_fr_limmed	0x2222,0x2222,fr15
303	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
304	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
305	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
306	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
307
308	set_fr_iimmed	0x1234,0x5678,fr10
309	set_fr_iimmed	0x7ffe,0x7ffe,fr11
310	set_fr_iimmed	0x1111,0x1111,fr12
311	set_fr_iimmed	0x0002,0x0001,fr13
312	cmqsubhus	fr10,fr12,fr14,cc3,0
313	test_fr_limmed	0x1111,0x1111,fr14
314	test_fr_limmed	0x2222,0x2222,fr15
315	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
316	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
317	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
318	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
319
320	set_spr_immed	0,msr0
321	set_fr_iimmed	0x0001,0x0001,fr10
322	set_fr_iimmed	0x0001,0x0001,fr11
323	set_fr_iimmed	0x0001,0x0002,fr12
324	set_fr_iimmed	0x0002,0x0001,fr13
325	cmqsubhus	fr10,fr12,fr14,cc7,1
326	test_fr_limmed	0x1111,0x1111,fr14
327	test_fr_limmed	0x2222,0x2222,fr15
328	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
329	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
330	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
331	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
332
333	set_fr_iimmed	0x3333,0x3333,fr16
334	set_fr_iimmed	0x4444,0x4444,fr17
335	set_spr_immed	0,msr0
336	set_fr_iimmed	0x0001,0x0001,fr10
337	set_fr_iimmed	0x0002,0x0002,fr11
338	set_fr_iimmed	0x0000,0x0001,fr12
339	set_fr_iimmed	0x0002,0x0003,fr13
340	cmqsubhus.p	fr10,fr10,fr14,cc7,0
341	cmqsubhus	fr10,fr12,fr16,cc7,1
342	test_fr_limmed	0x1111,0x1111,fr14
343	test_fr_limmed	0x2222,0x2222,fr15
344	test_fr_limmed	0x3333,0x3333,fr16
345	test_spr_bits	0x3c,2,0,msr0		; msr0.sie is clear
346	test_spr_bits	2,1,0,msr0		; msr0.ovf not set
347	test_spr_bits	1,0,0,msr0		; msr0.aovf not set
348	test_spr_bits	0x7000,12,1,msr0	; msr0.mtt always set
349	test_fr_limmed	0x4444,0x4444,fr17
350
351	pass
352