1//Original:/proj/frio/dv/testcases/core/c_dsp32alu_rl_rnd12_p/c_dsp32alu_rl_rnd12_p.dsp
2// Spec Reference: dsp32alu  dreg (half)
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8	R0 = 0;
9	ASTAT = R0;
10
11
12	imm32 r0, 0x85678011;
13	imm32 r1, 0x9189a11d;
14	imm32 r2, 0xa4245235;
15	imm32 r3, 0xb6637747;
16	imm32 r4, 0xc67849db;
17	imm32 r5, 0x6789a5fd;
18	imm32 r6, 0xe4445565;
19	imm32 r7, 0x86667707;
20	R0.L = R0 + R0 (RND12);
21	R1.L = R0 + R1 (RND12);
22	R2.L = R0 + R2 (RND12);
23	R3.L = R0 + R3 (RND12);
24	R4.L = R0 + R4 (RND12);
25	R5.L = R0 + R5 (RND12);
26	R6.L = R0 + R6 (RND12);
27	R7.L = R0 + R7 (RND12);
28	CHECKREG r0, 0x85678000;
29	CHECKREG r1, 0x91898000;
30	CHECKREG r2, 0xA4248000;
31	CHECKREG r3, 0xB6638000;
32	CHECKREG r4, 0xC6788000;
33	CHECKREG r5, 0x67898000;
34	CHECKREG r6, 0xE4448000;
35	CHECKREG r7, 0x86668000;
36
37	imm32 r0, 0x75678921;
38	imm32 r1, 0x2789ab14;
39	imm32 r2, 0xd4745515;
40	imm32 r3, 0x4d677767;
41	imm32 r4, 0x56d8791b;
42	imm32 r5, 0x678dab1d;
43	imm32 r6, 0x74445515;
44	imm32 r7, 0x86a6d777;
45	R0.L = R1 + R0 (RND12);
46	R1.L = R1 + R1 (RND12);
47	R2.L = R1 + R2 (RND12);
48	R3.L = R1 + R3 (RND12);
49	R4.L = R1 + R4 (RND12);
50	R5.L = R1 + R5 (RND12);
51	R6.L = R1 + R6 (RND12);
52	R7.L = R1 + R7 (RND12);
53	CHECKREG r0, 0x75677FFF;
54	CHECKREG r1, 0x27897FFF;
55	CHECKREG r2, 0xD474bfdd;
56	CHECKREG r3, 0x4D677fff;
57	CHECKREG r4, 0x56D87FFF;
58	CHECKREG r5, 0x678D7FFF;
59	CHECKREG r6, 0x74447FFF;
60	CHECKREG r7, 0x86A68000;
61
62	imm32 r0, 0x55678911;
63	imm32 r1, 0x2689ab2d;
64	imm32 r2, 0x3d44551a;
65	imm32 r3, 0x469677cd;
66	imm32 r4, 0xa67a89bb;
67	imm32 r5, 0x6789bb1d;
68	imm32 r6, 0x7444d525;
69	imm32 r7, 0x8666c747;
70	R0.L = R2 + R0 (RND12);
71	R1.L = R2 + R1 (RND12);
72	R2.L = R2 + R2 (RND12);
73	R3.L = R2 + R3 (RND12);
74	R4.L = R2 + R4 (RND12);
75	R5.L = R2 + R5 (RND12);
76	R6.L = R2 + R6 (RND12);
77	R7.L = R2 + R7 (RND12);
78	CHECKREG r0, 0x55677fff;
79	CHECKREG r1, 0x26897fff;
80	CHECKREG r2, 0x3D447fff;
81	CHECKREG r3, 0x46967fff;
82	CHECKREG r4, 0xA67A8000;
83	CHECKREG r5, 0x67897fff;
84	CHECKREG r6, 0x74447fff;
85	CHECKREG r7, 0x86668000;
86
87	imm32 r0, 0xf5678901;
88	imm32 r1, 0xd789ab7d;
89	imm32 r2, 0x34445565;
90	imm32 r3, 0xe6667757;
91	imm32 r4, 0x5678894b;
92	imm32 r5, 0x6d89ab3d;
93	imm32 r6, 0x7444d525;
94	imm32 r7, 0xe6667b77;
95	R0.L = R3 + R0 (RND12);
96	R1.L = R3 + R1 (RND12);
97	R2.L = R3 + R2 (RND12);
98	R3.L = R3 + R3 (RND12);
99	R4.L = R3 + R4 (RND12);
100	R5.L = R3 + R5 (RND12);
101	R6.L = R3 + R6 (RND12);
102	R7.L = R3 + R7 (RND12);
103	CHECKREG r0, 0xF5678000;
104	CHECKREG r1, 0xD7898000;
105	CHECKREG r2, 0x34447FFF;
106	CHECKREG r3, 0xE6668000;
107	CHECKREG r4, 0x56787FFF;
108	CHECKREG r5, 0x6D897FFF;
109	CHECKREG r6, 0x74447FFF;
110	CHECKREG r7, 0xE6668000;
111
112	imm32 r0, 0xa5678911;
113	imm32 r1, 0x2b89ab1d;
114	imm32 r2, 0x34c45515;
115	imm32 r3, 0x46d67717;
116	imm32 r4, 0x56e8891b;
117	imm32 r5, 0x67f9ab1d;
118	imm32 r6, 0x74445515;
119	imm32 r7, 0x86687777;
120	R0.L = R4 + R0 (RND12);
121	R1.L = R4 + R1 (RND12);
122	R2.L = R4 + R2 (RND12);
123	R3.L = R4 + R3 (RND12);
124	R4.L = R4 + R4 (RND12);
125	R5.L = R4 + R5 (RND12);
126	R6.L = R4 + R6 (RND12);
127	R7.L = R4 + R7 (RND12);
128	CHECKREG r0, 0xA567c501;
129	CHECKREG r1, 0x2B897fff;
130	CHECKREG r2, 0x34C47FFF;
131	CHECKREG r3, 0x46D67FFF;
132	CHECKREG r4, 0x56E87FFF;
133	CHECKREG r5, 0x67F97FFF;
134	CHECKREG r6, 0x74447FFF;
135	CHECKREG r7, 0x86688000;
136
137	imm32 r0, 0xe5678911;
138	imm32 r1, 0x2789ab2d;
139	imm32 r2, 0x34445535;
140	imm32 r3, 0xd6667747;
141	imm32 r4, 0x5ff8895b;
142	imm32 r5, 0x6789ab8d;
143	imm32 r6, 0x744e5515;
144	imm32 r7, 0x8666a7b7;
145	R0.L = R5 + R0 (RND12);
146	R1.L = R5 + R1 (RND12);
147	R2.L = R5 + R2 (RND12);
148	R3.L = R5 + R3 (RND12);
149	R4.L = R5 + R4 (RND12);
150	R5.L = R5 + R5 (RND12);
151	R6.L = R5 + R6 (RND12);
152	R7.L = R5 + R7 (RND12);
153	CHECKREG r0, 0xE5677FFF;
154	CHECKREG r1, 0x27897FFF;
155	CHECKREG r2, 0x34447FFF;
156	CHECKREG r3, 0xD6667FFF;
157	CHECKREG r4, 0x5FF87fff;
158	CHECKREG r5, 0x67897FFF;
159	CHECKREG r6, 0x744E7FFF;
160	CHECKREG r7, 0x86668000;
161
162	imm32 r0, 0x15678911;
163	imm32 r1, 0x2789ae1d;
164	imm32 r2, 0x344455e5;
165	imm32 r3, 0x4666771d;
166	imm32 r4, 0x5678891b;
167	imm32 r5, 0x6789abdd;
168	imm32 r6, 0x74a45515;
169	imm32 r7, 0x866c77b7;
170	R0.L = R6 + R0 (RND12);
171	R1.L = R6 + R1 (RND12);
172	R2.L = R6 + R2 (RND12);
173	R3.L = R6 + R3 (RND12);
174	R4.L = R6 + R4 (RND12);
175	R5.L = R6 + R5 (RND12);
176	R6.L = R6 + R6 (RND12);
177	R7.L = R6 + R7 (RND12);
178	CHECKREG r0, 0x15677FFF;
179	CHECKREG r1, 0x27897FFF;
180	CHECKREG r2, 0x34447FFF;
181	CHECKREG r3, 0x46667FFF;
182	CHECKREG r4, 0x56787FFF;
183	CHECKREG r5, 0x67897FFF;
184	CHECKREG r6, 0x74A47FFF;
185	CHECKREG r7, 0x866Cb10f;
186
187	imm32 r0, 0x25678931;
188	imm32 r1, 0x2389ab14;
189	imm32 r2, 0x34445576;
190	imm32 r3, 0x46567787;
191	imm32 r4, 0x5678899b;
192	imm32 r5, 0x678dab1d;
193	imm32 r6, 0x7444b515;
194	imm32 r7, 0xb666a777;
195	R0.L = R7 + R0 (RND12);
196	R1.L = R7 + R1 (RND12);
197	R2.L = R7 + R2 (RND12);
198	R3.L = R7 + R3 (RND12);
199	R4.L = R7 + R4 (RND12);
200	R5.L = R7 + R5 (RND12);
201	R6.L = R7 + R6 (RND12);
202	R7.L = R7 + R7 (RND12);
203	CHECKREG r0, 0x25678000;
204	CHECKREG r1, 0x23898000;
205	CHECKREG r2, 0x34448000;
206	CHECKREG r3, 0x4656cbd2;
207	CHECKREG r4, 0x56787FFF;
208	CHECKREG r5, 0x678D7FFF;
209	CHECKREG r6, 0x74447FFF;
210	CHECKREG r7, 0xB6668000;
211
212	imm32 r0, 0xaa678911;
213	imm32 r1, 0x27ddab1d;
214	imm32 r2, 0x344bb515;
215	imm32 r3, 0x46667717;
216	imm32 r4, 0x56dd891b;
217	imm32 r5, 0x6789ab1d;
218	imm32 r6, 0x7444bb15;
219	imm32 r7, 0x86ff7777;
220	R6.L = R2 + R3 (RND12);
221	R1.L = R4 + R5 (RND12);
222	R5.L = R7 + R2 (RND12);
223	R3.L = R0 + R0 (RND12);
224	R0.L = R3 + R4 (RND12);
225	R2.L = R5 + R7 (RND12);
226	R7.L = R6 + R7 (RND12);
227	R4.L = R1 + R6 (RND12);
228	CHECKREG r0, 0xAA677FFF;
229	CHECKREG r1, 0x27DD7FFF;
230	CHECKREG r2, 0x344B8000;
231	CHECKREG r3, 0x46668000;
232	CHECKREG r4, 0x56DD7FFF;
233	CHECKREG r5, 0x67898000;
234	CHECKREG r6, 0x74447FFF;
235	CHECKREG r7, 0x86FFb43f;
236
237	imm32 r0, 0x95678911;
238	imm32 r1, 0x2d89ab1d;
239	imm32 r2, 0x34b45515;
240	imm32 r3, 0x46c67717;
241	imm32 r4, 0x567e891b;
242	imm32 r5, 0x678fab1d;
243	imm32 r6, 0x744e5515;
244	imm32 r7, 0x8b66a777;
245	R3.L = R4 + R0 (RND12);
246	R1.L = R6 + R3 (RND12);
247	R4.L = R3 + R2 (RND12);
248	R6.L = R7 + R1 (RND12);
249	R2.L = R5 + R4 (RND12);
250	R7.L = R2 + R7 (RND12);
251	R0.L = R1 + R6 (RND12);
252	R5.L = R0 + R5 (RND12);
253	CHECKREG r0, 0x95677fff;
254	CHECKREG r1, 0x2D897FFF;
255	CHECKREG r2, 0x34B47FFF;
256	CHECKREG r3, 0x46C68000;
257	CHECKREG r4, 0x567E7FFF;
258	CHECKREG r5, 0x678Fcf73;
259	CHECKREG r6, 0x744E8000;
260	CHECKREG r7, 0x8B668000;
261
262	pass
263