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