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