1//Original:/proj/frio/dv/testcases/core/c_dsp32alu_rrpmmp_sft_x/c_dsp32alu_rrpmmp_sft_x.dsp
2// Spec Reference: dsp32alu (dreg, dreg) = +/-, -/+ (dreg, dreg) >>, <<
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8	R0 = 0;
9	ASTAT = R0;
10
11	imm32 r0, 0x35678911;
12	imm32 r1, 0x2489ab1d;
13	imm32 r2, 0x34545515;
14	imm32 r3, 0x46667717;
15	imm32 r0, 0x5567891b;
16	imm32 r1, 0x67889b1d;
17	imm32 r2, 0x74445915;
18	imm32 r3, 0x86667797;
19	R0 = R0 +|- R0 , R7 = R0 -|+ R0 (CO , ASR);
20	R1 = R0 +|- R1 , R6 = R0 -|+ R1 (CO , ASR);
21	R2 = R0 +|- R2 , R5 = R0 -|+ R2 (CO , ASR);
22	R3 = R0 +|- R3 , R4 = R0 -|+ R3 (CO , ASR);
23	R4 = R0 +|- R4 , R3 = R0 -|+ R4 (CO , ASR);
24	R5 = R0 +|- R5 , R2 = R0 -|+ R5 (CO , ASR);
25	R6 = R0 +|- R6 , R1 = R0 -|+ R6 (CO , ASR);
26	R7 = R0 +|- R7 , R0 = R0 -|+ R7 (CO , ASR);
27	CHECKREG r0, 0x00006626;
28	CHECKREG r1, 0xfb7743ec;
29	CHECKREG r2, 0xf848146e;
30	CHECKREG r3, 0x33c00cce;
31	CHECKREG r4, 0x4899cc40;
32	CHECKREG r5, 0x40f807b7;
33	CHECKREG r6, 0x117a0488;
34	CHECKREG r7, 0xef410000;
35
36	imm32 r0, 0xe5678911;
37	imm32 r1, 0x2e89ab1d;
38	imm32 r2, 0x34e45515;
39	imm32 r3, 0x466e7717;
40	imm32 r0, 0x5567ee1b;
41	imm32 r1, 0x6789abed;
42	imm32 r2, 0x7444551e;
43	imm32 r3, 0x86e67777;
44	R0 = R1 +|- R0 , R7 = R1 -|+ R0 (CO , ASR);
45	R1 = R1 +|- R1 , R6 = R1 -|+ R1 (CO , ASR);
46	R2 = R1 +|- R2 , R5 = R1 -|+ R2 (CO , ASR);
47	R3 = R1 +|- R3 , R4 = R1 -|+ R3 (CO , ASR);
48	R4 = R1 +|- R4 , R3 = R1 -|+ R4 (CO , ASR);
49	R5 = R1 +|- R5 , R2 = R1 -|+ R5 (CO , ASR);
50	R6 = R1 +|- R6 , R1 = R1 -|+ R6 (CO , ASR);
51	R7 = R1 +|- R7 , R0 = R1 -|+ R7 (CO , ASR);
52	CHECKREG r0, 0x336f197e;
53	CHECKREG r1, 0x00005dce;
54	CHECKREG r2, 0xfcd11e7d;
55	CHECKREG r3, 0x382815e7;
56	CHECKREG r4, 0x51a2c7d7;
57	CHECKREG r5, 0x490c032f;
58	CHECKREG r6, 0x09bb0000;
59	CHECKREG r7, 0xe6822a5e;
60
61	imm32 r0, 0x15678911;
62	imm32 r1, 0x2789ab1d;
63	imm32 r2, 0x34445515;
64	imm32 r3, 0x46667717;
65	imm32 r0, 0x5567891b;
66	imm32 r1, 0x6789ab1d;
67	imm32 r2, 0x74445515;
68	imm32 r3, 0x86667777;
69	R0 = R2 +|- R0 , R7 = R2 -|+ R0 (CO , ASR);
70	R1 = R2 +|- R1 , R6 = R2 -|+ R1 (CO , ASR);
71	R2 = R2 +|- R2 , R5 = R2 -|+ R2 (CO , ASR);
72	R3 = R2 +|- R3 , R4 = R2 -|+ R3 (CO , ASR);
73	R4 = R2 +|- R4 , R3 = R2 -|+ R4 (CO , ASR);
74	R5 = R2 +|- R5 , R2 = R2 -|+ R5 (CO , ASR);
75	R6 = R2 +|- R6 , R1 = R2 -|+ R6 (CO , ASR);
76	R7 = R2 +|- R7 , R0 = R2 -|+ R7 (CO , ASR);
77	CHECKREG r0, 0x0f820874;
78	CHECKREG r1, 0x0afafff3;
79	CHECKREG r2, 0x00000f97;
80	CHECKREG r3, 0x3b771c44;
81	CHECKREG r4, 0x57ffc488;
82	CHECKREG r5, 0x64ac0000;
83	CHECKREG r6, 0x000c049d;
84	CHECKREG r7, 0xf78c0014;
85
86	imm32 r0, 0x85678911;
87	imm32 r1, 0x2889ab1d;
88	imm32 r2, 0x34445515;
89	imm32 r3, 0x46667717;
90	imm32 r0, 0x5587891b;
91	imm32 r1, 0x6788ab1d;
92	imm32 r2, 0x74448515;
93	imm32 r3, 0x86667877;
94	R0 = R3 +|- R0 , R7 = R3 -|+ R0 (CO , ASR);
95	R1 = R3 +|- R1 , R6 = R3 -|+ R1 (CO , ASR);
96	R2 = R3 +|- R2 , R5 = R3 -|+ R2 (CO , ASR);
97	R3 = R3 +|- R3 , R4 = R3 -|+ R3 (CO , ASR);
98	R4 = R3 +|- R4 , R3 = R3 -|+ R4 (CO , ASR);
99	R5 = R3 +|- R5 , R2 = R3 -|+ R5 (CO , ASR);
100	R6 = R3 +|- R6 , R1 = R3 -|+ R6 (CO , ASR);
101	R7 = R3 +|- R7 , R0 = R3 -|+ R7 (CO , ASR);
102	CHECKREG r0, 0x8fb3ff9b;
103	CHECKREG r1, 0x8b33f71b;
104	CHECKREG r2, 0x8804009d;
105	CHECKREG r3, 0x000086f7;
106	CHECKREG r4, 0xff6e0000;
107	CHECKREG r5, 0xff63fef3;
108	CHECKREG r6, 0x08e5fbc4;
109	CHECKREG r7, 0x0064f744;
110
111	imm32 r0, 0x15678911;
112	imm32 r1, 0x2789ab1d;
113	imm32 r2, 0x34445515;
114	imm32 r3, 0x46667717;
115	imm32 r0, 0x5567891b;
116	imm32 r1, 0x6789ab1d;
117	imm32 r2, 0x74445515;
118	imm32 r3, 0x86667777;
119	R0 = R4 +|- R0 , R7 = R4 -|+ R0 (CO , ASR);
120	R1 = R4 +|- R1 , R6 = R4 -|+ R1 (CO , ASR);
121	R2 = R4 +|- R2 , R5 = R4 -|+ R2 (CO , ASR);
122	R3 = R4 +|- R3 , R4 = R4 -|+ R3 (CO , ASR);
123	R4 = R4 +|- R4 , R3 = R4 -|+ R4 (CO , ASR);
124	R5 = R4 +|- R5 , R2 = R4 -|+ R5 (CO , ASR);
125	R6 = R4 +|- R6 , R1 = R4 -|+ R6 (CO , ASR);
126	R7 = R4 +|- R7 , R0 = R4 -|+ R7 (CO , ASR);
127	CHECKREG r0, 0xEA813B97;
128	CHECKREG r1, 0xE5F93316;
129	CHECKREG r2, 0xe2ca0898;
130	CHECKREG r3, 0x3C840000;
131	CHECKREG r4, 0x3BBB0000;
132	CHECKREG r5, 0x33221D35;
133	CHECKREG r6, 0x08A41A07;
134	CHECKREG r7, 0x0024157E;
135
136	imm32 r0, 0x95678911;
137	imm32 r1, 0x2789ab1d;
138	imm32 r2, 0x39445515;
139	imm32 r3, 0x46967717;
140	imm32 r0, 0x5567891b;
141	imm32 r1, 0x6789ab1d;
142	imm32 r2, 0x74495515;
143	imm32 r3, 0x86669777;
144	R0 = R5 +|- R0 , R7 = R5 -|+ R0 (CO , ASR);
145	R1 = R5 +|- R1 , R6 = R5 -|+ R1 (CO , ASL);
146	R2 = R5 +|- R2 , R5 = R5 -|+ R2 (CO , ASR);
147	R3 = R5 +|- R3 , R4 = R5 -|+ R3 (CO , ASL);
148	R4 = R5 +|- R4 , R3 = R5 -|+ R4 (CO , ASR);
149	R5 = R5 +|- R5 , R2 = R5 -|+ R5 (CO , ASR);
150	R6 = R5 +|- R6 , R1 = R5 -|+ R6 (CO , ASR);
151	R7 = R5 +|- R7 , R0 = R5 -|+ R7 (CO , ASL);
152	CHECKREG r0, 0xDDBACBFA;
153	CHECKREG r1, 0xCB995440;
154	CHECKREG r2, 0xDF6C0000;
155	CHECKREG r3, 0x227525AF;
156	CHECKREG r4, 0x1375bCF7;
157	CHECKREG r5, 0x39250000;
158	CHECKREG r6, 0xE4E43467;
159	CHECKREG r7, 0x189A2246;
160
161	imm32 r0, 0x15678911;
162	imm32 r1, 0x2789ab1d;
163	imm32 r2, 0x34445515;
164	imm32 r3, 0x46667717;
165	imm32 r0, 0x5567891b;
166	imm32 r1, 0x6789ab1d;
167	imm32 r2, 0x74445515;
168	imm32 r3, 0x86667777;
169	R0 = R6 +|- R0 , R7 = R6 -|+ R0 (CO , ASR);
170	R1 = R6 +|- R1 , R6 = R6 -|+ R1 (CO , ASL);
171	R2 = R6 +|- R2 , R5 = R6 -|+ R2 (CO , ASL);
172	R3 = R6 +|- R3 , R4 = R6 -|+ R3 (CO , ASR);
173	R4 = R6 +|- R4 , R3 = R6 -|+ R4 (CO , ASR);
174	R5 = R6 +|- R5 , R2 = R6 -|+ R5 (CO , ASR);
175	R6 = R6 +|- R6 , R1 = R6 -|+ R6 (CO , ASL);
176	R7 = R6 +|- R7 , R0 = R6 -|+ R7 (CO , ASR);
177	CHECKREG r0, 0xE3DF0EAF;
178	CHECKREG r1, 0xEAD80000;
179	CHECKREG r2, 0xC81F0FB9;
180	CHECKREG r3, 0x0B83C2F9;
181	CHECKREG r4, 0xFC0FEF32;
182	CHECKREG r5, 0xaF4F3297;
183	CHECKREG r6, 0xFC200000;
184	CHECKREG r7, 0xED701C21;
185
186	imm32 r0, 0x67898911;
187	imm32 r1, 0xb789ab1d;
188	imm32 r2, 0x3b445515;
189	imm32 r3, 0x46b67717;
190	imm32 r0, 0x5567891b;
191	imm32 r1, 0x678bab1d;
192	imm32 r2, 0x7444b515;
193	imm32 r3, 0x86667b77;
194	R0 = R7 +|- R0 , R7 = R7 -|+ R0 (CO , ASR);
195	R1 = R7 +|- R1 , R6 = R7 -|+ R1 (CO , ASR);
196	R2 = R7 +|- R2 , R5 = R7 -|+ R2 (CO , ASL);
197	R3 = R7 +|- R3 , R4 = R7 -|+ R3 (CO , ASR);
198	R4 = R7 +|- R4 , R3 = R7 -|+ R4 (CO , ASL);
199	R5 = R7 +|- R5 , R2 = R7 -|+ R5 (CO , ASL);
200	R6 = R7 +|- R6 , R1 = R7 -|+ R6 (CO , ASL);
201	R7 = R7 +|- R7 , R0 = R7 -|+ R7 (CO , ASR);
202	CHECKREG r0, 0xCC040000;
203	CHECKREG r1, 0x031A2E1C;
204	CHECKREG r2, 0x1170A0D8;
205	CHECKREG r3, 0xE4405DC2;
206	CHECKREG r4, 0xECB64BD0;
207	CHECKREG r5, 0xA9A01EA0;
208	CHECKREG r6, 0x1C5C2CF6;
209	CHECKREG r7, 0xD29E0000;
210
211	imm32 r0, 0xe5678911;
212	imm32 r1, 0x2e89ab1d;
213	imm32 r2, 0x34ee5515;
214	imm32 r3, 0x4666e717;
215	imm32 r0, 0x5567891b;
216	imm32 r1, 0x6789ae1d;
217	imm32 r2, 0x744455e5;
218	imm32 r3, 0x8666777e;
219	R4 = R2 +|- R5 , R3 = R2 -|+ R5 (CO , ASR);
220	R0 = R5 +|- R3 , R5 = R5 -|+ R3 (CO , ASL);
221	R2 = R6 +|- R2 , R0 = R6 -|+ R2 (CO , ASR);
222	R3 = R4 +|- R0 , R2 = R4 -|+ R0 (CO , ASR);
223	R7 = R7 +|- R6 , R6 = R7 -|+ R6 (CO , ASR);
224	R6 = R1 +|- R7 , R1 = R1 -|+ R7 (CO , ASL);
225	R5 = R0 +|- R4 , R7 = R0 -|+ R4 (CO , ASR);
226	R1 = R3 +|- R1 , R4 = R3 -|+ R1 (CO , ASL);
227	CHECKREG r0, 0x416dd40c;
228	CHECKREG r1, 0xaEE68766;
229	CHECKREG r2, 0xF7D7e6C2;
230	CHECKREG r3, 0x282F23CB;
231	CHECKREG r4, 0x07C6f1D6;
232	CHECKREG r5, 0x282FDC35;
233	CHECKREG r6, 0xBE0C8930;
234	CHECKREG r7, 0xF7D7193D;
235
236	imm32 r0, 0xff678911;
237	imm32 r1, 0x2789ab1d;
238	imm32 r2, 0x3f445515;
239	imm32 r3, 0x46f67717;
240	imm32 r0, 0x556f891b;
241	imm32 r1, 0x6789fb1d;
242	imm32 r2, 0x74445f15;
243	imm32 r3, 0x866677f7;
244	R4 = R3 +|- R3 , R5 = R3 -|+ R3 (CO , ASR);
245	R1 = R6 +|- R1 , R6 = R6 -|+ R1 (CO , ASL);
246	R6 = R1 +|- R4 , R4 = R1 -|+ R4 (CO , ASR);
247	R7 = R4 +|- R2 , R0 = R4 -|+ R2 (CO , ASL);
248	R2 = R2 +|- R6 , R1 = R2 -|+ R6 (CO , ASR);
249	R3 = R5 +|- R5 , R7 = R5 -|+ R5 (CO , ASL);
250	R5 = R7 +|- R7 , R3 = R7 -|+ R7 (CO , ASR);
251	R0 = R0 +|- R0 , R2 = R0 -|+ R0 (CO , ASR);
252	CHECKREG r0, 0x82EE0000;
253	CHECKREG r1, 0x369445BE;
254	CHECKREG r2, 0x339E0000;
255	CHECKREG r3, 0x00000000;
256	CHECKREG r4, 0x0E136262;
257	CHECKREG r5, 0x00000000;
258	CHECKREG r6, 0xe8C80E13;
259	CHECKREG r7, 0x00000000;
260
261	pass
262