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