1# sh testcase for pshl <reg>
2# mach: all
3# as(sh):	-defsym sim_cpu=0
4# as(shdsp):	-defsym sim_cpu=1 -dsp
5
6	.include "testutils.inc"
7
8	start
9
10pshl_reg:			! shift arithmetic, register operand
11	set_grs_a5a5
12	lds	r0, a0
13	pcopy	a0, a1
14	lds	r0, x0
15	lds	r0, x1
16	lds	r0, y0
17	lds	r0, y1
18	pcopy	x0, m0
19	pcopy	y1, m1
20
21	set_sreg 0x10000, x0
22	set_sreg 0x0, y0
23	pshl	x0, y0, x0
24	assert_sreg	0x10000, x0
25	pneg	y0, y0
26	pshl	x0, y0, x0
27	assert_sreg	0x10000, x0
28
29	set_sreg 0x10000, y0
30	pshl	x0, y0, x0
31	assert_sreg	0x20000, x0
32	pneg	y0, y0
33	pshl	x0, y0, x0
34	assert_sreg	0x10000, x0
35
36	set_sreg 0x20000, y0
37	pshl	x0, y0, x0
38	assert_sreg	0x40000, x0
39	pneg	y0, y0
40	pshl	x0, y0, x0
41	assert_sreg	0x10000, x0
42
43	set_sreg 0x30000, y0
44	pshl	x0, y0, x0
45	assert_sreg	0x80000, x0
46	pneg	y0, y0
47	pshl	x0, y0, x0
48	assert_sreg	0x10000, x0
49
50	set_sreg 0x40000, y0
51	pshl	x0, y0, x0
52	assert_sreg	0x100000, x0
53	pneg	y0, y0
54	pshl	x0, y0, x0
55	assert_sreg	0x10000, x0
56
57	set_sreg 0x50000, y0
58	pshl	x0, y0, x0
59	assert_sreg	0x200000, x0
60	pneg	y0, y0
61	pshl	x0, y0, x0
62	assert_sreg	0x10000, x0
63
64	set_sreg 0x60000, y0
65	pshl	x0, y0, x0
66	assert_sreg	0x400000, x0
67	pneg	y0, y0
68	pshl	x0, y0, x0
69	assert_sreg	0x10000, x0
70
71	set_sreg 0x70000, y0
72	pshl	x0, y0, x0
73	assert_sreg	0x800000, x0
74	pneg	y0, y0
75	pshl	x0, y0, x0
76	assert_sreg	0x10000, x0
77
78	set_sreg 0x80000, y0
79	pshl	x0, y0, x0
80	assert_sreg	0x1000000, x0
81	pneg	y0, y0
82	pshl	x0, y0, x0
83	assert_sreg	0x10000, x0
84
85	set_sreg 0x90000, y0
86	pshl	x0, y0, x0
87	assert_sreg	0x2000000, x0
88	pneg	y0, y0
89	pshl	x0, y0, x0
90	assert_sreg	0x10000, x0
91
92	set_sreg 0xa0000, y0
93	pshl	x0, y0, x0
94	assert_sreg	0x4000000, x0
95	pneg	y0, y0
96	pshl	x0, y0, x0
97	assert_sreg	0x10000, x0
98
99	set_sreg 0xb0000, y0
100	pshl	x0, y0, x0
101	assert_sreg	0x8000000, x0
102	pneg	y0, y0
103	pshl	x0, y0, x0
104	assert_sreg	0x10000, x0
105
106	set_sreg 0xc0000, y0
107	pshl	x0, y0, x0
108	assert_sreg	0x10000000, x0
109	pneg	y0, y0
110	pshl	x0, y0, x0
111	assert_sreg	0x10000, x0
112
113	set_sreg 0xd0000, y0
114	pshl	x0, y0, x0
115	assert_sreg	0x20000000, x0
116	pneg	y0, y0
117	pshl	x0, y0, x0
118	assert_sreg	0x10000, x0
119
120	set_sreg 0xe0000, y0
121	pshl	x0, y0, x0
122	assert_sreg	0x40000000, x0
123	pneg	y0, y0
124	pshl	x0, y0, x0
125	assert_sreg	0x10000, x0
126
127	set_sreg 0xf0000, y0
128	pshl	x0, y0, x0
129	assert_sreg	0x80000000, x0
130	pneg	y0, y0
131	pshl	x0, y0, x0
132	assert_sreg	0x10000, x0
133
134	set_sreg 0x100000, y0
135	pshl	x0, y0, x0
136	assert_sreg	0x00000000, x0
137	pneg	y0, y0
138	pshl	x0, y0, x0
139	assert_sreg	0x0, x0
140
141	test_grs_a5a5
142	assert_sreg2	0xa5a5a5a5, a0
143	assert_sreg2	0xa5a5a5a5, a1
144	assert_sreg	0xa5a5a5a5, x1
145	assert_sreg	0xa5a5a5a5, y1
146	assert_sreg2	0xa5a5a5a5, m0
147	assert_sreg2	0xa5a5a5a5, m1
148
149
150	pass
151	exit 0
152
153