1//Original:/testcases/core/c_logi2op_arith_shft/c_logi2op_arith_shft.dsp
2// Spec Reference: Logi2op >>>=
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9
10
11
12// Arithmetic >>>= : negative data
13// bit 0-7
14imm32 r0, 0x81111111;
15imm32 r1, 0x81111111;
16imm32 r2, 0x81111111;
17imm32 r3, 0x81111111;
18imm32 r4, 0x81111111;
19imm32 r5, 0x81111111;
20imm32 r6, 0x81111111;
21imm32 r7, 0x81111111;
22R0 >>>= 0; /* r0 = 0x81111111 */
23R1 >>>= 1; /* r1 = 0xC0888888 */
24R2 >>>= 2; /* r2 = 0xE0444444 */
25R3 >>>= 3; /* r3 = 0xF0222222 */
26R4 >>>= 4; /* r4 = 0xF8111111 */
27R5 >>>= 5; /* r5 = 0xFC088888 */
28R6 >>>= 6; /* r6 = 0xFE044444 */
29R7 >>>= 7; /* r7 = 0xFF022222 */
30CHECKREG r0, 0x81111111;
31CHECKREG r1, 0xC0888888;
32CHECKREG r2, 0xE0444444;
33CHECKREG r3, 0xF0222222;
34CHECKREG r4, 0xF8111111;
35CHECKREG r5, 0xFC088888;
36CHECKREG r6, 0xFE044444;
37CHECKREG r7, 0xFF022222;
38
39// bit 8-15
40imm32 r0, 0x82222222;
41imm32 r1, 0x82222222;
42imm32 r2, 0x82222222;
43imm32 r3, 0x82222222;
44imm32 r4, 0x82222222;
45imm32 r5, 0x82222222;
46imm32 r6, 0x82222222;
47imm32 r7, 0x82222222;
48R0 >>>= 8; /* r0 = 0xFF822222 */
49R1 >>>= 9; /* r1 = 0xFFC11111 */
50R2 >>>= 10; /* r2 = 0xFFE08888 */
51R3 >>>= 11; /* r3 = 0xFFF04444 */
52R4 >>>= 12; /* r4 = 0xFFF82222 */
53R5 >>>= 13; /* r5 = 0xFFFC1111 */
54R6 >>>= 14; /* r6 = 0xFFFE0888 */
55R7 >>>= 15; /* r7 = 0xFFFF0444 */
56CHECKREG r0, 0xFF822222;
57CHECKREG r1, 0xFFC11111;
58CHECKREG r2, 0xFFE08888;
59CHECKREG r3, 0xFFF04444;
60CHECKREG r4, 0xFFF82222;
61CHECKREG r5, 0xFFFC1111;
62CHECKREG r6, 0xFFFE0888;
63CHECKREG r7, 0xFFFF0444;
64
65// bit 16-23
66imm32 r0, 0x83333333;
67imm32 r1, 0x83333333;
68imm32 r2, 0x83333333;
69imm32 r3, 0x83333333;
70imm32 r4, 0x83333333;
71imm32 r5, 0x83333333;
72imm32 r6, 0x83333333;
73imm32 r7, 0x83333333;
74R0 >>>= 16; /* r0 = 0xFFFF8333 */
75R1 >>>= 17; /* r1 = 0xFFFFC199 */
76R2 >>>= 18; /* r2 = 0xFFFFE0CC */
77R3 >>>= 19; /* r3 = 0xFFFFF066 */
78R4 >>>= 20; /* r4 = 0xFFFFF833 */
79R5 >>>= 21; /* r5 = 0xFFFFFC19 */
80R6 >>>= 22; /* r6 = 0xFFFFFE0C */
81R7 >>>= 23; /* r7 = 0xFFFFFF06 */
82CHECKREG r0, 0xFFFF8333;
83CHECKREG r1, 0xFFFFC199;
84CHECKREG r2, 0xFFFFE0CC;
85CHECKREG r3, 0xFFFFF066;
86CHECKREG r4, 0xFFFFF833;
87CHECKREG r5, 0xFFFFFC19;
88CHECKREG r6, 0xFFFFFE0C;
89CHECKREG r7, 0xFFFFFF06;
90
91// bit 24-31
92imm32 r0, 0x84444444;
93imm32 r1, 0x84444444;
94imm32 r2, 0x84444444;
95imm32 r3, 0x84444444;
96imm32 r4, 0x84444444;
97imm32 r5, 0x84444444;
98imm32 r6, 0x84444444;
99imm32 r7, 0x84444444;
100R0 >>>= 24; /* r0 = 0xFFFFFF84 */
101R1 >>>= 25; /* r1 = 0xFFFFFFC2 */
102R2 >>>= 26; /* r2 = 0xFFFFFFE1 */
103R3 >>>= 27; /* r3 = 0xFFFFFFF0 */
104R4 >>>= 28; /* r4 = 0xFFFFFFF8 */
105R5 >>>= 29; /* r5 = 0xFFFFFFFC */
106R6 >>>= 30; /* r6 = 0xFFFFFFFE */
107R7 >>>= 31; /* r7 = 0xFFFFFFFF */
108CHECKREG r0, 0xFFFFFF84;
109CHECKREG r1, 0xFFFFFFC2;
110CHECKREG r2, 0xFFFFFFE1;
111CHECKREG r3, 0xFFFFFFF0;
112CHECKREG r4, 0xFFFFFFF8;
113CHECKREG r5, 0xFFFFFFFC;
114CHECKREG r6, 0xFFFFFFFE;
115CHECKREG r7, 0xFFFFFFFF;
116
117// Arithmetic >>>= : positive data
118// bit 0-7
119imm32 r0, 0x41111111;
120imm32 r1, 0x41111111;
121imm32 r2, 0x41111111;
122imm32 r3, 0x41111111;
123imm32 r4, 0x41111111;
124imm32 r5, 0x41111111;
125imm32 r6, 0x41111111;
126imm32 r7, 0x41111111;
127R0 >>>= 0; /* r0 = 0x41111111 */
128R1 >>>= 1; /* r1 = 0x20888888 */
129R2 >>>= 2; /* r2 = 0x10444444 */
130R3 >>>= 3; /* r3 = 0x08222222 */
131R4 >>>= 4; /* r4 = 0x04111111 */
132R5 >>>= 5; /* r5 = 0x02088888 */
133R6 >>>= 6; /* r6 = 0x01044444 */
134R7 >>>= 7; /* r7 = 0x00822222 */
135CHECKREG r0, 0x41111111;
136CHECKREG r1, 0x20888888;
137CHECKREG r2, 0x10444444;
138CHECKREG r3, 0x08222222;
139CHECKREG r4, 0x04111111;
140CHECKREG r5, 0x02088888;
141CHECKREG r6, 0x01044444;
142CHECKREG r7, 0x00822222;
143
144// bit 8-15
145imm32 r0, 0x42222222;
146imm32 r1, 0x42222222;
147imm32 r2, 0x42222222;
148imm32 r3, 0x42222222;
149imm32 r4, 0x42222222;
150imm32 r5, 0x42222222;
151imm32 r6, 0x42222222;
152imm32 r7, 0x42222222;
153R0 >>>= 8; /* r0 = 0x00422222 */
154R1 >>>= 9; /* r1 = 0x00211111 */
155R2 >>>= 10; /* r2 = 0x00108888 */
156R3 >>>= 11; /* r3 = 0x00084444 */
157R4 >>>= 12; /* r4 = 0x00042222 */
158R5 >>>= 13; /* r5 = 0x00021111 */
159R6 >>>= 14; /* r6 = 0x00010888 */
160R7 >>>= 15; /* r7 = 0x00008444 */
161CHECKREG r0, 0x00422222;
162CHECKREG r1, 0x00211111;
163CHECKREG r2, 0x00108888;
164CHECKREG r3, 0x00084444;
165CHECKREG r4, 0x00042222;
166CHECKREG r5, 0x00021111;
167CHECKREG r6, 0x00010888;
168CHECKREG r7, 0x00008444;
169
170// bit 16-23
171imm32 r0, 0x43333333;
172imm32 r1, 0x43333333;
173imm32 r2, 0x43333333;
174imm32 r3, 0x43333333;
175imm32 r4, 0x43333333;
176imm32 r5, 0x43333333;
177imm32 r6, 0x43333333;
178imm32 r7, 0x43333333;
179R0 >>>= 16; /* r0 = 0x00004333 */
180R1 >>>= 17; /* r1 = 0x00002199 */
181R2 >>>= 18; /* r2 = 0x000010CC */
182R3 >>>= 19; /* r3 = 0x00000866 */
183R4 >>>= 20; /* r4 = 0x00000433 */
184R5 >>>= 21; /* r5 = 0x00000219 */
185R6 >>>= 22; /* r6 = 0x0000010C */
186R7 >>>= 23; /* r7 = 0x00000086 */
187CHECKREG r0, 0x00004333;
188CHECKREG r1, 0x00002199;
189CHECKREG r2, 0x000010CC;
190CHECKREG r3, 0x00000866;
191CHECKREG r4, 0x00000433;
192CHECKREG r5, 0x00000219;
193CHECKREG r6, 0x0000010C;
194CHECKREG r7, 0x00000086;
195
196// bit 24-31
197imm32 r0, 0x44444444;
198imm32 r1, 0x44444444;
199imm32 r2, 0x44444444;
200imm32 r3, 0x44444444;
201imm32 r4, 0x44444444;
202imm32 r5, 0x44444444;
203imm32 r6, 0x44444444;
204imm32 r7, 0x44444444;
205R0 >>>= 24; /* r0 = 0x00000044 */
206R1 >>>= 25; /* r1 = 0x00000022 */
207R2 >>>= 26; /* r2 = 0x00000011 */
208R3 >>>= 27; /* r3 = 0x00000008 */
209R4 >>>= 28; /* r4 = 0x00000004 */
210R5 >>>= 29; /* r5 = 0x00000002 */
211R6 >>>= 30; /* r6 = 0x00000001 */
212R7 >>>= 31; /* r7 = 0x00000000 */
213CHECKREG r0, 0x00000044;
214CHECKREG r1, 0x00000022;
215CHECKREG r2, 0x00000011;
216CHECKREG r3, 0x00000008;
217CHECKREG r4, 0x00000004;
218CHECKREG r5, 0x00000002;
219CHECKREG r6, 0x00000001;
220CHECKREG r7, 0x00000000;
221
222
223pass
224