1 //Original:/testcases/core/c_dsp32mac_a1a0_m/c_dsp32mac_a1a0_m.dsp
2 // Spec Reference: dsp32mac a1 a0 m MNOP
5 .include "testutils.inc"
17 // test the MNOP default (signed fraction : left ) rounding U=0 I=0 T=0 w32=1
42 CHECKREG r0, 0x00000000;
43 CHECKREG r1, 0x43658E38;
44 CHECKREG r2, 0x1C607934;
45 CHECKREG r3, 0x43658E38;
46 CHECKREG r4, 0x1C607934;
47 CHECKREG r5, 0xE56C0F50;
48 CHECKREG r6, 0xFA4FA29C;
49 CHECKREG r7, 0xE56C0F50;
71 CHECKREG r0, 0x56CD8212;
72 CHECKREG r1, 0x9A78E46E;
73 CHECKREG r2, 0x56CD8212;
74 CHECKREG r3, 0xBF8410C6;
75 CHECKREG r4, 0xC6DBB86A;
76 CHECKREG r5, 0xBF8410C6;
77 CHECKREG r6, 0xC6DBB86A;
78 CHECKREG r7, 0xE56C0F50;
80 // test MM=1(Mix mode), MAC1 executes a mixed mode multiplication: (one input is
81 // signed, the other input is unsigned
90 A1 += R0.L * R1.L (M), A0 = R0.L * R1.L;
93 A1 = R2.L * R3.L (M), A0 += R2.L * R3.H;
96 A1 += R4.L * R5.L (M), A0 = R4.H * R5.L;
99 A1 = R6.L * R7.L (M), A0 = R6.H * R7.H;
102 CHECKREG r0, 0x45F11C70;
103 CHECKREG r1, 0xBD7172A6;
104 CHECKREG r2, 0xB48EEC5C;
105 CHECKREG r3, 0x4092E4D4;
106 CHECKREG r4, 0xEEB780C0;
107 CHECKREG r5, 0x38B0D5F0;
108 CHECKREG r6, 0x074CB592;
109 CHECKREG r7, 0x12D0AF71;
111 imm32 r0, 0x12245618;
112 imm32 r1, 0x23256719;
113 imm32 r2, 0x3426781a;
114 imm32 r3, 0x45278912;
115 imm32 r4, 0x56289113;
116 imm32 r5, 0x67291214;
117 imm32 r6, 0xa1234517;
118 imm32 r7, 0xc1234517;
119 A1 += R0.L * R1.H (M), A0 = R0.L * R1.L;
122 A1 += R2.L * R3.H (M), A0 = R2.L * R3.H;
125 A1 += R4.L * R5.H (M), A0 = R4.H * R5.L;
128 A1 += R6.L * R7.H (M), A0 += R6.H * R7.H;
131 CHECKREG r0, 0x455820B0;
132 CHECKREG r1, 0x1EA268E9;
133 CHECKREG r2, 0x40E29BEC;
134 CHECKREG r3, 0x3F13B6DF;
135 CHECKREG r4, 0x0C2B1640;
136 CHECKREG r5, 0x126097EA;
137 CHECKREG r6, 0x3AC1EBD2;
138 CHECKREG r7, 0x4680610F;
140 imm32 r0, 0x15245648;
141 imm32 r1, 0x25256749;
142 imm32 r2, 0x3526784a;
143 imm32 r3, 0x45278942;
144 imm32 r4, 0x55389143;
145 imm32 r5, 0x65391244;
146 imm32 r6, 0xa5334547;
147 imm32 r7, 0xc5334547;
148 A1 = R0.H * R1.H (M), A0 = R0.L * R1.L;
151 A1 += R2.H * R3.H (M), A0 += R2.L * R3.H;
154 A1 = R4.H * R5.H (M), A0 = R4.H * R5.L;
157 A1 = R6.H * R7.H (M), A0 = R6.H * R7.H;
160 CHECKREG r0, 0x459F2510;
161 CHECKREG r1, 0x03114234;
162 CHECKREG r2, 0x869BAF9C;
163 CHECKREG r3, 0x116C98FE;
164 CHECKREG r4, 0x0C2925C0;
165 CHECKREG r5, 0x21B21178;
166 CHECKREG r6, 0x29B65052;
167 CHECKREG r7, 0xBA0E2829;
169 imm32 r0, 0x13245628;
170 imm32 r1, 0x23256729;
171 imm32 r2, 0x3326782a;
172 imm32 r3, 0x43278922;
173 imm32 r4, 0x56389123;
174 imm32 r5, 0x67391224;
175 imm32 r6, 0xa1334527;
176 imm32 r7, 0xc1334527;
177 A1 = R0.H * R1.L (M), A0 = R0.L * R1.L;
180 A1 += R2.H * R3.L (M), A0 = R2.L * R3.H;
183 A1 = R4.H * R5.L (M), A0 = R4.H * R5.L;
186 A1 += R6.H * R7.L (M), A0 = R6.H * R7.H;
189 CHECKREG r0, 0x456FC8D0;
190 CHECKREG r1, 0x07B68CC4;
191 CHECKREG r2, 0x3F0A98CC;
192 CHECKREG r3, 0x231CADD0;
193 CHECKREG r4, 0x0C381FC0;
194 CHECKREG r5, 0x061C0FE0;
195 CHECKREG r6, 0x2E832052;
196 CHECKREG r7, 0xEC805DA5;
198 // test the MNOP default (signed fraction : left ) rounding U=0 I=0 T=0 w32=1
199 imm32 r0, 0x123c5678;
200 imm32 r1, 0x2345c789;
201 imm32 r2, 0x34567c9a;
202 imm32 r3, 0x456789c2;
203 imm32 r4, 0xc678912c;
204 imm32 r5, 0x6c891234;
205 imm32 r6, 0xa1c34567;
206 imm32 r7, 0xc12c4567;
211 A1 += R0.L * R1.L (M);
217 A1 = R4.L * R5.H (M);
223 CHECKREG r0, 0x00000000;
224 CHECKREG r1, 0x43658E38;
225 CHECKREG r2, 0x1C607934;
226 CHECKREG r3, 0x43658E38;
227 CHECKREG r4, 0x1C607934;
228 CHECKREG r5, 0xD103408C;
229 CHECKREG r6, 0xFA4FA29C;
230 CHECKREG r7, 0xD103408C;
232 imm32 r0, 0xd2345678;
233 imm32 r1, 0x2d456789;
234 imm32 r2, 0x34d6789a;
235 imm32 r3, 0x456d8912;
236 imm32 r4, 0x5678d123;
237 imm32 r5, 0x67891d34;
238 imm32 r6, 0xa12345d7;
239 imm32 r7, 0xc123456d;
243 A1 = R4.L * R5.H (M);
249 A1 += R0.H * R1.L (M);
252 CHECKREG r0, 0x8FF1C9A8;
253 CHECKREG r1, 0xDA866A8F;
254 CHECKREG r2, 0x8FF1C9A8;
255 CHECKREG r3, 0xED0C00BB;
256 CHECKREG r4, 0xCC8C15CE;
257 CHECKREG r5, 0xED0C00BB;
258 CHECKREG r6, 0xCC8C15CE;
259 CHECKREG r7, 0xD103408C;
261 imm32 r0, 0x123c5678;
262 imm32 r1, 0x2345c789;
263 imm32 r2, 0x34567c9a;
264 imm32 r3, 0x456789c2;
265 imm32 r4, 0xc678912c;
266 imm32 r5, 0x6c891234;
267 imm32 r6, 0xa1c34567;
268 imm32 r7, 0xc12c4567;
273 A1 -= R0.L * R1.L (M);
279 A1 -= R4.L * R5.H (M);
285 CHECKREG r0, 0x00000000;
286 CHECKREG r1, 0xBC9A71C8;
287 CHECKREG r2, 0xE39F86CC;
288 CHECKREG r3, 0xBC9A71C8;
289 CHECKREG r4, 0xE39F86CC;
290 CHECKREG r5, 0xEB97313C;
291 CHECKREG r6, 0x05B05D64;
292 CHECKREG r7, 0xEB97313C;
294 imm32 r0, 0xd2345678;
295 imm32 r1, 0x2d456789;
296 imm32 r2, 0x34d6789a;
297 imm32 r3, 0x456d8912;
298 imm32 r4, 0x5678d123;
299 imm32 r5, 0x67891d34;
300 imm32 r6, 0xa12345d7;
301 imm32 r7, 0xc123456d;
305 A1 -= R4.L * R5.H (M);
311 A1 -= R0.H * R1.L (M);
314 CHECKREG r0, 0xA9327DEE;
315 CHECKREG r1, 0x1110C6AD;
316 CHECKREG r2, 0xA9327DEE;
317 CHECKREG r3, 0xFE8B3081;
318 CHECKREG r4, 0x39244796;
319 CHECKREG r5, 0xFE8B3081;
320 CHECKREG r6, 0x39244796;
321 CHECKREG r7, 0xEB97313C;