s21.s revision 1.1 1 1.1 christos // Test A0 = ROT (A0 by imm6);
2 1.1 christos # mach: bfin
3 1.1 christos
4 1.1 christos .include "testutils.inc"
5 1.1 christos start
6 1.1 christos
7 1.1 christos init_r_regs 0;
8 1.1 christos ASTAT = R0;
9 1.1 christos A0 = A1 = 0;
10 1.1 christos
11 1.1 christos // rot
12 1.1 christos // left by 1
13 1.1 christos // 00 8000 0001 -> 01 0000 0002 cc=0
14 1.1 christos R0.L = 0x0001;
15 1.1 christos R0.H = 0x8000;
16 1.1 christos R7 = 0;
17 1.1 christos CC = R7;
18 1.1 christos A1 = A0 = 0;
19 1.1 christos A0.w = R0;
20 1.1 christos A0 = ROT A0 BY 1;
21 1.1 christos R1 = A0.w;
22 1.1 christos DBGA ( R1.L , 0x0002 );
23 1.1 christos DBGA ( R1.H , 0x0000 );
24 1.1 christos R1.L = A0.x;
25 1.1 christos DBGA ( R1.L , 0x0001 );
26 1.1 christos R7 = CC;
27 1.1 christos DBGA ( R7.L , 0x0000 );
28 1.1 christos
29 1.1 christos // rot
30 1.1 christos // left by 1
31 1.1 christos // 80 0000 0001 -> 00 0000 0002 cc=1
32 1.1 christos R7 = 0;
33 1.1 christos CC = R7;
34 1.1 christos R0.L = 0x0001;
35 1.1 christos R0.H = 0x0000;
36 1.1 christos R1.L = 0x0080;
37 1.1 christos A1 = A0 = 0;
38 1.1 christos A0.w = R0;
39 1.1 christos A0.x = R1.L;
40 1.1 christos A0 = ROT A0 BY 1;
41 1.1 christos R1 = A0.w;
42 1.1 christos DBGA ( R1.L , 0x0002 );
43 1.1 christos DBGA ( R1.H , 0x0000 );
44 1.1 christos R1.L = A0.x;
45 1.1 christos DBGA ( R1.L , 0x0000 );
46 1.1 christos R7 = CC;
47 1.1 christos DBGA ( R7.L , 0x0001 );
48 1.1 christos
49 1.1 christos // rot
50 1.1 christos // left by 1 with cc=1
51 1.1 christos // 80 8000 0001 -> 01 0000 0003 cc=1
52 1.1 christos R7 = 1;
53 1.1 christos CC = R7;
54 1.1 christos R0.L = 0x0001;
55 1.1 christos R0.H = 0x8000;
56 1.1 christos R1.L = 0x0080;
57 1.1 christos A1 = A0 = 0;
58 1.1 christos A0.w = R0;
59 1.1 christos A0.x = R1.L;
60 1.1 christos A0 = ROT A0 BY 1;
61 1.1 christos R1 = A0.w;
62 1.1 christos DBGA ( R1.L , 0x0003 );
63 1.1 christos DBGA ( R1.H , 0x0000 );
64 1.1 christos R1.L = A0.x;
65 1.1 christos DBGA ( R1.L , 0x0001 );
66 1.1 christos R7 = CC;
67 1.1 christos DBGA ( R7.L , 0x0001 );
68 1.1 christos
69 1.1 christos // rot
70 1.1 christos // left by 2 with cc=1
71 1.1 christos // 80 0000 0001 -> 00 0000 0007 cc=0
72 1.1 christos R7 = 1;
73 1.1 christos CC = R7;
74 1.1 christos R0.L = 0x0001;
75 1.1 christos R0.H = 0x0000;
76 1.1 christos R1.L = 0x0080;
77 1.1 christos A1 = A0 = 0;
78 1.1 christos A0.w = R0;
79 1.1 christos A0.x = R1.L;
80 1.1 christos A0 = ROT A0 BY 2;
81 1.1 christos R1 = A0.w;
82 1.1 christos DBGA ( R1.L , 0x0007 );
83 1.1 christos DBGA ( R1.H , 0x0000 );
84 1.1 christos R1.L = A0.x;
85 1.1 christos DBGA ( R1.L , 0x0000 );
86 1.1 christos R7 = CC;
87 1.1 christos DBGA ( R7.L , 0x0000 );
88 1.1 christos
89 1.1 christos // rot
90 1.1 christos // left by 3 with cc=0
91 1.1 christos R7 = 0;
92 1.1 christos CC = R7;
93 1.1 christos R0.L = 0x0001;
94 1.1 christos R0.H = 0x0000;
95 1.1 christos R1.L = 0x0080;
96 1.1 christos A1 = A0 = 0;
97 1.1 christos A0.w = R0;
98 1.1 christos A0.x = R1.L;
99 1.1 christos A0 = ROT A0 BY 3;
100 1.1 christos R1 = A0.w;
101 1.1 christos DBGA ( R1.L , 0x000a );
102 1.1 christos DBGA ( R1.H , 0x0000 );
103 1.1 christos R1.L = A0.x;
104 1.1 christos DBGA ( R1.L , 0x0000 );
105 1.1 christos R7 = CC;
106 1.1 christos DBGA ( R7.L , 0x0000 );
107 1.1 christos
108 1.1 christos // rot
109 1.1 christos // left by largest positive magnitude of 31
110 1.1 christos // 80 0000 0001 -> 00 a000 0000 cc=0
111 1.1 christos R7 = 0;
112 1.1 christos CC = R7;
113 1.1 christos R0.L = 0x0001;
114 1.1 christos R0.H = 0x0000;
115 1.1 christos R1.L = 0x0080;
116 1.1 christos A1 = A0 = 0;
117 1.1 christos A0.w = R0;
118 1.1 christos A0.x = R1.L;
119 1.1 christos A0 = ROT A0 BY 31;
120 1.1 christos R1 = A0.w;
121 1.1 christos DBGA ( R1.L , 0x0000 );
122 1.1 christos DBGA ( R1.H , 0xa000 );
123 1.1 christos R1.L = A0.x;
124 1.1 christos DBGA ( R1.L , 0x0000 );
125 1.1 christos R7 = CC;
126 1.1 christos DBGA ( R7.L , 0x0000 );
127 1.1 christos
128 1.1 christos // rot
129 1.1 christos // right by 1
130 1.1 christos // 80 0000 0001 -> 40 0000 0000 cc=1
131 1.1 christos R7 = 0;
132 1.1 christos CC = R7;
133 1.1 christos R0.L = 0x0001;
134 1.1 christos R0.H = 0x0000;
135 1.1 christos R1.L = 0x0080;
136 1.1 christos A1 = A0 = 0;
137 1.1 christos A0.w = R0;
138 1.1 christos A0.x = R1.L;
139 1.1 christos A0 = ROT A0 BY -1;
140 1.1 christos R1 = A0.w;
141 1.1 christos DBGA ( R1.L , 0x0000 );
142 1.1 christos DBGA ( R1.H , 0x0000 );
143 1.1 christos R1.L = A0.x;
144 1.1 christos DBGA ( R1.L , 0x0040 );
145 1.1 christos R7 = CC;
146 1.1 christos DBGA ( R7.L , 0x0001 );
147 1.1 christos
148 1.1 christos // rot
149 1.1 christos // right by 1
150 1.1 christos // 80 0000 0001 -> c0 0000 0000 cc=1
151 1.1 christos R7 = 1;
152 1.1 christos CC = R7;
153 1.1 christos R0.L = 0x0001;
154 1.1 christos R0.H = 0x0000;
155 1.1 christos R1.L = 0x0080;
156 1.1 christos A1 = A0 = 0;
157 1.1 christos A0.w = R0;
158 1.1 christos A0.x = R1.L;
159 1.1 christos A0 = ROT A0 BY -1;
160 1.1 christos R1 = A0.w;
161 1.1 christos DBGA ( R1.L , 0x0000 );
162 1.1 christos DBGA ( R1.H , 0x0000 );
163 1.1 christos R1.L = A0.x;
164 1.1 christos DBGA ( R1.L , 0xffc0 );
165 1.1 christos R7 = CC;
166 1.1 christos DBGA ( R7.L , 0x0001 );
167 1.1 christos
168 1.1 christos // rot
169 1.1 christos // right by 2
170 1.1 christos // 80 0000 0001 -> e0 0000 0000 cc=0
171 1.1 christos R7 = 1;
172 1.1 christos CC = R7;
173 1.1 christos R0.L = 0x0001;
174 1.1 christos R0.H = 0x0000;
175 1.1 christos R1.L = 0x0080;
176 1.1 christos A1 = A0 = 0;
177 1.1 christos A0.w = R0;
178 1.1 christos A0.x = R1.L;
179 1.1 christos A0 = ROT A0 BY -2;
180 1.1 christos R1 = A0.w;
181 1.1 christos DBGA ( R1.L , 0x0000 );
182 1.1 christos DBGA ( R1.H , 0x0000 );
183 1.1 christos R1.L = A0.x;
184 1.1 christos DBGA ( R1.L , 0xffe0 );
185 1.1 christos R7 = CC;
186 1.1 christos DBGA ( R7.L , 0x0000 );
187 1.1 christos
188 1.1 christos // rot
189 1.1 christos // right by 9
190 1.1 christos // 80 0000 0001 -> 01 c000 0000 cc=0
191 1.1 christos R7 = 1;
192 1.1 christos CC = R7;
193 1.1 christos R0.L = 0x0001;
194 1.1 christos R0.H = 0x0000;
195 1.1 christos R1.L = 0x0080;
196 1.1 christos A1 = A0 = 0;
197 1.1 christos A0.w = R0;
198 1.1 christos A0.x = R1.L;
199 1.1 christos A0 = ROT A0 BY -9;
200 1.1 christos R1 = A0.w;
201 1.1 christos DBGA ( R1.L , 0x0000 );
202 1.1 christos DBGA ( R1.H , 0xc000 );
203 1.1 christos R1.L = A0.x;
204 1.1 christos DBGA ( R1.L , 0x0001 );
205 1.1 christos R7 = CC;
206 1.1 christos DBGA ( R7.L , 0x0000 );
207 1.1 christos
208 1.1 christos // rot
209 1.1 christos // right by 9 with reg
210 1.1 christos // 80 0000 0001 -> 01 c000 0000 cc=0
211 1.1 christos R7 = 1;
212 1.1 christos CC = R7;
213 1.1 christos R0.L = 0x0001;
214 1.1 christos R0.H = 0x0000;
215 1.1 christos R1.L = 0x0080;
216 1.1 christos A1 = A0 = 0;
217 1.1 christos A0.w = R0;
218 1.1 christos A0.x = R1.L;
219 1.1 christos R5 = -9;
220 1.1 christos A0 = ROT A0 BY R5.L;
221 1.1 christos R1 = A0.w;
222 1.1 christos DBGA ( R1.L , 0x0000 );
223 1.1 christos DBGA ( R1.H , 0xc000 );
224 1.1 christos R1.L = A0.x;
225 1.1 christos DBGA ( R1.L , 0x0001 );
226 1.1 christos R7 = CC;
227 1.1 christos DBGA ( R7.L , 0x0000 );
228 1.1 christos
229 1.1 christos // rot left by 4 with cc=1
230 1.1 christos R0.L = 0x789a;
231 1.1 christos R0.H = 0x3456;
232 1.1 christos A0.w = R0;
233 1.1 christos R0.L = 0x12;
234 1.1 christos A0.x = R0;
235 1.1 christos
236 1.1 christos R0 = 1;
237 1.1 christos CC = R0;
238 1.1 christos
239 1.1 christos A0 = ROT A0 BY 4;
240 1.1 christos
241 1.1 christos R4 = A0.w;
242 1.1 christos R5 = A0.x;
243 1.1 christos DBGA ( R4.H , 0x4567 ); DBGA ( R4.L , 0x89a8 );
244 1.1 christos DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0023 );
245 1.1 christos
246 1.1 christos // rot left by 28 with cc=1
247 1.1 christos R0.L = 0x789a;
248 1.1 christos R0.H = 0x3456;
249 1.1 christos A0.w = R0;
250 1.1 christos R0.L = 0x12;
251 1.1 christos A0.x = R0;
252 1.1 christos
253 1.1 christos R0 = 1;
254 1.1 christos CC = R0;
255 1.1 christos
256 1.1 christos A0 = ROT A0 BY 28;
257 1.1 christos
258 1.1 christos R4 = A0.w;
259 1.1 christos R5 = A0.x;
260 1.1 christos DBGA ( R4.H , 0xa891 ); DBGA ( R4.L , 0xa2b3 );
261 1.1 christos DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xff89 );
262 1.1 christos
263 1.1 christos // rot right by 4 with cc=1
264 1.1 christos R0.L = 0x789a;
265 1.1 christos R0.H = 0x3456;
266 1.1 christos A0.w = R0;
267 1.1 christos R0.L = 0x12;
268 1.1 christos A0.x = R0;
269 1.1 christos
270 1.1 christos R0 = 1;
271 1.1 christos CC = R0;
272 1.1 christos
273 1.1 christos A0 = ROT A0 BY -4;
274 1.1 christos
275 1.1 christos R4 = A0.w;
276 1.1 christos R5 = A0.x;
277 1.1 christos DBGA ( R4.H , 0x2345 ); DBGA ( R4.L , 0x6789 );
278 1.1 christos DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0051 );
279 1.1 christos
280 1.1 christos // rot right by 8 with cc=1
281 1.1 christos R0.L = 0x789a;
282 1.1 christos R0.H = 0x3456;
283 1.1 christos A0.w = R0;
284 1.1 christos R0.L = 0x12;
285 1.1 christos A0.x = R0;
286 1.1 christos
287 1.1 christos R0 = 1;
288 1.1 christos CC = R0;
289 1.1 christos
290 1.1 christos A0 = ROT A0 BY -28;
291 1.1 christos
292 1.1 christos R4 = A0.w;
293 1.1 christos R5 = A0.x;
294 1.1 christos DBGA ( R4.H , 0xcf13 ); DBGA ( R4.L , 0x5123 );
295 1.1 christos DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xff8a );
296 1.1 christos
297 1.1 christos pass
298