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