1# frv testcase for csracc $GRi,$GRj,$GRk,$CCi,$cond
2# mach: all
3
4	.include "testutils.inc"
5
6	start
7
8	.global csracc
9csracc:
10	set_spr_immed	0x1b1b,cccr
11
12	set_gr_limmed   0xdead,0xbee0,gr7	; Shift by 0
13	set_gr_limmed   0x8000,0x0000,gr8
14	set_icc         0x05,0		; Set mask opposite of expected
15	csracc      	gr8,gr7,gr8,cc0,1
16	test_icc	1 0 0 0 icc0
17	test_gr_limmed 	0x8000,0x0000,gr8
18
19	set_gr_limmed   0xdead,0xbee1,gr7	; Shift by 1
20	set_gr_limmed   0x8000,0x0000,gr8
21	set_icc         0x07,0		; Set mask opposite of expected
22	csracc      	gr8,gr7,gr8,cc0,1
23	test_icc	1 0 1 0 icc0
24	test_gr_limmed 	0xc000,0x0000,gr8
25
26	set_gr_limmed   0xdead,0xbeff,gr7	; Shift by 31
27	set_gr_limmed   0x8000,0x0000,gr8
28	set_icc         0x07,0		; Set mask opposite of expected
29	csracc      	gr8,gr7,gr8,cc4,1
30	test_icc	1 0 1 0 icc0
31	test_gr_immed  	-1,gr8
32
33	set_gr_limmed   0xdead,0xbeff,gr7	; clear register
34	set_gr_limmed   0x4000,0x0000,gr8
35	set_icc         0x0a,0		; Set mask opposite of expected
36	csracc      	gr8,gr7,gr8,cc4,1
37	test_icc	0 1 1 1 icc0
38	test_gr_immed  	0x00000000,gr8
39
40	set_gr_limmed   0xdead,0xbee0,gr7	; Shift by 0
41	set_gr_limmed   0x8000,0x0000,gr8
42	set_icc         0x05,0		; Set mask opposite of expected
43	csracc      	gr8,gr7,gr8,cc0,0
44	test_icc	0 1 0 1 icc0
45	test_gr_limmed 	0x8000,0x0000,gr8
46
47	set_gr_limmed   0xdead,0xbee1,gr7	; Shift by 1
48	set_gr_limmed   0x8000,0x0000,gr8
49	set_icc         0x0f,0		; Set mask opposite of expected
50	csracc      	gr8,gr7,gr8,cc0,0
51	test_icc	1 1 1 1 icc0
52	test_gr_limmed 	0x8000,0x0000,gr8
53
54	set_gr_limmed   0xdead,0xbeff,gr7	; Shift by 31
55	set_gr_limmed   0x8000,0x0000,gr8
56	set_icc         0x0f,0		; Set mask opposite of expected
57	csracc      	gr8,gr7,gr8,cc4,0
58	test_icc	1 1 1 1 icc0
59	test_gr_limmed 	0x8000,0x0000,gr8
60
61	set_gr_limmed   0xdead,0xbeff,gr7	; clear register
62	set_gr_limmed   0x4000,0x0000,gr8
63	set_icc         0x0a,0		; Set mask opposite of expected
64	csracc      	gr8,gr7,gr8,cc4,0
65	test_icc	1 0 1 0 icc0
66	test_gr_limmed 	0x4000,0x0000,gr8
67
68	set_gr_limmed   0xdead,0xbee0,gr7	; Shift by 0
69	set_gr_limmed   0x8000,0x0000,gr8
70	set_icc         0x05,1		; Set mask opposite of expected
71	csracc      	gr8,gr7,gr8,cc1,0
72	test_icc	1 0 0 0 icc1
73	test_gr_limmed 	0x8000,0x0000,gr8
74
75	set_gr_limmed   0xdead,0xbee1,gr7	; Shift by 1
76	set_gr_limmed   0x8000,0x0000,gr8
77	set_icc         0x07,1		; Set mask opposite of expected
78	csracc      	gr8,gr7,gr8,cc1,0
79	test_icc	1 0 1 0 icc1
80	test_gr_limmed 	0xc000,0x0000,gr8
81
82	set_gr_limmed   0xdead,0xbeff,gr7	; Shift by 31
83	set_gr_limmed   0x8000,0x0000,gr8
84	set_icc         0x07,1		; Set mask opposite of expected
85	csracc      	gr8,gr7,gr8,cc5,0
86	test_icc	1 0 1 0 icc1
87	test_gr_immed  	-1,gr8
88
89	set_gr_limmed   0xdead,0xbeff,gr7	; clear register
90	set_gr_limmed   0x4000,0x0000,gr8
91	set_icc         0x0a,1		; Set mask opposite of expected
92	csracc      	gr8,gr7,gr8,cc5,0
93	test_icc	0 1 1 1 icc1
94	test_gr_immed  	0x00000000,gr8
95
96	set_gr_limmed   0xdead,0xbee0,gr7	; Shift by 0
97	set_gr_limmed   0x8000,0x0000,gr8
98	set_icc         0x05,1		; Set mask opposite of expected
99	csracc      	gr8,gr7,gr8,cc1,1
100	test_icc	0 1 0 1 icc1
101	test_gr_limmed 	0x8000,0x0000,gr8
102
103	set_gr_limmed   0xdead,0xbee1,gr7	; Shift by 1
104	set_gr_limmed   0x8000,0x0000,gr8
105	set_icc         0x0f,1		; Set mask opposite of expected
106	csracc      	gr8,gr7,gr8,cc1,1
107	test_icc	1 1 1 1 icc1
108	test_gr_limmed 	0x8000,0x0000,gr8
109
110	set_gr_limmed   0xdead,0xbeff,gr7	; Shift by 31
111	set_gr_limmed   0x8000,0x0000,gr8
112	set_icc         0x0f,1		; Set mask opposite of expected
113	csracc      	gr8,gr7,gr8,cc5,1
114	test_icc	1 1 1 1 icc1
115	test_gr_limmed 	0x8000,0x0000,gr8
116
117	set_gr_limmed   0xdead,0xbeff,gr7	; clear register
118	set_gr_limmed   0x4000,0x0000,gr8
119	set_icc         0x0a,1		; Set mask opposite of expected
120	csracc      	gr8,gr7,gr8,cc5,1
121	test_icc	1 0 1 0 icc1
122	test_gr_limmed 	0x4000,0x0000,gr8
123
124	set_gr_limmed   0xdead,0xbee0,gr7	; Shift by 0
125	set_gr_limmed   0x8000,0x0000,gr8
126	set_icc         0x05,2		; Set mask opposite of expected
127	csracc      	gr8,gr7,gr8,cc2,0
128	test_icc	0 1 0 1 icc2
129	test_gr_limmed 	0x8000,0x0000,gr8
130
131	set_gr_limmed   0xdead,0xbee1,gr7	; Shift by 1
132	set_gr_limmed   0x8000,0x0000,gr8
133	set_icc         0x0f,2		; Set mask opposite of expected
134	csracc      	gr8,gr7,gr8,cc2,0
135	test_icc	1 1 1 1 icc2
136	test_gr_limmed 	0x8000,0x0000,gr8
137
138	set_gr_limmed   0xdead,0xbeff,gr7	; Shift by 31
139	set_gr_limmed   0x8000,0x0000,gr8
140	set_icc         0x0f,2		; Set mask opposite of expected
141	csracc      	gr8,gr7,gr8,cc6,1
142	test_icc	1 1 1 1 icc2
143	test_gr_limmed 	0x8000,0x0000,gr8
144
145	set_gr_limmed   0xdead,0xbeff,gr7	; clear register
146	set_gr_limmed   0x4000,0x0000,gr8
147	set_icc         0x0a,2		; Set mask opposite of expected
148	csracc      	gr8,gr7,gr8,cc6,1
149	test_icc	1 0 1 0 icc2
150	test_gr_limmed 	0x4000,0x0000,gr8
151
152	set_gr_limmed   0xdead,0xbee0,gr7	; Shift by 0
153	set_gr_limmed   0x8000,0x0000,gr8
154	set_icc         0x05,3		; Set mask opposite of expected
155	csracc      	gr8,gr7,gr8,cc3,0
156	test_icc	0 1 0 1 icc3
157	test_gr_limmed 	0x8000,0x0000,gr8
158
159	set_gr_limmed   0xdead,0xbee1,gr7	; Shift by 1
160	set_gr_limmed   0x8000,0x0000,gr8
161	set_icc         0x0f,3		; Set mask opposite of expected
162	csracc      	gr8,gr7,gr8,cc3,0
163	test_icc	1 1 1 1 icc3
164	test_gr_limmed 	0x8000,0x0000,gr8
165
166	set_gr_limmed   0xdead,0xbeff,gr7	; Shift by 31
167	set_gr_limmed   0x8000,0x0000,gr8
168	set_icc         0x0f,3		; Set mask opposite of expected
169	csracc      	gr8,gr7,gr8,cc7,1
170	test_icc	1 1 1 1 icc3
171	test_gr_limmed 	0x8000,0x0000,gr8
172
173	set_gr_limmed   0xdead,0xbeff,gr7	; clear register
174	set_gr_limmed   0x4000,0x0000,gr8
175	set_icc         0x0a,3		; Set mask opposite of expected
176	csracc      	gr8,gr7,gr8,cc7,1
177	test_icc	1 0 1 0 icc3
178	test_gr_limmed 	0x4000,0x0000,gr8
179
180	pass
181