sim: bfin: import testsuite
[deliverable/binutils-gdb.git] / sim / testsuite / sim / bfin / s4.s
1 // Immediate SHIFT test program.
2 // Test r4 = ASHIFT (r2 by 10);
3 // Test r4 = LSHIFT (r2 by 10);
4 // Test r4 = ROT (r2 by 10);
5 # mach: bfin
6
7 .include "testutils.inc"
8 start
9
10
11 init_r_regs 0;
12 ASTAT = R0;
13
14 // load r0=0x80000001
15 // load r1=0x00000000
16 // load r2=0x00000000
17 // load r3=0x00000000
18 // load r4=0x00000000
19 // load r5=0x00000000
20 loadsym P0, data0;
21 R0 = [ P0 ++ ];
22 R1 = [ P0 ++ ];
23 R2 = [ P0 ++ ];
24 R3 = [ P0 ++ ];
25 R4 = [ P0 ++ ];
26 R5 = [ P0 ++ ];
27
28 // arithmetic
29 // left by largest positive magnitude of 31 (0x1f)
30 // 8000 0001 -> 8000 0000
31 R7 = 0;
32 ASTAT = R7;
33 R6 = R0 << 31;
34 DBGA ( R6.L , 0x0000 );
35 DBGA ( R6.H , 0x8000 );
36 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
37 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
38 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
39 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
40 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
41
42 // arithmetic
43 // left by 1
44 // 8000 0001 -> 0000 0002
45 R6 = R0 << 1;
46 DBGA ( R6.L , 0x0002 );
47 DBGA ( R6.H , 0x0000 );
48 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
49 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
50 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
51 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
52 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
53
54 // arithmetic
55 // right by 1
56 // 8000 0001 -> c000 0000
57 R7 = 0;
58 ASTAT = R7;
59 R6 = R0 >>> 1;
60 DBGA ( R6.L , 0x0000 );
61 DBGA ( R6.H , 0xc000 );
62 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
63 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
64 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
65 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
66 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
67
68 // arithmetic
69 // right by largest negative magnitude of -31
70 // 8000 0001 -> ffff ffff
71 R6 = R0 >>> 31;
72 DBGA ( R6.L , 0xffff );
73 DBGA ( R6.H , 0xffff );
74
75 // logic
76 // left by largest positive magnitude of 31 (0x1f)
77 // 8000 0001 -> 8000 0000
78 R6 = R0 << 31;
79 DBGA ( R6.L , 0x0000 );
80 DBGA ( R6.H , 0x8000 );
81
82 // logic
83 // left by 1
84 // 8000 0001 -> 0000 0002
85 R6 = R0 << 1;
86 DBGA ( R6.L , 0x0002 );
87 DBGA ( R6.H , 0x0000 );
88
89 // logic
90 // right by 1
91 // 8000 0001 -> 4000 0000
92 R6 = R0 >> 1;
93 DBGA ( R6.L , 0x0000 );
94 DBGA ( R6.H , 0x4000 );
95
96 // logic
97 // right by largest negative magnitude of -31
98 // 8000 0001 -> 0000 0001
99 R6 = R0 >> 31;
100 DBGA ( R6.L , 0x0001 );
101 DBGA ( R6.H , 0x0000 );
102
103 // rot
104 // left by 1
105 // 8000 0001 -> 0000 0002 cc=1
106 R7 = 0;
107 CC = R7;
108 R6 = ROT R0 BY 1;
109 DBGA ( R6.L , 0x0002 );
110 DBGA ( R6.H , 0x0000 );
111 R7 = CC;
112 DBGA ( R7.L , 0x0001 );
113
114 // rot
115 // right by -1
116 // 8000 0001 -> 4000 0000 cc=1
117 R7 = 0;
118 CC = R7;
119 R6 = ROT R0 BY -1;
120 DBGA ( R6.L , 0x0000 );
121 DBGA ( R6.H , 0x4000 );
122 R7 = CC;
123 DBGA ( R7.L , 0x0001 );
124
125 // rot
126 // right by largest positive magnitude of 31
127 // 8000 0001 -> a000 0000 cc=0
128 R7 = 0;
129 CC = R7;
130 R6 = ROT R0 BY 31;
131 DBGA ( R6.L , 0x0000 );
132 DBGA ( R6.H , 0xa000 );
133 R7 = CC;
134 DBGA ( R7.L , 0x0000 );
135
136 // rot
137 // right by largest positive magnitude of 31 with cc=1
138 // 8000 0001 cc=1 -> a000 0000 cc=0
139 R7 = 1;
140 CC = R7;
141 R6 = ROT R0 BY 31;
142 DBGA ( R6.L , 0x0000 );
143 DBGA ( R6.H , 0xe000 );
144 R7 = CC;
145 DBGA ( R7.L , 0x0000 );
146
147 // rot
148 // right by largest negative magnitude of -31
149 // 8000 0001 -> 0000 0005 cc=0
150 R7 = 0;
151 CC = R7;
152 R6 = ROT R0 BY -31;
153 DBGA ( R6.L , 0x0005 );
154 DBGA ( R6.H , 0x0000 );
155 R7 = CC;
156 DBGA ( R7.L , 0x0000 );
157
158 // rot
159 // right by largest negative magnitude of -31 with cc=1
160 // 8000 0001 cc=1 -> 0000 0007 cc=0
161 R7 = 1;
162 CC = R7;
163 R6 = ROT R0 BY -31;
164 DBGA ( R6.L , 0x0007 );
165 DBGA ( R6.H , 0x0000 );
166 R7 = CC;
167 DBGA ( R7.L , 0x0000 );
168
169 // rot
170 // left by 7
171 // 8000 0001 cc=1 -> 0000 00e0 cc=0
172 R7 = 1;
173 CC = R7;
174 R6 = ROT R0 BY 7;
175 DBGA ( R6.L , 0x00e0 );
176 DBGA ( R6.H , 0x0000 );
177 R7 = CC;
178 DBGA ( R7.L , 0x0000 );
179
180 // rot by zero
181 // 8000 0001 -> 8000 000
182 R7 = 1;
183 CC = R7;
184 R6 = ROT R0 BY 0;
185 DBGA ( R6.L , 0x0001 );
186 DBGA ( R6.H , 0x8000 );
187 R7 = CC;
188 DBGA ( R7.L , 0x0001 );
189
190 // 0 by 1
191 R7 = 0;
192 R0 = 0;
193 ASTAT = R7;
194 R6 = R0 << 1;
195 DBGA ( R6.L , 0x0000 );
196 DBGA ( R6.H , 0x0000 );
197 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
198 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
199 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
200 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
201 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
202
203 pass
204
205 .data
206 data0:
207 .dw 0x0001
208 .dw 0x8000
209 .dd 0x0000
210 .dd 0x0
211 .dd 0x0
212 .dd 0x0
213 .dd 0x0
214 .dd 0x0
This page took 0.033993 seconds and 4 git commands to generate.