1*48596154Schristos//Original:/proj/frio/dv/testcases/core/c_dsp32alu_rrppmm_sft/c_dsp32alu_rrppmm_sft.dsp
2*48596154Schristos// Spec Reference: dsp32alu (dreg, dreg) = +/+, -/- (dreg, dreg) >>, <<
3*48596154Schristos# mach: bfin
4*48596154Schristos
5*48596154Schristos.include "testutils.inc"
6*48596154Schristos	start
7*48596154Schristos
8*48596154Schristos	R0 = 0;
9*48596154Schristos	ASTAT = R0;
10*48596154Schristos
11*48596154Schristos	imm32 r0, 0x95679911;
12*48596154Schristos	imm32 r1, 0x2789ab1d;
13*48596154Schristos	imm32 r2, 0x34945515;
14*48596154Schristos	imm32 r3, 0x46967717;
15*48596154Schristos	imm32 r4, 0x5597891b;
16*48596154Schristos	imm32 r5, 0x6989ab1d;
17*48596154Schristos	imm32 r6, 0x94445515;
18*48596154Schristos	imm32 r7, 0x96667777;
19*48596154Schristos	R0 = R0 +|+ R0, R7 = R0 -|- R0 (ASR);
20*48596154Schristos	R1 = R0 +|+ R1, R6 = R0 -|- R1 (ASL);
21*48596154Schristos	R2 = R0 +|+ R2, R5 = R0 -|- R2 (ASR);
22*48596154Schristos	R3 = R0 +|+ R3, R4 = R0 -|- R3 (ASR);
23*48596154Schristos	R4 = R0 +|+ R4, R3 = R0 -|- R4 (ASL);
24*48596154Schristos	R5 = R0 +|+ R5, R2 = R0 -|- R5 (ASR);
25*48596154Schristos	R6 = R0 +|+ R6, R1 = R0 -|- R6 (ASL);
26*48596154Schristos	R7 = R0 +|+ R7, R0 = R0 -|- R7 (ASR);
27*48596154Schristos	CHECKREG r0, 0xcAB3cC88;
28*48596154Schristos	CHECKREG r1, 0x73567A52;
29*48596154Schristos	CHECKREG r2, 0xf27FfB89;
30*48596154Schristos	CHECKREG r3, 0xdBFE1028;
31*48596154Schristos	CHECKREG r4, 0x799E541C;
32*48596154Schristos	CHECKREG r5, 0xa2E89D87;
33*48596154Schristos	CHECKREG r6, 0xE246e9F2;
34*48596154Schristos	CHECKREG r7, 0xcAB3cC88;
35*48596154Schristos
36*48596154Schristos	imm32 r0, 0x11678911;
37*48596154Schristos	imm32 r1, 0xa719ab1d;
38*48596154Schristos	imm32 r2, 0x3a415515;
39*48596154Schristos	imm32 r3, 0x46a67717;
40*48596154Schristos	imm32 r4, 0x556a891b;
41*48596154Schristos	imm32 r5, 0x6789ab1d;
42*48596154Schristos	imm32 r6, 0x74445a15;
43*48596154Schristos	imm32 r7, 0x866677a7;
44*48596154Schristos	R0 = R1 +|+ R0, R7 = R1 -|- R0 (ASR);
45*48596154Schristos	R1 = R1 +|+ R1, R6 = R1 -|- R1 (ASR);
46*48596154Schristos	R2 = R1 +|+ R2, R5 = R1 -|- R2 (ASL);
47*48596154Schristos	R3 = R1 +|+ R3, R4 = R1 -|- R3 (ASR);
48*48596154Schristos	R4 = R1 +|+ R4, R3 = R1 -|- R4 (ASR);
49*48596154Schristos	R5 = R1 +|+ R5, R2 = R1 -|- R5 (ASR);
50*48596154Schristos	R6 = R1 +|+ R6, R1 = R1 -|- R6 (ASL);
51*48596154Schristos	R7 = R1 +|+ R7, R0 = R1 -|- R7 (ASR);
52*48596154Schristos	CHECKREG r0, 0x41AC229A;
53*48596154Schristos	CHECKREG r1, 0x4E32563A;
54*48596154Schristos	CHECKREG r2, 0xe6B4fF86;
55*48596154Schristos	CHECKREG r3, 0xfB70088D;
56*48596154Schristos	CHECKREG r4, 0xaBA9a290;
57*48596154Schristos	CHECKREG r5, 0xc064aB96;
58*48596154Schristos	CHECKREG r6, 0x4E32563A;
59*48596154Schristos	CHECKREG r7, 0x0C8533A0;
60*48596154Schristos
61*48596154Schristos	imm32 r0, 0xb567891b;
62*48596154Schristos	imm32 r1, 0x2b89abbd;
63*48596154Schristos	imm32 r2, 0x34b45b15;
64*48596154Schristos	imm32 r3, 0x466bb717;
65*48596154Schristos	imm32 r4, 0x556bb91b;
66*48596154Schristos	imm32 r5, 0x67b9ab1d;
67*48596154Schristos	imm32 r6, 0x7b4455b5;
68*48596154Schristos	imm32 r7, 0xb666777b;
69*48596154Schristos	R0 = R2 +|+ R0, R7 = R2 -|- R0 (ASR);
70*48596154Schristos	R1 = R2 +|+ R1, R6 = R2 -|- R1 (ASR);
71*48596154Schristos	R2 = R2 +|+ R2, R5 = R2 -|- R2 (ASR);
72*48596154Schristos	R3 = R2 +|+ R3, R4 = R2 -|- R3 (ASL);
73*48596154Schristos	R4 = R2 +|+ R4, R3 = R2 -|- R4 (ASR);
74*48596154Schristos	R5 = R2 +|+ R5, R2 = R2 -|- R5 (ASR);
75*48596154Schristos	R6 = R2 +|+ R6, R1 = R2 -|- R6 (ASL);
76*48596154Schristos	R7 = R2 +|+ R7, R0 = R2 -|- R7 (ASR);
77*48596154Schristos	CHECKREG r0, 0xED5Ae246;
78*48596154Schristos	CHECKREG r1, 0x2B8AaBBC;
79*48596154Schristos	CHECKREG r2, 0x1A5A2D8A;
80*48596154Schristos	CHECKREG r3, 0x2C11098C;
81*48596154Schristos	CHECKREG r4, 0x08A35188;
82*48596154Schristos	CHECKREG r5, 0x1A5A2D8A;
83*48596154Schristos	CHECKREG r6, 0x3DDE0A6C;
84*48596154Schristos	CHECKREG r7, 0x2D004B43;
85*48596154Schristos
86*48596154Schristos	imm32 r0, 0xbc678c11;
87*48596154Schristos	imm32 r1, 0x27c9cb1d;
88*48596154Schristos	imm32 r2, 0x344c5515;
89*48596154Schristos	imm32 r3, 0x46c6c717;
90*48596154Schristos	imm32 r4, 0x55678c1b;
91*48596154Schristos	imm32 r5, 0x6c89abcd;
92*48596154Schristos	imm32 r6, 0x7444551c;
93*48596154Schristos	imm32 r7, 0x8c667777;
94*48596154Schristos	R0 = R3 +|+ R0, R7 = R3 -|- R0 (ASL);
95*48596154Schristos	R1 = R3 +|+ R1, R6 = R3 -|- R1 (ASR);
96*48596154Schristos	R2 = R3 +|+ R2, R5 = R3 -|- R2 (ASR);
97*48596154Schristos	R3 = R3 +|+ R3, R4 = R3 -|- R3 (ASR);
98*48596154Schristos	R4 = R3 +|+ R4, R3 = R3 -|- R4 (ASL);
99*48596154Schristos	R5 = R3 +|+ R5, R2 = R3 -|- R5 (ASR);
100*48596154Schristos	R6 = R3 +|+ R6, R1 = R3 -|- R6 (ASR);
101*48596154Schristos	R7 = R3 +|+ R7, R0 = R3 -|- R7 (ASL);
102*48596154Schristos	CHECKREG r0, 0xF19C3044;
103*48596154Schristos	CHECKREG r1, 0xbF07C818;
104*48596154Schristos	CHECKREG r2, 0xC227eA96;
105*48596154Schristos	CHECKREG r3, 0x8D8C8E2E;
106*48596154Schristos	CHECKREG r4, 0x8D8C8E2E;
107*48596154Schristos	CHECKREG r5, 0xCB64a397;
108*48596154Schristos	CHECKREG r6, 0xCE85C615;
109*48596154Schristos	CHECKREG r7, 0x44940874;
110*48596154Schristos
111*48596154Schristos	imm32 r0, 0xd56789d1;
112*48596154Schristos	imm32 r1, 0x2d89abdd;
113*48596154Schristos	imm32 r2, 0x34d455d5;
114*48596154Schristos	imm32 r3, 0x4d667717;
115*48596154Schristos	imm32 r4, 0x5dd7891b;
116*48596154Schristos	imm32 r5, 0x6789ab1d;
117*48596154Schristos	imm32 r6, 0xd44d5515;
118*48596154Schristos	imm32 r7, 0xd666d777;
119*48596154Schristos	R0 = R4 +|+ R0, R7 = R4 -|- R0 (ASR);
120*48596154Schristos	R1 = R4 +|+ R1, R6 = R4 -|- R1 (ASR);
121*48596154Schristos	R2 = R4 +|+ R2, R5 = R4 -|- R2 (ASR);
122*48596154Schristos	R3 = R4 +|+ R3, R4 = R4 -|- R3 (ASL);
123*48596154Schristos	R4 = R4 +|+ R4, R3 = R4 -|- R4 (ASR);
124*48596154Schristos	R5 = R4 +|+ R5, R2 = R4 -|- R5 (ASL);
125*48596154Schristos	R6 = R4 +|+ R6, R1 = R4 -|- R6 (ASR);
126*48596154Schristos	R7 = R4 +|+ R7, R0 = R4 -|- R7 (ASR);
127*48596154Schristos	CHECKREG r0, 0xeE551231;
128*48596154Schristos	CHECKREG r1, 0x045D1AB4;
129*48596154Schristos	CHECKREG r2, 0x18C214CA;
130*48596154Schristos	CHECKREG r3, 0x00000000;
131*48596154Schristos	CHECKREG r4, 0x20E22408;
132*48596154Schristos	CHECKREG r5, 0x6AC67B56;
133*48596154Schristos	CHECKREG r6, 0x1C840953;
134*48596154Schristos	CHECKREG r7, 0x328D11D6;
135*48596154Schristos
136*48596154Schristos	imm32 r0, 0xc567a911;
137*48596154Schristos	imm32 r1, 0x278aab1d;
138*48596154Schristos	imm32 r2, 0x3c445515;
139*48596154Schristos	imm32 r3, 0x46a67717;
140*48596154Schristos	imm32 r4, 0x55c7891b;
141*48596154Schristos	imm32 r5, 0x6a8cab1d;
142*48596154Schristos	imm32 r6, 0x7444c515;
143*48596154Schristos	imm32 r7, 0xa6667c77;
144*48596154Schristos	R0 = R5 +|+ R0, R7 = R5 -|- R0 (ASR);
145*48596154Schristos	R1 = R5 +|+ R1, R6 = R5 -|- R1 (ASL);
146*48596154Schristos	R2 = R5 +|+ R2, R5 = R5 -|- R2 (ASR);
147*48596154Schristos	R3 = R5 +|+ R3, R4 = R5 -|- R3 (ASR);
148*48596154Schristos	R4 = R5 +|+ R4, R3 = R5 -|- R4 (ASR);
149*48596154Schristos	R5 = R5 +|+ R5, R2 = R5 -|- R5 (ASL);
150*48596154Schristos	R6 = R5 +|+ R6, R1 = R5 -|- R6 (ASR);
151*48596154Schristos	R7 = R5 +|+ R7, R0 = R5 -|- R7 (ASR);
152*48596154Schristos	CHECKREG r0, 0x04FFD585;
153*48596154Schristos	CHECKREG r1, 0x6B46D608;
154*48596154Schristos	CHECKREG r2, 0x00000000;
155*48596154Schristos	CHECKREG r3, 0x17720887;
156*48596154Schristos	CHECKREG r4, 0xFFB1a27D;
157*48596154Schristos	CHECKREG r5, 0x5C90AC10;
158*48596154Schristos	CHECKREG r6, 0xF14AD608;
159*48596154Schristos	CHECKREG r7, 0x5791D68B;
160*48596154Schristos
161*48596154Schristos	imm32 r0, 0xd5678911;
162*48596154Schristos	imm32 r1, 0x2ddddd1d;
163*48596154Schristos	imm32 r2, 0x34ddd515;
164*48596154Schristos	imm32 r3, 0x46d67717;
165*48596154Schristos	imm32 r4, 0x5d6d891b;
166*48596154Schristos	imm32 r5, 0x6789db1d;
167*48596154Schristos	imm32 r6, 0x74445d15;
168*48596154Schristos	imm32 r7, 0xd66677d7;
169*48596154Schristos	R0 = R6 +|+ R0, R7 = R6 -|- R0 (ASR);
170*48596154Schristos	R1 = R6 +|+ R1, R6 = R6 -|- R1 (ASR);
171*48596154Schristos	R2 = R6 +|+ R2, R5 = R6 -|- R2 (ASR);
172*48596154Schristos	R3 = R6 +|+ R3, R4 = R6 -|- R3 (ASL);
173*48596154Schristos	R4 = R6 +|+ R4, R3 = R6 -|- R4 (ASR);
174*48596154Schristos	R5 = R6 +|+ R5, R2 = R6 -|- R5 (ASR);
175*48596154Schristos	R6 = R6 +|+ R6, R1 = R6 -|- R6 (ASL);
176*48596154Schristos	R7 = R6 +|+ R7, R0 = R6 -|- R7 (ASR);
177*48596154Schristos	CHECKREG r0, 0x9EAFcAF7;
178*48596154Schristos	CHECKREG r1, 0x00000000;
179*48596154Schristos	CHECKREG r2, 0x16040544;
180*48596154Schristos	CHECKREG r3, 0x353C5719;
181*48596154Schristos	CHECKREG r4, 0xEDF6E8E3;
182*48596154Schristos	CHECKREG r5, 0x0D2F3AB7;
183*48596154Schristos	CHECKREG r6, 0x8CCCFFF0;
184*48596154Schristos	CHECKREG r7, 0xeE1D34F9;
185*48596154Schristos
186*48596154Schristos	imm32 r0, 0xf567a911;
187*48596154Schristos	imm32 r1, 0x2f8aab1d;
188*48596154Schristos	imm32 r2, 0x34a45515;
189*48596154Schristos	imm32 r3, 0x4a6f7717;
190*48596154Schristos	imm32 r4, 0x5567f91b;
191*48596154Schristos	imm32 r5, 0xa789af1d;
192*48596154Schristos	imm32 r6, 0x74445515;
193*48596154Schristos	imm32 r7, 0x866677f7;
194*48596154Schristos	R0 = R7 +|+ R0, R7 = R7 -|- R0 (ASR);
195*48596154Schristos	R1 = R7 +|+ R1, R6 = R7 -|- R1 (ASL);
196*48596154Schristos	R2 = R7 +|+ R2, R5 = R7 -|- R2 (ASR);
197*48596154Schristos	R3 = R7 +|+ R3, R4 = R7 -|- R3 (ASR);
198*48596154Schristos	R4 = R7 +|+ R4, R3 = R7 -|- R4 (ASL);
199*48596154Schristos	R5 = R7 +|+ R5, R2 = R7 -|- R5 (ASL);
200*48596154Schristos	R6 = R7 +|+ R6, R1 = R7 -|- R6 (ASR);
201*48596154Schristos	R7 = R7 +|+ R7, R0 = R7 -|- R7 (ASL);
202*48596154Schristos	CHECKREG r0, 0x00000000;
203*48596154Schristos	CHECKREG r1, 0xCB4Af763;
204*48596154Schristos	CHECKREG r2, 0xFD24bC88;
205*48596154Schristos	CHECKREG r3, 0x12EEdE8A;
206*48596154Schristos	CHECKREG r4, 0x0F0EbF42;
207*48596154Schristos	CHECKREG r5, 0x24D8e144;
208*48596154Schristos	CHECKREG r6, 0xFD34700F;
209*48596154Schristos	CHECKREG r7, 0x21FC9DCC;
210*48596154Schristos
211*48596154Schristos	imm32 r0, 0xe5678911;
212*48596154Schristos	imm32 r1, 0x2e89ab1d;
213*48596154Schristos	imm32 r2, 0x34e45515;
214*48596154Schristos	imm32 r3, 0x46667717;
215*48596154Schristos	imm32 r4, 0x556e891b;
216*48596154Schristos	imm32 r5, 0x6789ab1d;
217*48596154Schristos	imm32 r6, 0x7444e515;
218*48596154Schristos	imm32 r7, 0x86667e77;
219*48596154Schristos	R4 = R2 +|+ R5, R3 = R2 -|- R5 (ASR);
220*48596154Schristos	R0 = R5 +|+ R3, R5 = R5 -|- R3 (ASL);
221*48596154Schristos	R2 = R6 +|+ R2, R0 = R6 -|- R2 (ASL);
222*48596154Schristos	R3 = R4 +|+ R0, R2 = R4 -|- R0 (ASR);
223*48596154Schristos	R7 = R7 +|+ R6, R6 = R7 -|- R6 (ASL);
224*48596154Schristos	R6 = R1 +|+ R7, R1 = R1 -|- R7 (ASL);
225*48596154Schristos	R5 = R0 +|+ R4, R7 = R0 -|- R4 (ASR);
226*48596154Schristos	R1 = R3 +|+ R1, R4 = R3 -|- R1 (ASR);
227*48596154Schristos	CHECKREG r0, 0x7EC02000;
228*48596154Schristos	CHECKREG r1, 0x6C72EC0B;
229*48596154Schristos	CHECKREG r2, 0xe7BBF00C;
230*48596154Schristos	CHECKREG r3, 0x667B100C;
231*48596154Schristos	CHECKREG r4, 0xfA082401;
232*48596154Schristos	CHECKREG r5, 0x667B100C;
233*48596154Schristos	CHECKREG r6, 0x47BAE46A;
234*48596154Schristos	CHECKREG r7, 0x18450FF3;
235*48596154Schristos
236*48596154Schristos	imm32 r0, 0xd5678911;
237*48596154Schristos	imm32 r1, 0xff89ab1d;
238*48596154Schristos	imm32 r2, 0x34f45515;
239*48596154Schristos	imm32 r3, 0x46667717;
240*48596154Schristos	imm32 r4, 0x556f891b;
241*48596154Schristos	imm32 r5, 0x6789fb1d;
242*48596154Schristos	imm32 r6, 0x74445f15;
243*48596154Schristos	imm32 r7, 0x866677f7;
244*48596154Schristos	R4 = R3 +|+ R3, R5 = R3 -|- R3 (ASR);
245*48596154Schristos	R1 = R6 +|+ R1, R6 = R6 -|- R1 (ASL);
246*48596154Schristos	R6 = R1 +|+ R4, R4 = R1 -|- R4 (ASL);
247*48596154Schristos	R7 = R4 +|+ R2, R0 = R4 -|- R2 (ASR);
248*48596154Schristos	R2 = R2 +|+ R6, R1 = R2 -|- R6 (ASR);
249*48596154Schristos	R3 = R5 +|+ R5, R7 = R5 -|- R5 (ASL);
250*48596154Schristos	R5 = R7 +|+ R7, R3 = R7 -|- R7 (ASL);
251*48596154Schristos	R0 = R0 +|+ R0, R2 = R0 -|- R0 (ASR);
252*48596154Schristos	CHECKREG r0, 0x06BAF2C2;
253*48596154Schristos	CHECKREG r1, 0xEC7A1F0F;
254*48596154Schristos	CHECKREG r2, 0x00000000;
255*48596154Schristos	CHECKREG r3, 0x00000000;
256*48596154Schristos	CHECKREG r4, 0x42683A9A;
257*48596154Schristos	CHECKREG r5, 0x00000000;
258*48596154Schristos	CHECKREG r6, 0x5C0016F6;
259*48596154Schristos	CHECKREG r7, 0x00000000;
260*48596154Schristos
261*48596154Schristos	pass
262