1# frv testcase for swap @($GRi,$GRj),$GRk
2# mach: all
3
4	.include "testutils.inc"
5
6	start
7
8	.global swap
9swap:
10	set_gr_gr		sp,gr20
11	set_mem_limmed		0xdead,0xbeef,sp
12	inc_gr_immed		-4,sp
13	set_gr_gr		sp,gr21
14	set_mem_limmed		0xbeef,0xdead,sp
15	inc_gr_immed		-4,sp
16	set_gr_gr		sp,gr22
17	set_mem_limmed		0xdead,0xbeef,sp
18	inc_gr_immed		4,sp
19
20	set_gr_limmed		0xbeef,0xdead,gr8
21	set_gr_immed		-4,gr7
22	swap @(sp,gr7),gr8
23	test_gr_limmed		0xdead,0xbeef,gr8
24	test_mem_limmed		0xbeef,0xdead,gr22
25	test_mem_limmed		0xbeef,0xdead,gr21
26	test_mem_limmed		0xdead,0xbeef,gr20
27
28	set_gr_immed		0,gr7
29	swap @(sp,gr7),gr8
30	test_gr_limmed		0xbeef,0xdead,gr8
31	test_mem_limmed		0xbeef,0xdead,gr22
32	test_mem_limmed		0xdead,0xbeef,gr21
33	test_mem_limmed		0xdead,0xbeef,gr20
34
35	set_gr_immed		4,gr7
36	swap @(sp,gr7),gr8
37	test_gr_limmed		0xdead,0xbeef,gr8
38	test_mem_limmed		0xbeef,0xdead,gr22
39	test_mem_limmed		0xdead,0xbeef,gr21
40	test_mem_limmed		0xbeef,0xdead,gr20
41
42	pass
43