1//Original:/proj/frio/dv/testcases/core/c_dsp32mac_pair_a1a0_s/c_dsp32mac_pair_a1a0_s.dsp
2// Spec Reference: dsp32mac pair a1a0 S
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8	A1 = A0 = 0;
9
10// The result accumulated in A       , and stored to a reg half
11	imm32 r0, 0x63545abd;
12	imm32 r1, 0x86bcfec7;
13	imm32 r2, 0xa8645679;
14	imm32 r3, 0x00860007;
15	imm32 r4, 0xefb86569;
16	imm32 r5, 0x1235860b;
17	imm32 r6, 0x000c086d;
18	imm32 r7, 0x678e0086;
19	R7 = ( A1 += R1.L * R0.L ),  R6 = ( A0 = R1.L * R0.L )  (S2RND);
20	P1 = A1.w;
21	P2 = A0.w;
22	R1 = ( A1 = R2.L * R3.L ),  R0 = ( A0 = R2.H * R3.L )  (S2RND);
23	P3 = A1.w;
24	P4 = A0.w;
25	R3 = ( A1 = R7.L * R4.L ),  R2 = ( A0 += R7.H * R4.H )  (S2RND);
26	P5 = A1.w;
27	SP = A0.w;
28	R5 = ( A1 += R6.L * R5.L ),  R4 = ( A0 += R6.L * R5.H )  (S2RND);
29	FP = A1.w;
30	CHECKREG r0, 0xFFF66AF0;
31	CHECKREG r1, 0x0009753C;
32	CHECKREG r2, 0x00675E70;
33	CHECKREG r3, 0x5E8D5630;
34	CHECKREG r4, 0x116128E0;
35	CHECKREG r5, 0xECD7B7C0;
36	CHECKREG r6, 0xFE443BAC;
37	CHECKREG r7, 0xFE443BAC;
38	CHECKREG p1, 0xFF221DD6;
39	CHECKREG p2, 0xFF221DD6;
40	CHECKREG p3, 0x0004BA9E;
41	CHECKREG p4, 0xFFFB3578;
42	CHECKREG p5, 0x2F46AB18;
43	CHECKREG sp, 0x0033AF38;
44	CHECKREG fp, 0xF66BDBE0;
45
46	imm32 r0, 0x98764abd;
47	imm32 r1, 0xa1bcf4c7;
48	imm32 r2, 0xa1145649;
49	imm32 r3, 0x00010005;
50	imm32 r4, 0xefbc1569;
51	imm32 r5, 0x1235010b;
52	imm32 r6, 0x000c001d;
53	imm32 r7, 0x678e0001;
54	A0 = R2;
55	A1 = R3;
56	R5 = ( A1 += R1.L * R0.H ),  R4 = ( A0 = R1.L * R0.L )  (S2RND);
57	P1 = A1.w;
58	P2 = A0.w;
59	R1 = ( A1 = R2.L * R3.H ),  R0 = ( A0 = R2.H * R3.L )  (S2RND);
60	P2 = A0.w;
61	P3 = A1.w;
62	P4 = A0.w;
63	R3 = ( A1 = R4.L * R5.H ),  R2 = ( A0 += R4.H * R5.H )  (S2RND);
64	P5 = A1.w;
65	SP = A0.w;
66	R1 = ( A1 += R6.L * R7.H ),  R0 = ( A0 += R6.L * R7.H )  (S2RND);
67	FP = A0.w;
68	CHECKREG r0, 0xFC6F3BF8;
69	CHECKREG r1, 0xFCAF6688;
70	CHECKREG r2, 0xFC404FA0;
71	CHECKREG r3, 0xFC807A30;
72	CHECKREG r4, 0xF2E4F3AC;
73	CHECKREG r5, 0x1229EEF2;
74	CHECKREG r6, 0x000C001D;
75	CHECKREG r7, 0x678E0001;
76	CHECKREG p1, 0x0914F779;
77	CHECKREG p2, 0xFFFC4AC8;
78	CHECKREG p3, 0x0000AC92;
79	CHECKREG p4, 0xFFFC4AC8;
80	CHECKREG p5, 0xFE403D18;
81	CHECKREG sp, 0xFE2027D0;
82	CHECKREG fp, 0xFE379DFC;
83
84	imm32 r0, 0x7136459d;
85	imm32 r1, 0xabd69ec7;
86	imm32 r2, 0x71145679;
87	imm32 r3, 0x08010007;
88	imm32 r4, 0xef9c1569;
89	imm32 r5, 0x1225010b;
90	imm32 r6, 0x0003401d;
91	imm32 r7, 0x678e0561;
92	A0 = R0;
93	A1 = R1;
94	R5 = ( A1 += R1.H * R0.L ),  R4 = ( A0 = R1.L * R0.L )  (S2RND);
95	P1 = A1.w;
96	P2 = A0.w;
97	R7 = ( A1 = R2.H * R3.L ),  R6 = ( A0 = R2.H * R3.L )  (S2RND);
98	P3 = A1.w;
99	P4 = A0.w;
100	R1 = ( A1 = R4.H * R5.L ),  R0 = ( A0 += R4.H * R5.H )  (S2RND);
101	P5 = A1.w;
102	SP = A0.w;
103	R5 = ( A1 += R6.H * R7.L ),  R4 = ( A0 += R6.L * R7.H )  (S2RND);
104	FP = A0.w;
105	CHECKREG r0, 0x7FFFFFFF;
106	CHECKREG r1, 0x00000000;
107	CHECKREG r2, 0x71145679;
108	CHECKREG r3, 0x08010007;
109	CHECKREG r4, 0x7FFFFFFF;
110	CHECKREG r5, 0x0011A900;
111	CHECKREG r6, 0x000C5E30;
112	CHECKREG r7, 0x000C5E30;
113	CHECKREG p1, 0x7E10BF43;
114	CHECKREG p2, 0xCB200616;
115	CHECKREG p3, 0x00062F18;
116	CHECKREG p5, 0x00000000;
117	CHECKREG p4, 0x00062F18;
118	CHECKREG sp, 0x69C62F18;
119	CHECKREG fp, 0x69CF0398;
120
121	imm32 r0, 0x123489bd;
122	imm32 r1, 0x91bcfec7;
123	imm32 r2, 0xa9145679;
124	imm32 r3, 0xd0910007;
125	imm32 r4, 0xedb91569;
126	imm32 r5, 0xd235910b;
127	imm32 r6, 0x0d0c0999;
128	imm32 r7, 0x67de0009;
129	A0 = R0;
130	A1 = R1;
131	R1 = ( A1 += R5.H * R3.H ),  R0 = ( A0 = R5.L * R3.L )  (S2RND);
132	P1 = A1.w;
133	P2 = A0.w;
134	R3 = ( A1 = R2.H * R1.H ),  R2 = ( A0 = R2.H * R1.L )  (S2RND);
135	P3 = A1.w;
136	P4 = A0.w;
137	R5 = ( A1 = R7.H * R0.H ),  R4 = ( A0 += R7.H * R0.H )  (S2RND);
138	P5 = A1.w;
139	SP = A0.w;
140	R7 = ( A1 += R4.H * R6.H ),  R6 = ( A0 += R4.L * R6.H )  (S2RND);
141	FP = A0.w;
142	CHECKREG r0, 0xFFF3DD34;
143	CHECKREG r1, 0x80000000;
144	CHECKREG r2, 0x00000000;
145	CHECKREG r3, 0x7FFFFFFF;
146	CHECKREG r4, 0xFFEAE6E8;
147	CHECKREG r5, 0xFFEAE6E8;
148	CHECKREG r6, 0xFACD5268;
149	CHECKREG r7, 0xFFE66AC8;
150	CHECKREG p1, 0xA2B53ED1;
151	CHECKREG p2, 0xFFF9EE9A;
152	CHECKREG p3, 0x56EC0000;
153	CHECKREG p4, 0x00000000;
154	CHECKREG p5, 0xFFF57374;
155	CHECKREG sp, 0xFFF57374;
156	CHECKREG fp, 0xFD66A934;
157
158	imm32 r0, 0x63545abd;
159	imm32 r1, 0x86bcfec7;
160	imm32 r2, 0xa8645679;
161	imm32 r3, 0x00860007;
162	imm32 r4, 0xefb86569;
163	imm32 r5, 0x1235860b;
164	imm32 r6, 0x000c086d;
165	imm32 r7, 0x678e0086;
166	A0 = R0;
167	A1 = R1;
168	R7 = ( A1 += R1.L * R0.L ) (M),  R6 = ( A0 = R1.L * R0.L )  (S2RND);
169	P1 = A1.w;
170	P2 = A0.w;
171	R1 = ( A1 -= R2.L * R3.L ) (M),  R0 = ( A0 = R2.H * R3.L )  (S2RND);
172	P3 = A1.w;
173	P4 = A0.w;
174	R3 = ( A1 -= R7.L * R4.L ) (M),  R2 = ( A0 += R7.H * R4.H )  (S2RND);
175	P5 = A1.w;
176	SP = A0.w;
177	R5 = ( A1 += R6.L * R5.L ) (M),  R4 = ( A0 += R6.L * R5.H )  (S2RND);
178	FP = A0.w;
179	CHECKREG r0, 0xFFF66AF0;
180	CHECKREG r1, 0x80000000;
181	CHECKREG r2, 0x20866AF0;
182	CHECKREG r3, 0x80000000;
183	CHECKREG r4, 0x31803560;
184	CHECKREG r5, 0x80000000;
185	CHECKREG r6, 0xFE443BAC;
186	CHECKREG r7, 0x80000000;
187	CHECKREG p1, 0x864E0DB2;
188	CHECKREG p2, 0xFF221DD6;
189	CHECKREG p3, 0x864BB063;
190	CHECKREG p4, 0xFFFB3578;
191	CHECKREG p5, 0x864BB063;
192	CHECKREG sp, 0x10433578;
193	CHECKREG fp, 0x18C01AB0;
194
195	imm32 r0, 0x98764abd;
196	imm32 r1, 0xa1bcf4c7;
197	imm32 r2, 0xa1145649;
198	imm32 r3, 0x00010005;
199	imm32 r4, 0xefbc1569;
200	imm32 r5, 0x1235010b;
201	imm32 r6, 0x000c001d;
202	imm32 r7, 0x678e0001;
203	A0 = R0;
204	A1 = R1;
205	R5 = A1,  R4 = ( A0 = R3.L * R0.L )  (S2RND);
206	P1 = A1.w;
207	P2 = A0.w;
208	R1 = A1,  R0 = ( A0 = R2.H * R1.L )  (S2RND);
209	P3 = A1.w;
210	P4 = A0.w;
211	R3 = A1,  R2 = ( A0 += R7.H * R5.H )  (S2RND);
212	P5 = A1.w;
213	SP = A0.w;
214	R1 = A1,  R0 = ( A0 += R4.L * R6.H )  (S2RND);
215	FP = A1.w;
216	CHECKREG r0, 0x80000000;
217	CHECKREG r1, 0x80000000;
218	CHECKREG r2, 0x80000000;
219	CHECKREG r3, 0x80000000;
220	CHECKREG r4, 0x0005D6C4;
221	CHECKREG r5, 0x80000000;
222	CHECKREG r6, 0x000C001D;
223	CHECKREG r7, 0x678E0001;
224	CHECKREG p1, 0xA1BCF4C7;
225	CHECKREG p2, 0x0002EB62;
226	CHECKREG p3, 0xA1BCF4C7;
227	CHECKREG p4, 0x08528D18;
228	CHECKREG p5, 0xA1BCF4C7;
229	CHECKREG sp, 0xA0C48D18;
230	CHECKREG fp, 0xA1BCF4C7;
231
232	imm32 r0, 0x7136459d;
233	imm32 r1, 0xabd69ec7;
234	imm32 r2, 0x71145679;
235	imm32 r3, 0x08010007;
236	imm32 r4, 0xef9c1569;
237	imm32 r5, 0x1225010b;
238	imm32 r6, 0x0003401d;
239	imm32 r7, 0x678e0561;
240	A0 = R0;
241	A1 = R1;
242	R5 = ( A1 += R1.H * R6.L ) (M),  R4 = ( A0 = R1.L * R6.L )  (S2RND);
243	P1 = A1.w;
244	P2 = A0.w;
245	R7 = A1,  R6 = ( A0 -= R4.H * R3.L )  (S2RND);
246	P3 = A1.w;
247	P4 = A0.w;
248	R1 = ( A1 = R2.H * R5.L ) (M),  R0 = ( A0 += R2.H * R5.H )  (S2RND);
249	P5 = A1.w;
250	SP = A0.w;
251	R5 = A1,  R4 = ( A0 += R0.L * R7.H )  (S2RND);
252	FP = A1.w;
253	CHECKREG r0, 0x80000000;
254	CHECKREG r1, 0x00000000;
255	CHECKREG r2, 0x71145679;
256	CHECKREG r3, 0x08010007;
257	CHECKREG r4, 0x80000000;
258	CHECKREG r5, 0x00000000;
259	CHECKREG r6, 0x9EA59954;
260	CHECKREG r7, 0x80000000;
261	CHECKREG p1, 0x96C29605;
262	CHECKREG p2, 0xCF4D7916;
263	CHECKREG p3, 0x96C29605;
264	CHECKREG p4, 0xCF52CCAA;
265	CHECKREG p5, 0x00000000;
266	CHECKREG sp, 0x5E3ECCAA;
267	CHECKREG fp, 0x00000000;
268
269	imm32 r0, 0x123489bd;
270	imm32 r1, 0x91bcfec7;
271	imm32 r2, 0xa9145679;
272	imm32 r3, 0xd0910007;
273	imm32 r4, 0xedb91569;
274	imm32 r5, 0xd235910b;
275	imm32 r6, 0x0d0c0999;
276	imm32 r7, 0x67de0009;
277	A0 = R0;
278	A1 = R1;
279	R1 = A1,  R0 = ( A0 -= R5.L * R3.L )  (S2RND);
280	P1 = A1.w;
281	P2 = A0.w;
282	R3 = ( A1 -= R2.H * R1.H ) (M),  R2 = ( A0 = R2.H * R1.L )  (S2RND);
283	P3 = A1.w;
284	P4 = A0.w;
285	R5 = ( A1 = R7.H * R0.H ) (M),  R4 = ( A0 -= R7.H * R0.H )  (S2RND);
286	P5 = A0.w;
287	SP = A1.w;
288	R7 = A1,  R6 = ( A0 += R4.L * R6.H )  (S2RND);
289	FP = A0.w;
290	CHECKREG r0, 0x24753646;
291	CHECKREG r1, 0x80000000;
292	CHECKREG r2, 0x00000000;
293	CHECKREG r3, 0x80000000;
294	CHECKREG r4, 0xC4D53E28;
295	CHECKREG r5, 0x1D9560EC;
296	CHECKREG r6, 0xD18105A8;
297	CHECKREG r7, 0x1D9560EC;
298	CHECKREG p1, 0x91BCFEC7;
299	CHECKREG p2, 0x123A9B23;
300	CHECKREG p3, 0xBD32FEC7;
301	CHECKREG p4, 0x00000000;
302	CHECKREG p5, 0xE26A9F14;
303	CHECKREG sp, 0x0ECAB076;
304	CHECKREG fp, 0xE8C082D4;
305
306	pass
307