1//Original:/testcases/core/c_dsp32alu_rrpmmp/c_dsp32alu_rrpmmp.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, 0x35678911;
12imm32 r1, 0x2489ab1d;
13imm32 r2, 0x34545515;
14imm32 r3, 0x46667717;
15imm32 r0, 0x5567891b;
16imm32 r1, 0x67889b1d;
17imm32 r2, 0x74445915;
18imm32 r3, 0x86667797;
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, 0xAACE1236;
28CHECKREG r1, 0x67889B1D;
29CHECKREG r2, 0x74445915;
30CHECKREG r3, 0x86667797;
31CHECKREG r4, 0xCF368869;
32CHECKREG r5, 0xE158A6EB;
33CHECKREG r6, 0xEE1464E3;
34CHECKREG r7, 0xAACEEDCA;
35
36imm32 r0, 0xe5678911;
37imm32 r1, 0x2e89ab1d;
38imm32 r2, 0x34e45515;
39imm32 r3, 0x466e7717;
40imm32 r0, 0x5567ee1b;
41imm32 r1, 0x6789abed;
42imm32 r2, 0x7444551e;
43imm32 r3, 0x86e67777;
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, 0xBCF0F1E2;
53CHECKREG r1, 0xCF1257DA;
54CHECKREG r2, 0x7444551E;
55CHECKREG r3, 0x86E67777;
56CHECKREG r4, 0x173E8889;
57CHECKREG r5, 0x29E0AAE2;
58CHECKREG r6, 0xCF12A826;
59CHECKREG r7, 0xE134BDD2;
60
61imm32 r0, 0x15678911;
62imm32 r1, 0x2789ab1d;
63imm32 r2, 0x34445515;
64imm32 r3, 0x46667717;
65imm32 r0, 0x5567891b;
66imm32 r1, 0x6789ab1d;
67imm32 r2, 0x74445515;
68imm32 r3, 0x86667777;
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, 0xC9AB885A;
78CHECKREG r1, 0xDBCDAA5C;
79CHECKREG r2, 0xE888AA2A;
80CHECKREG r3, 0x86667777;
81CHECKREG r4, 0x4AAA8889;
82CHECKREG r5, 0xE88855D6;
83CHECKREG r6, 0xF543A9F8;
84CHECKREG r7, 0x0765CBFA;
85
86imm32 r0, 0x85678911;
87imm32 r1, 0x2889ab1d;
88imm32 r2, 0x34445515;
89imm32 r3, 0x46667717;
90imm32 r0, 0x5587891b;
91imm32 r1, 0x6788ab1d;
92imm32 r2, 0x74448515;
93imm32 r3, 0x86667877;
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, 0xDBEDF280;
103CHECKREG r1, 0xEDEE1482;
104CHECKREG r2, 0xFAAAEE7A;
105CHECKREG r3, 0x0CCCF0EE;
106CHECKREG r4, 0x0CCC0F12;
107CHECKREG r5, 0x1EEEF362;
108CHECKREG r6, 0x2BAACD5A;
109CHECKREG r7, 0x3DABEF5C;
110
111imm32 r0, 0x15678911;
112imm32 r1, 0x2789ab1d;
113imm32 r2, 0x34445515;
114imm32 r3, 0x46667717;
115imm32 r0, 0x5567891b;
116imm32 r1, 0x6789ab1d;
117imm32 r2, 0x74445515;
118imm32 r3, 0x86667777;
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, 0x5567982D;
128CHECKREG r1, 0x6789BA2F;
129CHECKREG r2, 0x74446427;
130CHECKREG r3, 0x00000D12;
131CHECKREG r4, 0x0CCC0000;
132CHECKREG r5, 0xA5549BD9;
133CHECKREG r6, 0xB20F45D1;
134CHECKREG r7, 0xC43167D3;
135
136imm32 r0, 0x95678911;
137imm32 r1, 0x2789ab1d;
138imm32 r2, 0x39445515;
139imm32 r3, 0x46967717;
140imm32 r0, 0x5567891b;
141imm32 r1, 0x6789ab1d;
142imm32 r2, 0x74495515;
143imm32 r3, 0x86669777;
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, 0x122924F4;
153CHECKREG r1, 0x244B46F6;
154CHECKREG r2, 0x0000E1DC;
155CHECKREG r3, 0x86667953;
156CHECKREG r4, 0xDBB06889;
157CHECKREG r5, 0x62160000;
158CHECKREG r6, 0x9FE1B90A;
159CHECKREG r7, 0xB203DB0C;
160
161imm32 r0, 0x15678911;
162imm32 r1, 0x2789ab1d;
163imm32 r2, 0x34445515;
164imm32 r3, 0x46667717;
165imm32 r0, 0x5567891b;
166imm32 r1, 0x6789ab1d;
167imm32 r2, 0x74445515;
168imm32 r3, 0x86667777;
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, 0x26364225;
178CHECKREG r1, 0x0000C84E;
179CHECKREG r2, 0x74441D63;
180CHECKREG r3, 0x86663FC5;
181CHECKREG r4, 0xEA4A8889;
182CHECKREG r5, 0xFC6CAAEB;
183CHECKREG r6, 0x70B00000;
184CHECKREG r7, 0xBB2ABDDB;
185
186imm32 r0, 0x67898911;
187imm32 r1, 0xb789ab1d;
188imm32 r2, 0x3b445515;
189imm32 r3, 0x46b67717;
190imm32 r0, 0x5567891b;
191imm32 r1, 0x678bab1d;
192imm32 r2, 0x7444b515;
193imm32 r3, 0x86667b77;
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, 0x00008DEC;
203CHECKREG r1, 0x678B3909;
204CHECKREG r2, 0x74444301;
205CHECKREG r3, 0x86660963;
206CHECKREG r4, 0x45208489;
207CHECKREG r5, 0x57424AEB;
208CHECKREG r6, 0x63FB54E3;
209CHECKREG r7, 0xCB860000;
210
211imm32 r0, 0xe5678911;
212imm32 r1, 0x2e89ab1d;
213imm32 r2, 0x34ee5515;
214imm32 r3, 0x4666e717;
215imm32 r0, 0x5567891b;
216imm32 r1, 0x6789ae1d;
217imm32 r2, 0x744455e5;
218imm32 r3, 0x8666777e;
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, 0x7FFFEFB7;
228CHECKREG r1, 0xFFFFE33B;
229CHECKREG r2, 0x0000FAB1;
230CHECKREG r3, 0x7FFF1B43;
231CHECKREG r4, 0x534BFFFF;
232CHECKREG r5, 0x7FFFE4BD;
233CHECKREG r6, 0x7FFF0300;
234CHECKREG r7, 0x0000FAB1;
235
236imm32 r0, 0xff678911;
237imm32 r1, 0x2789ab1d;
238imm32 r2, 0x3f445515;
239imm32 r3, 0x46f67717;
240imm32 r0, 0x556f891b;
241imm32 r1, 0x6789fb1d;
242imm32 r2, 0x74445f15;
243imm32 r3, 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, 0x17760000;
253CHECKREG r1, 0x66F87445;
254CHECKREG r2, 0x7FFF0000;
255CHECKREG r3, 0x00000000;
256CHECKREG r4, 0x7FFF07E3;
257CHECKREG r5, 0x00000000;
258CHECKREG r6, 0xFFFF07E3;
259CHECKREG r7, 0x00000000;
260
261
262
263pass
264