1//Original:/proj/frio/dv/testcases/core/c_dsp32alu_rh_rnd12_p/c_dsp32alu_rh_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, 0x45678911;
13	imm32 r1, 0x2789ab1d;
14	imm32 r2, 0xf4445515;
15	imm32 r3, 0x46667717;
16	imm32 r4, 0xe678891b;
17	imm32 r5, 0x6f89ab1d;
18	imm32 r6, 0x7444d515;
19	imm32 r7, 0x8666b777;
20	R0.H = R0 + R0 (RND12);
21	R1.H = R0 + R1 (RND12);
22	R2.H = R0 + R2 (RND12);
23	R3.H = R0 + R3 (RND12);
24	R4.H = R0 + R4 (RND12);
25	R5.H = R0 + R5 (RND12);
26	R6.H = R0 + R6 (RND12);
27	R7.H = R0 + R7 (RND12);
28	CHECKREG r0, 0x7FFF8911;
29	CHECKREG r1, 0x7fffAB1D;
30	CHECKREG r2, 0x7fff5515;
31	CHECKREG r3, 0x7fff7717;
32	CHECKREG r4, 0x7fff891B;
33	CHECKREG r5, 0x7fffAB1D;
34	CHECKREG r6, 0x7fffD515;
35	CHECKREG r7, 0x6664B777;
36
37	imm32 r0, 0xd5678911;
38	imm32 r1, 0x2789ab1d;
39	imm32 r2, 0xa4445515;
40	imm32 r3, 0x46667717;
41	imm32 r4, 0x5b78891b;
42	imm32 r5, 0x6789ab1d;
43	imm32 r6, 0x74e45515;
44	imm32 r7, 0x86a6b777;
45	R0.H = R1 + R0 (RND12);
46	R1.H = R1 + R1 (RND12);
47	R2.H = R1 + R2 (RND12);
48	R3.H = R1 + R3 (RND12);
49	R4.H = R1 + R4 (RND12);
50	R5.H = R1 + R5 (RND12);
51	R6.H = R1 + R6 (RND12);
52	R7.H = R1 + R7 (RND12);
53	CHECKREG r0, 0xcf138911;
54	CHECKREG r1, 0x7FFFAB1D;
55	CHECKREG r2, 0x7fff5515;
56	CHECKREG r3, 0x7fff7717;
57	CHECKREG r4, 0x7fff891B;
58	CHECKREG r5, 0x7fffAB1D;
59	CHECKREG r6, 0x7fff5515;
60	CHECKREG r7, 0x6A66B777;
61
62	imm32 r0, 0xa5678911;
63	imm32 r1, 0x2789ab1d;
64	imm32 r2, 0xb4445515;
65	imm32 r3, 0x46667717;
66	imm32 r4, 0xd678891b;
67	imm32 r5, 0x6e89ab1d;
68	imm32 r6, 0x74445515;
69	imm32 r7, 0x86967777;
70	R0.H = R2 + R0 (RND12);
71	R1.H = R2 + R1 (RND12);
72	R2.H = R2 + R2 (RND12);
73	R3.H = R2 + R3 (RND12);
74	R4.H = R2 + R4 (RND12);
75	R5.H = R2 + R5 (RND12);
76	R6.H = R2 + R6 (RND12);
77	R7.H = R2 + R7 (RND12);
78	CHECKREG r4, 0x8000891B;
79	CHECKREG r5, 0x8000AB1D;
80	CHECKREG r6, 0x80005515;
81	CHECKREG r7, 0x80007777;
82	CHECKREG r4, 0x8000891B;
83	CHECKREG r5, 0x8000AB1D;
84	CHECKREG r6, 0x80005515;
85	CHECKREG r7, 0x80007777;
86
87	imm32 r0, 0x35678911;
88	imm32 r1, 0x2789ab1d;
89	imm32 r2, 0xd4445515;
90	imm32 r3, 0x46667717;
91	imm32 r4, 0x5678891b;
92	imm32 r5, 0xeab9ab1d;
93	imm32 r6, 0x744e5515;
94	imm32 r7, 0x866e777f;
95	R0.H = R3 + R0 (RND12);
96	R1.H = R3 + R1 (RND12);
97	R2.H = R3 + R2 (RND12);
98	R3.H = R3 + R3 (RND12);
99	R4.H = R3 + R4 (RND12);
100	R5.H = R3 + R5 (RND12);
101	R6.H = R3 + R6 (RND12);
102	R7.H = R3 + R7 (RND12);
103	CHECKREG r0, 0x7FFF8911;
104	CHECKREG r1, 0x7FFFAB1D;
105	CHECKREG r2, 0x7FFF5515;
106	CHECKREG r3, 0x7FFF7717;
107	CHECKREG r4, 0x7fff891B;
108	CHECKREG r5, 0x7fffAB1D;
109	CHECKREG r6, 0x7fff5515;
110	CHECKREG r7, 0x66df777F;
111
112	imm32 r0, 0xe5678911;
113	imm32 r1, 0x2789ab1d;
114	imm32 r2, 0x34e45515;
115	imm32 r3, 0xd6667717;
116	imm32 r4, 0x5675891b;
117	imm32 r5, 0x6789ab1d;
118	imm32 r6, 0xa4465515;
119	imm32 r7, 0x8b66e777;
120	R0.H = R4 + R0 (RND12);
121	R1.H = R4 + R1 (RND12);
122	R2.H = R4 + R2 (RND12);
123	R3.H = R4 + R3 (RND12);
124	R4.H = R4 + R4 (RND12);
125	R5.H = R4 + R5 (RND12);
126	R6.H = R4 + R6 (RND12);
127	R7.H = R4 + R7 (RND12);
128	CHECKREG r0, 0x7FFF8911;
129	CHECKREG r1, 0x7FFFAB1D;
130	CHECKREG r2, 0x7FFF5515;
131	CHECKREG r3, 0x7FFF7717;
132	CHECKREG r4, 0x7FFF891B;
133	CHECKREG r5, 0x7fffAB1D;
134	CHECKREG r6, 0x7fff5515;
135	CHECKREG r7, 0x7fffE777;
136
137	imm32 r0, 0x35678111;
138	imm32 r1, 0x2789a21d;
139	imm32 r2, 0x3e445535;
140	imm32 r3, 0x46667757;
141	imm32 r4, 0xe6f8891b;
142	imm32 r5, 0x6789db7d;
143	imm32 r6, 0xf44a5595;
144	imm32 r7, 0x866b7770;
145	R0.H = R5 + R0 (RND12);
146	R1.H = R5 + R1 (RND12);
147	R2.H = R5 + R2 (RND12);
148	R3.H = R5 + R3 (RND12);
149	R4.H = R5 + R4 (RND12);
150	R5.H = R5 + R5 (RND12);
151	R6.H = R5 + R6 (RND12);
152	R7.H = R5 + R7 (RND12);
153	CHECKREG r0, 0x7FFF8111;
154	CHECKREG r1, 0x7FFFA21D;
155	CHECKREG r2, 0x7fff5535;
156	CHECKREG r3, 0x7FFF7757;
157	CHECKREG r4, 0x7FFF891B;
158	CHECKREG r5, 0x7FFFDB7D;
159	CHECKREG r6, 0x7fff5595;
160	CHECKREG r7, 0x66b57770;
161
162	imm32 r0, 0xb5678911;
163	imm32 r1, 0xc789ab1d;
164	imm32 r2, 0x3ab45515;
165	imm32 r3, 0x466b7717;
166	imm32 r4, 0x4678e91b;
167	imm32 r5, 0x6789af1d;
168	imm32 r6, 0xf4445515;
169	imm32 r7, 0x86e6f777;
170	R0.H = R6 + R0 (RND12);
171	R1.H = R6 + R1 (RND12);
172	R2.H = R6 + R2 (RND12);
173	R3.H = R6 + R3 (RND12);
174	R4.H = R6 + R4 (RND12);
175	R5.H = R6 + R5 (RND12);
176	R6.H = R6 + R6 (RND12);
177	R7.H = R6 + R7 (RND12);
178	CHECKREG r0, 0x80008911;
179	CHECKREG r1, 0x8000AB1D;
180	CHECKREG r2, 0x7fff5515;
181	CHECKREG r3, 0x7FFF7717;
182	CHECKREG r4, 0x7FFFE91B;
183	CHECKREG r5, 0x7FFFAF1D;
184	CHECKREG r6, 0x80005515;
185	CHECKREG r7, 0x8000F777;
186
187	imm32 r0, 0xab678021;
188	imm32 r1, 0x2c89a33d;
189	imm32 r2, 0x34d45575;
190	imm32 r3, 0x466e7797;
191	imm32 r4, 0x567f89fb;
192	imm32 r5, 0x6789abdd;
193	imm32 r6, 0x744e5515;
194	imm32 r7, 0x8666ab87;
195	R0.H = R7 + R0 (RND12);
196	R1.H = R7 + R1 (RND12);
197	R2.H = R7 + R2 (RND12);
198	R3.H = R7 + R3 (RND12);
199	R4.H = R7 + R4 (RND12);
200	R5.H = R7 + R5 (RND12);
201	R6.H = R7 + R6 (RND12);
202	R7.H = R7 + R7 (RND12);
203	CHECKREG r0, 0x80008021;
204	CHECKREG r1, 0x8000A33D;
205	CHECKREG r2, 0x80005575;
206	CHECKREG r3, 0x80007797;
207	CHECKREG r4, 0x800089FB;
208	CHECKREG r5, 0x8000ABDD;
209	CHECKREG r6, 0xab505515;
210	CHECKREG r7, 0x8000AB87;
211
212	imm32 r0, 0x15678901;
213	imm32 r1, 0x2789ab2d;
214	imm32 r2, 0x34445535;
215	imm32 r3, 0x46667747;
216	imm32 r4, 0x56788915;
217	imm32 r5, 0x6789ab6d;
218	imm32 r6, 0x74445518;
219	imm32 r7, 0x86667797;
220	R6.H = R2 + R3 (RND12);
221	R1.H = R4 + R5 (RND12);
222	R5.H = R7 + R2 (RND12);
223	R3.H = R0 + R0 (RND12);
224	R0.H = R3 + R4 (RND12);
225	R2.H = R5 + R7 (RND12);
226	R7.H = R6 + R7 (RND12);
227	R4.H = R1 + R6 (RND12);
228	CHECKREG r0, 0x7fff8901;
229	CHECKREG r1, 0x7FFFAB2D;
230	CHECKREG r2, 0x80005535;
231	CHECKREG r3, 0x7FFF7747;
232	CHECKREG r4, 0x7fff8915;
233	CHECKREG r5, 0x8000AB6D;
234	CHECKREG r6, 0x7FFF5518;
235	CHECKREG r7, 0x665D7797;
236
237	imm32 r0, 0x35678911;
238	imm32 r1, 0x2489ab1d;
239	imm32 r2, 0x34545565;
240	imm32 r3, 0x4d6677b7;
241	imm32 r4, 0x567889db;
242	imm32 r5, 0x67beab1d;
243	imm32 r6, 0x7b445595;
244	imm32 r7, 0x86d6e707;
245	R3.H = R4 + R0 (RND12);
246	R1.H = R6 + R3 (RND12);
247	R4.H = R3 + R2 (RND12);
248	R6.H = R7 + R1 (RND12);
249	R2.H = R5 + R4 (RND12);
250	R7.H = R2 + R7 (RND12);
251	R0.H = R1 + R6 (RND12);
252	R5.H = R0 + R5 (RND12);
253	CHECKREG r0, 0x7fff8911;
254	CHECKREG r1, 0x7fffAB1D;
255	CHECKREG r2, 0x7FFF5565;
256	CHECKREG r3, 0x7FFF77B7;
257	CHECKREG r4, 0x7fff89DB;
258	CHECKREG r5, 0x7FFFAB1D;
259	CHECKREG r6, 0x6d695595;
260	CHECKREG r7, 0x6D64E707;
261
262	pass
263