1# mach: bfin
2
3//  Shift test program.
4//  Test instructions
5//  RL0 = CC = BXOR (A0 AND R1) << 1;
6//  RL0 = CC = BXOR  A0 AND R1;
7//  A0 <<=1 (BXOR A0 AND A1 CC);
8//  RL3 = CC = BXOR A0 AND A1 CC;
9
10.include "testutils.inc"
11	start
12
13	init_r_regs 0;
14	ASTAT = R0;
15
16//  RL0 = CC = BXOR (A0 AND R1) << 1;
17	R0.L = 0x1000;
18	R0.H = 0x0000;
19	A0.w = R0;
20	R0.L = 0x0000;
21	A0.x = R0.L;
22	R1.L = 0xffff;
23	R1.H = 0xffff;
24	R2.L = CC = BXORSHIFT( A0 , R1 );
25	R0 = A0.w;
26	DBGA ( R0.L , 0x2000 );
27	DBGA ( R0.H , 0x0000 );
28	R0.L = A0.x;
29	DBGA ( R0.L , 0x0000 );
30	R0 = CC;
31	DBGA ( R0.L , 0x0001 );
32	DBGA ( R0.H , 0x0000 );
33	DBGA ( R2.L , 0x0001 );
34
35	R0.L = 0x1000;
36	R0.H = 0x0001;
37	A0.w = R0;
38	R0.L = 0x0000;
39	A0.x = R0.L;
40	R1.L = 0xffff;
41	R1.H = 0xffff;
42	R2.L = CC = BXORSHIFT( A0 , R1 );
43	R0 = A0.w;
44	DBGA ( R0.L , 0x2000 );
45	DBGA ( R0.H , 0x0002 );
46	R0.L = A0.x;
47	DBGA ( R0.L , 0x0000 );
48	R0 = CC;
49	DBGA ( R0.L , 0x0000 );
50	DBGA ( R0.H , 0x0000 );
51	DBGA ( R2.L , 0x0000 );
52
53	R0.L = 0xffff;
54	R0.H = 0xffff;
55	A0.w = R0;
56	R0.L = 0x00ff;
57	A0.x = R0.L;
58	R1.L = 0xffff;
59	R1.H = 0xffff;
60	R2.L = CC = BXORSHIFT( A0 , R1 );
61	R0 = A0.w;
62	DBGA ( R0.L , 0xfffe );
63	DBGA ( R0.H , 0xffff );
64	R0.L = A0.x;
65	DBGA ( R0.L , 0xffff );
66	R0 = CC;
67	DBGA ( R0.L , 0x0001 );
68	DBGA ( R0.H , 0x0000 );
69	DBGA ( R2.L , 0x0001 );
70
71// no
72	R0.L = 0xffff;
73	R0.H = 0xffff;
74	A0.w = R0;
75	R0.L = 0x00ff;
76	A0.x = R0.L;
77	R1.L = 0xffff;
78	R1.H = 0xffff;
79	R2.L = CC = BXOR( A0 , R1 );
80	R0 = A0.w;
81	DBGA ( R0.L , 0xffff );
82	DBGA ( R0.H , 0xffff );
83	R0.L = A0.x;
84	DBGA ( R0.L , 0xffff );
85	R0 = CC;
86	DBGA ( R0.L , 0x0000 );
87	DBGA ( R0.H , 0x0000 );
88	DBGA ( R2.H , 0x0000 );
89
90//  A0 <<=1 (BXOR A0 AND A1 CC);
91
92	R0.L = 0x1000;
93	R0.H = 0x0000;
94	A0.w = R0;
95	R0.L = 0x0000;
96	A0.x = R0.L;
97	R0.L = 0xffff;
98	R0.H = 0xffff;
99	A1.w = R0;
100	R0.L = 0x00ff;
101	A1.x = R0.L;
102	R0.L = 0x0000;
103	R0.H = 0x0000;
104	CC = R0;
105	A0 = BXORSHIFT( A0 , A1, CC );
106	R0 = A0.w;
107	DBGA ( R0.L , 0x2001 );
108	DBGA ( R0.H , 0x0000 );
109	R0.L = A0.x;
110	DBGA ( R0.L , 0x0000 );
111
112	R0.L = 0x1000;
113	R0.H = 0x0000;
114	A0.w = R0;
115	R0.L = 0x0000;
116	A0.x = R0.L;
117	R0.L = 0x0fff;
118	R0.H = 0xffff;
119	A1.w = R0;
120	R0.L = 0x00ff;
121	A1.x = R0.L;
122	R0.L = 0x0000;
123	R0.H = 0x0000;
124	CC = R0;
125	A0 = BXORSHIFT( A0 , A1, CC );
126	R0 = A0.w;
127	DBGA ( R0.L , 0x2000 );
128	DBGA ( R0.H , 0x0000 );
129	R0.L = A0.x;
130	DBGA ( R0.L , 0x0000 );
131
132	R0.L = 0x1000;
133	R0.H = 0x0000;
134	A0.w = R0;
135	R0.L = 0x0000;
136	A0.x = R0.L;
137	R0.L = 0xffff;
138	R0.H = 0xffff;
139	A1.w = R0;
140	R0.L = 0x00ff;
141	A1.x = R0.L;
142	R0.L = 0x0001;
143	R0.H = 0x0000;
144	CC = R0;
145	A0 = BXORSHIFT( A0 , A1, CC );
146	R0 = A0.w;
147	DBGA ( R0.L , 0x2000 );
148	DBGA ( R0.H , 0x0000 );
149	R0.L = A0.x;
150	DBGA ( R0.L , 0x0000 );
151
152// no
153
154	R0.L = 0x1000;
155	R0.H = 0x0000;
156	A0.w = R0;
157	R0.L = 0x0000;
158	A0.x = R0.L;
159	R0.L = 0xffff;
160	R0.H = 0xffff;
161	A1.w = R0;
162	R0.L = 0x00ff;
163	A1.x = R0.L;
164	R0.L = 0x0000;
165	R0.H = 0x0000;
166	CC = R0;
167	R2.L = CC = BXOR( A0 , A1, CC );
168	R0 = A0.w;
169	DBGA ( R0.L , 0x1000 );
170	DBGA ( R0.H , 0x0000 );
171	R0.L = A0.x;
172	DBGA ( R0.L , 0x0000 );
173	DBGA ( R2.L , 0x0001 );
174	R0 = CC;
175	DBGA ( R0.L , 0x0001 );
176
177	pass
178