1//Original:/testcases/core/c_cc2stat_cc_av1/c_cc2stat_cc_av1.dsp
2// Spec Reference: cc2stat cc av1
3# mach: bfin
4
5#include "test.h"
6.include "testutils.inc"
7	start
8
9	imm32 r0, 0x00000000;
10	imm32 r1, 0x00000000;
11	imm32 r2, 0x00000000;
12	imm32 r3, 0x00000000;
13	imm32 r4, 0x00000000;
14	imm32 r5, 0x00000000;
15	imm32 r6, 0x00000000;
16	imm32 r7, 0x00000000;
17
18// test CC = AV1      0-0, 0-1, 1-0, 1-1
19	R7 = 0x00;
20	ASTAT = R7;	// cc = 0, AV1 = 0
21	CC = AV1;	//
22	R0 = CC;	//
23
24	imm32 R7, _AV1;
25	ASTAT = R7;	// cc = 0, AV1 = 1
26	CC = AV1;	//
27	R1 = CC;	//
28
29	imm32 R7, _CC;
30	ASTAT = R7;	// cc = 1, AV1 = 0
31	CC = AV1;	//
32	R2 = CC;	//
33
34	imm32 R7, (_CC|_AV1);
35	ASTAT = R7;	// cc = 1, AV1 = 1
36	CC = AV1;	//
37	R3 = CC;	//
38
39// test cc |= AV1 (0-0,  0-1,  1-0,  1-1)
40	R7 = 0x00;
41	ASTAT = R7;	// cc = 0, AV1 = 0
42	CC |= AV1;	//
43	R4 = CC;	//
44
45	imm32 R7, _AV1;
46	ASTAT = R7;	// cc = 0, AV1 = 1
47	CC |= AV1;	//
48	R5 = CC;	//
49
50	imm32 R7, _CC;
51	ASTAT = R7;	// cc = 1, AV1 = 0
52	CC |= AV1;	//
53	R6 = CC;	//
54
55	imm32 R7, (_CC|_AV1);
56	ASTAT = R7;	// cc = 1, AV1 = 1
57	CC |= AV1;	//
58	R7 = CC;	//
59
60	CHECKREG r0, _UNSET;
61	CHECKREG r1,   _SET;
62	CHECKREG r2, _UNSET;
63	CHECKREG r3,   _SET;
64	CHECKREG r4, _UNSET;
65	CHECKREG r5,   _SET;
66	CHECKREG r6,   _SET;
67	CHECKREG r7,   _SET;
68
69// test CC &= AV1 (0-0,  0-1,  1-0,  1-1)
70	R7 = 0x00;
71	ASTAT = R7;	// cc = 0, AV1 = 0
72	CC &= AV1;	//
73	R4 = CC;	//
74
75	imm32 R7, _AV1;
76	ASTAT = R7;	// cc = 0, AV1 = 1
77	CC &= AV1;	//
78	R5 = CC;	//
79
80	imm32 R7, _CC;
81	ASTAT = R7;	// cc = 1, AV1 = 0
82	CC &= AV1;	//
83	R6 = CC;	//
84
85	imm32 R7, (_CC|_AV1);
86	ASTAT = R7;	// cc = 1, AV1 = 1
87	CC &= AV1;	//
88	R7 = CC;	//
89
90	CHECKREG r0, _UNSET;
91	CHECKREG r1, _SET;
92	CHECKREG r2, _UNSET;
93	CHECKREG r3, _SET;
94	CHECKREG r4, _UNSET;
95	CHECKREG r5, _UNSET;
96	CHECKREG r6, _UNSET;
97	CHECKREG r7, _SET;
98
99// test CC ^= AV1 (0-0,  0-1,  1-0,  1-1)
100	R7 = 0x00;
101	ASTAT = R7;	// cc = 0, AV1 = 0
102	CC ^= AV1;	//
103	R4 = CC;	//
104
105	imm32 R7, _AV1;
106	ASTAT = R7;	// cc = 0, AV1 = 1
107	CC ^= AV1;	//
108	R5 = CC;	//
109
110	imm32 R7, _CC;
111	ASTAT = R7;	// cc = 1, AV1 = 0
112	CC ^= AV1;	//
113	R6 = CC;	//
114
115	imm32 R7, (_CC|_AV1);
116	ASTAT = R7;	// cc = 1, AV1 = 1
117	CC ^= AV1;	//
118	R7 = CC;	//
119
120	CHECKREG r0, _UNSET;
121	CHECKREG r1, _SET;
122	CHECKREG r2, _UNSET;
123	CHECKREG r3, _SET;
124	CHECKREG r4, _UNSET;
125	CHECKREG r5, _SET;
126	CHECKREG r6, _SET;
127	CHECKREG r7, _UNSET;
128
129// test AV1 = CC      0-0, 0-1, 1-0, 1-1
130	R7 = 0x00;
131	ASTAT = R7;	// cc = 0, AV1 = 0
132	AV1 = CC;	//
133	R0 = ASTAT;	//
134
135	imm32 R7, _AV1;
136	ASTAT = R7;	// cc = 0, AV1 = 1
137	AV1 = CC;	//
138	R1 = ASTAT;	//
139
140	imm32 R7, _CC;
141	ASTAT = R7;	// cc = 1, AV1 = 0
142	AV1 = CC;	//
143	R2 = ASTAT;	//
144
145	imm32 R7, (_CC|_AV1);
146	ASTAT = R7;	// cc = 1, AV1 = 1
147	AV1 = CC;	//
148	R3 = ASTAT;	//
149
150// test AV1 |= CC (0-0,  0-1,  1-0,  1-1)
151	R7 = 0x00;
152	ASTAT = R7;	// cc = 0, AV1 = 0
153	AV1 |= CC;	//
154	R4 = ASTAT;	//
155
156	imm32 R7, _AV1;
157	ASTAT = R7;	// cc = 0, AV1 = 1
158	AV1 |= CC;	//
159	R5 = ASTAT;	//
160
161	imm32 R7, _CC;
162	ASTAT = R7;	// cc = 1, AV1 = 0
163	AV1 |= CC;	//
164	R6 = ASTAT;	//
165
166	imm32 R7, (_CC|_AV1);
167	ASTAT = R7;	// cc = 1, AV1 = 1
168	AV1 |= CC;	//
169	R7 = ASTAT;	//
170
171	CHECKREG r0, _UNSET;
172	CHECKREG r1, _UNSET;
173	CHECKREG r2, (_CC|_AV1);
174	CHECKREG r3, (_CC|_AV1);
175	CHECKREG r4, _UNSET;
176	CHECKREG r5, _AV1;
177	CHECKREG r6, (_CC|_AV1);
178	CHECKREG r7, (_CC|_AV1);
179
180// test AV1 &= CC (0-0,  0-1,  1-0,  1-1)
181	R7 = 0x00;
182	ASTAT = R7;	// cc = 0, AV1 = 0
183	AV1 &= CC;	//
184	R4 = ASTAT;	//
185
186	imm32 R7, _AV1;
187	ASTAT = R7;	// cc = 0, AV1 = 1
188	AV1 &= CC;	//
189	R5 = ASTAT;	//
190
191	imm32 R7, _CC;
192	ASTAT = R7;	// cc = 1, AV1 = 0
193	AV1 &= CC;	//
194	R6 = ASTAT;	//
195
196	imm32 R7, (_CC|_AV1);
197	ASTAT = R7;	// cc = 1, AV1 = 1
198	AV1 &= CC;	//
199	R7 = ASTAT;	//
200
201	CHECKREG r0, _UNSET;
202	CHECKREG r1, _UNSET;
203	CHECKREG r2, (_CC|_AV1);
204	CHECKREG r3, (_CC|_AV1);
205	CHECKREG r4, _UNSET;
206	CHECKREG r5, _UNSET;
207	CHECKREG r6, _CC;
208	CHECKREG r7, (_CC|_AV1);
209
210// test AV1 ^= CC (0-0,  0-1,  1-0,  1-1)
211	R7 = 0x00;
212	ASTAT = R7;	// cc = 0, AV1 = 0
213	AV1 ^= CC;	//
214	R4 = ASTAT;	//
215
216	imm32 R7, _AV1;
217	ASTAT = R7;	// cc = 0, AV1 = 1
218	AV1 ^= CC;	//
219	R5 = ASTAT;	//
220
221	imm32 R7, _CC;
222	ASTAT = R7;	// cc = 1, AV1 = 0
223	AV1 ^= CC;	//
224	R6 = ASTAT;	//
225
226	imm32 R7, (_CC|_AV1);
227	ASTAT = R7;	// cc = 1, AV1 = 1
228	AV1 ^= CC;	//
229	R7 = ASTAT;	//
230
231	CHECKREG r0, _UNSET;
232	CHECKREG r1, _UNSET;
233	CHECKREG r2, (_CC|_AV1);
234	CHECKREG r3, (_CC|_AV1);
235	CHECKREG r4, _UNSET;
236	CHECKREG r5, _AV1;
237	CHECKREG r6, (_CC|_AV1);
238	CHECKREG r7, _CC;
239
240	pass
241