1//Original:/testcases/core/c_dsp32mac_dr_a1_i/c_dsp32mac_dr_a1_i.dsp
2// Spec Reference: dsp32mac dr a1 i (signed int)
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9
10A1 = A0 = 0;
11
12// The result accumulated in A , and stored to a reg half
13imm32 r0, 0xa3545abd;
14imm32 r1, 0xbdbcfec7;
15imm32 r2, 0xc1248679;
16imm32 r3, 0xd0069007;
17imm32 r4, 0xefbc4569;
18imm32 r5, 0xcd35500b;
19imm32 r6, 0xe00c800d;
20imm32 r7, 0xf78e900f;
21R0.H = ( A1 = R1.L * R0.L ), A0 = R1.L * R0.L (IS);
22R1 = A1.w;
23R2.H = ( A1 = R2.L * R3.H ), A0 = R2.H * R3.L (IS);
24R3 = A1.w;
25R4.H = ( A1 = R4.H * R5.L ), A0 += R4.H * R5.H (IS);
26R5 = A1.w;
27R6.H = ( A1 = R6.H * R7.H ), A0 += R6.L * R7.H (IS);
28R7 = A1.w;
29CHECKREG r0, 0x80005ABD;
30CHECKREG r1, 0xFF910EEB;
31CHECKREG r2, 0x7FFF8679;
32CHECKREG r3, 0x16C676D6;
33CHECKREG r4, 0x80004569;
34CHECKREG r5, 0xFAEA0D14;
35CHECKREG r6, 0x7FFF800D;
36CHECKREG r7, 0x010DDAA8;
37
38// The result accumulated in A , and stored to a reg half (MNOP)
39imm32 r0, 0x63548abd;
40imm32 r1, 0x7dbcfec7;
41imm32 r2, 0xa1245679;
42imm32 r3, 0xb0069007;
43imm32 r4, 0xcfbc4569;
44imm32 r5, 0xFFFF8000;
45imm32 r6, 0x7FFF800D;
46imm32 r7, 0x00007FFF;
47R0.H = ( A1 = R1.L * R0.L ) (IS);
48R1 = A1.w;
49R2.H = ( A1 += R2.L * R3.H ) (IS);
50R3 = A1.w;
51R4.H = ( A1 = R4.H * R5.L ) (IS);
52R5 = A1.w;
53R6.H = ( A1 = R6.H * R7.H ) (IS);
54R7 = A1.w;
55CHECKREG r0, 0x7FFF8ABD;
56CHECKREG r1, 0x008F5EEB;
57CHECKREG r2, 0x80005679;
58CHECKREG r3, 0xE58B95C1;
59CHECKREG r4, 0x7FFF4569;
60CHECKREG r5, 0x18220000;
61CHECKREG r6, 0x0000800D;
62CHECKREG r7, 0x00000000;
63
64// The result accumulated in A , and stored to a reg half (MNOP)
65imm32 r0, 0x5354babd;
66imm32 r1, 0x6dbcdec7;
67imm32 r2, 0x7124e679;
68imm32 r3, 0x80067007;
69imm32 r4, 0x9fbc4569;
70imm32 r5, 0xa235900b;
71imm32 r6, 0xb00c300d;
72imm32 r7, 0xc78ea00f;
73 R0.H = A1 , A0 = R1.L * R0.L (IS);
74R1 = A1.w;
75 R2.H = A1 , A0 = R2.H * R3.L (IS);
76R3 = A1.w;
77 R4.H = A1 , A0 = R4.H * R5.H (IS);
78R5 = A1.w;
79 R6.H = A1 , A0 += R6.L * R7.H (IS);
80R7 = A1.w;
81CHECKREG r0, 0x0000BABD;
82CHECKREG r1, 0x00000000;
83CHECKREG r2, 0x0000E679;
84CHECKREG r3, 0x00000000;
85CHECKREG r4, 0x00004569;
86CHECKREG r5, 0x00000000;
87CHECKREG r6, 0x0000300D;
88CHECKREG r7, 0x00000000;
89
90// The result accumulated in A , and stored to a reg half
91imm32 r0, 0x33545abd;
92imm32 r1, 0x5dbcfec7;
93imm32 r2, 0x71245679;
94imm32 r3, 0x90060007;
95imm32 r4, 0xafbc4569;
96imm32 r5, 0xd235900b;
97imm32 r6, 0xc00ca00d;
98imm32 r7, 0x678ed00f;
99R0.H = ( A1 = R1.L * R0.L ) (M), A0 += R1.L * R0.L (IS);
100R1 = A1.w;
101R2.H = ( A1 += R2.L * R3.H ) (M), A0 = R2.H * R3.L (IS);
102R3 = A0.w;
103R4.H = ( A1 += R4.H * R5.L ) (M), A0 = R4.H * R5.H (IS);
104R5 = A1.w;
105R6.H = ( A1 = R6.H * R7.H ) (M), A0 += R6.L * R7.H (IS);
106R7 = A0.w;
107CHECKREG r0, 0x80005ABD;
108CHECKREG r1, 0xFF910EEB;
109CHECKREG r2, 0x7FFF5679;
110CHECKREG r3, 0x000317FC;
111CHECKREG r4, 0x7FFF4569;
112CHECKREG r5, 0x030D72D5;
113CHECKREG r6, 0x8000A00D;
114CHECKREG r7, 0xE78B9C22;
115
116// The result accumulated in A1 MM=0, and stored to a reg half (MNOP)
117imm32 r0, 0x83545abd;
118imm32 r1, 0xa8bcfec7;
119imm32 r2, 0xc1845679;
120imm32 r3, 0x1c080007;
121imm32 r4, 0xe1cc8569;
122imm32 r5, 0x921c080b;
123imm32 r6, 0x7901908d;
124imm32 r7, 0x679e9008;
125R0.H = ( A1 += R1.L * R0.L ) (M,IS);
126R1 = A1.w;
127R2.H = ( A1 = R2.L * R3.H ) (M,IS);
128R3 = A1.w;
129R4.H = ( A1 += R4.H * R5.L ) (M,IS);
130R5 = A1.w;
131R6.H = ( A1 = R6.H * R7.H ) (M,IS);
132R7 = A1.w;
133CHECKREG r0, 0x80005ABD;
134CHECKREG r1, 0xE5B26993;
135CHECKREG r2, 0x7FFF5679;
136CHECKREG r3, 0x0977EFC8;
137CHECKREG r4, 0x7FFF8569;
138CHECKREG r5, 0x0885038C;
139CHECKREG r6, 0x7FFF908D;
140CHECKREG r7, 0x30FA159E;
141
142imm32 r0, 0x03545abd;
143imm32 r1, 0x1dbcfec7;
144imm32 r2, 0x21248679;
145imm32 r3, 0x30069007;
146imm32 r4, 0x4fbc4569;
147imm32 r5, 0x5d35500b;
148imm32 r6, 0x600c800d;
149imm32 r7, 0x778e900f;
150R0.H = ( A1 -= R1.L * R0.L ), A0 = R1.L * R0.L (IS);
151R1 = A1.w;
152R2.H = ( A1 = R2.L * R3.H ), A0 -= R2.H * R3.L (IS);
153R3 = A1.w;
154R4.H = ( A1 -= R4.H * R5.L ), A0 += R4.H * R5.H (IS);
155R5 = A1.w;
156R6.H = ( A1 -= R6.H * R7.H ), A0 -= R6.L * R7.H (IS);
157R7 = A1.w;
158CHECKREG r0, 0x7FFF5ABD;
159CHECKREG r1, 0x316906B3;
160CHECKREG r2, 0x80008679;
161CHECKREG r3, 0xE933D6D6;
162CHECKREG r4, 0x80004569;
163CHECKREG r5, 0xD045A9C2;
164CHECKREG r6, 0x8000800D;
165CHECKREG r7, 0xA36ACF1A;
166
167// The result accumulated in A , and stored to a reg half (MNOP)
168imm32 r0, 0x63540abd;
169imm32 r1, 0x7dbc1ec7;
170imm32 r2, 0xa1242679;
171imm32 r3, 0x40063007;
172imm32 r4, 0x1fbc4569;
173imm32 r5, 0x2FFF4000;
174imm32 r6, 0x7FFF800D;
175imm32 r7, 0x10007FFF;
176R0.H = ( A1 -= R1.L * R0.L ) (IS);
177R1 = A1.w;
178R2.H = ( A1 -= R2.L * R3.H ) (IS);
179R3 = A1.w;
180R4.H = ( A1 -= R4.H * R5.L ) (IS);
181R5 = A1.w;
182R6.H = ( A1 -= R6.H * R7.H ) (IS);
183R7 = A1.w;
184CHECKREG r0, 0x80000ABD;
185CHECKREG r1, 0xA220502F;
186CHECKREG r2, 0x80002679;
187CHECKREG r3, 0x98812959;
188CHECKREG r4, 0x80004569;
189CHECKREG r5, 0x90922959;
190CHECKREG r6, 0x8000800D;
191CHECKREG r7, 0x88923959;
192
193// The result accumulated in A , and stored to a reg half (MNOP)
194imm32 r0, 0x2354babd;
195imm32 r1, 0x3dbcdec7;
196imm32 r2, 0x7424e679;
197imm32 r3, 0x80067007;
198imm32 r4, 0x95bc4569;
199imm32 r5, 0xa235900b;
200imm32 r6, 0xb06c300d;
201imm32 r7, 0xc787a00f;
202 R0.H = A1 , A0 -= R1.L * R0.L (IS);
203R1 = A1.w;
204 R2.H = A1 , A0 -= R2.H * R3.L (IS);
205R3 = A1.w;
206 R4.H = A1 , A0 -= R4.H * R5.H (IS);
207R5 = A1.w;
208 R6.H = A1 , A0 -= R6.L * R7.H (IS);
209R7 = A1.w;
210CHECKREG r0, 0x8000BABD;
211CHECKREG r1, 0x88923959;
212CHECKREG r2, 0x8000E679;
213CHECKREG r3, 0x88923959;
214CHECKREG r4, 0x80004569;
215CHECKREG r5, 0x88923959;
216CHECKREG r6, 0x8000300D;
217CHECKREG r7, 0x88923959;
218
219// The result accumulated in A , and stored to a reg half
220imm32 r0, 0x33545abd;
221imm32 r1, 0x5dbcfec7;
222imm32 r2, 0x71245679;
223imm32 r3, 0x90060007;
224imm32 r4, 0xafbc4569;
225imm32 r5, 0xd235900b;
226imm32 r6, 0xc00ca00d;
227imm32 r7, 0x678ed00f;
228R0.H = ( A1 -= R1.L * R0.L ) (M), A0 += R1.L * R0.L (IS);
229R1 = A1.w;
230R2.H = ( A1 -= R2.L * R3.H ) (M), A0 = R2.H * R3.L (IS);
231R3 = A0.w;
232R4.H = ( A1 += R4.H * R5.L ) (M), A0 -= R4.H * R5.H (IS);
233R5 = A1.w;
234R6.H = ( A1 -= R6.H * R7.H ) (M), A0 += R6.L * R7.H (IS);
235R7 = A0.w;
236CHECKREG r0, 0x80005ABD;
237CHECKREG r1, 0x89012A6E;
238CHECKREG r2, 0x80005679;
239CHECKREG r3, 0x000317FC;
240CHECKREG r4, 0x80004569;
241CHECKREG r5, 0x2B3160AC;
242CHECKREG r6, 0x8000A00D;
243CHECKREG r7, 0xCAD78046;
244
245// The result accumulated in A1 MM=0, and stored to a reg half (MNOP)
246imm32 r0, 0x83545abd;
247imm32 r1, 0xa8bcfec7;
248imm32 r2, 0xc1845679;
249imm32 r3, 0x1c080007;
250imm32 r4, 0xe1cc8569;
251imm32 r5, 0x921c080b;
252imm32 r6, 0x7901908d;
253imm32 r7, 0x679e9008;
254R0.H = ( A1 -= R1.L * R0.L ) (M,IS);
255R1 = A1.w;
256R2.H = ( A1 -= R2.L * R3.H ) (M,IS);
257R3 = A1.w;
258R4.H = ( A1 -= R4.H * R5.L ) (M,IS);
259R5 = A1.w;
260R6.H = ( A1 -= R6.H * R7.H ) (M,IS);
261R7 = A1.w;
262CHECKREG r0, 0x80005ABD;
263CHECKREG r1, 0x457EF719;
264CHECKREG r2, 0x80005679;
265CHECKREG r3, 0x3C070751;
266CHECKREG r4, 0x80008569;
267CHECKREG r5, 0x3CF9F38D;
268CHECKREG r6, 0x8000908D;
269CHECKREG r7, 0x0BFFDDEF;
270
271
272
273pass
274