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