1 // reg-based SHIFT test program.
2 // Test r4 = ASHIFT (r2 by rl3);
3 // Test r4 = LSHIFT (r2 by rl3);
6 .include "testutils.inc"
15 // 8000 0001 -> 8000 0000
20 R6 = ASHIFT R0 BY R3.L;
21 DBGA ( R6.L , 0x0000 );
22 DBGA ( R6.H , 0x8000 );
23 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
24 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
25 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
26 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
27 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
31 // 8000 0001 -> 8000 0000
36 R6 = ASHIFT R0 BY R3.L;
37 DBGA ( R6.L , 0xffff );
38 DBGA ( R6.H , 0xffff );
39 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
40 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
41 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
42 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
43 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
47 // 8000 0001 -> 8000 0000
52 R6 = ASHIFT R0 BY R3.L;
53 DBGA ( R6.L , 0xFF80 );
54 DBGA ( R6.H , 0xFFFF );
55 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
56 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
57 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
58 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
59 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
63 // 8000 0001 -> 8000 0000
68 R6 = ASHIFT R0 BY R3.L;
69 DBGA ( R6.L , 0xffff );
70 DBGA ( R6.H , 0xffff );
71 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
72 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
73 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
74 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
75 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
78 // left by 63 (off scale)
79 // 8000 0001 -> 0000 0000
86 R6 = ASHIFT R0 BY R3.L;
87 DBGA ( R6.L , 0x0000 );
88 DBGA ( R6.H , 0x0000 );
89 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
90 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
91 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
92 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
93 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
96 // left by 255 looks like -1 (mask 7 bits)
97 // 8000 0001 -> 0000 0000
104 R6 = ASHIFT R0 BY R3.L;
105 DBGA ( R6.L , 0x0080 );
106 DBGA ( R6.H , 0x0000 );
107 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
108 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
109 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
110 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
111 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
115 // 8000 0001 -> 0000 0002
120 R6 = ASHIFT R0 BY R3.L;
121 DBGA ( R6.L , 0x0002 );
122 DBGA ( R6.H , 0x0000 );
123 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
124 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
125 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
126 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
127 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
131 // 8000 0001 -> 0000 0002
136 R6 = ASHIFT R0 BY R3.L;
137 DBGA ( R6.L , 0x0000 );
138 DBGA ( R6.H , 0xc000 );
139 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
140 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
141 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
142 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
143 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
147 // 8000 0001 -> ffff ffff
152 R6 = ASHIFT R0 BY R3.L;
153 DBGA ( R6.L , 0xffff );
154 DBGA ( R6.H , 0xffff );
155 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
156 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
157 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
158 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
159 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
162 // left by largest positive magnitude of 31 (0x1f)
163 // 8000 0001 -> 8000 0000
168 R6 = ASHIFT R0 BY R3.L;
169 DBGA ( R6.L , 0x0000 );
170 DBGA ( R6.H , 0x8000 );
171 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
172 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
173 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
174 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
175 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
179 // 8000 0001 -> 0000 0002
184 R6 = LSHIFT R0 BY R3.L;
185 DBGA ( R6.L , 0x0002 );
186 DBGA ( R6.H , 0x0000 );
187 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
188 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
189 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
190 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
191 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
195 // 8000 0001 -> 4000 0000
200 R6 = LSHIFT R0 BY R3.L;
201 DBGA ( R6.L , 0x0000 );
202 DBGA ( R6.H , 0x4000 );
203 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
204 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
205 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
206 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
207 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
210 // right by largest negative magnitude of -31
211 // 8000 0001 -> 0000 0001
216 R6 = LSHIFT R0 BY R3.L;
217 DBGA ( R6.L , 0x0001 );
218 DBGA ( R6.H , 0x0000 );
219 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
220 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
221 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
222 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
223 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
227 // 8000 0001 -> 0000 0001
232 R6 = LSHIFT R0 BY R3.L;
233 DBGA ( R6.L , 0x0000 );
234 DBGA ( R6.H , 0x0000 );
235 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
236 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
237 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
238 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
239 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
243 // 8000 0001 -> 0000 0001
248 R6 = LSHIFT R0 BY R3.L;
249 DBGA ( R6.L , 0x0080 );
250 DBGA ( R6.H , 0x0000 );
251 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
252 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
254 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
255 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
256 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
260 // 8000 0001 -> 0000 0002 cc=1
264 DBGA ( R6.L , 0x0002 );
265 DBGA ( R6.H , 0x0000 );
266 R7 = CC; DBGA ( R7.L , 0x0001 );
270 // 8000 0001 -> 4000 0000 cc=1
274 DBGA ( R6.L , 0x0000 );
275 DBGA ( R6.H , 0x4000 );
276 R7 = CC; DBGA ( R7.L , 0x0001 );
279 // right by largest positive magnitude of 31
280 // 8000 0001 -> a000 0000 cc=0
284 DBGA ( R6.L , 0x0000 );
285 DBGA ( R6.H , 0xa000 );
286 R7 = CC; DBGA ( R7.L , 0x0000 );
289 // right by largest positive magnitude of 31 with cc=1
290 // 8000 0001 cc=1 -> a000 0000 cc=0
294 DBGA ( R6.L , 0x0000 );
295 DBGA ( R6.H , 0xe000 );
296 R7 = CC; DBGA ( R7.L , 0x0000 );
299 // right by largest negative magnitude of -31
300 // 8000 0001 -> 0000 0005 cc=0
304 DBGA ( R6.L , 0x0005 );
305 DBGA ( R6.H , 0x0000 );
306 R7 = CC; DBGA ( R7.L , 0x0000 );
309 // right by largest negative magnitude of -31 with cc=1
310 // 8000 0001 cc=1 -> 0000 0007 cc=0
314 DBGA ( R6.L , 0x0007 );
315 DBGA ( R6.H , 0x0000 );
316 R7 = CC; DBGA ( R7.L , 0x0000 );
320 // 8000 0001 cc=1 -> 0000 00e0 cc=0
324 DBGA ( R6.L , 0x00e0 );
325 DBGA ( R6.H , 0x0000 );
326 R7 = CC; DBGA ( R7.L , 0x0000 );
329 // 8000 0001 -> 8000 000
333 DBGA ( R6.L , 0x0001 );
334 DBGA ( R6.H , 0x8000 );
335 R7 = CC; DBGA ( R7.L , 0x0001 );
342 DBGA ( R6.L , 0x0000 );
343 DBGA ( R6.H , 0x0000 );
344 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
345 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
346 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
347 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
348 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );