1# frv testcase for mcplhi $FRi,$s6,$FRk
2# mach: fr400 fr550
3
4	.include "testutils.inc"
5
6	start
7
8	.global mcplhi
9mcplhi:
10	set_fr_iimmed   0xdead,0xbeef,fr8
11	set_fr_iimmed   0xbeef,0xdead,fr9
12	set_fr_iimmed   0x1234,0x5678,fr10
13	mcplhi      	fr8,0x0,fr10	; Shift by 0
14	test_fr_iimmed  0xdead5678,fr10
15
16	set_fr_iimmed   0x1234,0x5678,fr10
17	mcplhi      	fr8,0x1,fr10	; Shift by 1
18	test_fr_iimmed  0xbd5b5678,fr10
19
20	set_fr_iimmed   0x1234,0x5678,fr10
21	mcplhi      	fr8,0x4,fr10	; Shift by 4
22	test_fr_iimmed  0xeadf5678,fr10
23
24	set_fr_iimmed   0x1234,0x5678,fr10
25	mcplhi      	fr8,0xc,fr10	; Shift by 12
26	test_fr_iimmed  0xdeef5678,fr10
27
28	set_fr_iimmed   0x1234,0x5678,fr10
29	mcplhi      	fr8,0xf,fr10	; Shift by 15
30	test_fr_iimmed  0xbeef5678,fr10
31
32	; test again with truncated shift values
33	set_fr_iimmed   0x1234,0x5678,fr10
34	mcplhi      	fr8,0x10,fr10	; Shift by 0
35	test_fr_iimmed  0xdead5678,fr10
36
37	set_fr_iimmed   0x1234,0x5678,fr10
38	mcplhi      	fr8,0x21,fr10	; Shift by 1
39	test_fr_iimmed  0xbd5b5678,fr10
40
41	set_fr_iimmed   0x1234,0x5678,fr10
42	mcplhi      	fr8,0x34,fr10	; Shift by 4
43	test_fr_iimmed  0xeadf5678,fr10
44
45	set_fr_iimmed   0x1234,0x5678,fr10
46	mcplhi      	fr8,0x1c,fr10	; Shift by 12
47	test_fr_iimmed  0xdeef5678,fr10
48
49	set_fr_iimmed   0x1234,0x5678,fr10
50	mcplhi      	fr8,0x2f,fr10	; Shift by 15
51	test_fr_iimmed  0xbeef5678,fr10
52
53	pass
54