1//Original:/testcases/core/c_dsp32alu_rrppmm/c_dsp32alu_rrppmm.dsp
2// Spec Reference: dsp32alu (dreg, dreg) = +/+, -/- (dreg, dreg) amod0
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9
10
11imm32 r0, 0x95679911;
12imm32 r1, 0x2789ab1d;
13imm32 r2, 0x34945515;
14imm32 r3, 0x46967717;
15imm32 r4, 0x5597891b;
16imm32 r5, 0x6989ab1d;
17imm32 r6, 0x94445515;
18imm32 r7, 0x96667777;
19R0 = R0 +|+ R0, R7 = R0 -|- R0;
20R1 = R0 +|+ R1, R6 = R0 -|- R1;
21R2 = R0 +|+ R2, R5 = R0 -|- R2;
22R3 = R0 +|+ R3, R4 = R0 -|- R3;
23R4 = R0 +|+ R4, R3 = R0 -|- R4;
24R5 = R0 +|+ R5, R2 = R0 -|- R5;
25R6 = R0 +|+ R6, R1 = R0 -|- R6;
26R7 = R0 +|+ R7, R0 = R0 -|- R7;
27CHECKREG r0, 0x2ACE3222;
28CHECKREG r1, 0x2789AB1D;
29CHECKREG r2, 0x34945515;
30CHECKREG r3, 0x46967717;
31CHECKREG r4, 0x0F06ED2D;
32CHECKREG r5, 0x21080F2F;
33CHECKREG r6, 0x2E13B927;
34CHECKREG r7, 0x2ACE3222;
35
36imm32 r0, 0x11678911;
37imm32 r1, 0xa719ab1d;
38imm32 r2, 0x3a415515;
39imm32 r3, 0x46a67717;
40imm32 r4, 0x556a891b;
41imm32 r5, 0x6789ab1d;
42imm32 r6, 0x74445a15;
43imm32 r7, 0x866677a7;
44R0 = R1 +|+ R0, R7 = R1 -|- R0;
45R1 = R1 +|+ R1, R6 = R1 -|- R1;
46R2 = R1 +|+ R2, R5 = R1 -|- R2;
47R3 = R1 +|+ R3, R4 = R1 -|- R3;
48R4 = R1 +|+ R4, R3 = R1 -|- R4;
49R5 = R1 +|+ R5, R2 = R1 -|- R5;
50R6 = R1 +|+ R6, R1 = R1 -|- R6;
51R7 = R1 +|+ R7, R0 = R1 -|- R7;
52CHECKREG r0, 0xB880342E;
53CHECKREG r1, 0x4E32563A;
54CHECKREG r2, 0x3A415515;
55CHECKREG r3, 0x46A67717;
56CHECKREG r4, 0x55BE355D;
57CHECKREG r5, 0x6223575F;
58CHECKREG r6, 0x4E32563A;
59CHECKREG r7, 0xE3E47846;
60
61imm32 r0, 0xb567891b;
62imm32 r1, 0x2b89abbd;
63imm32 r2, 0x34b45b15;
64imm32 r3, 0x466bb717;
65imm32 r4, 0x556bb91b;
66imm32 r5, 0x67b9ab1d;
67imm32 r6, 0x7b4455b5;
68imm32 r7, 0xb666777b;
69R0 = R2 +|+ R0, R7 = R2 -|- R0;
70R1 = R2 +|+ R1, R6 = R2 -|- R1;
71R2 = R2 +|+ R2, R5 = R2 -|- R2;
72R3 = R2 +|+ R3, R4 = R2 -|- R3;
73R4 = R2 +|+ R4, R3 = R2 -|- R4;
74R5 = R2 +|+ R5, R2 = R2 -|- R5;
75R6 = R2 +|+ R6, R1 = R2 -|- R6;
76R7 = R2 +|+ R7, R0 = R2 -|- R7;
77CHECKREG r0, 0xEA1BE430;
78CHECKREG r1, 0x603D06D2;
79CHECKREG r2, 0x6968B62A;
80CHECKREG r3, 0x466BB717;
81CHECKREG r4, 0x8C65B53D;
82CHECKREG r5, 0x6968B62A;
83CHECKREG r6, 0x72936582;
84CHECKREG r7, 0xE8B58824;
85
86imm32 r0, 0xbc678c11;
87imm32 r1, 0x27c9cb1d;
88imm32 r2, 0x344c5515;
89imm32 r3, 0x46c6c717;
90imm32 r4, 0x55678c1b;
91imm32 r5, 0x6c89abcd;
92imm32 r6, 0x7444551c;
93imm32 r7, 0x8c667777;
94R0 = R3 +|+ R0, R7 = R3 -|- R0;
95R1 = R3 +|+ R1, R6 = R3 -|- R1;
96R2 = R3 +|+ R2, R5 = R3 -|- R2;
97R3 = R3 +|+ R3, R4 = R3 -|- R3;
98R4 = R3 +|+ R4, R3 = R3 -|- R4;
99R5 = R3 +|+ R5, R2 = R3 -|- R5;
100R6 = R3 +|+ R6, R1 = R3 -|- R6;
101R7 = R3 +|+ R7, R0 = R3 -|- R7;
102CHECKREG r0, 0x032D5328;
103CHECKREG r1, 0x6E8F9234;
104CHECKREG r2, 0x7B121C2C;
105CHECKREG r3, 0x8D8C8E2E;
106CHECKREG r4, 0x8D8C8E2E;
107CHECKREG r5, 0xA0060030;
108CHECKREG r6, 0xAC898A28;
109CHECKREG r7, 0x17EBC934;
110
111imm32 r0, 0xd56789d1;
112imm32 r1, 0x2d89abdd;
113imm32 r2, 0x34d455d5;
114imm32 r3, 0x4d667717;
115imm32 r4, 0x5dd7891b;
116imm32 r5, 0x6789ab1d;
117imm32 r6, 0xd44d5515;
118imm32 r7, 0xd666d777;
119R0 = R4 +|+ R0, R7 = R4 -|- R0;
120R1 = R4 +|+ R1, R6 = R4 -|- R1;
121R2 = R4 +|+ R2, R5 = R4 -|- R2;
122R3 = R4 +|+ R3, R4 = R4 -|- R3;
123R4 = R4 +|+ R4, R3 = R4 -|- R4;
124R5 = R4 +|+ R5, R2 = R4 -|- R5;
125R6 = R4 +|+ R6, R1 = R4 -|- R6;
126R7 = R4 +|+ R7, R0 = R4 -|- R7;
127CHECKREG r0, 0x987224BE;
128CHECKREG r1, 0xF09446CA;
129CHECKREG r2, 0xF7DFF0C2;
130CHECKREG r3, 0x00000000;
131CHECKREG r4, 0x20E22408;
132CHECKREG r5, 0x49E5574E;
133CHECKREG r6, 0x51300146;
134CHECKREG r7, 0xA9522352;
135
136imm32 r0, 0xc567a911;
137imm32 r1, 0x278aab1d;
138imm32 r2, 0x3c445515;
139imm32 r3, 0x46a67717;
140imm32 r4, 0x55c7891b;
141imm32 r5, 0x6a8cab1d;
142imm32 r6, 0x7444c515;
143imm32 r7, 0xa6667c77;
144R0 = R5 +|+ R0, R7 = R5 -|- R0;
145R1 = R5 +|+ R1, R6 = R5 -|- R1;
146R2 = R5 +|+ R2, R5 = R5 -|- R2;
147R3 = R5 +|+ R3, R4 = R5 -|- R3;
148R4 = R5 +|+ R4, R3 = R5 -|- R4;
149R5 = R5 +|+ R5, R2 = R5 -|- R5;
150R6 = R5 +|+ R6, R1 = R5 -|- R6;
151R7 = R5 +|+ R7, R0 = R5 -|- R7;
152CHECKREG r0, 0xB76BAA04;
153CHECKREG r1, 0x198EAC10;
154CHECKREG r2, 0x00000000;
155CHECKREG r3, 0x46A67717;
156CHECKREG r4, 0x15EA34F9;
157CHECKREG r5, 0x5C90AC10;
158CHECKREG r6, 0x9F92AC10;
159CHECKREG r7, 0x01B5AE1C;
160
161imm32 r0, 0xd5678911;
162imm32 r1, 0x2ddddd1d;
163imm32 r2, 0x34ddd515;
164imm32 r3, 0x46d67717;
165imm32 r4, 0x5d6d891b;
166imm32 r5, 0x6789db1d;
167imm32 r6, 0x74445d15;
168imm32 r7, 0xd66677d7;
169R0 = R6 +|+ R0, R7 = R6 -|- R0;
170R1 = R6 +|+ R1, R6 = R6 -|- R1;
171R2 = R6 +|+ R2, R5 = R6 -|- R2;
172R3 = R6 +|+ R3, R4 = R6 -|- R3;
173R4 = R6 +|+ R4, R3 = R6 -|- R4;
174R5 = R6 +|+ R5, R2 = R6 -|- R5;
175R6 = R6 +|+ R6, R1 = R6 -|- R6;
176R7 = R6 +|+ R7, R0 = R6 -|- R7;
177CHECKREG r0, 0xEDF12BEC;
178CHECKREG r1, 0x00000000;
179CHECKREG r2, 0x34DDD515;
180CHECKREG r3, 0x46D67717;
181CHECKREG r4, 0x45F888D9;
182CHECKREG r5, 0x57F12ADB;
183CHECKREG r6, 0x8CCEFFF0;
184CHECKREG r7, 0x2BABD3F4;
185
186imm32 r0, 0xf567a911;
187imm32 r1, 0x2f8aab1d;
188imm32 r2, 0x34a45515;
189imm32 r3, 0x4a6f7717;
190imm32 r4, 0x5567f91b;
191imm32 r5, 0xa789af1d;
192imm32 r6, 0x74445515;
193imm32 r7, 0x866677f7;
194R0 = R7 +|+ R0, R7 = R7 -|- R0;
195R1 = R7 +|+ R1, R6 = R7 -|- R1;
196R2 = R7 +|+ R2, R5 = R7 -|- R2;
197R3 = R7 +|+ R3, R4 = R7 -|- R3;
198R4 = R7 +|+ R4, R3 = R7 -|- R4;
199R5 = R7 +|+ R5, R2 = R7 -|- R5;
200R6 = R7 +|+ R6, R1 = R7 -|- R6;
201R7 = R7 +|+ R7, R0 = R7 -|- R7;
202CHECKREG r0, 0x00000000;
203CHECKREG r1, 0x2F8AAB1D;
204CHECKREG r2, 0x34A45515;
205CHECKREG r3, 0x4A6F7717;
206CHECKREG r4, 0xD78F26B5;
207CHECKREG r5, 0xED5A48B7;
208CHECKREG r6, 0xF274F2AF;
209CHECKREG r7, 0x21FE9DCC;
210
211imm32 r0, 0xe5678911;
212imm32 r1, 0x2e89ab1d;
213imm32 r2, 0x34e45515;
214imm32 r3, 0x46667717;
215imm32 r4, 0x556e891b;
216imm32 r5, 0x6789ab1d;
217imm32 r6, 0x7444e515;
218imm32 r7, 0x86667e77;
219R4 = R2 +|+ R5, R3 = R2 -|- R5 (S);
220R0 = R5 +|+ R3, R5 = R5 -|- R3 (CO);
221R2 = R6 +|+ R2, R0 = R6 -|- R2 (SCO);
222R3 = R4 +|+ R0, R2 = R4 -|- R0 (S);
223R7 = R7 +|+ R6, R6 = R7 -|- R6 (CO);
224R6 = R1 +|+ R7, R1 = R1 -|- R7 (SCO);
225R5 = R0 +|+ R4, R7 = R0 -|- R4 (S);
226R1 = R3 +|+ R1, R4 = R3 -|- R1 (CO);
227CHECKREG r0, 0x90003F60;
228CHECKREG r1, 0x8FFF7371;
229CHECKREG r2, 0x7FFFC0D2;
230CHECKREG r3, 0x0FFF3F92;
231CHECKREG r4, 0x0BB38FFF;
232CHECKREG r5, 0x0FFF3F92;
233CHECKREG r6, 0x29330EA9;
234CHECKREG r7, 0x80003F2E;
235
236imm32 r0, 0xd5678911;
237imm32 r1, 0xff89ab1d;
238imm32 r2, 0x34f45515;
239imm32 r3, 0x46667717;
240imm32 r4, 0x556f891b;
241imm32 r5, 0x6789fb1d;
242imm32 r6, 0x74445f15;
243imm32 r7, 0x866677f7;
244R4 = R3 +|+ R3, R5 = R3 -|- R3 (SCO);
245R1 = R6 +|+ R1, R6 = R6 -|- R1 (SCO);
246R6 = R1 +|+ R4, R4 = R1 -|- R4 (S);
247R7 = R4 +|+ R2, R0 = R4 -|- R2 (S);
248R2 = R2 +|+ R6, R1 = R2 -|- R6 (CO);
249R3 = R5 +|+ R5, R7 = R5 -|- R5 (CO);
250R5 = R7 +|+ R7, R3 = R7 -|- R7 (SCO);
251R0 = R0 +|+ R0, R2 = R0 -|- R0 (SCO);
252CHECKREG r0, 0x80008000;
253CHECKREG r1, 0xD516B4F5;
254CHECKREG r2, 0x00000000;
255CHECKREG r3, 0x00000000;
256CHECKREG r4, 0xF3CE8A33;
257CHECKREG r5, 0x00000000;
258CHECKREG r6, 0x7FFF7FFF;
259CHECKREG r7, 0x00000000;
260
261
262
263pass
264