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