Lines Matching full:bit

2 ; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s --check-prefixes=ALL,LE,LE-64BIT
4 ; RUN: llc < %s -mtriple=ppc32-- | FileCheck %s --check-prefixes=ALL,LE,LE-32BIT
56 ; LE-64BIT-LABEL: lshr_8bytes:
57 ; LE-64BIT: # %bb.0:
58 ; LE-64BIT-NEXT: lwz 4, 0(4)
59 ; LE-64BIT-NEXT: ld 3, 0(3)
60 ; LE-64BIT-NEXT: slwi 4, 4, 3
61 ; LE-64BIT-NEXT: srd 3, 3, 4
62 ; LE-64BIT-NEXT: std 3, 0(5)
63 ; LE-64BIT-NEXT: blr
74 ; LE-32BIT-LABEL: lshr_8bytes:
75 ; LE-32BIT: # %bb.0:
76 ; LE-32BIT-NEXT: lwz 4, 4(4)
77 ; LE-32BIT-NEXT: lwz 6, 4(3)
78 ; LE-32BIT-NEXT: lwz 3, 0(3)
79 ; LE-32BIT-NEXT: slwi 4, 4, 3
80 ; LE-32BIT-NEXT: subfic 7, 4, 32
81 ; LE-32BIT-NEXT: srw 6, 6, 4
82 ; LE-32BIT-NEXT: addi 8, 4, -32
83 ; LE-32BIT-NEXT: slw 7, 3, 7
84 ; LE-32BIT-NEXT: srw 4, 3, 4
85 ; LE-32BIT-NEXT: srw 3, 3, 8
86 ; LE-32BIT-NEXT: or 6, 6, 7
87 ; LE-32BIT-NEXT: or 3, 6, 3
88 ; LE-32BIT-NEXT: stw 4, 0(5)
89 ; LE-32BIT-NEXT: stw 3, 4(5)
90 ; LE-32BIT-NEXT: blr
99 ; LE-64BIT-LABEL: shl_8bytes:
100 ; LE-64BIT: # %bb.0:
101 ; LE-64BIT-NEXT: lwz 4, 0(4)
102 ; LE-64BIT-NEXT: ld 3, 0(3)
103 ; LE-64BIT-NEXT: slwi 4, 4, 3
104 ; LE-64BIT-NEXT: sld 3, 3, 4
105 ; LE-64BIT-NEXT: std 3, 0(5)
106 ; LE-64BIT-NEXT: blr
117 ; LE-32BIT-LABEL: shl_8bytes:
118 ; LE-32BIT: # %bb.0:
119 ; LE-32BIT-NEXT: lwz 4, 4(4)
120 ; LE-32BIT-NEXT: lwz 6, 0(3)
121 ; LE-32BIT-NEXT: lwz 3, 4(3)
122 ; LE-32BIT-NEXT: slwi 4, 4, 3
123 ; LE-32BIT-NEXT: subfic 7, 4, 32
124 ; LE-32BIT-NEXT: slw 6, 6, 4
125 ; LE-32BIT-NEXT: addi 8, 4, -32
126 ; LE-32BIT-NEXT: srw 7, 3, 7
127 ; LE-32BIT-NEXT: slw 4, 3, 4
128 ; LE-32BIT-NEXT: slw 3, 3, 8
129 ; LE-32BIT-NEXT: or 6, 6, 7
130 ; LE-32BIT-NEXT: or 3, 6, 3
131 ; LE-32BIT-NEXT: stw 4, 4(5)
132 ; LE-32BIT-NEXT: stw 3, 0(5)
133 ; LE-32BIT-NEXT: blr
142 ; LE-64BIT-LABEL: ashr_8bytes:
143 ; LE-64BIT: # %bb.0:
144 ; LE-64BIT-NEXT: lwz 4, 0(4)
145 ; LE-64BIT-NEXT: ld 3, 0(3)
146 ; LE-64BIT-NEXT: slwi 4, 4, 3
147 ; LE-64BIT-NEXT: srad 3, 3, 4
148 ; LE-64BIT-NEXT: std 3, 0(5)
149 ; LE-64BIT-NEXT: blr
160 ; LE-32BIT-LABEL: ashr_8bytes:
161 ; LE-32BIT: # %bb.0:
162 ; LE-32BIT-NEXT: lwz 4, 4(4)
163 ; LE-32BIT-NEXT: lwz 6, 0(3)
164 ; LE-32BIT-NEXT: slwi 4, 4, 3
165 ; LE-32BIT-NEXT: addi 7, 4, -32
166 ; LE-32BIT-NEXT: cmpwi 7, 0
167 ; LE-32BIT-NEXT: ble 0, .LBB5_2
168 ; LE-32BIT-NEXT: # %bb.1:
169 ; LE-32BIT-NEXT: sraw 3, 6, 7
170 ; LE-32BIT-NEXT: b .LBB5_3
171 ; LE-32BIT-NEXT: .LBB5_2:
172 ; LE-32BIT-NEXT: lwz 3, 4(3)
173 ; LE-32BIT-NEXT: subfic 7, 4, 32
174 ; LE-32BIT-NEXT: slw 7, 6, 7
175 ; LE-32BIT-NEXT: srw 3, 3, 4
176 ; LE-32BIT-NEXT: or 3, 3, 7
177 ; LE-32BIT-NEXT: .LBB5_3:
178 ; LE-32BIT-NEXT: sraw 4, 6, 4
179 ; LE-32BIT-NEXT: stw 4, 0(5)
180 ; LE-32BIT-NEXT: stw 3, 4(5)
181 ; LE-32BIT-NEXT: blr
191 ; LE-64BIT-LABEL: lshr_16bytes:
192 ; LE-64BIT: # %bb.0:
193 ; LE-64BIT-NEXT: lwz 4, 0(4)
194 ; LE-64BIT-NEXT: ld 6, 8(3)
195 ; LE-64BIT-NEXT: ld 3, 0(3)
196 ; LE-64BIT-NEXT: slwi 4, 4, 3
197 ; LE-64BIT-NEXT: subfic 7, 4, 64
198 ; LE-64BIT-NEXT: srd 3, 3, 4
199 ; LE-64BIT-NEXT: sld 7, 6, 7
200 ; LE-64BIT-NEXT: or 3, 3, 7
201 ; LE-64BIT-NEXT: addi 7, 4, -64
202 ; LE-64BIT-NEXT: srd 4, 6, 4
203 ; LE-64BIT-NEXT: srd 7, 6, 7
204 ; LE-64BIT-NEXT: std 4, 8(5)
205 ; LE-64BIT-NEXT: or 3, 3, 7
206 ; LE-64BIT-NEXT: std 3, 0(5)
207 ; LE-64BIT-NEXT: blr
227 ; LE-32BIT-LABEL: lshr_16bytes:
228 ; LE-32BIT: # %bb.0:
229 ; LE-32BIT-NEXT: stwu 1, -48(1)
230 ; LE-32BIT-NEXT: lwz 7, 0(3)
231 ; LE-32BIT-NEXT: li 6, 0
232 ; LE-32BIT-NEXT: lwz 8, 4(3)
233 ; LE-32BIT-NEXT: lwz 9, 8(3)
234 ; LE-32BIT-NEXT: lwz 3, 12(3)
235 ; LE-32BIT-NEXT: lwz 4, 12(4)
236 ; LE-32BIT-NEXT: stw 6, 28(1)
237 ; LE-32BIT-NEXT: stw 6, 24(1)
238 ; LE-32BIT-NEXT: stw 6, 20(1)
239 ; LE-32BIT-NEXT: stw 6, 16(1)
240 ; LE-32BIT-NEXT: rlwinm 6, 4, 0, 28, 29
241 ; LE-32BIT-NEXT: stw 3, 44(1)
242 ; LE-32BIT-NEXT: addi 3, 1, 32
243 ; LE-32BIT-NEXT: stw 9, 40(1)
244 ; LE-32BIT-NEXT: sub 3, 3, 6
245 ; LE-32BIT-NEXT: stw 8, 36(1)
246 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
247 ; LE-32BIT-NEXT: stw 7, 32(1)
248 ; LE-32BIT-NEXT: subfic 9, 4, 32
249 ; LE-32BIT-NEXT: lwz 6, 4(3)
250 ; LE-32BIT-NEXT: lwz 7, 0(3)
251 ; LE-32BIT-NEXT: lwz 8, 12(3)
252 ; LE-32BIT-NEXT: srw 10, 6, 4
253 ; LE-32BIT-NEXT: lwz 3, 8(3)
254 ; LE-32BIT-NEXT: slw 11, 7, 9
255 ; LE-32BIT-NEXT: slw 6, 6, 9
256 ; LE-32BIT-NEXT: srw 8, 8, 4
257 ; LE-32BIT-NEXT: slw 9, 3, 9
258 ; LE-32BIT-NEXT: srw 3, 3, 4
259 ; LE-32BIT-NEXT: or 3, 6, 3
260 ; LE-32BIT-NEXT: stw 3, 8(5)
261 ; LE-32BIT-NEXT: or 3, 9, 8
262 ; LE-32BIT-NEXT: srw 4, 7, 4
263 ; LE-32BIT-NEXT: stw 3, 12(5)
264 ; LE-32BIT-NEXT: or 3, 11, 10
265 ; LE-32BIT-NEXT: stw 4, 0(5)
266 ; LE-32BIT-NEXT: stw 3, 4(5)
267 ; LE-32BIT-NEXT: addi 1, 1, 48
268 ; LE-32BIT-NEXT: blr
278 ; LE-64BIT-LABEL: lshr_16bytes_wordOff:
279 ; LE-64BIT: # %bb.0:
280 ; LE-64BIT-NEXT: lwz 4, 0(4)
281 ; LE-64BIT-NEXT: ld 6, 8(3)
282 ; LE-64BIT-NEXT: ld 3, 0(3)
283 ; LE-64BIT-NEXT: slwi 4, 4, 5
284 ; LE-64BIT-NEXT: subfic 7, 4, 64
285 ; LE-64BIT-NEXT: srd 3, 3, 4
286 ; LE-64BIT-NEXT: sld 7, 6, 7
287 ; LE-64BIT-NEXT: or 3, 3, 7
288 ; LE-64BIT-NEXT: addi 7, 4, -64
289 ; LE-64BIT-NEXT: srd 4, 6, 4
290 ; LE-64BIT-NEXT: srd 7, 6, 7
291 ; LE-64BIT-NEXT: std 4, 8(5)
292 ; LE-64BIT-NEXT: or 3, 3, 7
293 ; LE-64BIT-NEXT: std 3, 0(5)
294 ; LE-64BIT-NEXT: blr
314 ; LE-32BIT-LABEL: lshr_16bytes_wordOff:
315 ; LE-32BIT: # %bb.0:
316 ; LE-32BIT-NEXT: stwu 1, -48(1)
317 ; LE-32BIT-NEXT: lwz 7, 0(3)
318 ; LE-32BIT-NEXT: li 6, 0
319 ; LE-32BIT-NEXT: lwz 8, 4(3)
320 ; LE-32BIT-NEXT: lwz 9, 8(3)
321 ; LE-32BIT-NEXT: lwz 3, 12(3)
322 ; LE-32BIT-NEXT: lwz 4, 12(4)
323 ; LE-32BIT-NEXT: stw 3, 44(1)
324 ; LE-32BIT-NEXT: addi 3, 1, 32
325 ; LE-32BIT-NEXT: rlwinm 4, 4, 2, 28, 29
326 ; LE-32BIT-NEXT: stw 6, 28(1)
327 ; LE-32BIT-NEXT: sub 3, 3, 4
328 ; LE-32BIT-NEXT: stw 6, 24(1)
329 ; LE-32BIT-NEXT: stw 6, 20(1)
330 ; LE-32BIT-NEXT: stw 6, 16(1)
331 ; LE-32BIT-NEXT: stw 9, 40(1)
332 ; LE-32BIT-NEXT: stw 8, 36(1)
333 ; LE-32BIT-NEXT: stw 7, 32(1)
334 ; LE-32BIT-NEXT: lwz 4, 4(3)
335 ; LE-32BIT-NEXT: lwz 6, 0(3)
336 ; LE-32BIT-NEXT: lwz 7, 8(3)
337 ; LE-32BIT-NEXT: lwz 3, 12(3)
338 ; LE-32BIT-NEXT: stw 7, 8(5)
339 ; LE-32BIT-NEXT: stw 3, 12(5)
340 ; LE-32BIT-NEXT: stw 6, 0(5)
341 ; LE-32BIT-NEXT: stw 4, 4(5)
342 ; LE-32BIT-NEXT: addi 1, 1, 48
343 ; LE-32BIT-NEXT: blr
353 ; LE-64BIT-LABEL: shl_16bytes:
354 ; LE-64BIT: # %bb.0:
355 ; LE-64BIT-NEXT: lwz 4, 0(4)
356 ; LE-64BIT-NEXT: ld 6, 0(3)
357 ; LE-64BIT-NEXT: ld 3, 8(3)
358 ; LE-64BIT-NEXT: slwi 4, 4, 3
359 ; LE-64BIT-NEXT: subfic 7, 4, 64
360 ; LE-64BIT-NEXT: sld 3, 3, 4
361 ; LE-64BIT-NEXT: srd 7, 6, 7
362 ; LE-64BIT-NEXT: or 3, 3, 7
363 ; LE-64BIT-NEXT: addi 7, 4, -64
364 ; LE-64BIT-NEXT: sld 4, 6, 4
365 ; LE-64BIT-NEXT: sld 7, 6, 7
366 ; LE-64BIT-NEXT: std 4, 0(5)
367 ; LE-64BIT-NEXT: or 3, 3, 7
368 ; LE-64BIT-NEXT: std 3, 8(5)
369 ; LE-64BIT-NEXT: blr
389 ; LE-32BIT-LABEL: shl_16bytes:
390 ; LE-32BIT: # %bb.0:
391 ; LE-32BIT-NEXT: stwu 1, -48(1)
392 ; LE-32BIT-NEXT: lwz 7, 0(3)
393 ; LE-32BIT-NEXT: li 6, 0
394 ; LE-32BIT-NEXT: lwz 8, 4(3)
395 ; LE-32BIT-NEXT: lwz 9, 8(3)
396 ; LE-32BIT-NEXT: lwz 3, 12(3)
397 ; LE-32BIT-NEXT: lwz 4, 12(4)
398 ; LE-32BIT-NEXT: stw 6, 44(1)
399 ; LE-32BIT-NEXT: stw 6, 40(1)
400 ; LE-32BIT-NEXT: stw 6, 36(1)
401 ; LE-32BIT-NEXT: stw 6, 32(1)
402 ; LE-32BIT-NEXT: rlwinm 6, 4, 0, 28, 29
403 ; LE-32BIT-NEXT: stw 3, 28(1)
404 ; LE-32BIT-NEXT: addi 3, 1, 16
405 ; LE-32BIT-NEXT: stw 9, 24(1)
406 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
407 ; LE-32BIT-NEXT: stw 8, 20(1)
408 ; LE-32BIT-NEXT: subfic 8, 4, 32
409 ; LE-32BIT-NEXT: stw 7, 16(1)
410 ; LE-32BIT-NEXT: lwzux 3, 6, 3
411 ; LE-32BIT-NEXT: lwz 9, 4(6)
412 ; LE-32BIT-NEXT: slw 3, 3, 4
413 ; LE-32BIT-NEXT: lwz 7, 8(6)
414 ; LE-32BIT-NEXT: lwz 6, 12(6)
415 ; LE-32BIT-NEXT: slw 11, 9, 4
416 ; LE-32BIT-NEXT: srw 9, 9, 8
417 ; LE-32BIT-NEXT: srw 10, 7, 8
418 ; LE-32BIT-NEXT: srw 8, 6, 8
419 ; LE-32BIT-NEXT: slw 7, 7, 4
420 ; LE-32BIT-NEXT: slw 4, 6, 4
421 ; LE-32BIT-NEXT: or 3, 3, 9
422 ; LE-32BIT-NEXT: stw 4, 12(5)
423 ; LE-32BIT-NEXT: or 4, 7, 8
424 ; LE-32BIT-NEXT: stw 3, 0(5)
425 ; LE-32BIT-NEXT: or 3, 11, 10
426 ; LE-32BIT-NEXT: stw 4, 8(5)
427 ; LE-32BIT-NEXT: stw 3, 4(5)
428 ; LE-32BIT-NEXT: addi 1, 1, 48
429 ; LE-32BIT-NEXT: blr
439 ; LE-64BIT-LABEL: shl_16bytes_wordOff:
440 ; LE-64BIT: # %bb.0:
441 ; LE-64BIT-NEXT: lwz 4, 0(4)
442 ; LE-64BIT-NEXT: ld 6, 0(3)
443 ; LE-64BIT-NEXT: ld 3, 8(3)
444 ; LE-64BIT-NEXT: slwi 4, 4, 5
445 ; LE-64BIT-NEXT: subfic 7, 4, 64
446 ; LE-64BIT-NEXT: sld 3, 3, 4
447 ; LE-64BIT-NEXT: srd 7, 6, 7
448 ; LE-64BIT-NEXT: or 3, 3, 7
449 ; LE-64BIT-NEXT: addi 7, 4, -64
450 ; LE-64BIT-NEXT: sld 4, 6, 4
451 ; LE-64BIT-NEXT: sld 7, 6, 7
452 ; LE-64BIT-NEXT: std 4, 0(5)
453 ; LE-64BIT-NEXT: or 3, 3, 7
454 ; LE-64BIT-NEXT: std 3, 8(5)
455 ; LE-64BIT-NEXT: blr
475 ; LE-32BIT-LABEL: shl_16bytes_wordOff:
476 ; LE-32BIT: # %bb.0:
477 ; LE-32BIT-NEXT: stwu 1, -48(1)
478 ; LE-32BIT-NEXT: lwz 7, 0(3)
479 ; LE-32BIT-NEXT: li 6, 0
480 ; LE-32BIT-NEXT: lwz 8, 4(3)
481 ; LE-32BIT-NEXT: lwz 9, 8(3)
482 ; LE-32BIT-NEXT: lwz 3, 12(3)
483 ; LE-32BIT-NEXT: lwz 4, 12(4)
484 ; LE-32BIT-NEXT: stw 6, 44(1)
485 ; LE-32BIT-NEXT: stw 6, 40(1)
486 ; LE-32BIT-NEXT: rlwinm 4, 4, 2, 28, 29
487 ; LE-32BIT-NEXT: stw 6, 36(1)
488 ; LE-32BIT-NEXT: stw 6, 32(1)
489 ; LE-32BIT-NEXT: stw 3, 28(1)
490 ; LE-32BIT-NEXT: addi 3, 1, 16
491 ; LE-32BIT-NEXT: stw 9, 24(1)
492 ; LE-32BIT-NEXT: stw 8, 20(1)
493 ; LE-32BIT-NEXT: stw 7, 16(1)
494 ; LE-32BIT-NEXT: lwzux 3, 4, 3
495 ; LE-32BIT-NEXT: lwz 6, 4(4)
496 ; LE-32BIT-NEXT: lwz 7, 12(4)
497 ; LE-32BIT-NEXT: lwz 4, 8(4)
498 ; LE-32BIT-NEXT: stw 3, 0(5)
499 ; LE-32BIT-NEXT: stw 4, 8(5)
500 ; LE-32BIT-NEXT: stw 7, 12(5)
501 ; LE-32BIT-NEXT: stw 6, 4(5)
502 ; LE-32BIT-NEXT: addi 1, 1, 48
503 ; LE-32BIT-NEXT: blr
513 ; LE-64BIT-LABEL: ashr_16bytes:
514 ; LE-64BIT: # %bb.0:
515 ; LE-64BIT-NEXT: lwz 4, 0(4)
516 ; LE-64BIT-NEXT: ld 6, 8(3)
517 ; LE-64BIT-NEXT: ld 3, 0(3)
518 ; LE-64BIT-NEXT: slwi 4, 4, 3
519 ; LE-64BIT-NEXT: subfic 7, 4, 64
520 ; LE-64BIT-NEXT: srd 3, 3, 4
521 ; LE-64BIT-NEXT: sld 7, 6, 7
522 ; LE-64BIT-NEXT: or 3, 3, 7
523 ; LE-64BIT-NEXT: addi 7, 4, -64
524 ; LE-64BIT-NEXT: srad 4, 6, 4
525 ; LE-64BIT-NEXT: cmpwi 7, 1
526 ; LE-64BIT-NEXT: srad 8, 6, 7
527 ; LE-64BIT-NEXT: std 4, 8(5)
528 ; LE-64BIT-NEXT: isellt 3, 3, 8
529 ; LE-64BIT-NEXT: std 3, 0(5)
530 ; LE-64BIT-NEXT: blr
555 ; LE-32BIT-LABEL: ashr_16bytes:
556 ; LE-32BIT: # %bb.0:
557 ; LE-32BIT-NEXT: stwu 1, -48(1)
558 ; LE-32BIT-NEXT: lwz 7, 0(3)
559 ; LE-32BIT-NEXT: addi 6, 1, 32
560 ; LE-32BIT-NEXT: lwz 8, 4(3)
561 ; LE-32BIT-NEXT: lwz 9, 8(3)
562 ; LE-32BIT-NEXT: lwz 3, 12(3)
563 ; LE-32BIT-NEXT: lwz 4, 12(4)
564 ; LE-32BIT-NEXT: stw 3, 44(1)
565 ; LE-32BIT-NEXT: srawi 3, 7, 31
566 ; LE-32BIT-NEXT: stw 7, 32(1)
567 ; LE-32BIT-NEXT: rlwinm 7, 4, 0, 28, 29
568 ; LE-32BIT-NEXT: stw 9, 40(1)
569 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
570 ; LE-32BIT-NEXT: stw 8, 36(1)
571 ; LE-32BIT-NEXT: subfic 9, 4, 32
572 ; LE-32BIT-NEXT: stw 3, 28(1)
573 ; LE-32BIT-NEXT: stw 3, 24(1)
574 ; LE-32BIT-NEXT: stw 3, 20(1)
575 ; LE-32BIT-NEXT: stw 3, 16(1)
576 ; LE-32BIT-NEXT: sub 3, 6, 7
577 ; LE-32BIT-NEXT: lwz 6, 4(3)
578 ; LE-32BIT-NEXT: lwz 7, 0(3)
579 ; LE-32BIT-NEXT: lwz 8, 12(3)
580 ; LE-32BIT-NEXT: srw 10, 6, 4
581 ; LE-32BIT-NEXT: lwz 3, 8(3)
582 ; LE-32BIT-NEXT: slw 11, 7, 9
583 ; LE-32BIT-NEXT: slw 6, 6, 9
584 ; LE-32BIT-NEXT: srw 8, 8, 4
585 ; LE-32BIT-NEXT: slw 9, 3, 9
586 ; LE-32BIT-NEXT: srw 3, 3, 4
587 ; LE-32BIT-NEXT: or 3, 6, 3
588 ; LE-32BIT-NEXT: stw 3, 8(5)
589 ; LE-32BIT-NEXT: or 3, 9, 8
590 ; LE-32BIT-NEXT: sraw 4, 7, 4
591 ; LE-32BIT-NEXT: stw 3, 12(5)
592 ; LE-32BIT-NEXT: or 3, 11, 10
593 ; LE-32BIT-NEXT: stw 4, 0(5)
594 ; LE-32BIT-NEXT: stw 3, 4(5)
595 ; LE-32BIT-NEXT: addi 1, 1, 48
596 ; LE-32BIT-NEXT: blr
606 ; LE-64BIT-LABEL: ashr_16bytes_wordOff:
607 ; LE-64BIT: # %bb.0:
608 ; LE-64BIT-NEXT: lwz 4, 0(4)
609 ; LE-64BIT-NEXT: ld 6, 8(3)
610 ; LE-64BIT-NEXT: ld 3, 0(3)
611 ; LE-64BIT-NEXT: slwi 4, 4, 5
612 ; LE-64BIT-NEXT: subfic 7, 4, 64
613 ; LE-64BIT-NEXT: srd 3, 3, 4
614 ; LE-64BIT-NEXT: sld 7, 6, 7
615 ; LE-64BIT-NEXT: or 3, 3, 7
616 ; LE-64BIT-NEXT: addi 7, 4, -64
617 ; LE-64BIT-NEXT: srad 4, 6, 4
618 ; LE-64BIT-NEXT: cmpwi 7, 1
619 ; LE-64BIT-NEXT: srad 8, 6, 7
620 ; LE-64BIT-NEXT: std 4, 8(5)
621 ; LE-64BIT-NEXT: isellt 3, 3, 8
622 ; LE-64BIT-NEXT: std 3, 0(5)
623 ; LE-64BIT-NEXT: blr
648 ; LE-32BIT-LABEL: ashr_16bytes_wordOff:
649 ; LE-32BIT: # %bb.0:
650 ; LE-32BIT-NEXT: stwu 1, -48(1)
651 ; LE-32BIT-NEXT: lwz 7, 0(3)
652 ; LE-32BIT-NEXT: addi 6, 1, 32
653 ; LE-32BIT-NEXT: lwz 8, 4(3)
654 ; LE-32BIT-NEXT: lwz 9, 8(3)
655 ; LE-32BIT-NEXT: lwz 3, 12(3)
656 ; LE-32BIT-NEXT: lwz 4, 12(4)
657 ; LE-32BIT-NEXT: stw 3, 44(1)
658 ; LE-32BIT-NEXT: srawi 3, 7, 31
659 ; LE-32BIT-NEXT: rlwinm 4, 4, 2, 28, 29
660 ; LE-32BIT-NEXT: stw 9, 40(1)
661 ; LE-32BIT-NEXT: stw 8, 36(1)
662 ; LE-32BIT-NEXT: stw 7, 32(1)
663 ; LE-32BIT-NEXT: stw 3, 28(1)
664 ; LE-32BIT-NEXT: stw 3, 24(1)
665 ; LE-32BIT-NEXT: stw 3, 20(1)
666 ; LE-32BIT-NEXT: stw 3, 16(1)
667 ; LE-32BIT-NEXT: sub 3, 6, 4
668 ; LE-32BIT-NEXT: lwz 4, 4(3)
669 ; LE-32BIT-NEXT: lwz 6, 0(3)
670 ; LE-32BIT-NEXT: lwz 7, 8(3)
671 ; LE-32BIT-NEXT: lwz 3, 12(3)
672 ; LE-32BIT-NEXT: stw 7, 8(5)
673 ; LE-32BIT-NEXT: stw 3, 12(5)
674 ; LE-32BIT-NEXT: stw 6, 0(5)
675 ; LE-32BIT-NEXT: stw 4, 4(5)
676 ; LE-32BIT-NEXT: addi 1, 1, 48
677 ; LE-32BIT-NEXT: blr
687 ; LE-64BIT-LABEL: lshr_32bytes:
688 ; LE-64BIT: # %bb.0:
689 ; LE-64BIT-NEXT: li 6, 16
690 ; LE-64BIT-NEXT: lxvd2x 1, 0, 3
691 ; LE-64BIT-NEXT: xxlxor 2, 2, 2
692 ; LE-64BIT-NEXT: addi 7, 1, -64
693 ; LE-64BIT-NEXT: li 8, 32
694 ; LE-64BIT-NEXT: lxvd2x 0, 3, 6
695 ; LE-64BIT-NEXT: lwz 3, 0(4)
696 ; LE-64BIT-NEXT: li 4, 48
697 ; LE-64BIT-NEXT: stxvd2x 2, 7, 8
698 ; LE-64BIT-NEXT: stxvd2x 2, 7, 4
699 ; LE-64BIT-NEXT: rlwinm 4, 3, 0, 27, 28
700 ; LE-64BIT-NEXT: stxvd2x 1, 0, 7
701 ; LE-64BIT-NEXT: rlwinm 3, 3, 3, 26, 28
702 ; LE-64BIT-NEXT: stxvd2x 0, 7, 6
703 ; LE-64BIT-NEXT: ldux 6, 4, 7
704 ; LE-64BIT-NEXT: subfic 7, 3, 64
705 ; LE-64BIT-NEXT: ld 8, 8(4)
706 ; LE-64BIT-NEXT: ld 9, 16(4)
707 ; LE-64BIT-NEXT: ld 4, 24(4)
708 ; LE-64BIT-NEXT: srd 6, 6, 3
709 ; LE-64BIT-NEXT: sld 10, 8, 7
710 ; LE-64BIT-NEXT: sld 11, 4, 7
711 ; LE-64BIT-NEXT: srd 8, 8, 3
712 ; LE-64BIT-NEXT: sld 7, 9, 7
713 ; LE-64BIT-NEXT: or 6, 10, 6
714 ; LE-64BIT-NEXT: srd 10, 9, 3
715 ; LE-64BIT-NEXT: srd 3, 4, 3
716 ; LE-64BIT-NEXT: or 7, 7, 8
717 ; LE-64BIT-NEXT: std 3, 24(5)
718 ; LE-64BIT-NEXT: or 3, 11, 10
719 ; LE-64BIT-NEXT: std 7, 8(5)
720 ; LE-64BIT-NEXT: std 6, 0(5)
721 ; LE-64BIT-NEXT: std 3, 16(5)
722 ; LE-64BIT-NEXT: blr
766 ; LE-32BIT-LABEL: lshr_32bytes:
767 ; LE-32BIT: # %bb.0:
768 ; LE-32BIT-NEXT: stwu 1, -112(1)
769 ; LE-32BIT-NEXT: lwz 7, 0(3)
770 ; LE-32BIT-NEXT: li 6, 0
771 ; LE-32BIT-NEXT: lwz 8, 4(3)
772 ; LE-32BIT-NEXT: lwz 9, 8(3)
773 ; LE-32BIT-NEXT: lwz 10, 12(3)
774 ; LE-32BIT-NEXT: lwz 11, 16(3)
775 ; LE-32BIT-NEXT: lwz 12, 20(3)
776 ; LE-32BIT-NEXT: lwz 0, 24(3)
777 ; LE-32BIT-NEXT: lwz 3, 28(3)
778 ; LE-32BIT-NEXT: lwz 4, 28(4)
779 ; LE-32BIT-NEXT: stw 6, 44(1)
780 ; LE-32BIT-NEXT: stw 6, 40(1)
781 ; LE-32BIT-NEXT: stw 6, 36(1)
782 ; LE-32BIT-NEXT: stw 6, 32(1)
783 ; LE-32BIT-NEXT: stw 6, 28(1)
784 ; LE-32BIT-NEXT: stw 6, 24(1)
785 ; LE-32BIT-NEXT: stw 6, 20(1)
786 ; LE-32BIT-NEXT: stw 6, 16(1)
787 ; LE-32BIT-NEXT: rlwinm 6, 4, 0, 27, 29
788 ; LE-32BIT-NEXT: stw 3, 76(1)
789 ; LE-32BIT-NEXT: addi 3, 1, 48
790 ; LE-32BIT-NEXT: stw 25, 84(1) # 4-byte Folded Spill
791 ; LE-32BIT-NEXT: sub 3, 3, 6
792 ; LE-32BIT-NEXT: stw 26, 88(1) # 4-byte Folded Spill
793 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
794 ; LE-32BIT-NEXT: stw 27, 92(1) # 4-byte Folded Spill
795 ; LE-32BIT-NEXT: stw 28, 96(1) # 4-byte Folded Spill
796 ; LE-32BIT-NEXT: stw 29, 100(1) # 4-byte Folded Spill
797 ; LE-32BIT-NEXT: stw 30, 104(1) # 4-byte Folded Spill
798 ; LE-32BIT-NEXT: stw 0, 72(1)
799 ; LE-32BIT-NEXT: subfic 0, 4, 32
800 ; LE-32BIT-NEXT: stw 12, 68(1)
801 ; LE-32BIT-NEXT: stw 11, 64(1)
802 ; LE-32BIT-NEXT: stw 10, 60(1)
803 ; LE-32BIT-NEXT: stw 9, 56(1)
804 ; LE-32BIT-NEXT: stw 8, 52(1)
805 ; LE-32BIT-NEXT: stw 7, 48(1)
806 ; LE-32BIT-NEXT: lwz 6, 4(3)
807 ; LE-32BIT-NEXT: lwz 7, 0(3)
808 ; LE-32BIT-NEXT: lwz 8, 12(3)
809 ; LE-32BIT-NEXT: srw 30, 6, 4
810 ; LE-32BIT-NEXT: lwz 9, 8(3)
811 ; LE-32BIT-NEXT: slw 29, 7, 0
812 ; LE-32BIT-NEXT: lwz 10, 20(3)
813 ; LE-32BIT-NEXT: srw 28, 8, 4
814 ; LE-32BIT-NEXT: lwz 11, 16(3)
815 ; LE-32BIT-NEXT: slw 27, 9, 0
816 ; LE-32BIT-NEXT: lwz 12, 28(3)
817 ; LE-32BIT-NEXT: slw 6, 6, 0
818 ; LE-32BIT-NEXT: lwz 3, 24(3)
819 ; LE-32BIT-NEXT: srw 26, 10, 4
820 ; LE-32BIT-NEXT: slw 25, 11, 0
821 ; LE-32BIT-NEXT: slw 8, 8, 0
822 ; LE-32BIT-NEXT: slw 10, 10, 0
823 ; LE-32BIT-NEXT: slw 0, 3, 0
824 ; LE-32BIT-NEXT: srw 3, 3, 4
825 ; LE-32BIT-NEXT: srw 12, 12, 4
826 ; LE-32BIT-NEXT: or 3, 10, 3
827 ; LE-32BIT-NEXT: srw 11, 11, 4
828 ; LE-32BIT-NEXT: stw 3, 24(5)
829 ; LE-32BIT-NEXT: or 3, 0, 12
830 ; LE-32BIT-NEXT: stw 3, 28(5)
831 ; LE-32BIT-NEXT: or 3, 8, 11
832 ; LE-32BIT-NEXT: srw 9, 9, 4
833 ; LE-32BIT-NEXT: stw 3, 16(5)
834 ; LE-32BIT-NEXT: or 3, 25, 26
835 ; LE-32BIT-NEXT: stw 3, 20(5)
836 ; LE-32BIT-NEXT: or 3, 6, 9
837 ; LE-32BIT-NEXT: stw 3, 8(5)
838 ; LE-32BIT-NEXT: or 3, 27, 28
839 ; LE-32BIT-NEXT: srw 4, 7, 4
840 ; LE-32BIT-NEXT: stw 3, 12(5)
841 ; LE-32BIT-NEXT: or 3, 29, 30
842 ; LE-32BIT-NEXT: stw 4, 0(5)
843 ; LE-32BIT-NEXT: stw 3, 4(5)
844 ; LE-32BIT-NEXT: lwz 30, 104(1) # 4-byte Folded Reload
845 ; LE-32BIT-NEXT: lwz 29, 100(1) # 4-byte Folded Reload
846 ; LE-32BIT-NEXT: lwz 28, 96(1) # 4-byte Folded Reload
847 ; LE-32BIT-NEXT: lwz 27, 92(1) # 4-byte Folded Reload
848 ; LE-32BIT-NEXT: lwz 26, 88(1) # 4-byte Folded Reload
849 ; LE-32BIT-NEXT: lwz 25, 84(1) # 4-byte Folded Reload
850 ; LE-32BIT-NEXT: addi 1, 1, 112
851 ; LE-32BIT-NEXT: blr
861 ; LE-64BIT-LABEL: lshr_32bytes_wordOff:
862 ; LE-64BIT: # %bb.0:
863 ; LE-64BIT-NEXT: li 6, 16
864 ; LE-64BIT-NEXT: lxvd2x 1, 0, 3
865 ; LE-64BIT-NEXT: xxlxor 2, 2, 2
866 ; LE-64BIT-NEXT: addi 7, 1, -64
867 ; LE-64BIT-NEXT: li 8, 32
868 ; LE-64BIT-NEXT: lxvd2x 0, 3, 6
869 ; LE-64BIT-NEXT: lwz 3, 0(4)
870 ; LE-64BIT-NEXT: li 4, 48
871 ; LE-64BIT-NEXT: stxvd2x 2, 7, 8
872 ; LE-64BIT-NEXT: stxvd2x 2, 7, 4
873 ; LE-64BIT-NEXT: rlwinm 4, 3, 2, 27, 28
874 ; LE-64BIT-NEXT: stxvd2x 1, 0, 7
875 ; LE-64BIT-NEXT: rlwinm 3, 3, 5, 26, 26
876 ; LE-64BIT-NEXT: stxvd2x 0, 7, 6
877 ; LE-64BIT-NEXT: ldux 6, 4, 7
878 ; LE-64BIT-NEXT: subfic 7, 3, 64
879 ; LE-64BIT-NEXT: ld 8, 8(4)
880 ; LE-64BIT-NEXT: ld 9, 16(4)
881 ; LE-64BIT-NEXT: ld 4, 24(4)
882 ; LE-64BIT-NEXT: srd 6, 6, 3
883 ; LE-64BIT-NEXT: sld 10, 8, 7
884 ; LE-64BIT-NEXT: sld 11, 4, 7
885 ; LE-64BIT-NEXT: srd 8, 8, 3
886 ; LE-64BIT-NEXT: sld 7, 9, 7
887 ; LE-64BIT-NEXT: or 6, 10, 6
888 ; LE-64BIT-NEXT: srd 10, 9, 3
889 ; LE-64BIT-NEXT: srd 3, 4, 3
890 ; LE-64BIT-NEXT: or 7, 7, 8
891 ; LE-64BIT-NEXT: std 3, 24(5)
892 ; LE-64BIT-NEXT: or 3, 11, 10
893 ; LE-64BIT-NEXT: std 7, 8(5)
894 ; LE-64BIT-NEXT: std 6, 0(5)
895 ; LE-64BIT-NEXT: std 3, 16(5)
896 ; LE-64BIT-NEXT: blr
940 ; LE-32BIT-LABEL: lshr_32bytes_wordOff:
941 ; LE-32BIT: # %bb.0:
942 ; LE-32BIT-NEXT: stwu 1, -80(1)
943 ; LE-32BIT-NEXT: lwz 7, 0(3)
944 ; LE-32BIT-NEXT: li 6, 0
945 ; LE-32BIT-NEXT: lwz 8, 4(3)
946 ; LE-32BIT-NEXT: lwz 9, 8(3)
947 ; LE-32BIT-NEXT: lwz 10, 12(3)
948 ; LE-32BIT-NEXT: lwz 11, 16(3)
949 ; LE-32BIT-NEXT: lwz 12, 20(3)
950 ; LE-32BIT-NEXT: lwz 0, 24(3)
951 ; LE-32BIT-NEXT: lwz 3, 28(3)
952 ; LE-32BIT-NEXT: lwz 4, 28(4)
953 ; LE-32BIT-NEXT: stw 3, 76(1)
954 ; LE-32BIT-NEXT: addi 3, 1, 48
955 ; LE-32BIT-NEXT: rlwinm 4, 4, 2, 27, 29
956 ; LE-32BIT-NEXT: stw 6, 44(1)
957 ; LE-32BIT-NEXT: sub 3, 3, 4
958 ; LE-32BIT-NEXT: stw 6, 40(1)
959 ; LE-32BIT-NEXT: stw 6, 36(1)
960 ; LE-32BIT-NEXT: stw 6, 32(1)
961 ; LE-32BIT-NEXT: stw 6, 28(1)
962 ; LE-32BIT-NEXT: stw 6, 24(1)
963 ; LE-32BIT-NEXT: stw 6, 20(1)
964 ; LE-32BIT-NEXT: stw 6, 16(1)
965 ; LE-32BIT-NEXT: stw 0, 72(1)
966 ; LE-32BIT-NEXT: stw 12, 68(1)
967 ; LE-32BIT-NEXT: stw 11, 64(1)
968 ; LE-32BIT-NEXT: stw 10, 60(1)
969 ; LE-32BIT-NEXT: stw 9, 56(1)
970 ; LE-32BIT-NEXT: stw 8, 52(1)
971 ; LE-32BIT-NEXT: stw 7, 48(1)
972 ; LE-32BIT-NEXT: lwz 4, 4(3)
973 ; LE-32BIT-NEXT: lwz 6, 0(3)
974 ; LE-32BIT-NEXT: lwz 7, 12(3)
975 ; LE-32BIT-NEXT: lwz 8, 8(3)
976 ; LE-32BIT-NEXT: lwz 9, 20(3)
977 ; LE-32BIT-NEXT: lwz 10, 16(3)
978 ; LE-32BIT-NEXT: lwz 11, 24(3)
979 ; LE-32BIT-NEXT: lwz 3, 28(3)
980 ; LE-32BIT-NEXT: stw 11, 24(5)
981 ; LE-32BIT-NEXT: stw 3, 28(5)
982 ; LE-32BIT-NEXT: stw 10, 16(5)
983 ; LE-32BIT-NEXT: stw 9, 20(5)
984 ; LE-32BIT-NEXT: stw 8, 8(5)
985 ; LE-32BIT-NEXT: stw 7, 12(5)
986 ; LE-32BIT-NEXT: stw 6, 0(5)
987 ; LE-32BIT-NEXT: stw 4, 4(5)
988 ; LE-32BIT-NEXT: addi 1, 1, 80
989 ; LE-32BIT-NEXT: blr
999 ; LE-64BIT-LABEL: lshr_32bytes_dwordOff:
1000 ; LE-64BIT: # %bb.0:
1001 ; LE-64BIT-NEXT: li 6, 16
1002 ; LE-64BIT-NEXT: lxvd2x 1, 0, 3
1003 ; LE-64BIT-NEXT: xxlxor 2, 2, 2
1004 ; LE-64BIT-NEXT: addi 7, 1, -64
1005 ; LE-64BIT-NEXT: lxvd2x 0, 3, 6
1006 ; LE-64BIT-NEXT: lwz 3, 0(4)
1007 ; LE-64BIT-NEXT: li 4, 48
1008 ; LE-64BIT-NEXT: stxvd2x 2, 7, 4
1009 ; LE-64BIT-NEXT: li 4, 32
1010 ; LE-64BIT-NEXT: rlwinm 3, 3, 3, 27, 28
1011 ; LE-64BIT-NEXT: stxvd2x 1, 0, 7
1012 ; LE-64BIT-NEXT: stxvd2x 2, 7, 4
1013 ; LE-64BIT-NEXT: stxvd2x 0, 7, 6
1014 ; LE-64BIT-NEXT: lxvd2x 0, 7, 3
1015 ; LE-64BIT-NEXT: add 3, 7, 3
1016 ; LE-64BIT-NEXT: lxvd2x 1, 3, 6
1017 ; LE-64BIT-NEXT: stxvd2x 0, 0, 5
1018 ; LE-64BIT-NEXT: stxvd2x 1, 5, 6
1019 ; LE-64BIT-NEXT: blr
1051 ; LE-32BIT-LABEL: lshr_32bytes_dwordOff:
1052 ; LE-32BIT: # %bb.0:
1053 ; LE-32BIT-NEXT: stwu 1, -80(1)
1054 ; LE-32BIT-NEXT: lwz 7, 0(3)
1055 ; LE-32BIT-NEXT: li 6, 0
1056 ; LE-32BIT-NEXT: lwz 8, 4(3)
1057 ; LE-32BIT-NEXT: lwz 9, 8(3)
1058 ; LE-32BIT-NEXT: lwz 10, 12(3)
1059 ; LE-32BIT-NEXT: lwz 11, 16(3)
1060 ; LE-32BIT-NEXT: lwz 12, 20(3)
1061 ; LE-32BIT-NEXT: lwz 0, 24(3)
1062 ; LE-32BIT-NEXT: lwz 3, 28(3)
1063 ; LE-32BIT-NEXT: lwz 4, 28(4)
1064 ; LE-32BIT-NEXT: stw 3, 76(1)
1065 ; LE-32BIT-NEXT: addi 3, 1, 48
1066 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
1067 ; LE-32BIT-NEXT: stw 6, 44(1)
1068 ; LE-32BIT-NEXT: sub 3, 3, 4
1069 ; LE-32BIT-NEXT: stw 6, 40(1)
1070 ; LE-32BIT-NEXT: stw 6, 36(1)
1071 ; LE-32BIT-NEXT: stw 6, 32(1)
1072 ; LE-32BIT-NEXT: stw 6, 28(1)
1073 ; LE-32BIT-NEXT: stw 6, 24(1)
1074 ; LE-32BIT-NEXT: stw 6, 20(1)
1075 ; LE-32BIT-NEXT: stw 6, 16(1)
1076 ; LE-32BIT-NEXT: stw 0, 72(1)
1077 ; LE-32BIT-NEXT: stw 12, 68(1)
1078 ; LE-32BIT-NEXT: stw 11, 64(1)
1079 ; LE-32BIT-NEXT: stw 10, 60(1)
1080 ; LE-32BIT-NEXT: stw 9, 56(1)
1081 ; LE-32BIT-NEXT: stw 8, 52(1)
1082 ; LE-32BIT-NEXT: stw 7, 48(1)
1083 ; LE-32BIT-NEXT: lwz 4, 4(3)
1084 ; LE-32BIT-NEXT: lwz 6, 0(3)
1085 ; LE-32BIT-NEXT: lwz 7, 12(3)
1086 ; LE-32BIT-NEXT: lwz 8, 8(3)
1087 ; LE-32BIT-NEXT: lwz 9, 20(3)
1088 ; LE-32BIT-NEXT: lwz 10, 16(3)
1089 ; LE-32BIT-NEXT: lwz 11, 24(3)
1090 ; LE-32BIT-NEXT: lwz 3, 28(3)
1091 ; LE-32BIT-NEXT: stw 11, 24(5)
1092 ; LE-32BIT-NEXT: stw 3, 28(5)
1093 ; LE-32BIT-NEXT: stw 10, 16(5)
1094 ; LE-32BIT-NEXT: stw 9, 20(5)
1095 ; LE-32BIT-NEXT: stw 8, 8(5)
1096 ; LE-32BIT-NEXT: stw 7, 12(5)
1097 ; LE-32BIT-NEXT: stw 6, 0(5)
1098 ; LE-32BIT-NEXT: stw 4, 4(5)
1099 ; LE-32BIT-NEXT: addi 1, 1, 80
1100 ; LE-32BIT-NEXT: blr
1110 ; LE-64BIT-LABEL: shl_32bytes:
1111 ; LE-64BIT: # %bb.0:
1112 ; LE-64BIT-NEXT: li 6, 16
1113 ; LE-64BIT-NEXT: lwz 4, 0(4)
1114 ; LE-64BIT-NEXT: lxvd2x 1, 0, 3
1115 ; LE-64BIT-NEXT: addi 7, 1, -64
1116 ; LE-64BIT-NEXT: li 8, 48
1117 ; LE-64BIT-NEXT: lxvd2x 0, 3, 6
1118 ; LE-64BIT-NEXT: rlwinm 3, 4, 0, 27, 28
1119 ; LE-64BIT-NEXT: rlwinm 4, 4, 3, 26, 28
1120 ; LE-64BIT-NEXT: neg 3, 3
1121 ; LE-64BIT-NEXT: stxvd2x 0, 7, 8
1122 ; LE-64BIT-NEXT: xxlxor 0, 0, 0
1123 ; LE-64BIT-NEXT: li 8, 32
1124 ; LE-64BIT-NEXT: extsw 3, 3
1125 ; LE-64BIT-NEXT: stxvd2x 0, 7, 6
1126 ; LE-64BIT-NEXT: addi 6, 1, -32
1127 ; LE-64BIT-NEXT: stxvd2x 0, 0, 7
1128 ; LE-64BIT-NEXT: stxvd2x 1, 7, 8
1129 ; LE-64BIT-NEXT: subfic 7, 4, 64
1130 ; LE-64BIT-NEXT: ldux 3, 6, 3
1131 ; LE-64BIT-NEXT: ld 8, 16(6)
1132 ; LE-64BIT-NEXT: ld 9, 24(6)
1133 ; LE-64BIT-NEXT: ld 6, 8(6)
1134 ; LE-64BIT-NEXT: srd 10, 8, 7
1135 ; LE-64BIT-NEXT: sld 9, 9, 4
1136 ; LE-64BIT-NEXT: sld 8, 8, 4
1137 ; LE-64BIT-NEXT: or 9, 9, 10
1138 ; LE-64BIT-NEXT: srd 10, 6, 7
1139 ; LE-64BIT-NEXT: srd 7, 3, 7
1140 ; LE-64BIT-NEXT: sld 6, 6, 4
1141 ; LE-64BIT-NEXT: sld 3, 3, 4
1142 ; LE-64BIT-NEXT: or 6, 6, 7
1143 ; LE-64BIT-NEXT: std 3, 0(5)
1144 ; LE-64BIT-NEXT: or 3, 8, 10
1145 ; LE-64BIT-NEXT: std 9, 24(5)
1146 ; LE-64BIT-NEXT: std 6, 8(5)
1147 ; LE-64BIT-NEXT: std 3, 16(5)
1148 ; LE-64BIT-NEXT: blr
1190 ; LE-32BIT-LABEL: shl_32bytes:
1191 ; LE-32BIT: # %bb.0:
1192 ; LE-32BIT-NEXT: stwu 1, -112(1)
1193 ; LE-32BIT-NEXT: lwz 7, 0(3)
1194 ; LE-32BIT-NEXT: li 6, 0
1195 ; LE-32BIT-NEXT: lwz 8, 4(3)
1196 ; LE-32BIT-NEXT: lwz 9, 8(3)
1197 ; LE-32BIT-NEXT: lwz 10, 12(3)
1198 ; LE-32BIT-NEXT: lwz 11, 16(3)
1199 ; LE-32BIT-NEXT: lwz 12, 20(3)
1200 ; LE-32BIT-NEXT: lwz 0, 24(3)
1201 ; LE-32BIT-NEXT: lwz 3, 28(3)
1202 ; LE-32BIT-NEXT: lwz 4, 28(4)
1203 ; LE-32BIT-NEXT: stw 25, 84(1) # 4-byte Folded Spill
1204 ; LE-32BIT-NEXT: stw 26, 88(1) # 4-byte Folded Spill
1205 ; LE-32BIT-NEXT: stw 27, 92(1) # 4-byte Folded Spill
1206 ; LE-32BIT-NEXT: stw 28, 96(1) # 4-byte Folded Spill
1207 ; LE-32BIT-NEXT: stw 29, 100(1) # 4-byte Folded Spill
1208 ; LE-32BIT-NEXT: stw 30, 104(1) # 4-byte Folded Spill
1209 ; LE-32BIT-NEXT: stw 6, 76(1)
1210 ; LE-32BIT-NEXT: stw 6, 72(1)
1211 ; LE-32BIT-NEXT: stw 6, 68(1)
1212 ; LE-32BIT-NEXT: stw 6, 64(1)
1213 ; LE-32BIT-NEXT: stw 6, 60(1)
1214 ; LE-32BIT-NEXT: stw 6, 56(1)
1215 ; LE-32BIT-NEXT: stw 6, 52(1)
1216 ; LE-32BIT-NEXT: stw 6, 48(1)
1217 ; LE-32BIT-NEXT: rlwinm 6, 4, 0, 27, 29
1218 ; LE-32BIT-NEXT: stw 3, 44(1)
1219 ; LE-32BIT-NEXT: addi 3, 1, 16
1220 ; LE-32BIT-NEXT: stw 0, 40(1)
1221 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
1222 ; LE-32BIT-NEXT: stw 12, 36(1)
1223 ; LE-32BIT-NEXT: subfic 12, 4, 32
1224 ; LE-32BIT-NEXT: stw 11, 32(1)
1225 ; LE-32BIT-NEXT: stw 10, 28(1)
1226 ; LE-32BIT-NEXT: stw 9, 24(1)
1227 ; LE-32BIT-NEXT: stw 8, 20(1)
1228 ; LE-32BIT-NEXT: stw 7, 16(1)
1229 ; LE-32BIT-NEXT: lwzux 3, 6, 3
1230 ; LE-32BIT-NEXT: lwz 7, 8(6)
1231 ; LE-32BIT-NEXT: slw 3, 3, 4
1232 ; LE-32BIT-NEXT: lwz 8, 4(6)
1233 ; LE-32BIT-NEXT: lwz 9, 16(6)
1234 ; LE-32BIT-NEXT: srw 30, 7, 12
1235 ; LE-32BIT-NEXT: lwz 10, 12(6)
1236 ; LE-32BIT-NEXT: slw 29, 8, 4
1237 ; LE-32BIT-NEXT: lwz 11, 24(6)
1238 ; LE-32BIT-NEXT: srw 8, 8, 12
1239 ; LE-32BIT-NEXT: lwz 0, 20(6)
1240 ; LE-32BIT-NEXT: srw 28, 9, 12
1241 ; LE-32BIT-NEXT: lwz 6, 28(6)
1242 ; LE-32BIT-NEXT: slw 27, 10, 4
1243 ; LE-32BIT-NEXT: srw 10, 10, 12
1244 ; LE-32BIT-NEXT: slw 7, 7, 4
1245 ; LE-32BIT-NEXT: srw 26, 11, 12
1246 ; LE-32BIT-NEXT: slw 25, 0, 4
1247 ; LE-32BIT-NEXT: srw 0, 0, 12
1248 ; LE-32BIT-NEXT: slw 9, 9, 4
1249 ; LE-32BIT-NEXT: srw 12, 6, 12
1250 ; LE-32BIT-NEXT: slw 11, 11, 4
1251 ; LE-32BIT-NEXT: slw 4, 6, 4
1252 ; LE-32BIT-NEXT: stw 4, 28(5)
1253 ; LE-32BIT-NEXT: or 4, 11, 12
1254 ; LE-32BIT-NEXT: stw 4, 24(5)
1255 ; LE-32BIT-NEXT: or 4, 9, 0
1256 ; LE-32BIT-NEXT: stw 4, 16(5)
1257 ; LE-32BIT-NEXT: or 4, 25, 26
1258 ; LE-32BIT-NEXT: stw 4, 20(5)
1259 ; LE-32BIT-NEXT: or 4, 7, 10
1260 ; LE-32BIT-NEXT: or 3, 3, 8
1261 ; LE-32BIT-NEXT: stw 4, 8(5)
1262 ; LE-32BIT-NEXT: or 4, 27, 28
1263 ; LE-32BIT-NEXT: stw 3, 0(5)
1264 ; LE-32BIT-NEXT: or 3, 29, 30
1265 ; LE-32BIT-NEXT: stw 4, 12(5)
1266 ; LE-32BIT-NEXT: stw 3, 4(5)
1267 ; LE-32BIT-NEXT: lwz 30, 104(1) # 4-byte Folded Reload
1268 ; LE-32BIT-NEXT: lwz 29, 100(1) # 4-byte Folded Reload
1269 ; LE-32BIT-NEXT: lwz 28, 96(1) # 4-byte Folded Reload
1270 ; LE-32BIT-NEXT: lwz 27, 92(1) # 4-byte Folded Reload
1271 ; LE-32BIT-NEXT: lwz 26, 88(1) # 4-byte Folded Reload
1272 ; LE-32BIT-NEXT: lwz 25, 84(1) # 4-byte Folded Reload
1273 ; LE-32BIT-NEXT: addi 1, 1, 112
1274 ; LE-32BIT-NEXT: blr
1284 ; LE-64BIT-LABEL: shl_32bytes_wordOff:
1285 ; LE-64BIT: # %bb.0:
1286 ; LE-64BIT-NEXT: li 6, 16
1287 ; LE-64BIT-NEXT: lwz 4, 0(4)
1288 ; LE-64BIT-NEXT: lxvd2x 1, 0, 3
1289 ; LE-64BIT-NEXT: addi 7, 1, -64
1290 ; LE-64BIT-NEXT: li 8, 48
1291 ; LE-64BIT-NEXT: lxvd2x 0, 3, 6
1292 ; LE-64BIT-NEXT: rlwinm 3, 4, 2, 27, 28
1293 ; LE-64BIT-NEXT: rlwinm 4, 4, 5, 26, 26
1294 ; LE-64BIT-NEXT: neg 3, 3
1295 ; LE-64BIT-NEXT: stxvd2x 0, 7, 8
1296 ; LE-64BIT-NEXT: xxlxor 0, 0, 0
1297 ; LE-64BIT-NEXT: li 8, 32
1298 ; LE-64BIT-NEXT: extsw 3, 3
1299 ; LE-64BIT-NEXT: stxvd2x 0, 7, 6
1300 ; LE-64BIT-NEXT: addi 6, 1, -32
1301 ; LE-64BIT-NEXT: stxvd2x 0, 0, 7
1302 ; LE-64BIT-NEXT: stxvd2x 1, 7, 8
1303 ; LE-64BIT-NEXT: subfic 7, 4, 64
1304 ; LE-64BIT-NEXT: ldux 3, 6, 3
1305 ; LE-64BIT-NEXT: ld 8, 16(6)
1306 ; LE-64BIT-NEXT: ld 9, 24(6)
1307 ; LE-64BIT-NEXT: ld 6, 8(6)
1308 ; LE-64BIT-NEXT: srd 10, 8, 7
1309 ; LE-64BIT-NEXT: sld 9, 9, 4
1310 ; LE-64BIT-NEXT: sld 8, 8, 4
1311 ; LE-64BIT-NEXT: or 9, 9, 10
1312 ; LE-64BIT-NEXT: srd 10, 6, 7
1313 ; LE-64BIT-NEXT: srd 7, 3, 7
1314 ; LE-64BIT-NEXT: sld 6, 6, 4
1315 ; LE-64BIT-NEXT: sld 3, 3, 4
1316 ; LE-64BIT-NEXT: or 6, 6, 7
1317 ; LE-64BIT-NEXT: std 3, 0(5)
1318 ; LE-64BIT-NEXT: or 3, 8, 10
1319 ; LE-64BIT-NEXT: std 9, 24(5)
1320 ; LE-64BIT-NEXT: std 6, 8(5)
1321 ; LE-64BIT-NEXT: std 3, 16(5)
1322 ; LE-64BIT-NEXT: blr
1364 ; LE-32BIT-LABEL: shl_32bytes_wordOff:
1365 ; LE-32BIT: # %bb.0:
1366 ; LE-32BIT-NEXT: stwu 1, -80(1)
1367 ; LE-32BIT-NEXT: lwz 7, 0(3)
1368 ; LE-32BIT-NEXT: li 6, 0
1369 ; LE-32BIT-NEXT: lwz 8, 4(3)
1370 ; LE-32BIT-NEXT: lwz 9, 8(3)
1371 ; LE-32BIT-NEXT: lwz 10, 12(3)
1372 ; LE-32BIT-NEXT: lwz 11, 16(3)
1373 ; LE-32BIT-NEXT: lwz 12, 20(3)
1374 ; LE-32BIT-NEXT: lwz 0, 24(3)
1375 ; LE-32BIT-NEXT: lwz 3, 28(3)
1376 ; LE-32BIT-NEXT: lwz 4, 28(4)
1377 ; LE-32BIT-NEXT: stw 6, 76(1)
1378 ; LE-32BIT-NEXT: stw 6, 72(1)
1379 ; LE-32BIT-NEXT: rlwinm 4, 4, 2, 27, 29
1380 ; LE-32BIT-NEXT: stw 6, 68(1)
1381 ; LE-32BIT-NEXT: stw 6, 64(1)
1382 ; LE-32BIT-NEXT: stw 6, 60(1)
1383 ; LE-32BIT-NEXT: stw 6, 56(1)
1384 ; LE-32BIT-NEXT: stw 6, 52(1)
1385 ; LE-32BIT-NEXT: stw 6, 48(1)
1386 ; LE-32BIT-NEXT: stw 3, 44(1)
1387 ; LE-32BIT-NEXT: addi 3, 1, 16
1388 ; LE-32BIT-NEXT: stw 0, 40(1)
1389 ; LE-32BIT-NEXT: stw 12, 36(1)
1390 ; LE-32BIT-NEXT: stw 11, 32(1)
1391 ; LE-32BIT-NEXT: stw 10, 28(1)
1392 ; LE-32BIT-NEXT: stw 9, 24(1)
1393 ; LE-32BIT-NEXT: stw 8, 20(1)
1394 ; LE-32BIT-NEXT: stw 7, 16(1)
1395 ; LE-32BIT-NEXT: lwzux 3, 4, 3
1396 ; LE-32BIT-NEXT: lwz 6, 4(4)
1397 ; LE-32BIT-NEXT: lwz 7, 12(4)
1398 ; LE-32BIT-NEXT: lwz 8, 8(4)
1399 ; LE-32BIT-NEXT: lwz 9, 20(4)
1400 ; LE-32BIT-NEXT: lwz 10, 16(4)
1401 ; LE-32BIT-NEXT: lwz 11, 28(4)
1402 ; LE-32BIT-NEXT: lwz 4, 24(4)
1403 ; LE-32BIT-NEXT: stw 3, 0(5)
1404 ; LE-32BIT-NEXT: stw 4, 24(5)
1405 ; LE-32BIT-NEXT: stw 11, 28(5)
1406 ; LE-32BIT-NEXT: stw 10, 16(5)
1407 ; LE-32BIT-NEXT: stw 9, 20(5)
1408 ; LE-32BIT-NEXT: stw 8, 8(5)
1409 ; LE-32BIT-NEXT: stw 7, 12(5)
1410 ; LE-32BIT-NEXT: stw 6, 4(5)
1411 ; LE-32BIT-NEXT: addi 1, 1, 80
1412 ; LE-32BIT-NEXT: blr
1422 ; LE-64BIT-LABEL: shl_32bytes_dwordOff:
1423 ; LE-64BIT: # %bb.0:
1424 ; LE-64BIT-NEXT: li 6, 16
1425 ; LE-64BIT-NEXT: lxvd2x 1, 0, 3
1426 ; LE-64BIT-NEXT: li 7, 48
1427 ; LE-64BIT-NEXT: xxlxor 2, 2, 2
1428 ; LE-64BIT-NEXT: lxvd2x 0, 3, 6
1429 ; LE-64BIT-NEXT: lwz 3, 0(4)
1430 ; LE-64BIT-NEXT: addi 4, 1, -64
1431 ; LE-64BIT-NEXT: stxvd2x 2, 4, 6
1432 ; LE-64BIT-NEXT: stxvd2x 2, 0, 4
1433 ; LE-64BIT-NEXT: rlwinm 3, 3, 3, 27, 28
1434 ; LE-64BIT-NEXT: stxvd2x 0, 4, 7
1435 ; LE-64BIT-NEXT: li 7, 32
1436 ; LE-64BIT-NEXT: neg 3, 3
1437 ; LE-64BIT-NEXT: stxvd2x 1, 4, 7
1438 ; LE-64BIT-NEXT: extsw 3, 3
1439 ; LE-64BIT-NEXT: addi 4, 1, -32
1440 ; LE-64BIT-NEXT: lxvd2x 0, 4, 3
1441 ; LE-64BIT-NEXT: add 3, 4, 3
1442 ; LE-64BIT-NEXT: lxvd2x 1, 3, 6
1443 ; LE-64BIT-NEXT: stxvd2x 0, 0, 5
1444 ; LE-64BIT-NEXT: stxvd2x 1, 5, 6
1445 ; LE-64BIT-NEXT: blr
1475 ; LE-32BIT-LABEL: shl_32bytes_dwordOff:
1476 ; LE-32BIT: # %bb.0:
1477 ; LE-32BIT-NEXT: stwu 1, -80(1)
1478 ; LE-32BIT-NEXT: lwz 7, 0(3)
1479 ; LE-32BIT-NEXT: li 6, 0
1480 ; LE-32BIT-NEXT: lwz 8, 4(3)
1481 ; LE-32BIT-NEXT: lwz 9, 8(3)
1482 ; LE-32BIT-NEXT: lwz 10, 12(3)
1483 ; LE-32BIT-NEXT: lwz 11, 16(3)
1484 ; LE-32BIT-NEXT: lwz 12, 20(3)
1485 ; LE-32BIT-NEXT: lwz 0, 24(3)
1486 ; LE-32BIT-NEXT: lwz 3, 28(3)
1487 ; LE-32BIT-NEXT: lwz 4, 28(4)
1488 ; LE-32BIT-NEXT: stw 6, 76(1)
1489 ; LE-32BIT-NEXT: stw 6, 72(1)
1490 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
1491 ; LE-32BIT-NEXT: stw 6, 68(1)
1492 ; LE-32BIT-NEXT: stw 6, 64(1)
1493 ; LE-32BIT-NEXT: stw 6, 60(1)
1494 ; LE-32BIT-NEXT: stw 6, 56(1)
1495 ; LE-32BIT-NEXT: stw 6, 52(1)
1496 ; LE-32BIT-NEXT: stw 6, 48(1)
1497 ; LE-32BIT-NEXT: stw 3, 44(1)
1498 ; LE-32BIT-NEXT: addi 3, 1, 16
1499 ; LE-32BIT-NEXT: stw 0, 40(1)
1500 ; LE-32BIT-NEXT: stw 12, 36(1)
1501 ; LE-32BIT-NEXT: stw 11, 32(1)
1502 ; LE-32BIT-NEXT: stw 10, 28(1)
1503 ; LE-32BIT-NEXT: stw 9, 24(1)
1504 ; LE-32BIT-NEXT: stw 8, 20(1)
1505 ; LE-32BIT-NEXT: stw 7, 16(1)
1506 ; LE-32BIT-NEXT: lwzux 3, 4, 3
1507 ; LE-32BIT-NEXT: lwz 6, 12(4)
1508 ; LE-32BIT-NEXT: lwz 7, 8(4)
1509 ; LE-32BIT-NEXT: lwz 8, 20(4)
1510 ; LE-32BIT-NEXT: lwz 9, 16(4)
1511 ; LE-32BIT-NEXT: lwz 10, 28(4)
1512 ; LE-32BIT-NEXT: lwz 11, 24(4)
1513 ; LE-32BIT-NEXT: ori 4, 4, 4
1514 ; LE-32BIT-NEXT: lwz 4, 0(4)
1515 ; LE-32BIT-NEXT: stw 3, 0(5)
1516 ; LE-32BIT-NEXT: stw 11, 24(5)
1517 ; LE-32BIT-NEXT: stw 10, 28(5)
1518 ; LE-32BIT-NEXT: stw 9, 16(5)
1519 ; LE-32BIT-NEXT: stw 8, 20(5)
1520 ; LE-32BIT-NEXT: stw 7, 8(5)
1521 ; LE-32BIT-NEXT: stw 6, 12(5)
1522 ; LE-32BIT-NEXT: stw 4, 4(5)
1523 ; LE-32BIT-NEXT: addi 1, 1, 80
1524 ; LE-32BIT-NEXT: blr
1535 ; LE-64BIT-LABEL: ashr_32bytes:
1536 ; LE-64BIT: # %bb.0:
1537 ; LE-64BIT-NEXT: ld 6, 24(3)
1538 ; LE-64BIT-NEXT: lxvd2x 0, 0, 3
1539 ; LE-64BIT-NEXT: lwz 4, 0(4)
1540 ; LE-64BIT-NEXT: addi 7, 1, -64
1541 ; LE-64BIT-NEXT: ld 3, 16(3)
1542 ; LE-64BIT-NEXT: sradi 8, 6, 63
1543 ; LE-64BIT-NEXT: rlwinm 9, 4, 0, 27, 28
1544 ; LE-64BIT-NEXT: std 6, -40(1)
1545 ; LE-64BIT-NEXT: std 3, -48(1)
1546 ; LE-64BIT-NEXT: rlwinm 3, 4, 3, 26, 28
1547 ; LE-64BIT-NEXT: stxvd2x 0, 0, 7
1548 ; LE-64BIT-NEXT: std 8, -8(1)
1549 ; LE-64BIT-NEXT: std 8, -16(1)
1550 ; LE-64BIT-NEXT: std 8, -24(1)
1551 ; LE-64BIT-NEXT: std 8, -32(1)
1552 ; LE-64BIT-NEXT: subfic 6, 3, 64
1553 ; LE-64BIT-NEXT: ldux 4, 9, 7
1554 ; LE-64BIT-NEXT: ld 7, 8(9)
1555 ; LE-64BIT-NEXT: ld 8, 16(9)
1556 ; LE-64BIT-NEXT: ld 9, 24(9)
1557 ; LE-64BIT-NEXT: srd 4, 4, 3
1558 ; LE-64BIT-NEXT: sld 10, 7, 6
1559 ; LE-64BIT-NEXT: sld 11, 9, 6
1560 ; LE-64BIT-NEXT: srd 7, 7, 3
1561 ; LE-64BIT-NEXT: sld 6, 8, 6
1562 ; LE-64BIT-NEXT: or 4, 10, 4
1563 ; LE-64BIT-NEXT: srd 10, 8, 3
1564 ; LE-64BIT-NEXT: srad 3, 9, 3
1565 ; LE-64BIT-NEXT: or 6, 6, 7
1566 ; LE-64BIT-NEXT: std 3, 24(5)
1567 ; LE-64BIT-NEXT: or 3, 11, 10
1568 ; LE-64BIT-NEXT: std 6, 8(5)
1569 ; LE-64BIT-NEXT: std 4, 0(5)
1570 ; LE-64BIT-NEXT: std 3, 16(5)
1571 ; LE-64BIT-NEXT: blr
1615 ; LE-32BIT-LABEL: ashr_32bytes:
1616 ; LE-32BIT: # %bb.0:
1617 ; LE-32BIT-NEXT: stwu 1, -112(1)
1618 ; LE-32BIT-NEXT: lwz 7, 0(3)
1619 ; LE-32BIT-NEXT: addi 6, 1, 48
1620 ; LE-32BIT-NEXT: lwz 8, 4(3)
1621 ; LE-32BIT-NEXT: lwz 9, 8(3)
1622 ; LE-32BIT-NEXT: lwz 10, 12(3)
1623 ; LE-32BIT-NEXT: lwz 11, 16(3)
1624 ; LE-32BIT-NEXT: lwz 12, 20(3)
1625 ; LE-32BIT-NEXT: lwz 0, 24(3)
1626 ; LE-32BIT-NEXT: lwz 3, 28(3)
1627 ; LE-32BIT-NEXT: lwz 4, 28(4)
1628 ; LE-32BIT-NEXT: stw 3, 76(1)
1629 ; LE-32BIT-NEXT: srawi 3, 7, 31
1630 ; LE-32BIT-NEXT: stw 7, 48(1)
1631 ; LE-32BIT-NEXT: rlwinm 7, 4, 0, 27, 29
1632 ; LE-32BIT-NEXT: stw 25, 84(1) # 4-byte Folded Spill
1633 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
1634 ; LE-32BIT-NEXT: stw 26, 88(1) # 4-byte Folded Spill
1635 ; LE-32BIT-NEXT: stw 27, 92(1) # 4-byte Folded Spill
1636 ; LE-32BIT-NEXT: stw 28, 96(1) # 4-byte Folded Spill
1637 ; LE-32BIT-NEXT: stw 29, 100(1) # 4-byte Folded Spill
1638 ; LE-32BIT-NEXT: stw 30, 104(1) # 4-byte Folded Spill
1639 ; LE-32BIT-NEXT: stw 0, 72(1)
1640 ; LE-32BIT-NEXT: subfic 0, 4, 32
1641 ; LE-32BIT-NEXT: stw 12, 68(1)
1642 ; LE-32BIT-NEXT: stw 11, 64(1)
1643 ; LE-32BIT-NEXT: stw 10, 60(1)
1644 ; LE-32BIT-NEXT: stw 9, 56(1)
1645 ; LE-32BIT-NEXT: stw 8, 52(1)
1646 ; LE-32BIT-NEXT: stw 3, 44(1)
1647 ; LE-32BIT-NEXT: stw 3, 40(1)
1648 ; LE-32BIT-NEXT: stw 3, 36(1)
1649 ; LE-32BIT-NEXT: stw 3, 32(1)
1650 ; LE-32BIT-NEXT: stw 3, 28(1)
1651 ; LE-32BIT-NEXT: stw 3, 24(1)
1652 ; LE-32BIT-NEXT: stw 3, 20(1)
1653 ; LE-32BIT-NEXT: stw 3, 16(1)
1654 ; LE-32BIT-NEXT: sub 3, 6, 7
1655 ; LE-32BIT-NEXT: lwz 6, 4(3)
1656 ; LE-32BIT-NEXT: lwz 7, 0(3)
1657 ; LE-32BIT-NEXT: lwz 8, 12(3)
1658 ; LE-32BIT-NEXT: srw 30, 6, 4
1659 ; LE-32BIT-NEXT: lwz 9, 8(3)
1660 ; LE-32BIT-NEXT: slw 29, 7, 0
1661 ; LE-32BIT-NEXT: lwz 10, 20(3)
1662 ; LE-32BIT-NEXT: srw 28, 8, 4
1663 ; LE-32BIT-NEXT: lwz 11, 16(3)
1664 ; LE-32BIT-NEXT: slw 27, 9, 0
1665 ; LE-32BIT-NEXT: lwz 12, 28(3)
1666 ; LE-32BIT-NEXT: slw 6, 6, 0
1667 ; LE-32BIT-NEXT: lwz 3, 24(3)
1668 ; LE-32BIT-NEXT: srw 26, 10, 4
1669 ; LE-32BIT-NEXT: slw 25, 11, 0
1670 ; LE-32BIT-NEXT: slw 8, 8, 0
1671 ; LE-32BIT-NEXT: slw 10, 10, 0
1672 ; LE-32BIT-NEXT: slw 0, 3, 0
1673 ; LE-32BIT-NEXT: srw 3, 3, 4
1674 ; LE-32BIT-NEXT: srw 12, 12, 4
1675 ; LE-32BIT-NEXT: or 3, 10, 3
1676 ; LE-32BIT-NEXT: srw 11, 11, 4
1677 ; LE-32BIT-NEXT: stw 3, 24(5)
1678 ; LE-32BIT-NEXT: or 3, 0, 12
1679 ; LE-32BIT-NEXT: stw 3, 28(5)
1680 ; LE-32BIT-NEXT: or 3, 8, 11
1681 ; LE-32BIT-NEXT: srw 9, 9, 4
1682 ; LE-32BIT-NEXT: stw 3, 16(5)
1683 ; LE-32BIT-NEXT: or 3, 25, 26
1684 ; LE-32BIT-NEXT: stw 3, 20(5)
1685 ; LE-32BIT-NEXT: or 3, 6, 9
1686 ; LE-32BIT-NEXT: stw 3, 8(5)
1687 ; LE-32BIT-NEXT: or 3, 27, 28
1688 ; LE-32BIT-NEXT: sraw 4, 7, 4
1689 ; LE-32BIT-NEXT: stw 3, 12(5)
1690 ; LE-32BIT-NEXT: or 3, 29, 30
1691 ; LE-32BIT-NEXT: stw 4, 0(5)
1692 ; LE-32BIT-NEXT: stw 3, 4(5)
1693 ; LE-32BIT-NEXT: lwz 30, 104(1) # 4-byte Folded Reload
1694 ; LE-32BIT-NEXT: lwz 29, 100(1) # 4-byte Folded Reload
1695 ; LE-32BIT-NEXT: lwz 28, 96(1) # 4-byte Folded Reload
1696 ; LE-32BIT-NEXT: lwz 27, 92(1) # 4-byte Folded Reload
1697 ; LE-32BIT-NEXT: lwz 26, 88(1) # 4-byte Folded Reload
1698 ; LE-32BIT-NEXT: lwz 25, 84(1) # 4-byte Folded Reload
1699 ; LE-32BIT-NEXT: addi 1, 1, 112
1700 ; LE-32BIT-NEXT: blr
1710 ; LE-64BIT-LABEL: ashr_32bytes_wordOff:
1711 ; LE-64BIT: # %bb.0:
1712 ; LE-64BIT-NEXT: ld 6, 24(3)
1713 ; LE-64BIT-NEXT: lxvd2x 0, 0, 3
1714 ; LE-64BIT-NEXT: lwz 4, 0(4)
1715 ; LE-64BIT-NEXT: addi 7, 1, -64
1716 ; LE-64BIT-NEXT: ld 3, 16(3)
1717 ; LE-64BIT-NEXT: sradi 8, 6, 63
1718 ; LE-64BIT-NEXT: rlwinm 9, 4, 2, 27, 28
1719 ; LE-64BIT-NEXT: std 6, -40(1)
1720 ; LE-64BIT-NEXT: std 3, -48(1)
1721 ; LE-64BIT-NEXT: rlwinm 3, 4, 5, 26, 26
1722 ; LE-64BIT-NEXT: stxvd2x 0, 0, 7
1723 ; LE-64BIT-NEXT: std 8, -8(1)
1724 ; LE-64BIT-NEXT: std 8, -16(1)
1725 ; LE-64BIT-NEXT: std 8, -24(1)
1726 ; LE-64BIT-NEXT: std 8, -32(1)
1727 ; LE-64BIT-NEXT: subfic 6, 3, 64
1728 ; LE-64BIT-NEXT: ldux 4, 9, 7
1729 ; LE-64BIT-NEXT: ld 7, 8(9)
1730 ; LE-64BIT-NEXT: ld 8, 16(9)
1731 ; LE-64BIT-NEXT: ld 9, 24(9)
1732 ; LE-64BIT-NEXT: srd 4, 4, 3
1733 ; LE-64BIT-NEXT: sld 10, 7, 6
1734 ; LE-64BIT-NEXT: sld 11, 9, 6
1735 ; LE-64BIT-NEXT: srd 7, 7, 3
1736 ; LE-64BIT-NEXT: sld 6, 8, 6
1737 ; LE-64BIT-NEXT: or 4, 10, 4
1738 ; LE-64BIT-NEXT: srd 10, 8, 3
1739 ; LE-64BIT-NEXT: srad 3, 9, 3
1740 ; LE-64BIT-NEXT: or 6, 6, 7
1741 ; LE-64BIT-NEXT: std 3, 24(5)
1742 ; LE-64BIT-NEXT: or 3, 11, 10
1743 ; LE-64BIT-NEXT: std 6, 8(5)
1744 ; LE-64BIT-NEXT: std 4, 0(5)
1745 ; LE-64BIT-NEXT: std 3, 16(5)
1746 ; LE-64BIT-NEXT: blr
1790 ; LE-32BIT-LABEL: ashr_32bytes_wordOff:
1791 ; LE-32BIT: # %bb.0:
1792 ; LE-32BIT-NEXT: stwu 1, -80(1)
1793 ; LE-32BIT-NEXT: lwz 7, 0(3)
1794 ; LE-32BIT-NEXT: addi 6, 1, 48
1795 ; LE-32BIT-NEXT: lwz 8, 4(3)
1796 ; LE-32BIT-NEXT: lwz 9, 8(3)
1797 ; LE-32BIT-NEXT: lwz 10, 12(3)
1798 ; LE-32BIT-NEXT: lwz 11, 16(3)
1799 ; LE-32BIT-NEXT: lwz 12, 20(3)
1800 ; LE-32BIT-NEXT: lwz 0, 24(3)
1801 ; LE-32BIT-NEXT: lwz 3, 28(3)
1802 ; LE-32BIT-NEXT: lwz 4, 28(4)
1803 ; LE-32BIT-NEXT: stw 3, 76(1)
1804 ; LE-32BIT-NEXT: srawi 3, 7, 31
1805 ; LE-32BIT-NEXT: rlwinm 4, 4, 2, 27, 29
1806 ; LE-32BIT-NEXT: stw 0, 72(1)
1807 ; LE-32BIT-NEXT: stw 12, 68(1)
1808 ; LE-32BIT-NEXT: stw 11, 64(1)
1809 ; LE-32BIT-NEXT: stw 10, 60(1)
1810 ; LE-32BIT-NEXT: stw 9, 56(1)
1811 ; LE-32BIT-NEXT: stw 8, 52(1)
1812 ; LE-32BIT-NEXT: stw 7, 48(1)
1813 ; LE-32BIT-NEXT: stw 3, 44(1)
1814 ; LE-32BIT-NEXT: stw 3, 40(1)
1815 ; LE-32BIT-NEXT: stw 3, 36(1)
1816 ; LE-32BIT-NEXT: stw 3, 32(1)
1817 ; LE-32BIT-NEXT: stw 3, 28(1)
1818 ; LE-32BIT-NEXT: stw 3, 24(1)
1819 ; LE-32BIT-NEXT: stw 3, 20(1)
1820 ; LE-32BIT-NEXT: stw 3, 16(1)
1821 ; LE-32BIT-NEXT: sub 3, 6, 4
1822 ; LE-32BIT-NEXT: lwz 4, 4(3)
1823 ; LE-32BIT-NEXT: lwz 6, 0(3)
1824 ; LE-32BIT-NEXT: lwz 7, 12(3)
1825 ; LE-32BIT-NEXT: lwz 8, 8(3)
1826 ; LE-32BIT-NEXT: lwz 9, 20(3)
1827 ; LE-32BIT-NEXT: lwz 10, 16(3)
1828 ; LE-32BIT-NEXT: lwz 11, 24(3)
1829 ; LE-32BIT-NEXT: lwz 3, 28(3)
1830 ; LE-32BIT-NEXT: stw 11, 24(5)
1831 ; LE-32BIT-NEXT: stw 3, 28(5)
1832 ; LE-32BIT-NEXT: stw 10, 16(5)
1833 ; LE-32BIT-NEXT: stw 9, 20(5)
1834 ; LE-32BIT-NEXT: stw 8, 8(5)
1835 ; LE-32BIT-NEXT: stw 7, 12(5)
1836 ; LE-32BIT-NEXT: stw 6, 0(5)
1837 ; LE-32BIT-NEXT: stw 4, 4(5)
1838 ; LE-32BIT-NEXT: addi 1, 1, 80
1839 ; LE-32BIT-NEXT: blr
1849 ; LE-64BIT-LABEL: ashr_32bytes_dwordOff:
1850 ; LE-64BIT: # %bb.0:
1851 ; LE-64BIT-NEXT: ld 6, 16(3)
1852 ; LE-64BIT-NEXT: ld 7, 24(3)
1853 ; LE-64BIT-NEXT: lxvd2x 0, 0, 3
1854 ; LE-64BIT-NEXT: lwz 3, 0(4)
1855 ; LE-64BIT-NEXT: addi 4, 1, -64
1856 ; LE-64BIT-NEXT: std 6, -48(1)
1857 ; LE-64BIT-NEXT: sradi 6, 7, 63
1858 ; LE-64BIT-NEXT: rlwinm 3, 3, 3, 27, 28
1859 ; LE-64BIT-NEXT: std 7, -40(1)
1860 ; LE-64BIT-NEXT: stxvd2x 0, 0, 4
1861 ; LE-64BIT-NEXT: std 6, -8(1)
1862 ; LE-64BIT-NEXT: std 6, -16(1)
1863 ; LE-64BIT-NEXT: std 6, -24(1)
1864 ; LE-64BIT-NEXT: std 6, -32(1)
1865 ; LE-64BIT-NEXT: lxvd2x 0, 4, 3
1866 ; LE-64BIT-NEXT: add 3, 4, 3
1867 ; LE-64BIT-NEXT: li 4, 16
1868 ; LE-64BIT-NEXT: lxvd2x 1, 3, 4
1869 ; LE-64BIT-NEXT: stxvd2x 0, 0, 5
1870 ; LE-64BIT-NEXT: stxvd2x 1, 5, 4
1871 ; LE-64BIT-NEXT: blr
1903 ; LE-32BIT-LABEL: ashr_32bytes_dwordOff:
1904 ; LE-32BIT: # %bb.0:
1905 ; LE-32BIT-NEXT: stwu 1, -80(1)
1906 ; LE-32BIT-NEXT: lwz 7, 0(3)
1907 ; LE-32BIT-NEXT: addi 6, 1, 48
1908 ; LE-32BIT-NEXT: lwz 8, 4(3)
1909 ; LE-32BIT-NEXT: lwz 9, 8(3)
1910 ; LE-32BIT-NEXT: lwz 10, 12(3)
1911 ; LE-32BIT-NEXT: lwz 11, 16(3)
1912 ; LE-32BIT-NEXT: lwz 12, 20(3)
1913 ; LE-32BIT-NEXT: lwz 0, 24(3)
1914 ; LE-32BIT-NEXT: lwz 3, 28(3)
1915 ; LE-32BIT-NEXT: lwz 4, 28(4)
1916 ; LE-32BIT-NEXT: stw 3, 76(1)
1917 ; LE-32BIT-NEXT: srawi 3, 7, 31
1918 ; LE-32BIT-NEXT: rlwinm 4, 4, 3, 27, 28
1919 ; LE-32BIT-NEXT: stw 0, 72(1)
1920 ; LE-32BIT-NEXT: stw 12, 68(1)
1921 ; LE-32BIT-NEXT: stw 11, 64(1)
1922 ; LE-32BIT-NEXT: stw 10, 60(1)
1923 ; LE-32BIT-NEXT: stw 9, 56(1)
1924 ; LE-32BIT-NEXT: stw 8, 52(1)
1925 ; LE-32BIT-NEXT: stw 7, 48(1)
1926 ; LE-32BIT-NEXT: stw 3, 44(1)
1927 ; LE-32BIT-NEXT: stw 3, 40(1)
1928 ; LE-32BIT-NEXT: stw 3, 36(1)
1929 ; LE-32BIT-NEXT: stw 3, 32(1)
1930 ; LE-32BIT-NEXT: stw 3, 28(1)
1931 ; LE-32BIT-NEXT: stw 3, 24(1)
1932 ; LE-32BIT-NEXT: stw 3, 20(1)
1933 ; LE-32BIT-NEXT: stw 3, 16(1)
1934 ; LE-32BIT-NEXT: sub 3, 6, 4
1935 ; LE-32BIT-NEXT: lwz 4, 4(3)
1936 ; LE-32BIT-NEXT: lwz 6, 0(3)
1937 ; LE-32BIT-NEXT: lwz 7, 12(3)
1938 ; LE-32BIT-NEXT: lwz 8, 8(3)
1939 ; LE-32BIT-NEXT: lwz 9, 20(3)
1940 ; LE-32BIT-NEXT: lwz 10, 16(3)
1941 ; LE-32BIT-NEXT: lwz 11, 24(3)
1942 ; LE-32BIT-NEXT: lwz 3, 28(3)
1943 ; LE-32BIT-NEXT: stw 11, 24(5)
1944 ; LE-32BIT-NEXT: stw 3, 28(5)
1945 ; LE-32BIT-NEXT: stw 10, 16(5)
1946 ; LE-32BIT-NEXT: stw 9, 20(5)
1947 ; LE-32BIT-NEXT: stw 8, 8(5)
1948 ; LE-32BIT-NEXT: stw 7, 12(5)
1949 ; LE-32BIT-NEXT: stw 6, 0(5)
1950 ; LE-32BIT-NEXT: stw 4, 4(5)
1951 ; LE-32BIT-NEXT: addi 1, 1, 80
1952 ; LE-32BIT-NEXT: blr