1//Original:/proj/frio/dv/testcases/core/c_dsp32alu_rl_rnd12_m/c_dsp32alu_rl_rnd12_m.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	imm32 r0, 0x85678911;
12	imm32 r1, 0x9189ab1d;
13	imm32 r2, 0xa4245515;
14	imm32 r3, 0xb6637717;
15	imm32 r4, 0xc678491b;
16	imm32 r5, 0x6789a51d;
17	imm32 r6, 0xe4445565;
18	imm32 r7, 0x86667777;
19	R0.L = R0 - R0 (RND12);
20	R1.L = R0 - R1 (RND12);
21	R2.L = R0 - R2 (RND12);
22	R3.L = R0 - R3 (RND12);
23	R4.L = R0 - R4 (RND12);
24	R5.L = R0 - R5 (RND12);
25	R6.L = R0 - R6 (RND12);
26	R7.L = R0 - R7 (RND12);
27	CHECKREG r0, 0x85670000;
28	CHECKREG r1, 0x91898000;
29	CHECKREG r2, 0xA4248000;
30	CHECKREG r3, 0xB6638000;
31	CHECKREG r4, 0xC6788000;
32	CHECKREG r5, 0x67898000;
33	CHECKREG r6, 0xE4448000;
34	CHECKREG r7, 0x8666F009;
35
36	imm32 r0, 0x75678921;
37	imm32 r1, 0x2789ab14;
38	imm32 r2, 0xd4745515;
39	imm32 r3, 0x4d677767;
40	imm32 r4, 0x56d8791b;
41	imm32 r5, 0x678dab1d;
42	imm32 r6, 0x74445515;
43	imm32 r7, 0x86a6d777;
44	R0.L = R1 - R0 (RND12);
45	R1.L = R1 - R1 (RND12);
46	R2.L = R1 - R2 (RND12);
47	R3.L = R1 - R3 (RND12);
48	R4.L = R1 - R4 (RND12);
49	R5.L = R1 - R5 (RND12);
50	R6.L = R1 - R6 (RND12);
51	R7.L = R1 - R7 (RND12);
52	CHECKREG r0, 0x75678000;
53	CHECKREG r1, 0x27890000;
54	CHECKREG r2, 0xD4747FFF;
55	CHECKREG r3, 0x4D678000;
56	CHECKREG r4, 0x56D88000;
57	CHECKREG r5, 0x678D8000;
58	CHECKREG r6, 0x74448000;
59	CHECKREG r7, 0x86A67fff;
60
61	imm32 r0, 0x55678911;
62	imm32 r1, 0x2689ab1d;
63	imm32 r2, 0x3d445515;
64	imm32 r3, 0x46967717;
65	imm32 r4, 0xa67a891b;
66	imm32 r5, 0x6789bb1d;
67	imm32 r6, 0x7444d515;
68	imm32 r7, 0x8666c777;
69	R0.L = R2 - R0 (RND12);
70	R1.L = R2 - R1 (RND12);
71	R2.L = R2 - R2 (RND12);
72	R3.L = R2 - R3 (RND12);
73	R4.L = R2 - R4 (RND12);
74	R5.L = R2 - R5 (RND12);
75	R6.L = R2 - R6 (RND12);
76	R7.L = R2 - R7 (RND12);
77	CHECKREG r0, 0x55678000;
78	CHECKREG r1, 0x26897fff;
79	CHECKREG r2, 0x3D440000;
80	CHECKREG r3, 0x46968000;
81	CHECKREG r4, 0xA67A7fff;
82	CHECKREG r5, 0x67898000;
83	CHECKREG r6, 0x74448000;
84	CHECKREG r7, 0x86667fff;
85
86	imm32 r0, 0xf5678911;
87	imm32 r1, 0xd789ab1d;
88	imm32 r2, 0x34445515;
89	imm32 r3, 0xe6667717;
90	imm32 r4, 0x5678891b;
91	imm32 r5, 0x6d89ab1d;
92	imm32 r6, 0x7444d515;
93	imm32 r7, 0xe6667b77;
94	R0.L = R3 - R0 (RND12);
95	R1.L = R3 - R1 (RND12);
96	R2.L = R3 - R2 (RND12);
97	R3.L = R3 - R3 (RND12);
98	R4.L = R3 - R4 (RND12);
99	R5.L = R3 - R5 (RND12);
100	R6.L = R3 - R6 (RND12);
101	R7.L = R3 - R7 (RND12);
102	CHECKREG r0, 0xF5678000;
103	CHECKREG r1, 0xD7897fff;
104	CHECKREG r2, 0x34448000;
105	CHECKREG r3, 0xE6660000;
106	CHECKREG r4, 0x56788000;
107	CHECKREG r5, 0x6D898000;
108	CHECKREG r6, 0x74448000;
109	CHECKREG r7, 0xE666FFF8;
110
111	imm32 r0, 0xa5678911;
112	imm32 r1, 0x2b89ab1d;
113	imm32 r2, 0x34c45515;
114	imm32 r3, 0x46d67717;
115	imm32 r4, 0x56e8891b;
116	imm32 r5, 0x67f9ab1d;
117	imm32 r6, 0x74445515;
118	imm32 r7, 0x86687777;
119	R0.L = R4 - R0 (RND12);
120	R1.L = R4 - R1 (RND12);
121	R2.L = R4 - R2 (RND12);
122	R3.L = R4 - R3 (RND12);
123	R4.L = R4 - R4 (RND12);
124	R5.L = R4 - R5 (RND12);
125	R6.L = R4 - R6 (RND12);
126	R7.L = R4 - R7 (RND12);
127	CHECKREG r0, 0xa5677fff;
128	CHECKREG r1, 0x2b897fff;
129	CHECKREG r2, 0x34c47fff;
130	CHECKREG r3, 0x46d67fff;
131	CHECKREG r4, 0x56E80000;
132	CHECKREG r5, 0x67F98000;
133	CHECKREG r6, 0x74448000;
134	CHECKREG r7, 0x86687fff;
135
136	imm32 r0, 0xe5678911;
137	imm32 r1, 0x2789ab1d;
138	imm32 r2, 0x34445515;
139	imm32 r3, 0xd6667717;
140	imm32 r4, 0x5ff8891b;
141	imm32 r5, 0x6789ab1d;
142	imm32 r6, 0x744e5515;
143	imm32 r7, 0x8666a7b7;
144	R0.L = R5 - R0 (RND12);
145	R1.L = R5 - R1 (RND12);
146	R2.L = R5 - R2 (RND12);
147	R3.L = R5 - R3 (RND12);
148	R4.L = R5 - R4 (RND12);
149	R5.L = R5 - R5 (RND12);
150	R6.L = R5 - R6 (RND12);
151	R7.L = R5 - R7 (RND12);
152	CHECKREG r0, 0xE5677fff;
153	CHECKREG r1, 0x27897fff;
154	CHECKREG r2, 0x34447fff;
155	CHECKREG r3, 0xD6667fff;
156	CHECKREG r4, 0x5FF87912;
157	CHECKREG r5, 0x67890000;
158	CHECKREG r6, 0x744E8000;
159	CHECKREG r7, 0x86667fff;
160
161	imm32 r0, 0x15678911;
162	imm32 r1, 0x2789ae1d;
163	imm32 r2, 0x344455e5;
164	imm32 r3, 0x4666771d;
165	imm32 r4, 0x5678891b;
166	imm32 r5, 0x6789abdd;
167	imm32 r6, 0x74a45515;
168	imm32 r7, 0x866c77b7;
169	R0.L = R6 - R0 (RND12);
170	R1.L = R6 - R1 (RND12);
171	R2.L = R6 - R2 (RND12);
172	R3.L = R6 - R3 (RND12);
173	R4.L = R6 - R4 (RND12);
174	R5.L = R6 - R5 (RND12);
175	R6.L = R6 - R6 (RND12);
176	R7.L = R6 - R7 (RND12);
177	CHECKREG r0, 0x15677fff;
178	CHECKREG r1, 0x27897fff;
179	CHECKREG r2, 0x34447fff;
180	CHECKREG r3, 0x46667fff;
181	CHECKREG r4, 0x56787fff;
182	CHECKREG r5, 0x67897fff;
183	CHECKREG r6, 0x74A40000;
184	CHECKREG r7, 0x866C7fff;
185
186	imm32 r0, 0x25678911;
187	imm32 r1, 0x2389ab1d;
188	imm32 r2, 0x34445515;
189	imm32 r3, 0x46567717;
190	imm32 r4, 0x5678891b;
191	imm32 r5, 0x678dab1d;
192	imm32 r6, 0x7444b515;
193	imm32 r7, 0xb666a777;
194	R0.L = R7 - R0 (RND12);
195	R1.L = R7 - R1 (RND12);
196	R2.L = R7 - R2 (RND12);
197	R3.L = R7 - R3 (RND12);
198	R4.L = R7 - R4 (RND12);
199	R5.L = R7 - R5 (RND12);
200	R6.L = R7 - R6 (RND12);
201	R7.L = R7 - R7 (RND12);
202	CHECKREG r0, 0x25678000;
203	CHECKREG r1, 0x23898000;
204	CHECKREG r2, 0x34448000;
205	CHECKREG r3, 0x46568000;
206	CHECKREG r4, 0x56788000;
207	CHECKREG r5, 0x678D8000;
208	CHECKREG r6, 0x74448000;
209	CHECKREG r7, 0xB6660000;
210
211	imm32 r0, 0xaa678911;
212	imm32 r1, 0x27ddab1d;
213	imm32 r2, 0x344bb515;
214	imm32 r3, 0x46667717;
215	imm32 r4, 0x56dd891b;
216	imm32 r5, 0x6789ab1d;
217	imm32 r6, 0x7444bb15;
218	imm32 r7, 0x86ff7777;
219	R6.L = R2 - R3 (RND12);
220	R1.L = R4 - R5 (RND12);
221	R5.L = R7 - R2 (RND12);
222	R3.L = R0 - R0 (RND12);
223	R0.L = R3 - R4 (RND12);
224	R2.L = R5 - R7 (RND12);
225	R7.L = R6 - R7 (RND12);
226	R4.L = R1 - R6 (RND12);
227	CHECKREG r0, 0xAA678000;
228	CHECKREG r1, 0x27DD8000;
229	CHECKREG r2, 0x344B7fff;
230	CHECKREG r3, 0x46660000;
231	CHECKREG r4, 0x56DD8000;
232	CHECKREG r5, 0x67898000;
233	CHECKREG r6, 0x74448000;
234	CHECKREG r7, 0x86FF7fff;
235
236	imm32 r0, 0x95678911;
237	imm32 r1, 0x2d89ab1d;
238	imm32 r2, 0x34b45515;
239	imm32 r3, 0x46c67717;
240	imm32 r4, 0x567e891b;
241	imm32 r5, 0x678fab1d;
242	imm32 r6, 0x744e5515;
243	imm32 r7, 0x8b66a777;
244	R3.L = R4 - R0 (RND12);
245	R1.L = R6 - R3 (RND12);
246	R4.L = R3 - R2 (RND12);
247	R6.L = R7 - R1 (RND12);
248	R2.L = R5 - R4 (RND12);
249	R7.L = R2 - R7 (RND12);
250	R0.L = R1 - R6 (RND12);
251	R5.L = R0 - R5 (RND12);
252	CHECKREG r0, 0x95678000;
253	CHECKREG r1, 0x2D897fff;
254	CHECKREG r2, 0x34B47fff;
255	CHECKREG r3, 0x46C67fff;
256	CHECKREG r4, 0x567E7fff;
257	CHECKREG r5, 0x678F8000;
258	CHECKREG r6, 0x744E8000;
259	CHECKREG r7, 0x8B667FFF;
260
261	pass
262