1# frv testcase for csthu $GRk,@($GRi,$GRj),$CCi,$cond
2# mach: all
3
4	.include "testutils.inc"
5
6	start
7
8	.global csthu
9csthu:
10	set_spr_immed	0x1b1b,cccr
11	set_gr_gr	sp,gr20
12	set_gr_gr	sp,gr21
13
14	set_mem_limmed	0xdead,0xbeef,sp
15	set_gr_immed	0,gr7
16	set_gr_limmed	0xffff,0xffff,gr8
17	csthu		gr8,@(sp,gr7),cc0,1
18	test_mem_limmed	0xffff,0xbeef,gr21
19	test_gr_gr	sp,gr20
20
21	inc_gr_immed	2,gr20
22	set_gr_immed	2,gr7
23	set_gr_limmed	0xdead,0xeeee,gr8
24	csthu		gr8,@(sp,gr7),cc0,1
25	test_mem_limmed	0xffff,0xeeee,gr21
26	test_gr_gr	sp,gr20
27
28	inc_gr_immed	2,sp
29	set_gr_immed	-2,gr7
30	set_gr_limmed	0xffff,0xdddd,gr8
31	csthu		gr8,@(sp,gr7),cc4,1
32	test_mem_limmed	0xffff,0xdddd,gr21
33	test_gr_gr	sp,gr20
34
35	set_gr_gr	gr21,sp
36	set_gr_gr	gr21,gr20
37	set_mem_limmed	0xdead,0xbeef,sp
38	set_gr_immed	0,gr7
39	set_gr_limmed	0xffff,0xffff,gr8
40	csthu		gr8,@(sp,gr7),cc0,0
41	test_mem_limmed	0xdead,0xbeef,gr21
42	test_gr_gr	sp,gr20
43
44	set_gr_immed	2,gr7
45	set_gr_limmed	0xffff,0xeeee,gr8
46	csthu		gr8,@(sp,gr7),cc0,0
47	test_mem_limmed	0xdead,0xbeef,gr21
48	test_gr_gr	sp,gr20
49
50	inc_gr_immed	4,gr20
51	inc_gr_immed	4,sp
52	set_gr_immed	-2,gr7
53	set_gr_limmed	0xffff,0xdddd,gr8
54	csthu		gr8,@(sp,gr7),cc4,0
55	test_mem_limmed	0xdead,0xbeef,gr21
56	test_gr_gr	sp,gr20
57
58	set_gr_gr	gr21,gr20
59	set_gr_gr	gr21,sp
60	set_mem_limmed	0xdead,0xbeef,sp
61	set_gr_immed	0,gr7
62	set_gr_limmed	0xffff,0xffff,gr8
63	csthu		gr8,@(sp,gr7),cc1,0
64	test_mem_limmed	0xffff,0xbeef,gr21
65	test_gr_gr	sp,gr20
66
67	inc_gr_immed	2,gr20
68	set_gr_immed	2,gr7
69	set_gr_limmed	0xdead,0xeeee,gr8
70	csthu		gr8,@(sp,gr7),cc1,0
71	test_mem_limmed	0xffff,0xeeee,gr21
72	test_gr_gr	sp,gr20
73
74	inc_gr_immed	2,sp
75	set_gr_immed	-2,gr7
76	set_gr_limmed	0xffff,0xdddd,gr8
77	csthu		gr8,@(sp,gr7),cc5,0
78	test_mem_limmed	0xffff,0xdddd,gr21
79	test_gr_gr	sp,gr20
80
81	set_gr_gr	gr21,sp
82	set_gr_gr	gr21,gr20
83	set_mem_limmed	0xdead,0xbeef,sp
84	set_gr_immed	0,gr7
85	set_gr_limmed	0xffff,0xffff,gr8
86	csthu		gr8,@(sp,gr7),cc1,1
87	test_mem_limmed	0xdead,0xbeef,gr21
88	test_gr_gr	sp,gr20
89
90	set_gr_immed	2,gr7
91	set_gr_limmed	0xffff,0xeeee,gr8
92	csthu		gr8,@(sp,gr7),cc1,1
93	test_mem_limmed	0xdead,0xbeef,gr21
94	test_gr_gr	sp,gr20
95
96	inc_gr_immed	4,gr20
97	inc_gr_immed	4,sp
98	set_gr_immed	-2,gr7
99	set_gr_limmed	0xffff,0xdddd,gr8
100	csthu		gr8,@(sp,gr7),cc5,1
101	test_mem_limmed	0xdead,0xbeef,gr21
102	test_gr_gr	sp,gr20
103
104	set_gr_gr	gr21,sp
105	set_gr_gr	gr21,gr20
106	set_mem_limmed	0xdead,0xbeef,sp
107	set_gr_immed	0,gr7
108	set_gr_limmed	0xffff,0xffff,gr8
109	csthu		gr8,@(sp,gr7),cc2,0
110	test_mem_limmed	0xdead,0xbeef,gr21
111	test_gr_gr	sp,gr20
112
113	set_gr_immed	2,gr7
114	set_gr_limmed	0xffff,0xeeee,gr8
115	csthu		gr8,@(sp,gr7),cc2,1
116	test_mem_limmed	0xdead,0xbeef,gr21
117	test_gr_gr	sp,gr20
118
119	inc_gr_immed	4,gr20
120	inc_gr_immed	4,sp
121	set_gr_immed	-2,gr7
122	set_gr_limmed	0xffff,0xdddd,gr8
123	csthu		gr8,@(sp,gr7),cc6,0
124	test_mem_limmed	0xdead,0xbeef,gr21
125	test_gr_gr	sp,gr20
126
127	set_gr_gr	gr21,sp
128	set_gr_gr	gr21,gr20
129	set_mem_limmed	0xdead,0xbeef,sp
130	set_gr_immed	0,gr7
131	set_gr_limmed	0xffff,0xffff,gr8
132	csthu		gr8,@(sp,gr7),cc3,1
133	test_mem_limmed	0xdead,0xbeef,gr21
134	test_gr_gr	sp,gr20
135
136	set_gr_immed	2,gr7
137	set_gr_limmed	0xffff,0xeeee,gr8
138	csthu		gr8,@(sp,gr7),cc3,0
139	test_mem_limmed	0xdead,0xbeef,gr21
140	test_gr_gr	sp,gr20
141
142	inc_gr_immed	4,gr20
143	inc_gr_immed	4,sp
144	set_gr_immed	-2,gr7
145	set_gr_limmed	0xffff,0xdddd,gr8
146	csthu		gr8,@(sp,gr7),cc7,1
147	test_mem_limmed	0xdead,0xbeef,gr21
148	test_gr_gr	sp,gr20
149
150	pass
151