1//  Test  rl3 = ashift (rh0 by r5;
2//  Test  rl3 = lshift (rh0 by r5);
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8	init_r_regs 0;
9
10	R0 = 0;
11	ASTAT = R0;
12	R0.L = 0x1;
13	R0.H = 0x1;
14	R5.L = 4;
15	R7.L = ASHIFT R0.L BY R5.L;
16	DBGA ( R7.L , 0x0010 );
17	DBGA ( R7.H , 0x0000 );
18	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
19	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
20	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
21	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
22	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
23
24	R0 = 0;
25	ASTAT = R0;
26	R0.L = 0x8000;
27	R0.H = 0x1;
28	R5.L = -4;
29	R5.H = 0;
30	R7.L = ASHIFT R0.L BY R5.L;
31	DBGA ( R7.L , 0xf800 );
32	DBGA ( R7.H , 0x0000 );
33	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
34	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
35	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
36	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
37	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
38
39	R0 = 0;
40	ASTAT = R0;
41	R0.L = 0x0;
42	R0.H = 0x1;
43	R5.L = 0;
44	R5.H = 0;
45	R7.L = ASHIFT R0.L BY R5.L;
46	DBGA ( R7.L , 0x0000 );
47	DBGA ( R7.H , 0x0000 );
48	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
49	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
50	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
51	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
52	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
53
54	R0 = 0;
55	ASTAT = R0;
56	R7 = 0;
57	R0.L = 0x1;
58	R0.H = 0x8000;
59	R5.L = -4;
60	R5.H = 0;
61	R7.H = ASHIFT R0.H BY R5.L;
62	DBGA ( R7.L , 0x0000 );
63	DBGA ( R7.H , 0xf800 );
64	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
65	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
66	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
67	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
68	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
69
70	R0 = 0;
71	ASTAT = R0;
72	R7 = 0;
73	R0.L = 0x1;
74	R0.H = 0x8000;
75	R5.L = -4;
76	R5.H = 0;
77	R7.L = ASHIFT R0.H BY R5.L;
78	DBGA ( R7.L , 0xf800 );
79	DBGA ( R7.H , 0x0000 );
80	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
81	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
82	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
83	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
84	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
85
86	R0 = 0;
87	ASTAT = R0;
88	R7 = 0;
89	R0.L = 0x1;
90	R0.H = 0xffff;
91	R5.L = 31;	// should accept   mag of +31
92	R5.H = 0;
93	R7.L = ASHIFT R0.H BY R5.L;
94	DBGA ( R7.L , 0x0000 );
95	DBGA ( R7.H , 0x0000 );
96	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
97	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
98	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
99	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
100	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
101
102	R0 = 0;
103	ASTAT = R0;
104	R7 = 0;
105	R0.L = 0x1;
106	R0.H = 0x0100;
107	R5.L = 63;	//  mag of 63 will appear as -1 since 6 bits are masked
108	R5.H = 0;
109	R7.L = ASHIFT R0.H BY R5.L;
110	DBGA ( R7.L , 0x0080 );
111	DBGA ( R7.H , 0x0000 );
112	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
113	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
114	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
115	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
116	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
117
118// logic shifts
119	R0 = 0;
120	ASTAT = R0;
121	R7 = 0;
122	R0.L = 0x1;
123	R0.H = 0x8000;
124	R5.L = -4;
125	R5.H = 0;
126	R7.L = LSHIFT R0.H BY R5.L;
127	DBGA ( R7.L , 0x0800 );
128	DBGA ( R7.H , 0x0000 );
129	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
130	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
131	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
132	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
133	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
134
135	R0 = 0;
136	ASTAT = R0;
137	R7 = 0;
138	R0.L = 0x1;
139	R0.H = 0x1;
140	R5.L = 4;
141	R5.H = 0;
142	R7.H = LSHIFT R0.L BY R5.L;
143	DBGA ( R7.L , 0x0000 );
144	DBGA ( R7.H , 0x0010 );
145	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
146	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
147	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
148	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
149	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
150
151	R0 = 0;
152	ASTAT = R0;
153	R7 = 1;
154	R0.L = 0x0;
155	R0.H = 0x0;
156	R5.L = 0;
157	R5.H = 0;
158	R7.L = LSHIFT R0.L BY R5.L;
159	DBGA ( R7.L , 0x0000 );
160	DBGA ( R7.H , 0x0000 );
161	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
162	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
163	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
164	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
165	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
166
167	R0 = 0;
168	ASTAT = R0;
169	R7 = 1;
170	R0.L = 0x1;
171	R0.H = 0x0;
172	R5.L = 15;
173	R5.H = 0;
174	R7.L = LSHIFT R0.L BY R5.L;
175	DBGA ( R7.L , 0x8000 );
176	DBGA ( R7.H , 0x0000 );
177	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
178	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
179	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
180	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
181	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
182
183	R0 = 0;
184	ASTAT = R0;
185	R7 = 1;
186	R0.L = 0x0100;
187	R0.H = 0x0;
188	R5.L = 63;	//  mag of 63 will appear as -1 since 6 bits are masked
189	R5.H = 0;
190	R7.L = LSHIFT R0.L BY R5.L;
191	DBGA ( R7.L , 0x0080 );
192	DBGA ( R7.H , 0x0000 );
193	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
194	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
195	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
196	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
197	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
198
199	R0 = 0;
200	ASTAT = R0;
201	R7 = 1;
202	R0.L = 0x0100;
203	R0.H = 0x0;
204	R5.L = 31;	// should accept   mag of +31
205	R5.H = 0;
206	R7.L = LSHIFT R0.L BY R5.L;
207	DBGA ( R7.L , 0x0000 );
208	DBGA ( R7.H , 0x0000 );
209	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
210	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
211	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
212	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
213	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
214
215	pass
216