1//Original:/testcases/core/c_ccflag_a0a1/c_ccflag_a0a1.dsp
2// Spec Reference: ccflag a0-a1 (==, <, <=)
3# mach: bfin
4
5#include "test.h"
6.include "testutils.inc"
7	start
8
9	imm32 r0, 0x12345778;
10	imm32 r1, 0x12345678;
11	imm32 r2, 0x056789ab;
12	imm32 r3, 0x80231345;
13
14	imm32 r4, 0x00770088;
15	imm32 r5, 0x009900aa;
16	imm32 r6, 0x00bb00cc;
17	imm32 r7, _UNSET;
18
19	ASTAT = R7;
20	R4 = ASTAT;
21	A0 = R0;
22	A1 = R0;
23
24// positive a0 EQUAL to a1
25	CC = A0 == A1;
26	R5 = ASTAT;
27	CC = A0 < A1;
28	R6 = ASTAT;
29	CHECKREG r4, _UNSET;
30	CHECKREG r5, (_AC0|_CC|_AC0_COPY|_AZ);
31	CHECKREG r6, (_AC0|_AC0_COPY|_AZ);
32	CC = A0 <= A1;
33	R5 = ASTAT;
34	CC = A0 < A1;
35	R6 = ASTAT;
36	CC = A0 <= A1;
37	R7 = ASTAT;
38	CHECKREG r5, (_AC0|_CC|_AC0_COPY|_AZ);
39	CHECKREG r6, (_AC0|_AC0_COPY|_AZ);
40	CHECKREG r7, (_AC0|_CC|_AC0_COPY|_AZ);
41
42// positive a0 GREATER than to positive a1
43	A1 = R1;
44	CC = A0 == A1;
45	R5 = ASTAT;
46	CC = A0 < A1;
47	R6 = ASTAT;
48	CC = A0 <= A1;
49	R7 = ASTAT;
50	CHECKREG r5, (_AC0|_AC0_COPY);	// carry
51	CHECKREG r6, (_AC0|_AC0_COPY);
52	CHECKREG r7, (_AC0|_AC0_COPY);
53
54// positive a0 LESS  than to positive a1
55	A1 = R2;
56	CC = A0 == A1;
57	R5 = ASTAT;
58	CC = A0 < A1;
59	R6 = ASTAT;
60	CC = A0 <= A1;
61	R7 = ASTAT;
62	CHECKREG r5, (_AC0|_AC0_COPY);
63	CHECKREG r6, (_AC0|_AC0_COPY);
64	CHECKREG r7, (_AC0|_AC0_COPY);
65
66// positive a0 GREATER than to neg a1
67	A1 = R3;
68	CC = A0 == A1;
69	R5 = ASTAT;
70	CC = A0 < A1;
71	R6 = ASTAT;
72	CC = A0 <= A1;
73	R7 = ASTAT;
74	CHECKREG r5, _UNSET;
75	CHECKREG r6, _UNSET;
76	CHECKREG r7, _UNSET;
77
78// negative a0  and positive a1
79	imm32 r0, -1;
80	imm32 r1,  2;
81	imm32 r2, -3;
82	imm32 r3, -4;
83	A0 = R0;
84	A1 = R1;
85
86	R7 = 0;
87	ASTAT = R7;
88	R4 = ASTAT;
89
90	CC = A0 == A1;
91	R5 = ASTAT;
92	CC = A0 < A1;
93	R6 = ASTAT;
94	CC = A0 <= A1;
95	R7 = ASTAT;
96	CHECKREG r4, _UNSET;
97	CHECKREG r5, (_AC0|_AC0_COPY|_AN);
98	CHECKREG r6, (_AC0|_AC0_COPY|_CC|_AN);
99	CHECKREG r7, (_AC0|_AC0_COPY|_CC|_AN);
100
101//  negative a0 LESS than neg a1
102	A0 = R3;
103	A1 = R4;
104	CC = A0 == A1;
105	R5 = ASTAT;
106	CC = A0 < A1;
107	R6 = ASTAT;
108	CC = A0 <= A1;
109	R7 = ASTAT;
110	CHECKREG r4, _UNSET;
111	CHECKREG r5, (_AC0|_AC0_COPY|_AN);
112	CHECKREG r6, (_AC0|_AC0_COPY|_CC|_AN);
113	CHECKREG r7, (_AC0|_AC0_COPY|_CC|_AN);
114
115// negative a0 GREATER neg a1
116	A0 = R0;
117	A1 = R3;
118	CC = A0 == A1;
119	R5 = ASTAT;
120	CC = A0 < A1;
121	R6 = ASTAT;
122	CC = A0 <= A1;
123	R7 = ASTAT;
124	CHECKREG r4, _UNSET;
125	CHECKREG r5, (_AC0|_AC0_COPY);
126	CHECKREG r6, (_AC0|_AC0_COPY);
127	CHECKREG r7, (_AC0|_AC0_COPY);
128
129// negative a0  EQUAL neg imm3
130	A0 = R3;
131	A1 = R3;
132	CC = A0 == A1;
133	R5 = ASTAT;
134	CC = A0 < A1;
135	R6 = ASTAT;
136	CC = A0 <= A1;
137	R7 = ASTAT;
138	CHECKREG r4, _UNSET;
139	CHECKREG r5, (_AC0|_CC|_AC0_COPY|_AZ);
140	CHECKREG r6, (_AC0|_AC0_COPY|_AZ);
141	CHECKREG r7, (_AC0|_CC|_AC0_COPY|_AZ);
142
143	pass
144