* gas/config/tc-avr.c: Change ISA for devices with USB support to
[external/binutils.git] / sim / testsuite / sim / bfin / c_dsp32mac_a1a0_iuw32.s
1 //Original:/testcases/core/c_dsp32mac_a1a0_iuw32/c_dsp32mac_a1a0_iuw32.dsp
2 // Spec Reference: dsp32mac a1 a0 iuw32 MNOP
3 # mach: bfin
4
5 .include "testutils.inc"
6         start
7
8
9 INIT_R_REGS 0;
10
11 imm32 r0, 0x00000000;
12 A0 = 0;
13 A1 = 0;
14 ASTAT = r0;
15
16
17 // test the (signed integer: no ) I=1
18 imm32 r0, 0x22345628;
19 imm32 r1, 0x23456729;
20 imm32 r2, 0x3456782a;
21 imm32 r3, 0x45678922;
22 imm32 r4, 0x56789123;
23 imm32 r5, 0x67891224;
24 imm32 r6, 0xa1234527;
25 imm32 r7, 0xc1234567;
26 A1 = R0.L * R7.L, A0 = R0.L * R7.L (IS);
27 R0 = A0.w;
28 R7 = A1.w;
29 A1 = R6.L * R1.L, A0 += R6.L * R1.H (IS);
30 R6 = A0.w;
31 R1 = A1.w;
32 A1 += R2.L * R3.L, A0 = R2.H * R3.L (IS);
33 R2 = A0.w;
34 R3 = A1.w;
35 A1 += R5.L * R4.L, A0 += R5.H * R4.H (IS);
36 R5 = A0.w;
37 R4 = A1.w;
38 CHECKREG r0, 0x175B7218;
39 CHECKREG r1, 0x1BDDC43F;
40 CHECKREG r2, 0xE7B2F96C;
41 CHECKREG r3, 0xE41233D3;
42 CHECKREG r4, 0xDC3712BF;
43 CHECKREG r5, 0x0AAB87A4;
44 CHECKREG r6, 0x20E26A9B;
45 CHECKREG r7, 0x175B7218;
46
47 imm32 r0, 0x13335678;
48 imm32 r1, 0x23436789;
49 imm32 r2, 0x3353789a;
50 imm32 r3, 0xa3638912;
51 imm32 r4, 0x53739123;
52 imm32 r5, 0x63831234;
53 imm32 r6, 0xa1234567;
54 imm32 r7, 0xc1234567;
55 A1 = R2.L * R7.H, A0 += R2.L * R7.L (IS);
56 R2 = A0.w;
57 R7 = A1.w;
58 A1 = R6.L * R1.H, A0 += R6.L * R1.H (IS);
59 R6 = A0.w;
60 R1 = A1.w;
61 A1 += R0.L * R5.H, A0 = R0.H * R5.L (IS);
62 R0 = A0.w;
63 R5 = A1.w;
64 A1 += R4.L * R3.H, A0 = R4.H * R3.H (IS);
65 R4 = A0.w;
66 R3 = A1.w;
67 CHECKREG r0, 0x015D7C5C;
68 CHECKREG r1, 0x098F3EF5;
69 CHECKREG r2, 0x2B5D8F9A;
70 CHECKREG r3, 0x53474FE6;
71 CHECKREG r4, 0xE1CF7E79;
72 CHECKREG r5, 0x2B2BE65D;
73 CHECKREG r6, 0x34ECCE8F;
74 CHECKREG r7, 0xE262970E;
75
76 imm32 r0, 0x14345678;
77 imm32 r1, 0x24456789;
78 imm32 r2, 0x3456789a;
79 imm32 r3, 0x44678912;
80 imm32 r4, 0x54789123;
81 imm32 r5, 0x67891244;
82 imm32 r6, 0xa1234547;
83 imm32 r7, 0xc1234547;
84 A1 += R4.H * R0.L, A0 = R4.L * R0.L (IS);
85 R4 = A0.w;
86 R0 = A1.w;
87 A1 = R3.H * R1.L, A0 += R3.L * R1.H (IS);
88 R3 = A0.w;
89 R1 = A1.w;
90 A1 = R2.H * R6.L, A0 = R2.H * R6.L (IS);
91 R2 = A0.w;
92 R6 = A1.w;
93 A1 += R7.H * R5.L, A0 += R7.H * R5.H (IS);
94 R7 = A0.w;
95 R5 = A1.w;
96 CHECKREG r0, 0x6FCF3826;
97 CHECKREG r1, 0x1BAA0C1F;
98 CHECKREG r2, 0x0E29B1DA;
99 CHECKREG r3, 0xC9B44442;
100 CHECKREG r4, 0xDA8DCA68;
101 CHECKREG r5, 0x09AD7526;
102 CHECKREG r6, 0x0E29B1DA;
103 CHECKREG r7, 0xF4BD2295;
104
105 imm32 r0, 0x15345678;
106 imm32 r1, 0x23556789;
107 imm32 r2, 0x3455789a;
108 imm32 r3, 0x45675912;
109 imm32 r4, 0x56789523;
110 imm32 r5, 0x67891234;
111 imm32 r6, 0xa1234557;
112 imm32 r7, 0xc1234565;
113 A1 += R0.H * R1.H, A0 = R0.L * R1.L (IS);
114 R0 = A0.w;
115 R1 = A1.w;
116 A1 = R5.H * R6.H, A0 = R5.L * R6.H (IS);
117 R5 = A0.w;
118 R6 = A1.w;
119 A1 = R4.H * R3.H, A0 += R4.H * R3.L (IS);
120 R4 = A0.w;
121 R3 = A1.w;
122 A1 = R2.H * R7.H, A0 = R2.H * R7.H (IS);
123 R2 = A0.w;
124 R7 = A1.w;
125 CHECKREG r0, 0x22F88E38;
126 CHECKREG r1, 0x0C9A9B6A;
127 CHECKREG r2, 0xF3263C9F;
128 CHECKREG r3, 0x17712248;
129 CHECKREG r4, 0x1756FD8C;
130 CHECKREG r5, 0xF941311C;
131 CHECKREG r6, 0xD9A250BB;
132 CHECKREG r7, 0xF3263C9F;
133
134 // test the (unsigned or integer :no ) U=1
135 imm32 r0, 0x62345678;
136 imm32 r1, 0x26456789;
137 imm32 r2, 0x3466789a;
138 imm32 r3, 0x45668912;
139 imm32 r4, 0x56786123;
140 imm32 r5, 0x67891634;
141 imm32 r6, 0xa1234567;
142 imm32 r7, 0xc1234566;
143 A1 = R0.L * R2.L, A0 = R0.L * R2.L (FU);
144 R0 = A0.w;
145 R2 = A1.w;
146 A1 = R1.L * R3.L, A0 += R1.L * R3.H (FU);
147 R1 = A0.w;
148 R3 = A1.w;
149 A1 += R4.L * R6.L, A0 = R4.H * R6.L (FU);
150 R4 = A0.w;
151 R6 = A1.w;
152 A1 += R5.L * R7.L, A0 += R5.H * R7.H (FU);
153 R5 = A0.w;
154 R7 = A1.w;
155 CHECKREG r0, 0x28BC4430;
156 CHECKREG r1, 0x44CD71C6;
157 CHECKREG r2, 0x28BC4430;
158 CHECKREG r3, 0x376F98A2;
159 CHECKREG r4, 0x17712248;
160 CHECKREG r5, 0x658D9303;
161 CHECKREG r6, 0x51C51CB7;
162 CHECKREG r7, 0x57C9F96F;
163
164 imm32 r0, 0x12345678;
165 imm32 r1, 0x73456789;
166 imm32 r2, 0x8456789a;
167 imm32 r3, 0x49998912;
168 imm32 r4, 0x56782123;
169 imm32 r5, 0x67891234;
170 imm32 r6, 0xa1234577;
171 imm32 r7, 0xc1234567;
172 A1 = R2.L * R3.H, A0 = R2.L * R3.L (FU);
173 R2 = A0.w;
174 R3 = A1.w;
175 A1 = R0.L * R1.H, A0 = R0.L * R1.H (FU);
176 R0 = A0.w;
177 R1 = A1.w;
178 A1 += R4.L * R5.H, A0 = R4.H * R5.L (FU);
179 R4 = A0.w;
180 R5 = A1.w;
181 A1 = R7.L * R6.H, A0 += R7.H * R6.H (FU);
182 R6 = A0.w;
183 R7 = A1.w;
184 CHECKREG r0, 0x26EF3658;
185 CHECKREG r1, 0x26EF3658;
186 CHECKREG r2, 0x4092E4D4;
187 CHECKREG r3, 0x22ABFE0A;
188 CHECKREG r4, 0x06260060;
189 CHECKREG r5, 0x34560713;
190 CHECKREG r6, 0x7FB76B29;
191 CHECKREG r7, 0x2BAF4415;
192
193 imm32 r0, 0x1234567a;
194 imm32 r1, 0x2345678a;
195 imm32 r2, 0x3456a89a;
196 imm32 r3, 0x4a678912;
197 imm32 r4, 0xa6789123;
198 imm32 r5, 0xc7891234;
199 imm32 r6, 0xa1234567;
200 imm32 r7, 0xc1234567;
201 A1 = R5.H * R4.L, A0 = R5.L * R4.L (FU);
202 R4 = A0.w;
203 R5 = A1.w;
204 A1 = R3.H * R2.L, A0 = R3.L * R2.H (FU);
205 R2 = A0.w;
206 R3 = A1.w;
207 A1 = R1.H * R0.L, A0 = R1.H * R0.L (FU);
208 R0 = A0.w;
209 R1 = A1.w;
210 A1 = R7.H * R6.L, A0 = R7.H * R6.H (FU);
211 R6 = A0.w;
212 R7 = A1.w;
213 CHECKREG r0, 0x0BE9FCE2;
214 CHECKREG r1, 0x0BE9FCE2;
215 CHECKREG r2, 0x1C05B40C;
216 CHECKREG r3, 0x310059F6;
217 CHECKREG r4, 0x0A51F11C;
218 CHECKREG r5, 0x711FE0BB;
219 CHECKREG r6, 0x79916AC9;
220 CHECKREG r7, 0x345C2415;
221
222 imm32 r0, 0xb2345678;
223 imm32 r1, 0x2b456789;
224 imm32 r2, 0x34b6789a;
225 imm32 r3, 0xc56b8912;
226 imm32 r4, 0x5c78b123;
227 imm32 r5, 0x67c91b34;
228 imm32 r6, 0xa12345b7;
229 imm32 r7, 0xc123456b;
230 A1 = R6.H * R7.H, A0 = R6.L * R7.L (FU);
231 R6 = A0.w;
232 R7 = A1.w;
233 A1 = R5.H * R4.H, A0 = R5.L * R4.H (FU);
234 R4 = A0.w;
235 R5 = A1.w;
236 A1 = R2.H * R3.H, A0 = R2.H * R3.L (FU);
237 R2 = A0.w;
238 R3 = A1.w;
239 A1 = R0.H * R1.H, A0 = R0.H * R1.H (FU);
240 R0 = A0.w;
241 R1 = A1.w;
242 CHECKREG r0, 0x1E1EC404;
243 CHECKREG r1, 0x1E1EC404;
244 CHECKREG r2, 0x1C391ACC;
245 CHECKREG r3, 0x28A61612;
246 CHECKREG r4, 0x09D37060;
247 CHECKREG r5, 0x257CE238;
248 CHECKREG r6, 0x12E7767D;
249 CHECKREG r7, 0x79916AC9;
250
251 // Test w32
252 imm32 r0, 0x123df178;
253 imm32 r1, 0x2245e189;
254 imm32 r2, 0x3256719a;
255 imm32 r3, 0x42678112;
256 imm32 r4, 0xa2789123;
257 imm32 r5, 0x62891134;
258 imm32 r6, 0xa2b34167;
259 imm32 r7, 0xc22d4167;
260 A1 = R0.L * R4.L, A0 += R0.L * R4.L (W32);
261 R0 = A0.w;
262 R4 = A1.w;
263 A1 = R1.L * R5.L, A0 += R1.L * R5.H (W32);
264 R1 = A0.w;
265 R5 = A1.w;
266 A1 = R2.L * R6.L, A0 += R2.H * R6.L (W32);
267 R2 = A0.w;
268 R6 = A1.w;
269 A1 = R3.L * R4.L, A0 += R3.H * R4.H (W32);
270 R3 = A0.w;
271 R4 = A1.w;
272 CHECKREG r0, 0x2AB4BAD4;
273 CHECKREG r1, 0x13410376;
274 CHECKREG r2, 0x2CF930AA;
275 CHECKREG r3, 0x33802490;
276 CHECKREG r4, 0x091C5540;
277 CHECKREG r5, 0xFBE7D1A8;
278 CHECKREG r6, 0x3A0B9DEC;
279 CHECKREG r7, 0xC22D4167;
280
281 imm32 r0, 0x553df344;
282 imm32 r1, 0x2525e349;
283 imm32 r2, 0x3252734a;
284 imm32 r3, 0x42658342;
285 imm32 r4, 0xa5789343;
286 imm32 r5, 0x63591344;
287 imm32 r6, 0xa3b54347;
288 imm32 r7, 0xc32d4347;
289 A1 += R0.L * R4.H, A0 = R0.L * R4.L (W32);
290 R0 = A0.w;
291 R4 = A1.w;
292 A1 += R1.L * R5.H, A0 = R1.L * R5.H (W32);
293 R1 = A0.w;
294 R5 = A1.w;
295 A1 += R2.L * R6.H, A0 = R2.H * R6.L (W32);
296 R2 = A0.w;
297 R6 = A1.w;
298 A1 += R3.L * R4.H, A0 = R3.H * R4.H (W32);
299 R3 = A0.w;
300 R4 = A1.w;
301 CHECKREG r0, 0x0AD16D98;
302 CHECKREG r1, 0xE9B67EC2;
303 CHECKREG r2, 0x1A72D57C;
304 CHECKREG r3, 0x0965C3AC;
305 CHECKREG r4, 0x970BD9DE;
306 CHECKREG r5, 0xFBD48BC2;
307 CHECKREG r6, 0xA8B3CE66;
308 CHECKREG r7, 0xC32D4347;
309
310 imm32 r0, 0x163df678;
311 imm32 r1, 0x2625e689;
312 imm32 r2, 0x3652769a;
313 imm32 r3, 0x46628612;
314 imm32 r4, 0xa6789623;
315 imm32 r5, 0x63691634;
316 imm32 r6, 0xa3634367;
317 imm32 r7, 0xc3264667;
318 A1 += R0.H * R4.L, A0 = R0.L * R4.L (W32);
319 R0 = A0.w;
320 R4 = A1.w;
321 A1 = R1.H * R5.L, A0 += R1.L * R5.H (W32);
322 R1 = A0.w;
323 R5 = A1.w;
324 A1 += R2.H * R6.L, A0 = R2.H * R6.L (W32);
325 R2 = A0.w;
326 R6 = A1.w;
327 A1 += R3.H * R4.L, A0 += R3.H * R4.H (W32);
328 R3 = A0.w;
329 R4 = A1.w;
330 CHECKREG r0, 0x07E204D0;
331 CHECKREG r1, 0xF41B1732;
332 CHECKREG r2, 0x1C9AA1FC;
333 CHECKREG r3, 0xD8C785D8;
334 CHECKREG r4, 0x5DCEA034;
335 CHECKREG r5, 0x069DDB08;
336 CHECKREG r6, 0x23387D04;
337 CHECKREG r7, 0xC3264667;
338
339 imm32 r0, 0x123df378;
340 imm32 r1, 0x2225e389;
341 imm32 r2, 0x3252739a;
342 imm32 r3, 0x42628312;
343 imm32 r4, 0xa3789323;
344 imm32 r5, 0x63891334;
345 imm32 r6, 0xa3b34367;
346 imm32 r7, 0xc32d4367;
347 A1 += R0.H * R4.H, A0 = R0.L * R4.L (W32);
348 R0 = A0.w;
349 R4 = A1.w;
350 A1 = R1.H * R5.H, A0 = R1.L * R5.H (W32);
351 R1 = A0.w;
352 R5 = A1.w;
353 A1 += R2.H * R6.H, A0 = R2.H * R6.L (W32);
354 R2 = A0.w;
355 R6 = A1.w;
356 A1 = R3.H * R4.H, A0 = R3.H * R4.H (W32);
357 R3 = A0.w;
358 R4 = A1.w;
359 CHECKREG r0, 0x0AA862D0;
360 CHECKREG r1, 0xE9DD7EA2;
361 CHECKREG r2, 0x1A7F69FC;
362 CHECKREG r3, 0x29CFB5BC;
363 CHECKREG r4, 0x29CFB5BC;
364 CHECKREG r5, 0x1A8D299A;
365 CHECKREG r6, 0xF643F446;
366 CHECKREG r7, 0xC32D4367;
367
368 imm32 r0, 0x123df678;
369 imm32 r1, 0x2345e789;
370 imm32 r2, 0x34567b9a;
371 imm32 r3, 0x45678c12;
372 imm32 r4, 0xa6789123;
373 imm32 r5, 0x6c891234;
374 imm32 r6, 0xa1b34567;
375 imm32 r7, 0xc12d4567;
376 A1 = R0.H * R4.L, A0 = R0.H * R4.L (W32);
377 R0 = A0.w;
378 R4 = A1.w;
379 A1 = R1.H * R5.L, A0 = R1.H * R5.H (W32);
380 R1 = A0.w;
381 R5 = A1.w;
382 A1 = R2.H * R6.H, A0 = R2.L * R6.L (W32);
383 R2 = A0.w;
384 R6 = A1.w;
385 A1 = R3.H * R4.H, A0 = R3.L * R4.H (W32);
386 R3 = A0.w;
387 R4 = A1.w;
388 CHECKREG r0, 0xF03416AE;
389 CHECKREG r1, 0x1DE7F7DA;
390 CHECKREG r2, 0x430479EC;
391 CHECKREG r3, 0x0E4EA750;
392 CHECKREG r4, 0xF76F51D8;
393 CHECKREG r5, 0x05040808;
394 CHECKREG r6, 0xD9715C44;
395 CHECKREG r7, 0xC12D4567;
396
397 // MNOP & w32
398 imm32 r0, 0x623df17a;
399 imm32 r1, 0x7245e18b;
400 imm32 r2, 0x8256719a;
401 imm32 r3, 0x92678112;
402 imm32 r4, 0xa2789123;
403 imm32 r5, 0xb2891134;
404 imm32 r6, 0xc2b34167;
405 imm32 r7, 0xd22d4167;
406 A0 += R0.L * R4.L (W32);
407 R0 = A0.w;
408 R4 = A1.w;
409 A0 = R1.L * R5.H (W32);
410 R1 = A0.w;
411 R5 = A1.w;
412 A0 += R2.H * R6.L (W32);
413 R2 = A0.w;
414 R6 = A1.w;
415 A0 = R3.H * R7.H (W32);
416 R3 = A0.w;
417 R7 = A1.w;
418 CHECKREG r0, 0x1AE2E2AC;
419 CHECKREG r1, 0x126EB2C6;
420 CHECKREG r2, 0xD2393FFA;
421 CHECKREG r3, 0x273C7436;
422 CHECKREG r4, 0xF76F51D8;
423 CHECKREG r5, 0xF76F51D8;
424 CHECKREG r6, 0xF76F51D8;
425 CHECKREG r7, 0xF76F51D8;
426
427 imm32 r0, 0xa23df17a;
428 imm32 r1, 0x7b45e18b;
429 imm32 r2, 0x82c6719a;
430 imm32 r3, 0x126d8112;
431 imm32 r4, 0xc278e123;
432 imm32 r5, 0xb2491f34;
433 imm32 r6, 0x89b54167;
434 imm32 r7, 0xd25d6767;
435 A1 += R0.L * R4.L (W32);
436 R0 = A0.w;
437 R4 = A1.w;
438 A1 = R1.L * R5.H (W32);
439 R1 = A0.w;
440 R5 = A1.w;
441 A1 += R2.H * R6.L (W32);
442 R2 = A0.w;
443 R6 = A1.w;
444 A1 = R3.H * R7.H (W32);
445 R3 = A0.w;
446 R7 = A1.w;
447 CHECKREG r0, 0x273C7436;
448 CHECKREG r1, 0x273C7436;
449 CHECKREG r2, 0x273C7436;
450 CHECKREG r3, 0x273C7436;
451 CHECKREG r4, 0xFAEFCD34;
452 CHECKREG r5, 0x127DED46;
453 CHECKREG r6, 0xD281B49A;
454 CHECKREG r7, 0xF96E3732;
455
456 // test MM=1(Mix mode), MAC1 executes a mixed mode multiplication: (one input is
457 // signed, the other input is unsigned
458 imm32 r0, 0x22345628;
459 imm32 r1, 0x23456729;
460 imm32 r2, 0x3456782a;
461 imm32 r3, 0x45678922;
462 imm32 r4, 0x56789123;
463 imm32 r5, 0x67891224;
464 imm32 r6, 0xa1234527;
465 imm32 r7, 0xc1234567;
466 A1 += R0.L * R7.L (M), A0 = R0.L * R7.L (IS);
467 R0 = A0.w;
468 R7 = A1.w;
469 A1 = R6.L * R1.L (M), A0 += R6.L * R1.H (IS);
470 R6 = A0.w;
471 R1 = A1.w;
472 A1 = R2.L * R3.L (M), A0 = R2.H * R3.L (IS);
473 R2 = A0.w;
474 R3 = A1.w;
475 A1 += R5.L * R4.L (M), A0 += R5.H * R4.H (IS);
476 R5 = A0.w;
477 R4 = A1.w;
478 CHECKREG r0, 0x175B7218;
479 CHECKREG r1, 0x1BDDC43F;
480 CHECKREG r2, 0xE7B2F96C;
481 CHECKREG r3, 0x405E6F94;
482 CHECKREG r4, 0x4AA74E80;
483 CHECKREG r5, 0x0AAB87A4;
484 CHECKREG r6, 0x20E26A9B;
485 CHECKREG r7, 0x10C9A94A;
486
487 imm32 r0, 0x13335678;
488 imm32 r1, 0x23436789;
489 imm32 r2, 0x3353789a;
490 imm32 r3, 0xa3638912;
491 imm32 r4, 0x53739123;
492 imm32 r5, 0x63831234;
493 imm32 r6, 0xa1234567;
494 imm32 r7, 0xc1234567;
495 A1 += R2.L * R7.H (M), A0 = R2.L * R7.L (IS);
496 R2 = A0.w;
497 R7 = A1.w;
498 A1 = R6.L * R1.H (M), A0 = R6.L * R1.H (IS);
499 R6 = A0.w;
500 R1 = A1.w;
501 A1 += R0.L * R5.H (M), A0 = R0.H * R5.L (IS);
502 R0 = A0.w;
503 R5 = A1.w;
504 A1 = R4.L * R3.H (M), A0 += R4.H * R3.H (IS);
505 R4 = A0.w;
506 R3 = A1.w;
507 CHECKREG r0, 0x015D7C5C;
508 CHECKREG r1, 0x098F3EF5;
509 CHECKREG r2, 0x20B207F6;
510 CHECKREG r3, 0xB93E6989;
511 CHECKREG r4, 0xE32CFAD5;
512 CHECKREG r5, 0x2B2BE65D;
513 CHECKREG r6, 0x098F3EF5;
514 CHECKREG r7, 0xA5A3E58E;
515
516 imm32 r0, 0x14345678;
517 imm32 r1, 0x24456789;
518 imm32 r2, 0x3456789a;
519 imm32 r3, 0x44678912;
520 imm32 r4, 0x54789123;
521 imm32 r5, 0x67891244;
522 imm32 r6, 0xa1234547;
523 imm32 r7, 0xc1234547;
524 A1 = R4.H * R0.L (M), A0 = R4.L * R0.L (IS);
525 R4 = A0.w;
526 R0 = A1.w;
527 A1 = R3.H * R1.L (M), A0 = R3.L * R1.H (IS);
528 R3 = A0.w;
529 R1 = A1.w;
530 A1 = R2.H * R6.L (M), A0 = R2.H * R6.L (IS);
531 R2 = A0.w;
532 R6 = A1.w;
533 A1 = R7.H * R5.L (M), A0 = R7.H * R5.H (IS);
534 R7 = A0.w;
535 R5 = A1.w;
536 CHECKREG r0, 0x1C87E840;
537 CHECKREG r1, 0x1BAA0C1F;
538 CHECKREG r2, 0x0E29B1DA;
539 CHECKREG r3, 0xEF2679DA;
540 CHECKREG r4, 0xDA8DCA68;
541 CHECKREG r5, 0xFB83C34C;
542 CHECKREG r6, 0x0E29B1DA;
543 CHECKREG r7, 0xE69370BB;
544
545 imm32 r0, 0x15345678;
546 imm32 r1, 0x23556789;
547 imm32 r2, 0x3455789a;
548 imm32 r3, 0x45675912;
549 imm32 r4, 0x56789523;
550 imm32 r5, 0x67891234;
551 imm32 r6, 0xa1234557;
552 imm32 r7, 0xc1234565;
553 A1 = R0.H * R1.H (M), A0 = R0.L * R1.L (IS);
554 R0 = A0.w;
555 R1 = A1.w;
556 A1 = R5.H * R6.H (M), A0 = R5.L * R6.H (IS);
557 R5 = A0.w;
558 R6 = A1.w;
559 A1 += R4.H * R3.H (M), A0 = R4.H * R3.L (IS);
560 R4 = A0.w;
561 R3 = A1.w;
562 A1 += R2.H * R7.H (M), A0 = R2.H * R7.H (IS);
563 R2 = A0.w;
564 R7 = A1.w;
565 CHECKREG r0, 0x22F88E38;
566 CHECKREG r1, 0x02ED2644;
567 CHECKREG r2, 0xF3263C9F;
568 CHECKREG r3, 0x589C7303;
569 CHECKREG r4, 0x1E15CC70;
570 CHECKREG r5, 0xF941311C;
571 CHECKREG r6, 0x412B50BB;
572 CHECKREG r7, 0x8017AFA2;
573
574 // test the (unsigned or integer :no ) U=1
575 imm32 r0, 0x62345678;
576 imm32 r1, 0x26456789;
577 imm32 r2, 0x3466789a;
578 imm32 r3, 0x45668912;
579 imm32 r4, 0x56786123;
580 imm32 r5, 0x67891634;
581 imm32 r6, 0xa1234567;
582 imm32 r7, 0xc1234566;
583 A1 = R0.L * R2.L (M), A0 = R0.L * R2.L (FU);
584 R0 = A0.w;
585 R2 = A1.w;
586 A1 += R1.L * R3.L (M), A0 = R1.L * R3.H (FU);
587 R1 = A0.w;
588 R3 = A1.w;
589 A1 = R4.L * R6.L (M), A0 = R4.H * R6.L (FU);
590 R4 = A0.w;
591 R6 = A1.w;
592 A1 += R5.L * R7.L (M), A0 = R5.H * R7.H (FU);
593 R5 = A0.w;
594 R7 = A1.w;
595 CHECKREG r0, 0x28BC4430;
596 CHECKREG r1, 0x1C112D96;
597 CHECKREG r2, 0x28BC4430;
598 CHECKREG r3, 0x602BDCD2;
599 CHECKREG r4, 0x17712248;
600 CHECKREG r5, 0x4E1C70BB;
601 CHECKREG r6, 0x1A558415;
602 CHECKREG r7, 0x205A60CD;
603
604 imm32 r0, 0x12345678;
605 imm32 r1, 0x73456789;
606 imm32 r2, 0x8456789a;
607 imm32 r3, 0x49998912;
608 imm32 r4, 0x56782123;
609 imm32 r5, 0x67891234;
610 imm32 r6, 0xa1234577;
611 imm32 r7, 0xc1234567;
612 A1 = R2.L * R3.H (M), A0 = R2.L * R3.L (FU);
613 R2 = A0.w;
614 R3 = A1.w;
615 A1 = R0.L * R1.H (M), A0 = R0.L * R1.H (FU);
616 R0 = A0.w;
617 R1 = A1.w;
618 A1 = R4.L * R5.H (M), A0 = R4.H * R5.L (FU);
619 R4 = A0.w;
620 R5 = A1.w;
621 A1 = R7.L * R6.H (M), A0 = R7.H * R6.H (FU);
622 R6 = A0.w;
623 R7 = A1.w;
624 CHECKREG r0, 0x26EF3658;
625 CHECKREG r1, 0x26EF3658;
626 CHECKREG r2, 0x4092E4D4;
627 CHECKREG r3, 0x22ABFE0A;
628 CHECKREG r4, 0x06260060;
629 CHECKREG r5, 0x0D66D0BB;
630 CHECKREG r6, 0x79916AC9;
631 CHECKREG r7, 0x2BAF4415;
632
633 imm32 r0, 0x1234567a;
634 imm32 r1, 0x2345678a;
635 imm32 r2, 0x3456a89a;
636 imm32 r3, 0x4a678912;
637 imm32 r4, 0xa6789123;
638 imm32 r5, 0xc7891234;
639 imm32 r6, 0xa1234567;
640 imm32 r7, 0xc1234567;
641 A1 = R5.H * R4.L (M), A0 += R5.L * R4.L (FU);
642 R4 = A0.w;
643 R5 = A1.w;
644 A1 = R3.H * R2.L (M), A0 = R3.L * R2.H (FU);
645 R2 = A0.w;
646 R3 = A1.w;
647 A1 = R1.H * R0.L (M), A0 += R1.H * R0.L (FU);
648 R0 = A0.w;
649 R1 = A1.w;
650 A1 = R7.H * R6.L (M), A0 = R7.H * R6.H (FU);
651 R6 = A0.w;
652 R7 = A1.w;
653 CHECKREG r0, 0x27EFB0EE;
654 CHECKREG r1, 0x0BE9FCE2;
655 CHECKREG r2, 0x1C05B40C;
656 CHECKREG r3, 0x310059F6;
657 CHECKREG r4, 0x83E35BE5;
658 CHECKREG r5, 0xDFFCE0BB;
659 CHECKREG r6, 0x79916AC9;
660 CHECKREG r7, 0xEEF52415;
661
662 imm32 r0, 0xb2345678;
663 imm32 r1, 0x2b456789;
664 imm32 r2, 0x34b6789a;
665 imm32 r3, 0xc56b8912;
666 imm32 r4, 0x5c78b123;
667 imm32 r5, 0x67c91b34;
668 imm32 r6, 0xa12345b7;
669 imm32 r7, 0xc123456b;
670 A1 += R6.H * R7.H (M), A0 = R6.L * R7.L (FU);
671 R6 = A0.w;
672 R7 = A1.w;
673 A1 += R5.H * R4.H (M), A0 = R5.L * R4.H (FU);
674 R4 = A0.w;
675 R5 = A1.w;
676 A1 = R2.H * R3.H (M), A0 += R2.H * R3.L (FU);
677 R2 = A0.w;
678 R3 = A1.w;
679 A1 = R0.H * R1.H (M), A0 += R0.H * R1.H (FU);
680 R0 = A0.w;
681 R1 = A1.w;
682 CHECKREG r0, 0x442B4F30;
683 CHECKREG r1, 0xF2D9C404;
684 CHECKREG r2, 0x260C8B2C;
685 CHECKREG r3, 0x28A61612;
686 CHECKREG r4, 0x09D37060;
687 CHECKREG r5, 0xCCE07116;
688 CHECKREG r6, 0x12E7767D;
689 CHECKREG r7, 0xA7638EDE;
690
691 // Test w32
692 imm32 r0, 0x123df178;
693 imm32 r1, 0x2245e189;
694 imm32 r2, 0x3256719a;
695 imm32 r3, 0x42678112;
696 imm32 r4, 0xa2789123;
697 imm32 r5, 0x62891134;
698 imm32 r6, 0xa2b34167;
699 imm32 r7, 0xc22d4167;
700 A1 = R0.L * R7.L (M), A0 = R0.L * R7.L (W32);
701 R0 = A0.w;
702 R7 = A1.w;
703 A1 += R1.L * R5.L (M), A0 = R1.L * R5.H (W32);
704 R1 = A0.w;
705 R5 = A1.w;
706 A1 = R2.L * R6.L (M), A0 = R2.H * R6.L (W32);
707 R2 = A0.w;
708 R6 = A1.w;
709 A1 += R3.L * R4.L (M), A0 = R3.H * R4.H (W32);
710 R3 = A0.w;
711 R4 = A1.w;
712 CHECKREG r0, 0xF8933E90;
713 CHECKREG r1, 0xE88C48A2;
714 CHECKREG r2, 0x19B82D34;
715 CHECKREG r3, 0xCF7A9C90;
716 CHECKREG r4, 0xD50FA66C;
717 CHECKREG r5, 0xFA3D881C;
718 CHECKREG r6, 0x1D05CEF6;
719 CHECKREG r7, 0xFC499F48;
720
721 imm32 r0, 0x553df344;
722 imm32 r1, 0x2525e349;
723 imm32 r2, 0x3252734a;
724 imm32 r3, 0x42658342;
725 imm32 r4, 0xa5789343;
726 imm32 r5, 0x63591344;
727 imm32 r6, 0xa3b54347;
728 imm32 r7, 0xc32d4347;
729 A1 = R0.L * R7.H (M), A0 = R0.L * R7.L (W32);
730 R0 = A0.w;
731 R7 = A1.w;
732 A1 = R1.L * R5.H (M), A0 += R1.L * R5.H (W32);
733 R1 = A0.w;
734 R5 = A1.w;
735 A1 = R2.L * R6.H (M), A0 = R2.H * R6.L (W32);
736 R2 = A0.w;
737 R6 = A1.w;
738 A1 = R3.L * R4.H (M), A0 += R3.H * R4.H (W32);
739 R3 = A0.w;
740 R4 = A1.w;
741 CHECKREG r0, 0xF94E87B8;
742 CHECKREG r1, 0xE305067A;
743 CHECKREG r2, 0x1A72D57C;
744 CHECKREG r3, 0xEB7D462C;
745 CHECKREG r4, 0xAF5F10F0;
746 CHECKREG r5, 0xF4DB3F61;
747 CHECKREG r6, 0x49B9A152;
748 CHECKREG r7, 0xF64A8EF4;
749
750 imm32 r0, 0x163df678;
751 imm32 r1, 0x2625e689;
752 imm32 r2, 0x3652769a;
753 imm32 r3, 0x46628612;
754 imm32 r4, 0xa6789623;
755 imm32 r5, 0x63691634;
756 imm32 r6, 0xa3634367;
757 imm32 r7, 0xc3264667;
758 A1 = R0.H * R7.L (M), A0 = R0.L * R7.L (W32);
759 R0 = A0.w;
760 R7 = A1.w;
761 A1 = R1.H * R5.L (M), A0 = R1.L * R5.H (W32);
762 R1 = A0.w;
763 R5 = A1.w;
764 A1 += R2.H * R6.L (M), A0 = R2.H * R6.L (W32);
765 R2 = A0.w;
766 R6 = A1.w;
767 A1 = R3.H * R4.L (M), A0 = R3.H * R4.H (W32);
768 R3 = A0.w;
769 R4 = A1.w;
770 CHECKREG r0, 0xFAC1F490;
771 CHECKREG r1, 0xEC391262;
772 CHECKREG r2, 0x1C9AA1FC;
773 CHECKREG r3, 0xCEC513E0;
774 CHECKREG r4, 0x29470B66;
775 CHECKREG r5, 0x034EED84;
776 CHECKREG r6, 0x119C3E82;
777 CHECKREG r7, 0x061DA08B;
778
779 imm32 r0, 0x123df378;
780 imm32 r1, 0x2225e389;
781 imm32 r2, 0x3252739a;
782 imm32 r3, 0x42628312;
783 imm32 r4, 0xa3789323;
784 imm32 r5, 0x63891334;
785 imm32 r6, 0xa3b34367;
786 imm32 r7, 0xc32d4367;
787 A1 = R0.H * R7.H (M), A0 = R0.L * R7.L (W32);
788 R0 = A0.w;
789 R7 = A1.w;
790 A1 = R1.H * R5.H (M), A0 = R1.L * R5.H (W32);
791 R1 = A0.w;
792 R5 = A1.w;
793 A1 += R2.H * R6.H (M), A0 += R2.H * R6.L (W32);
794 R2 = A0.w;
795 R6 = A1.w;
796 A1 += R3.H * R4.H (M), A0 += R3.H * R4.H (W32);
797 R3 = A0.w;
798 R4 = A1.w;
799 CHECKREG r0, 0xF966BA90;
800 CHECKREG r1, 0xE9DD7EA2;
801 CHECKREG r2, 0x045CE89E;
802 CHECKREG r3, 0xD45FF07E;
803 CHECKREG r4, 0x57D77E13;
804 CHECKREG r5, 0x0D4694CD;
805 CHECKREG r6, 0x2D73FA23;
806 CHECKREG r7, 0x0DE7ABB9;
807
808 imm32 r0, 0x123df678;
809 imm32 r1, 0x2345e789;
810 imm32 r2, 0x34567b9a;
811 imm32 r3, 0x45678c12;
812 imm32 r4, 0xa6789123;
813 imm32 r5, 0x6c891234;
814 imm32 r6, 0xa1b34567;
815 imm32 r7, 0xc12d4567;
816 A1 = R0.H * R4.L (M), A0 = R0.H * R4.L (W32);
817 R0 = A0.w;
818 R4 = A1.w;
819 A1 = R1.H * R5.L (M), A0 = R1.H * R5.H (W32);
820 R1 = A0.w;
821 R5 = A1.w;
822 A1 = R2.H * R6.H (M), A0 = R2.L * R6.L (W32);
823 R2 = A0.w;
824 R6 = A1.w;
825 A1 = R3.H * R4.H (M), A0 = R3.L * R4.H (W32);
826 R3 = A0.w;
827 R4 = A1.w;
828 CHECKREG r0, 0xF03416AE;
829 CHECKREG r1, 0x1DE7F7DA;
830 CHECKREG r2, 0x430479EC;
831 CHECKREG r3, 0xF6A29C3C;
832 CHECKREG r4, 0x02CD9C01;
833 CHECKREG r5, 0x02820404;
834 CHECKREG r6, 0x210EAE22;
835 CHECKREG r7, 0xC12D4567;
836
837 // MNOP & w32
838 imm32 r0, 0x623df17a;
839 imm32 r1, 0x7245e18b;
840 imm32 r2, 0x8256719a;
841 imm32 r3, 0x92678112;
842 imm32 r4, 0xa2789123;
843 imm32 r5, 0xb2891134;
844 imm32 r6, 0xc2b34167;
845 imm32 r7, 0xd22d4167;
846 A0 = R0.L * R4.L (W32);
847 R0 = A0.w;
848 R4 = A1.w;
849 A0 += R1.L * R5.H (W32);
850 R1 = A0.w;
851 R5 = A1.w;
852 A0 = R2.H * R6.L (W32);
853 R2 = A0.w;
854 R6 = A1.w;
855 A0 += R3.H * R7.H (W32);
856 R3 = A0.w;
857 R7 = A1.w;
858 CHECKREG r0, 0x0C943B5C;
859 CHECKREG r1, 0x1F02EE22;
860 CHECKREG r2, 0xBFCA8D34;
861 CHECKREG r3, 0xE707016A;
862 CHECKREG r4, 0x02CD9C01;
863 CHECKREG r5, 0x02CD9C01;
864 CHECKREG r6, 0x02CD9C01;
865 CHECKREG r7, 0x02CD9C01;
866
867 imm32 r0, 0xa23df17a;
868 imm32 r1, 0x7b45e18b;
869 imm32 r2, 0x82c6719a;
870 imm32 r3, 0x126d8112;
871 imm32 r4, 0xc278e123;
872 imm32 r5, 0xb2491f34;
873 imm32 r6, 0x89b54167;
874 imm32 r7, 0xd25d6767;
875 A1 += R0.L * R4.L (M,W32);
876 R0 = A0.w;
877 R4 = A1.w;
878 A1 = R1.L * R5.H (M,W32);
879 R1 = A0.w;
880 R5 = A1.w;
881 A1 += R2.H * R6.L (M,W32);
882 R2 = A0.w;
883 R6 = A1.w;
884 A1 = R3.H * R7.H (M,W32);
885 R3 = A0.w;
886 R7 = A1.w;
887 CHECKREG r0, 0xE707016A;
888 CHECKREG r1, 0xE707016A;
889 CHECKREG r2, 0xE707016A;
890 CHECKREG r3, 0xE707016A;
891 CHECKREG r4, 0xF607D9AF;
892 CHECKREG r5, 0xEAC9F6A3;
893 CHECKREG r6, 0xCACBDA4D;
894 CHECKREG r7, 0x0F241B99;
895
896 imm32 r0, 0x123df678;
897 imm32 r1, 0x2345e789;
898 imm32 r2, 0x34567b9a;
899 imm32 r3, 0x45678c12;
900 imm32 r4, 0xa6789123;
901 imm32 r5, 0x6c891234;
902 imm32 r6, 0xa1b34567;
903 imm32 r7, 0xc12d4567;
904 A1 -= R0.H * R4.L (M), A0 += R0.H * R4.L (IS);
905 R0 = A0.w;
906 R4 = A1.w;
907 A1 -= R1.H * R5.L (M), A0 -= R1.H * R5.H (FU);
908 R1 = A0.w;
909 R5 = A1.w;
910 A1 += R2.H * R6.H (M), A0 -= R2.L * R6.L (W32);
911 R2 = A0.w;
912 R6 = A1.w;
913 A1 -= R3.H * R4.H (M), A0 -= R3.L * R4.H (W32);
914 R3 = A0.w;
915 R4 = A1.w;
916 CHECKREG r0, 0xDF210CC1;
917 CHECKREG r1, 0xD02D10D4;
918 CHECKREG r2, 0x8D2896E8;
919 CHECKREG r3, 0x9181B214;
920 CHECKREG r4, 0x220C8AE5;
921 CHECKREG r5, 0x024B0C3E;
922 CHECKREG r6, 0x2359BA60;
923 CHECKREG r7, 0xC12D4567;
924
925 imm32 r0, 0x123df678;
926 imm32 r1, 0x2345e789;
927 imm32 r2, 0x34567b9a;
928 imm32 r3, 0x45678c12;
929 imm32 r4, 0xa6789123;
930 imm32 r5, 0x6c891234;
931 imm32 r6, 0xa1b34567;
932 imm32 r7, 0xc12d4567;
933 A1 -= R0.H * R4.L (M), A0 = R0.H * R4.L (IS);
934 R0 = A0.w;
935 R4 = A1.w;
936 A1 -= R1.H * R5.L (M), A0 = R1.H * R5.H (FU);
937 R1 = A0.w;
938 R5 = A1.w;
939 A1 -= R2.H * R6.H (M), A0 = R2.L * R6.L (W32);
940 R2 = A0.w;
941 R6 = A1.w;
942 A1 -= R3.H * R4.H (M), A0 = R3.L * R4.H (W32);
943 R3 = A0.w;
944 R4 = A1.w;
945 CHECKREG r0, 0xF81A0B57;
946 CHECKREG r1, 0x0EF3FBED;
947 CHECKREG r2, 0x430479EC;
948 CHECKREG r3, 0xEA874D74;
949 CHECKREG r4, 0xEDB77A95;
950 CHECKREG r5, 0x15337B8A;
951 CHECKREG r6, 0xF424CD68;
952 CHECKREG r7, 0xC12D4567;
953
954 // MNOP & w32
955 imm32 r0, 0x623df17a;
956 imm32 r1, 0x7245e18b;
957 imm32 r2, 0x8256719a;
958 imm32 r3, 0x92678112;
959 imm32 r4, 0xa2789123;
960 imm32 r5, 0xb2891134;
961 imm32 r6, 0xc2b34167;
962 imm32 r7, 0xd22d4167;
963 A0 -= R0.L * R4.L (IS);
964 R0 = A0.w;
965 R4 = A1.w;
966 A0 -= R1.L * R5.H (FU);
967 R1 = A0.w;
968 R5 = A1.w;
969 A0 -= R2.H * R6.L (W32);
970 R2 = A0.w;
971 R6 = A1.w;
972 A0 -= R3.H * R7.H (W32);
973 R3 = A0.w;
974 R7 = A1.w;
975 CHECKREG r0, 0xE43D2FC6;
976 CHECKREG r1, 0x46F1D663;
977 CHECKREG r2, 0x8727492F;
978 CHECKREG r3, 0x80000000;
979 CHECKREG r4, 0xEDB77A95;
980 CHECKREG r5, 0xEDB77A95;
981 CHECKREG r6, 0xEDB77A95;
982 CHECKREG r7, 0xEDB77A95;
983
984 imm32 r0, 0xa23df17a;
985 imm32 r1, 0x7b45e18b;
986 imm32 r2, 0x82c6719a;
987 imm32 r3, 0x126d8112;
988 imm32 r4, 0xc278e123;
989 imm32 r5, 0xb2491f34;
990 imm32 r6, 0x89b54167;
991 imm32 r7, 0xd25d6767;
992 A1 -= R0.L * R4.L (M,IS);
993 R0 = A0.w;
994 R4 = A1.w;
995 A1 -= R1.L * R5.H (M,FU);
996 R1 = A0.w;
997 R5 = A1.w;
998 A1 -= R2.H * R6.L (M,W32);
999 R2 = A0.w;
1000 R6 = A1.w;
1001 A1 -= R3.H * R7.H (M,FU);
1002 R3 = A0.w;
1003 R7 = A1.w;
1004 CHECKREG r0, 0x80000000;
1005 CHECKREG r1, 0x80000000;
1006 CHECKREG r2, 0x80000000;
1007 CHECKREG r3, 0x80000000;
1008 CHECKREG r4, 0xFA7D3CE7;
1009 CHECKREG r5, 0x0FB34644;
1010 CHECKREG r6, 0x2FB1629A;
1011 CHECKREG r7, 0x208D4701;
1012
1013
1014 pass