1//Original:/testcases/core/c_dsp32mac_dr_a1_u/c_dsp32mac_dr_a1_u.dsp
2// Spec Reference: dsp32mac dr_a1 u (unsigned fraction & unsigned int)
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9
10
11A1 = A0 = 0;
12
13// The result accumulated in A1 , and stored to a reg half
14imm32 r0, 0xa3545abd;
15imm32 r1, 0xbabcfec7;
16imm32 r2, 0xc1a48679;
17imm32 r3, 0xd00a9007;
18imm32 r4, 0xefbca569;
19imm32 r5, 0xcd355a0b;
20imm32 r6, 0xe00c80ad;
21imm32 r7, 0xf78e900a;
22R0.H = ( A1 = R6.L * R7.L ), A0 += R6.L * R7.L (FU);
23R1 = A1.w;
24R2.H = ( A1 = R3.L * R4.H ), A0 = R3.H * R4.L (FU);
25R3 = A1.w;
26R4.H = ( A1 += R2.H * R5.L ), A0 = R2.H * R5.H (FU);
27R5 = A1.w;
28R6.H = ( A1 += R0.H * R1.H ), A0 += R0.L * R1.H (FU);
29R7 = A1.w;
30CHECKREG r0, 0x48665ABD;
31CHECKREG r1, 0x486656C2;
32CHECKREG r2, 0x86E08679;
33CHECKREG r3, 0x86E04E24;
34CHECKREG r4, 0xB651A569;
35CHECKREG r5, 0xB650D9C4;
36CHECKREG r6, 0xCACA80AD;
37CHECKREG r7, 0xCACA6268;
38
39imm32 r0, 0x03545abd;
40imm32 r1, 0x1abcfec7;
41imm32 r2, 0xc2a48679;
42imm32 r3, 0x300a9007;
43imm32 r4, 0x54bca569;
44imm32 r5, 0x6d355a0b;
45imm32 r6, 0x700c80ad;
46imm32 r7, 0x878e900a;
47R0.H = ( A1 -= R6.L * R7.L ), A0 += R6.L * R7.L (FU);
48R1 = A1.w;
49R2.H = ( A1 -= R3.L * R4.H ), A0 = R3.H * R4.L (FU);
50R3 = A1.w;
51R4.H = ( A1 += R2.H * R5.L ), A0 -= R2.H * R5.H (FU);
52R5 = A1.w;
53R6.H = ( A1 -= R0.H * R1.H ), A0 += R0.L * R1.H (FU);
54R7 = A1.w;
55CHECKREG r0, 0x82645ABD;
56CHECKREG r1, 0x82640BA6;
57CHECKREG r2, 0x52B88679;
58CHECKREG r3, 0x52B7FA82;
59CHECKREG r4, 0x6FD0A569;
60CHECKREG r5, 0x6FD0386A;
61CHECKREG r6, 0x2D6780AD;
62CHECKREG r7, 0x2D66815A;
63
64// The result accumulated in A1, and stored to a reg half (MNOP)
65imm32 r0, 0xb3548abd;
66imm32 r1, 0x7bbcfec7;
67imm32 r2, 0xa1b45679;
68imm32 r3, 0xb00b9007;
69imm32 r4, 0xcfbcb569;
70imm32 r5, 0xd235c00b;
71imm32 r6, 0xe00cabbd;
72imm32 r7, 0x678e700b;
73R0.H = ( A1 = R1.L * R0.L ) (FU);
74R1 = A1.w;
75R2.H = ( A1 = R2.L * R6.H ) (FU);
76R3 = A1.w;
77R4.H = ( A1 += R3.H * R5.L ) (FU);
78R5 = A1.w;
79R6.H = ( A1 = R4.H * R7.H ) (FU);
80R7 = A1.w;
81CHECKREG r0, 0x8A138ABD;
82CHECKREG r1, 0x8A135EEB;
83CHECKREG r2, 0x4BAE5679;
84CHECKREG r3, 0x4BADEDAC;
85CHECKREG r4, 0x8473B569;
86CHECKREG r5, 0x8472EE1B;
87CHECKREG r6, 0x3594ABBD;
88CHECKREG r7, 0x3593BCCA;
89
90// The result accumulated in A1 , and stored to a reg half (MNOP)
91imm32 r0, 0xc354babd;
92imm32 r1, 0x6cbcdec7;
93imm32 r2, 0x71c4e679;
94imm32 r3, 0x800c7007;
95imm32 r4, 0x9fbcc569;
96imm32 r5, 0xa2359c0b;
97imm32 r6, 0xb00c30cd;
98imm32 r7, 0xc78ea00c;
99 R0.H = A1 , A0 = R1.L * R0.L (FU);
100R1 = A1.w;
101 R2.H = A1 , A0 = R2.H * R3.L (FU);
102R3 = A1.w;
103 R4.H = A1 , A0 = R4.H * R5.H (FU);
104R5 = A1.w;
105 R6.H = A1 , A0 = R6.L * R7.H (FU);
106R7 = A1.w;
107CHECKREG r0, 0x3594BABD;
108CHECKREG r1, 0x3593BCCA;
109CHECKREG r2, 0x3594E679;
110CHECKREG r3, 0x3593BCCA;
111CHECKREG r4, 0x3594C569;
112CHECKREG r5, 0x3593BCCA;
113CHECKREG r6, 0x359430CD;
114CHECKREG r7, 0x3593BCCA;
115
116// The result accumulated in A1 , and stored to a reg half
117imm32 r0, 0xd3545abd;
118imm32 r1, 0x5dbcfec7;
119imm32 r2, 0x71d45679;
120imm32 r3, 0x900d0007;
121imm32 r4, 0xafbcd569;
122imm32 r5, 0xd2359d0b;
123imm32 r6, 0xc00ca0dd;
124imm32 r7, 0x678ed00d;
125R0.H = ( A1 = R1.L * R2.L ) (M), A0 += R1.L * R2.L (FU);
126R1 = A1.w;
127R2.H = ( A1 = R3.L * R4.H ) (M), A0 = R3.H * R4.L (FU);
128R3 = A1.w;
129R4.H = ( A1 = R5.H * R6.L ) (M), A0 += R5.H * R6.H (FU);
130R5 = A1.w;
131R6.H = ( A1 += R7.H * R0.H ) (M), A0 += R7.L * R0.H (FU);
132R7 = A1.w;
133CHECKREG r0, 0xFF965ABD;
134CHECKREG r1, 0xFF96460F;
135CHECKREG r2, 0x00055679;
136CHECKREG r3, 0x0004CE24;
137CHECKREG r4, 0xE33AD569;
138CHECKREG r5, 0xE33997C1;
139CHECKREG r6, 0x4A9DA0DD;
140CHECKREG r7, 0x4A9CB6F5;
141
142// The result accumulated in A1 MM=0, and stored to a reg half (MNOP)
143imm32 r0, 0xe3545abd;
144imm32 r1, 0xaebcfec7;
145imm32 r2, 0xc1e45679;
146imm32 r3, 0x1c0e0007;
147imm32 r4, 0xe1cce569;
148imm32 r5, 0x921c0e0b;
149imm32 r6, 0x790190ed;
150imm32 r7, 0x679e900e;
151R0.H = ( A1 = R1.L * R0.L ) (M,FU);
152R1 = A1.w;
153R2.H = ( A1 += R2.L * R3.H ) (M,FU);
154R3 = A1.w;
155R4.H = ( A1 += R4.H * R5.L ) (M,FU);
156R5 = A1.w;
157R6.H = ( A1 = R6.H * R7.H ) (M,FU);
158R7 = A1.w;
159CHECKREG r0, 0xFF915ABD;
160CHECKREG r1, 0xFF910EEB;
161CHECKREG r2, 0x090B5679;
162CHECKREG r3, 0x090B0589;
163CHECKREG r4, 0x0763E569;
164CHECKREG r5, 0x0762E14D;
165CHECKREG r6, 0x30FA90ED;
166CHECKREG r7, 0x30FA159E;
167
168
169
170pass
171