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