~angelsl/ubuntu/wily/binutils/mips-cross

« back to all changes in this revision

Viewing changes to gas/testsuite/gas/bfin/shift2.s

  • Committer: angelsl
  • Date: 2015-11-03 15:54:40 UTC
  • Revision ID: angelsl-20151103155440-gbh6qo1olzlvaiqs
Import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
.EXTERN MY_LABEL2;
 
3
.section .text;
 
4
 
 
5
//
 
6
//9 SHIFT/ROTATE OPERATIONS
 
7
//
 
8
 
 
9
//Preg = ( Preg + Preg ) << 1 ; /* dest_reg = (dest_reg + src_reg) x 2 (a) */
 
10
P0 = (P0+P0)<<1;
 
11
P0 = (P0+P1)<<1;
 
12
P2 = (P2+P0)<<1;
 
13
P1 = (P1+P2)<<1;
 
14
 
 
15
//P0 = (P2+P0)<<1;
 
16
 
 
17
//Preg = ( Preg + Preg ) << 2 ; /* dest_reg = (dest_reg + src_reg) x 4 (a) */
 
18
P0 = (P0+P0)<<2;
 
19
P0 = (P0+P1)<<2;
 
20
P2 = (P2+P0)<<2;
 
21
P1 = (P1+P2)<<2;
 
22
 
 
23
//P0 = (P2+P0)<<2;
 
24
 
 
25
//Dreg = (Dreg + Dreg) << 1 ; /* dest_reg = (dest_reg + src_reg) x 2 (a) */
 
26
R0 = (R0+R0)<<1;
 
27
R0 = (R0+R1)<<1;
 
28
R2 = (R2+R0)<<1;
 
29
R1 = (R1+R2)<<1;
 
30
 
 
31
//R0 = (R2+R0)<<1;
 
32
 
 
33
 
 
34
//Dreg = (Dreg + Dreg) << 2 ; /* dest_reg = (dest_reg + src_reg) x 4 (a) */
 
35
R0 = (R0+R0)<<2;
 
36
R0 = (R0+R1)<<2;
 
37
R2 = (R2+R0)<<2;
 
38
R1 = (R1+R2)<<2;
 
39
 
 
40
//R0 = (R2+R0)<<2;
 
41
 
 
42
//Preg = Preg + ( Preg << 1 ) ; /* adder_pntr + (src_pntr x 2) (a) */
 
43
P0 = P0 + (P0 << 1);
 
44
P0 = P0 + (P1 << 1);
 
45
P0 = P0 + (P2 << 1);
 
46
P0 = P1 + (P2 << 1);
 
47
P0 = P2 + (P3 << 1);
 
48
P1 = P0 + (P0 << 1);
 
49
P1 = P0 + (P1 << 1);
 
50
P1 = P0 + (P2 << 1);
 
51
P1 = P1 + (P2 << 1);
 
52
P1 = P2 + (P3 << 1);
 
53
 
 
54
//Preg = Preg + ( Preg << 2 ) ; /* adder_pntr + (src_pntr x 4) (a) */
 
55
P0 = P0 + (P0 << 2);
 
56
P0 = P0 + (P1 << 2);
 
57
P0 = P0 + (P2 << 2);
 
58
P0 = P1 + (P2 << 2);
 
59
P0 = P2 + (P3 << 2);
 
60
P1 = P0 + (P0 << 2);
 
61
P1 = P0 + (P1 << 2);
 
62
P1 = P0 + (P2 << 2);
 
63
P1 = P1 + (P2 << 2);
 
64
P1 = P2 + (P3 << 2);
 
65
 
 
66
//Dreg >>>= uimm5 ; /* arithmetic right shift (a) */
 
67
R0 >>>= 0;
 
68
R0 >>>= 31;
 
69
R0 >>>= 5;
 
70
R5 >>>= 0;
 
71
R5 >>>= 31;
 
72
R5 >>>= 5;
 
73
 
 
74
//Dreg <<= uimm5 ; /* logical left shift (a) */
 
75
R0 <<= 0;
 
76
R0 <<= 31;
 
77
R0 <<= 5;
 
78
R5 <<= 0;
 
79
R5 <<= 31;
 
80
R5 <<= 5;
 
81
//Dreg_lo_hi = Dreg_lo_hi >>> uimm4 ; /* arithmetic right shift (b) */
 
82
R0.L = R0.L >>> 0;
 
83
R0.L = R0.L >>> 15;
 
84
R0.L = R0.H >>> 0;
 
85
R0.L = R0.H >>> 15;
 
86
R0.H = R0.L >>> 0;
 
87
R0.H = R0.L >>> 15;
 
88
R0.H = R0.H >>> 0;
 
89
R0.H = R0.H >>> 15;
 
90
 
 
91
R0.L = R1.L >>> 0;
 
92
R0.L = R1.L >>> 15;
 
93
R0.L = R1.H >>> 0;
 
94
R0.L = R1.H >>> 15;
 
95
R0.H = R1.L >>> 0;
 
96
R0.H = R1.L >>> 15;
 
97
R0.H = R1.H >>> 0;
 
98
R0.H = R1.H >>> 15;
 
99
 
 
100
R0.L = R7.L >>> 0;
 
101
R1.L = R6.L >>> 15;
 
102
R2.L = R5.H >>> 0;
 
103
R3.L = R4.H >>> 15;
 
104
R4.H = R3.L >>> 0;
 
105
R5.H = R2.L >>> 15;
 
106
R6.H = R1.H >>> 0;
 
107
R7.H = R0.H >>> 15;
 
108
 
 
109
//Dreg_lo_hi = Dreg_lo_hi << uimm4 (S) ; /* arithmetic left shift (b) */
 
110
R0.L = R0.L << 0(S);
 
111
R0.L = R0.L << 15(S);
 
112
R0.L = R0.H << 0(S);
 
113
R0.L = R0.H << 15(S);
 
114
R0.H = R0.L << 0(S);
 
115
R0.H = R0.L << 15(S);
 
116
R0.H = R0.H << 0(S);
 
117
R0.H = R0.H << 15(S);
 
118
 
 
119
R0.L = R1.L << 0(S);
 
120
R0.L = R1.L << 15(S);
 
121
R0.L = R1.H << 0(S);
 
122
R0.L = R1.H << 15(S);
 
123
R0.H = R1.L << 0(S);
 
124
R0.H = R1.L << 15(S);
 
125
R0.H = R1.H << 0(S);
 
126
R0.H = R1.H << 15(S);
 
127
 
 
128
R0.L = R7.L << 0(S);
 
129
R1.L = R6.L << 15(S);
 
130
R2.L = R5.H << 0(S);
 
131
R3.L = R4.H << 15(S);
 
132
R4.H = R3.L << 0(S);
 
133
R5.H = R2.L << 15(S);
 
134
R6.H = R1.H << 0(S);
 
135
R7.H = R0.H << 15(S);
 
136
//Dreg = Dreg >>> uimm5 ; /* arithmetic right shift (b) */
 
137
R0 = R0 >>> 0;
 
138
R0 = R0 >>> 31;
 
139
R0 = R1 >>> 0;
 
140
R0 = R1 >>> 31;
 
141
R7 = R0 >>> 0;
 
142
R6 = R1 >>> 31;
 
143
R5 = R2 >>> 0;
 
144
R4 = R3 >>> 31;
 
145
R3 = R4 >>> 0;
 
146
R2 = R5 >>> 31;
 
147
R1 = R6 >>> 0;
 
148
R0 = R7 >>> 31;
 
149
 
 
150
//Dreg = Dreg << uimm5 (S) ; /* arithmetic left shift (b) */
 
151
R0 = R0 << 0(S);
 
152
R0 = R0 << 31(S);
 
153
R0 = R1 << 0(S);
 
154
R0 = R1 << 31(S);
 
155
R7 = R0 << 0(S);
 
156
R6 = R1 << 31(S);
 
157
R5 = R2 << 0(S);
 
158
R4 = R3 << 31(S);
 
159
R3 = R4 << 0(S);
 
160
R2 = R5 << 31(S);
 
161
R1 = R6 << 0(S);
 
162
R0 = R7 << 31(S);
 
163
//A0 = A0 >>> uimm5 ; /* arithmetic right shift (b) */
 
164
A0 = A0 >>> 0;
 
165
A0 = A0 >>> 15;
 
166
A0 = A0 >>> 31;
 
167
 
 
168
//A0 = A0 << uimm5 ; /* logical left shift (b) */
 
169
A0 = A0 << 0;
 
170
A0 = A0 << 15;
 
171
A0 = A0 << 31;
 
172
 
 
173
//A1 = A1 >>> uimm5 ; /* arithmetic right shift (b) */
 
174
A1 = A1 >>> 0;
 
175
A1 = A1 >>> 15;
 
176
A1 = A1 >>> 31;
 
177
 
 
178
//A1 = A1 << uimm5 ; /* logical left shift (b) */
 
179
A1 = A1 << 0;
 
180
A1 = A1 << 15;
 
181
A1 = A1 << 31;
 
182
 
 
183
//Dreg >>>= Dreg ; /* arithmetic right shift (a) */
 
184
R0 >>>= R0;
 
185
R0 >>>= R1;
 
186
R1 >>>= R0;
 
187
R1 >>>= R7;
 
188
 
 
189
//Dreg <<= Dreg ; /* logical left shift (a) */
 
190
R0 <<= R0;
 
191
R0 <<= R1;
 
192
R1 <<= R0;
 
193
R1 <<= R7;
 
194
 
 
195
//Dreg_lo_hi = ASHIFT Dreg_lo_hi BY Dreg_lo (opt_sat) ; /* arithmetic right shift (b) */
 
196
r3.l = ashift r0.h by r7.l ; /* shift, half-word */
 
197
r3.h = ashift r0.l by r7.l ;
 
198
r3.h = ashift r0.h by r7.l ;
 
199
r3.l = ashift r0.l by r7.l ;
 
200
r3.l = ashift r0.h by r7.l(s) ; /* shift, half-word, saturated */
 
201
r3.h = ashift r0.l by r7.l(s) ; /* shift, half-word, saturated */
 
202
r3.h = ashift r0.h by r7.l(s) ;
 
203
r3.l = ashift r0.l by r7.l (s) ;
 
204
 
 
205
//Dreg = ASHIFT Dreg BY Dreg_lo (opt_sat) ; /* arithmetic right shift (b) */
 
206
r4 = ashift r2 by r7.l ; /* shift, word */
 
207
r4 = ashift r2 by r7.l (s) ; /* shift, word, saturated */
 
208
 
 
209
//A0 = ASHIFT A0 BY Dreg_lo ; /* arithmetic right shift (b)*/
 
210
A0 = ashift A0 by r7.l ; /* shift, Accumulator */
 
211
 
 
212
//A1 = ASHIFT A1 BY Dreg_lo ; /* arithmetic right shift (b)*/
 
213
A1 = ashift A1 by r7.l ; /* shift, Accumulator */
 
214
 
 
215
p3 = p2 >> 1 ; /* pointer right shift by 1 */
 
216
p3 = p3 >> 2 ; /* pointer right shift by 2 */
 
217
p4 = p5 << 1 ; /* pointer left shift by 1 */
 
218
p0 = p1 << 2 ; /* pointer left shift by 2 */
 
219
r3 >>= 17 ; /* data right shift */
 
220
r3 <<= 17 ; /* data left shift */
 
221
r3.l = r0.l >> 4 ; /* data right shift, half-word register */
 
222
r3.l = r0.h >> 4 ; /* same as above; half-word register combinations are arbitrary */
 
223
r3.h = r0.l << 12 ; /* data left shift, half-word register */
 
224
r3.h = r0.h << 14 ; /* same as above; half-word register combinations are arbitrary */
 
225
 
 
226
r3 = r6 >> 4 ; /* right shift, 32-bit word */
 
227
r3 = r6 << 4 ; /* left shift, 32-bit word */
 
228
 
 
229
a0 = a0 >> 7 ; /* Accumulator right shift */
 
230
a1 = a1 >> 25 ; /* Accumulator right shift */
 
231
a0 = a0 << 7 ; /* Accumulator left shift */
 
232
a1 = a1 << 14 ; /* Accumulator left shift */
 
233
 
 
234
r3 >>= r0 ; /* data right shift */
 
235
r3 <<= r1 ; /* data left shift */
 
236
 
 
237
r3.l = lshift r0.l by r2.l ; /* shift direction controlled by sign of R2.L */
 
238
r3.h = lshift r0.l by r2.l ;
 
239
 
 
240
a0 = lshift a0 by r7.l ;
 
241
a1 = lshift a1 by r7.l ;
 
242
 
 
243
r4 = rot r1 by 31 ; /* rotate left */
 
244
r4 = rot r1 by -32 ; /* rotate right */
 
245
r4 = rot r1 by 5 ; /* rotate right */
 
246
 
 
247
a0 = rot a0 by 22 ; /* rotate Accumulator left */
 
248
a0 = rot a0 by -32 ; /* rotate Accumulator left */
 
249
a0 = rot a0 by 31 ; /* rotate Accumulator left */
 
250
 
 
251
a1 = rot a1 by -32 ; /* rotate Accumulator right */
 
252
a1 = rot a1 by 31 ; /* rotate Accumulator right */
 
253
a1 = rot a1 by 22 ; /* rotate Accumulator right */
 
254
 
 
255
r4 = rot r1 by r2.l ;
 
256
a0 = rot a0 by r3.l ;
 
257
a1 = rot a1 by r7.l ;
 
258
 
 
259
r0.l = r1.l << 0;
 
260
r0.l = r1.l << 1;
 
261
r0.l = r1.l << 2;
 
262
r0.l = r1.l << 4;
 
263
r0.l = r1.l >> 0;
 
264
r0.l = r1.l >> 1;
 
265
r0.l = r1.l >> 2;
 
266
r0.l = r1.l >> 4;
 
267
r0.l = r1.l >>> 1;
 
268
r0.l = r1.l >>> 2;
 
269
r0.l = r1.l >>> 4;
 
270
 
 
271
r0.l = r1.h << 0;
 
272
r0.l = r1.h << 1;
 
273
r0.l = r1.h << 2;
 
274
r0.l = r1.h << 4;
 
275
r0.l = r1.h >> 0;
 
276
r0.l = r1.h >> 1;
 
277
r0.l = r1.h >> 2;
 
278
r0.l = r1.h >> 4;
 
279
r0.l = r1.h >>> 1;
 
280
r0.l = r1.h >>> 2;
 
281
r0.l = r1.h >>> 4;
 
282
 
 
283
r0.l = r1.h << 0 (S);
 
284
r0.l = r1.h << 1 (S);
 
285
r0.l = r1.h << 2 (S);
 
286
r0.l = r1.h << 4 (S);
 
287
r0.l = r1.h >>> 1 (S);
 
288
r0.l = r1.h >>> 2 (S);
 
289
r0.l = r1.h >>> 4 (S);
 
290