1# frv testcase for ldq @($GRi,$GRj),$GRk
2# mach: frv
3
4	.include "testutils.inc"
5
6	start
7
8	.global ldq
9ldq:
10	set_mem_limmed	0xdead,0xbeef,sp
11	inc_gr_immed	-4,sp
12	set_mem_limmed	0xbeef,0xdead,sp
13	inc_gr_immed	-4,sp
14	set_mem_limmed	0x1234,0x5678,sp
15	inc_gr_immed	-4,sp
16	set_mem_limmed	0x9abc,0xdef0,sp
17	set_gr_limmed	0xdead,0xbeef,gr8
18	set_gr_limmed	0xbeef,0xdead,gr9
19	set_gr_limmed	0x1234,0x5678,gr10
20	set_gr_limmed	0x9abc,0xdef0,gr11
21
22	set_gr_immed	0,gr7
23	ldq 		@(sp,gr7),gr8
24	test_gr_limmed	0x9abc,0xdef0,gr8
25	test_gr_limmed	0x1234,0x5678,gr9
26	test_gr_limmed	0xbeef,0xdead,gr10
27	test_gr_limmed	0xdead,0xbeef,gr11
28
29	set_gr_limmed	0xdead,0xbeef,gr8
30	set_gr_limmed	0xbeef,0xdead,gr9
31	set_gr_limmed	0x1234,0x5678,gr10
32	set_gr_limmed	0x9abc,0xdef0,gr11
33	inc_gr_immed	-16,sp
34	set_gr_immed	16,gr7
35	ldq 		@(sp,gr7),gr8
36	test_gr_limmed	0x9abc,0xdef0,gr8
37	test_gr_limmed	0x1234,0x5678,gr9
38	test_gr_limmed	0xbeef,0xdead,gr10
39	test_gr_limmed	0xdead,0xbeef,gr11
40
41	set_gr_limmed	0xdead,0xbeef,gr8
42	set_gr_limmed	0xbeef,0xdead,gr9
43	set_gr_limmed	0x1234,0x5678,gr10
44	set_gr_limmed	0x9abc,0xdef0,gr11
45	inc_gr_immed	32,sp
46	set_gr_immed	-16,gr7
47	ldq 		@(sp,gr7),gr8
48	test_gr_limmed	0x9abc,0xdef0,gr8
49	test_gr_limmed	0x1234,0x5678,gr9
50	test_gr_limmed	0xbeef,0xdead,gr10
51	test_gr_limmed	0xdead,0xbeef,gr11
52
53	; loading into gr0 has no effect
54	; gr1 is sp
55	set_gr_gr	gr1,gr8
56	set_gr_limmed	0x1234,0x5678,gr2
57	set_gr_limmed	0x9abc,0xdef0,gr3
58	ldq 		@(sp,gr7),gr0
59	test_gr_immed	0,gr0
60	test_gr_gr	gr1,gr8
61	set_gr_immed	0x12345678,gr2
62	set_gr_immed	0x9abcdef0,gr3
63
64	pass
65