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