Lines Matching refs:PPC

18 ; On 32-bit PPC platform, 16-byte lock free atomic instructions are not available,
23 ; RUN: | FileCheck --check-prefix=PPC-PWR8 %s
87 ; PPC-PWR8-LABEL: swap:
88 ; PPC-PWR8: # %bb.0: # %entry
89 ; PPC-PWR8-NEXT: mflr r0
90 ; PPC-PWR8-NEXT: stw r0, 4(r1)
91 ; PPC-PWR8-NEXT: stwu r1, -48(r1)
92 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 48
93 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
94 ; PPC-PWR8-NEXT: mr r4, r3
95 ; PPC-PWR8-NEXT: stw r7, 40(r1)
96 ; PPC-PWR8-NEXT: stw r6, 36(r1)
97 ; PPC-PWR8-NEXT: addi r6, r1, 16
98 ; PPC-PWR8-NEXT: li r3, 16
99 ; PPC-PWR8-NEXT: li r7, 5
100 ; PPC-PWR8-NEXT: stw r5, 32(r1)
101 ; PPC-PWR8-NEXT: addi r5, r1, 32
102 ; PPC-PWR8-NEXT: stw r8, 44(r1)
103 ; PPC-PWR8-NEXT: bl __atomic_exchange
104 ; PPC-PWR8-NEXT: lwz r6, 28(r1)
105 ; PPC-PWR8-NEXT: lwz r5, 24(r1)
106 ; PPC-PWR8-NEXT: lwz r4, 20(r1)
107 ; PPC-PWR8-NEXT: lwz r3, 16(r1)
108 ; PPC-PWR8-NEXT: lwz r0, 52(r1)
109 ; PPC-PWR8-NEXT: addi r1, r1, 48
110 ; PPC-PWR8-NEXT: mtlr r0
111 ; PPC-PWR8-NEXT: blr
178 ; PPC-PWR8-LABEL: add:
179 ; PPC-PWR8: # %bb.0: # %entry
180 ; PPC-PWR8-NEXT: mflr r0
181 ; PPC-PWR8-NEXT: stw r0, 4(r1)
182 ; PPC-PWR8-NEXT: stwu r1, -80(r1)
183 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 80
184 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
185 ; PPC-PWR8-NEXT: .cfi_offset r24, -32
186 ; PPC-PWR8-NEXT: .cfi_offset r25, -28
187 ; PPC-PWR8-NEXT: .cfi_offset r26, -24
188 ; PPC-PWR8-NEXT: .cfi_offset r27, -20
189 ; PPC-PWR8-NEXT: .cfi_offset r28, -16
190 ; PPC-PWR8-NEXT: .cfi_offset r29, -12
191 ; PPC-PWR8-NEXT: .cfi_offset r30, -8
192 ; PPC-PWR8-NEXT: stw r26, 56(r1) # 4-byte Folded Spill
193 ; PPC-PWR8-NEXT: stw r27, 60(r1) # 4-byte Folded Spill
194 ; PPC-PWR8-NEXT: mr r27, r5
195 ; PPC-PWR8-NEXT: mr r26, r3
196 ; PPC-PWR8-NEXT: lwz r5, 8(r3)
197 ; PPC-PWR8-NEXT: lwz r4, 4(r3)
198 ; PPC-PWR8-NEXT: stw r28, 64(r1) # 4-byte Folded Spill
199 ; PPC-PWR8-NEXT: mr r28, r6
200 ; PPC-PWR8-NEXT: lwz r6, 12(r3)
201 ; PPC-PWR8-NEXT: lwz r3, 0(r3)
202 ; PPC-PWR8-NEXT: stw r24, 48(r1) # 4-byte Folded Spill
203 ; PPC-PWR8-NEXT: addi r24, r1, 16
204 ; PPC-PWR8-NEXT: stw r25, 52(r1) # 4-byte Folded Spill
205 ; PPC-PWR8-NEXT: stw r29, 68(r1) # 4-byte Folded Spill
206 ; PPC-PWR8-NEXT: mr r29, r7
207 ; PPC-PWR8-NEXT: addi r25, r1, 32
208 ; PPC-PWR8-NEXT: stw r30, 72(r1) # 4-byte Folded Spill
209 ; PPC-PWR8-NEXT: mr r30, r8
210 ; PPC-PWR8-NEXT: .p2align 4
211 ; PPC-PWR8-NEXT: .LBB1_1: # %atomicrmw.start
212 ; PPC-PWR8-NEXT: #
213 ; PPC-PWR8-NEXT: addc r7, r6, r30
214 ; PPC-PWR8-NEXT: stw r4, 36(r1)
215 ; PPC-PWR8-NEXT: stw r3, 32(r1)
216 ; PPC-PWR8-NEXT: adde r8, r5, r29
217 ; PPC-PWR8-NEXT: stw r5, 40(r1)
218 ; PPC-PWR8-NEXT: stw r6, 44(r1)
219 ; PPC-PWR8-NEXT: mr r5, r25
220 ; PPC-PWR8-NEXT: adde r4, r4, r28
221 ; PPC-PWR8-NEXT: stw r7, 28(r1)
222 ; PPC-PWR8-NEXT: stw r8, 24(r1)
223 ; PPC-PWR8-NEXT: mr r6, r24
224 ; PPC-PWR8-NEXT: adde r3, r3, r27
225 ; PPC-PWR8-NEXT: stw r4, 20(r1)
226 ; PPC-PWR8-NEXT: mr r4, r26
227 ; PPC-PWR8-NEXT: li r7, 5
228 ; PPC-PWR8-NEXT: stw r3, 16(r1)
229 ; PPC-PWR8-NEXT: li r3, 16
230 ; PPC-PWR8-NEXT: li r8, 5
231 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
232 ; PPC-PWR8-NEXT: cmplwi r3, 0
233 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
234 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
235 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
236 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
237 ; PPC-PWR8-NEXT: beq cr0, .LBB1_1
238 ; PPC-PWR8-NEXT: # %bb.2: # %atomicrmw.end
239 ; PPC-PWR8-NEXT: lwz r30, 72(r1) # 4-byte Folded Reload
240 ; PPC-PWR8-NEXT: lwz r29, 68(r1) # 4-byte Folded Reload
241 ; PPC-PWR8-NEXT: lwz r28, 64(r1) # 4-byte Folded Reload
242 ; PPC-PWR8-NEXT: lwz r27, 60(r1) # 4-byte Folded Reload
243 ; PPC-PWR8-NEXT: lwz r26, 56(r1) # 4-byte Folded Reload
244 ; PPC-PWR8-NEXT: lwz r25, 52(r1) # 4-byte Folded Reload
245 ; PPC-PWR8-NEXT: lwz r24, 48(r1) # 4-byte Folded Reload
246 ; PPC-PWR8-NEXT: lwz r0, 84(r1)
247 ; PPC-PWR8-NEXT: addi r1, r1, 80
248 ; PPC-PWR8-NEXT: mtlr r0
249 ; PPC-PWR8-NEXT: blr
316 ; PPC-PWR8-LABEL: sub:
317 ; PPC-PWR8: # %bb.0: # %entry
318 ; PPC-PWR8-NEXT: mflr r0
319 ; PPC-PWR8-NEXT: stw r0, 4(r1)
320 ; PPC-PWR8-NEXT: stwu r1, -80(r1)
321 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 80
322 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
323 ; PPC-PWR8-NEXT: .cfi_offset r24, -32
324 ; PPC-PWR8-NEXT: .cfi_offset r25, -28
325 ; PPC-PWR8-NEXT: .cfi_offset r26, -24
326 ; PPC-PWR8-NEXT: .cfi_offset r27, -20
327 ; PPC-PWR8-NEXT: .cfi_offset r28, -16
328 ; PPC-PWR8-NEXT: .cfi_offset r29, -12
329 ; PPC-PWR8-NEXT: .cfi_offset r30, -8
330 ; PPC-PWR8-NEXT: stw r26, 56(r1) # 4-byte Folded Spill
331 ; PPC-PWR8-NEXT: stw r27, 60(r1) # 4-byte Folded Spill
332 ; PPC-PWR8-NEXT: mr r27, r5
333 ; PPC-PWR8-NEXT: mr r26, r3
334 ; PPC-PWR8-NEXT: lwz r5, 8(r3)
335 ; PPC-PWR8-NEXT: lwz r4, 4(r3)
336 ; PPC-PWR8-NEXT: stw r28, 64(r1) # 4-byte Folded Spill
337 ; PPC-PWR8-NEXT: mr r28, r6
338 ; PPC-PWR8-NEXT: lwz r6, 12(r3)
339 ; PPC-PWR8-NEXT: lwz r3, 0(r3)
340 ; PPC-PWR8-NEXT: stw r24, 48(r1) # 4-byte Folded Spill
341 ; PPC-PWR8-NEXT: addi r24, r1, 16
342 ; PPC-PWR8-NEXT: stw r25, 52(r1) # 4-byte Folded Spill
343 ; PPC-PWR8-NEXT: stw r29, 68(r1) # 4-byte Folded Spill
344 ; PPC-PWR8-NEXT: mr r29, r7
345 ; PPC-PWR8-NEXT: addi r25, r1, 32
346 ; PPC-PWR8-NEXT: stw r30, 72(r1) # 4-byte Folded Spill
347 ; PPC-PWR8-NEXT: mr r30, r8
348 ; PPC-PWR8-NEXT: .p2align 4
349 ; PPC-PWR8-NEXT: .LBB2_1: # %atomicrmw.start
350 ; PPC-PWR8-NEXT: #
351 ; PPC-PWR8-NEXT: subc r7, r6, r30
352 ; PPC-PWR8-NEXT: stw r4, 36(r1)
353 ; PPC-PWR8-NEXT: stw r3, 32(r1)
354 ; PPC-PWR8-NEXT: subfe r8, r29, r5
355 ; PPC-PWR8-NEXT: stw r5, 40(r1)
356 ; PPC-PWR8-NEXT: stw r6, 44(r1)
357 ; PPC-PWR8-NEXT: mr r5, r25
358 ; PPC-PWR8-NEXT: subfe r4, r28, r4
359 ; PPC-PWR8-NEXT: stw r7, 28(r1)
360 ; PPC-PWR8-NEXT: stw r8, 24(r1)
361 ; PPC-PWR8-NEXT: mr r6, r24
362 ; PPC-PWR8-NEXT: subfe r3, r27, r3
363 ; PPC-PWR8-NEXT: stw r4, 20(r1)
364 ; PPC-PWR8-NEXT: mr r4, r26
365 ; PPC-PWR8-NEXT: li r7, 5
366 ; PPC-PWR8-NEXT: stw r3, 16(r1)
367 ; PPC-PWR8-NEXT: li r3, 16
368 ; PPC-PWR8-NEXT: li r8, 5
369 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
370 ; PPC-PWR8-NEXT: cmplwi r3, 0
371 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
372 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
373 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
374 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
375 ; PPC-PWR8-NEXT: beq cr0, .LBB2_1
376 ; PPC-PWR8-NEXT: # %bb.2: # %atomicrmw.end
377 ; PPC-PWR8-NEXT: lwz r30, 72(r1) # 4-byte Folded Reload
378 ; PPC-PWR8-NEXT: lwz r29, 68(r1) # 4-byte Folded Reload
379 ; PPC-PWR8-NEXT: lwz r28, 64(r1) # 4-byte Folded Reload
380 ; PPC-PWR8-NEXT: lwz r27, 60(r1) # 4-byte Folded Reload
381 ; PPC-PWR8-NEXT: lwz r26, 56(r1) # 4-byte Folded Reload
382 ; PPC-PWR8-NEXT: lwz r25, 52(r1) # 4-byte Folded Reload
383 ; PPC-PWR8-NEXT: lwz r24, 48(r1) # 4-byte Folded Reload
384 ; PPC-PWR8-NEXT: lwz r0, 84(r1)
385 ; PPC-PWR8-NEXT: addi r1, r1, 80
386 ; PPC-PWR8-NEXT: mtlr r0
387 ; PPC-PWR8-NEXT: blr
454 ; PPC-PWR8-LABEL: and:
455 ; PPC-PWR8: # %bb.0: # %entry
456 ; PPC-PWR8-NEXT: mflr r0
457 ; PPC-PWR8-NEXT: stw r0, 4(r1)
458 ; PPC-PWR8-NEXT: stwu r1, -80(r1)
459 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 80
460 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
461 ; PPC-PWR8-NEXT: .cfi_offset r24, -32
462 ; PPC-PWR8-NEXT: .cfi_offset r25, -28
463 ; PPC-PWR8-NEXT: .cfi_offset r26, -24
464 ; PPC-PWR8-NEXT: .cfi_offset r27, -20
465 ; PPC-PWR8-NEXT: .cfi_offset r28, -16
466 ; PPC-PWR8-NEXT: .cfi_offset r29, -12
467 ; PPC-PWR8-NEXT: .cfi_offset r30, -8
468 ; PPC-PWR8-NEXT: stw r26, 56(r1) # 4-byte Folded Spill
469 ; PPC-PWR8-NEXT: stw r27, 60(r1) # 4-byte Folded Spill
470 ; PPC-PWR8-NEXT: mr r27, r5
471 ; PPC-PWR8-NEXT: mr r26, r3
472 ; PPC-PWR8-NEXT: lwz r5, 8(r3)
473 ; PPC-PWR8-NEXT: lwz r4, 4(r3)
474 ; PPC-PWR8-NEXT: stw r28, 64(r1) # 4-byte Folded Spill
475 ; PPC-PWR8-NEXT: mr r28, r6
476 ; PPC-PWR8-NEXT: lwz r6, 12(r3)
477 ; PPC-PWR8-NEXT: lwz r3, 0(r3)
478 ; PPC-PWR8-NEXT: stw r24, 48(r1) # 4-byte Folded Spill
479 ; PPC-PWR8-NEXT: addi r24, r1, 16
480 ; PPC-PWR8-NEXT: stw r25, 52(r1) # 4-byte Folded Spill
481 ; PPC-PWR8-NEXT: stw r29, 68(r1) # 4-byte Folded Spill
482 ; PPC-PWR8-NEXT: mr r29, r7
483 ; PPC-PWR8-NEXT: addi r25, r1, 32
484 ; PPC-PWR8-NEXT: stw r30, 72(r1) # 4-byte Folded Spill
485 ; PPC-PWR8-NEXT: mr r30, r8
486 ; PPC-PWR8-NEXT: .p2align 4
487 ; PPC-PWR8-NEXT: .LBB3_1: # %atomicrmw.start
488 ; PPC-PWR8-NEXT: #
489 ; PPC-PWR8-NEXT: stw r3, 32(r1)
490 ; PPC-PWR8-NEXT: stw r4, 36(r1)
491 ; PPC-PWR8-NEXT: and r7, r5, r29
492 ; PPC-PWR8-NEXT: and r8, r6, r30
493 ; PPC-PWR8-NEXT: and r3, r3, r27
494 ; PPC-PWR8-NEXT: and r4, r4, r28
495 ; PPC-PWR8-NEXT: stw r5, 40(r1)
496 ; PPC-PWR8-NEXT: stw r6, 44(r1)
497 ; PPC-PWR8-NEXT: mr r5, r25
498 ; PPC-PWR8-NEXT: mr r6, r24
499 ; PPC-PWR8-NEXT: stw r8, 28(r1)
500 ; PPC-PWR8-NEXT: stw r7, 24(r1)
501 ; PPC-PWR8-NEXT: li r7, 5
502 ; PPC-PWR8-NEXT: li r8, 5
503 ; PPC-PWR8-NEXT: stw r4, 20(r1)
504 ; PPC-PWR8-NEXT: stw r3, 16(r1)
505 ; PPC-PWR8-NEXT: li r3, 16
506 ; PPC-PWR8-NEXT: mr r4, r26
507 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
508 ; PPC-PWR8-NEXT: cmplwi r3, 0
509 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
510 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
511 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
512 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
513 ; PPC-PWR8-NEXT: beq cr0, .LBB3_1
514 ; PPC-PWR8-NEXT: # %bb.2: # %atomicrmw.end
515 ; PPC-PWR8-NEXT: lwz r30, 72(r1) # 4-byte Folded Reload
516 ; PPC-PWR8-NEXT: lwz r29, 68(r1) # 4-byte Folded Reload
517 ; PPC-PWR8-NEXT: lwz r28, 64(r1) # 4-byte Folded Reload
518 ; PPC-PWR8-NEXT: lwz r27, 60(r1) # 4-byte Folded Reload
519 ; PPC-PWR8-NEXT: lwz r26, 56(r1) # 4-byte Folded Reload
520 ; PPC-PWR8-NEXT: lwz r25, 52(r1) # 4-byte Folded Reload
521 ; PPC-PWR8-NEXT: lwz r24, 48(r1) # 4-byte Folded Reload
522 ; PPC-PWR8-NEXT: lwz r0, 84(r1)
523 ; PPC-PWR8-NEXT: addi r1, r1, 80
524 ; PPC-PWR8-NEXT: mtlr r0
525 ; PPC-PWR8-NEXT: blr
592 ; PPC-PWR8-LABEL: or:
593 ; PPC-PWR8: # %bb.0: # %entry
594 ; PPC-PWR8-NEXT: mflr r0
595 ; PPC-PWR8-NEXT: stw r0, 4(r1)
596 ; PPC-PWR8-NEXT: stwu r1, -80(r1)
597 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 80
598 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
599 ; PPC-PWR8-NEXT: .cfi_offset r24, -32
600 ; PPC-PWR8-NEXT: .cfi_offset r25, -28
601 ; PPC-PWR8-NEXT: .cfi_offset r26, -24
602 ; PPC-PWR8-NEXT: .cfi_offset r27, -20
603 ; PPC-PWR8-NEXT: .cfi_offset r28, -16
604 ; PPC-PWR8-NEXT: .cfi_offset r29, -12
605 ; PPC-PWR8-NEXT: .cfi_offset r30, -8
606 ; PPC-PWR8-NEXT: stw r26, 56(r1) # 4-byte Folded Spill
607 ; PPC-PWR8-NEXT: stw r27, 60(r1) # 4-byte Folded Spill
608 ; PPC-PWR8-NEXT: mr r27, r5
609 ; PPC-PWR8-NEXT: mr r26, r3
610 ; PPC-PWR8-NEXT: lwz r5, 8(r3)
611 ; PPC-PWR8-NEXT: lwz r4, 4(r3)
612 ; PPC-PWR8-NEXT: stw r28, 64(r1) # 4-byte Folded Spill
613 ; PPC-PWR8-NEXT: mr r28, r6
614 ; PPC-PWR8-NEXT: lwz r6, 12(r3)
615 ; PPC-PWR8-NEXT: lwz r3, 0(r3)
616 ; PPC-PWR8-NEXT: stw r24, 48(r1) # 4-byte Folded Spill
617 ; PPC-PWR8-NEXT: addi r24, r1, 16
618 ; PPC-PWR8-NEXT: stw r25, 52(r1) # 4-byte Folded Spill
619 ; PPC-PWR8-NEXT: stw r29, 68(r1) # 4-byte Folded Spill
620 ; PPC-PWR8-NEXT: mr r29, r7
621 ; PPC-PWR8-NEXT: addi r25, r1, 32
622 ; PPC-PWR8-NEXT: stw r30, 72(r1) # 4-byte Folded Spill
623 ; PPC-PWR8-NEXT: mr r30, r8
624 ; PPC-PWR8-NEXT: .p2align 4
625 ; PPC-PWR8-NEXT: .LBB4_1: # %atomicrmw.start
626 ; PPC-PWR8-NEXT: #
627 ; PPC-PWR8-NEXT: stw r3, 32(r1)
628 ; PPC-PWR8-NEXT: stw r4, 36(r1)
629 ; PPC-PWR8-NEXT: or r7, r5, r29
630 ; PPC-PWR8-NEXT: or r8, r6, r30
631 ; PPC-PWR8-NEXT: or r3, r3, r27
632 ; PPC-PWR8-NEXT: or r4, r4, r28
633 ; PPC-PWR8-NEXT: stw r5, 40(r1)
634 ; PPC-PWR8-NEXT: stw r6, 44(r1)
635 ; PPC-PWR8-NEXT: mr r5, r25
636 ; PPC-PWR8-NEXT: mr r6, r24
637 ; PPC-PWR8-NEXT: stw r8, 28(r1)
638 ; PPC-PWR8-NEXT: stw r7, 24(r1)
639 ; PPC-PWR8-NEXT: li r7, 5
640 ; PPC-PWR8-NEXT: li r8, 5
641 ; PPC-PWR8-NEXT: stw r4, 20(r1)
642 ; PPC-PWR8-NEXT: stw r3, 16(r1)
643 ; PPC-PWR8-NEXT: li r3, 16
644 ; PPC-PWR8-NEXT: mr r4, r26
645 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
646 ; PPC-PWR8-NEXT: cmplwi r3, 0
647 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
648 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
649 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
650 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
651 ; PPC-PWR8-NEXT: beq cr0, .LBB4_1
652 ; PPC-PWR8-NEXT: # %bb.2: # %atomicrmw.end
653 ; PPC-PWR8-NEXT: lwz r30, 72(r1) # 4-byte Folded Reload
654 ; PPC-PWR8-NEXT: lwz r29, 68(r1) # 4-byte Folded Reload
655 ; PPC-PWR8-NEXT: lwz r28, 64(r1) # 4-byte Folded Reload
656 ; PPC-PWR8-NEXT: lwz r27, 60(r1) # 4-byte Folded Reload
657 ; PPC-PWR8-NEXT: lwz r26, 56(r1) # 4-byte Folded Reload
658 ; PPC-PWR8-NEXT: lwz r25, 52(r1) # 4-byte Folded Reload
659 ; PPC-PWR8-NEXT: lwz r24, 48(r1) # 4-byte Folded Reload
660 ; PPC-PWR8-NEXT: lwz r0, 84(r1)
661 ; PPC-PWR8-NEXT: addi r1, r1, 80
662 ; PPC-PWR8-NEXT: mtlr r0
663 ; PPC-PWR8-NEXT: blr
730 ; PPC-PWR8-LABEL: xor:
731 ; PPC-PWR8: # %bb.0: # %entry
732 ; PPC-PWR8-NEXT: mflr r0
733 ; PPC-PWR8-NEXT: stw r0, 4(r1)
734 ; PPC-PWR8-NEXT: stwu r1, -80(r1)
735 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 80
736 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
737 ; PPC-PWR8-NEXT: .cfi_offset r24, -32
738 ; PPC-PWR8-NEXT: .cfi_offset r25, -28
739 ; PPC-PWR8-NEXT: .cfi_offset r26, -24
740 ; PPC-PWR8-NEXT: .cfi_offset r27, -20
741 ; PPC-PWR8-NEXT: .cfi_offset r28, -16
742 ; PPC-PWR8-NEXT: .cfi_offset r29, -12
743 ; PPC-PWR8-NEXT: .cfi_offset r30, -8
744 ; PPC-PWR8-NEXT: stw r26, 56(r1) # 4-byte Folded Spill
745 ; PPC-PWR8-NEXT: stw r27, 60(r1) # 4-byte Folded Spill
746 ; PPC-PWR8-NEXT: mr r27, r5
747 ; PPC-PWR8-NEXT: mr r26, r3
748 ; PPC-PWR8-NEXT: lwz r5, 8(r3)
749 ; PPC-PWR8-NEXT: lwz r4, 4(r3)
750 ; PPC-PWR8-NEXT: stw r28, 64(r1) # 4-byte Folded Spill
751 ; PPC-PWR8-NEXT: mr r28, r6
752 ; PPC-PWR8-NEXT: lwz r6, 12(r3)
753 ; PPC-PWR8-NEXT: lwz r3, 0(r3)
754 ; PPC-PWR8-NEXT: stw r24, 48(r1) # 4-byte Folded Spill
755 ; PPC-PWR8-NEXT: addi r24, r1, 16
756 ; PPC-PWR8-NEXT: stw r25, 52(r1) # 4-byte Folded Spill
757 ; PPC-PWR8-NEXT: stw r29, 68(r1) # 4-byte Folded Spill
758 ; PPC-PWR8-NEXT: mr r29, r7
759 ; PPC-PWR8-NEXT: addi r25, r1, 32
760 ; PPC-PWR8-NEXT: stw r30, 72(r1) # 4-byte Folded Spill
761 ; PPC-PWR8-NEXT: mr r30, r8
762 ; PPC-PWR8-NEXT: .p2align 4
763 ; PPC-PWR8-NEXT: .LBB5_1: # %atomicrmw.start
764 ; PPC-PWR8-NEXT: #
765 ; PPC-PWR8-NEXT: stw r3, 32(r1)
766 ; PPC-PWR8-NEXT: stw r4, 36(r1)
767 ; PPC-PWR8-NEXT: xor r7, r5, r29
768 ; PPC-PWR8-NEXT: xor r8, r6, r30
769 ; PPC-PWR8-NEXT: xor r3, r3, r27
770 ; PPC-PWR8-NEXT: xor r4, r4, r28
771 ; PPC-PWR8-NEXT: stw r5, 40(r1)
772 ; PPC-PWR8-NEXT: stw r6, 44(r1)
773 ; PPC-PWR8-NEXT: mr r5, r25
774 ; PPC-PWR8-NEXT: mr r6, r24
775 ; PPC-PWR8-NEXT: stw r8, 28(r1)
776 ; PPC-PWR8-NEXT: stw r7, 24(r1)
777 ; PPC-PWR8-NEXT: li r7, 5
778 ; PPC-PWR8-NEXT: li r8, 5
779 ; PPC-PWR8-NEXT: stw r4, 20(r1)
780 ; PPC-PWR8-NEXT: stw r3, 16(r1)
781 ; PPC-PWR8-NEXT: li r3, 16
782 ; PPC-PWR8-NEXT: mr r4, r26
783 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
784 ; PPC-PWR8-NEXT: cmplwi r3, 0
785 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
786 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
787 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
788 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
789 ; PPC-PWR8-NEXT: beq cr0, .LBB5_1
790 ; PPC-PWR8-NEXT: # %bb.2: # %atomicrmw.end
791 ; PPC-PWR8-NEXT: lwz r30, 72(r1) # 4-byte Folded Reload
792 ; PPC-PWR8-NEXT: lwz r29, 68(r1) # 4-byte Folded Reload
793 ; PPC-PWR8-NEXT: lwz r28, 64(r1) # 4-byte Folded Reload
794 ; PPC-PWR8-NEXT: lwz r27, 60(r1) # 4-byte Folded Reload
795 ; PPC-PWR8-NEXT: lwz r26, 56(r1) # 4-byte Folded Reload
796 ; PPC-PWR8-NEXT: lwz r25, 52(r1) # 4-byte Folded Reload
797 ; PPC-PWR8-NEXT: lwz r24, 48(r1) # 4-byte Folded Reload
798 ; PPC-PWR8-NEXT: lwz r0, 84(r1)
799 ; PPC-PWR8-NEXT: addi r1, r1, 80
800 ; PPC-PWR8-NEXT: mtlr r0
801 ; PPC-PWR8-NEXT: blr
868 ; PPC-PWR8-LABEL: nand:
869 ; PPC-PWR8: # %bb.0: # %entry
870 ; PPC-PWR8-NEXT: mflr r0
871 ; PPC-PWR8-NEXT: stw r0, 4(r1)
872 ; PPC-PWR8-NEXT: stwu r1, -80(r1)
873 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 80
874 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
875 ; PPC-PWR8-NEXT: .cfi_offset r24, -32
876 ; PPC-PWR8-NEXT: .cfi_offset r25, -28
877 ; PPC-PWR8-NEXT: .cfi_offset r26, -24
878 ; PPC-PWR8-NEXT: .cfi_offset r27, -20
879 ; PPC-PWR8-NEXT: .cfi_offset r28, -16
880 ; PPC-PWR8-NEXT: .cfi_offset r29, -12
881 ; PPC-PWR8-NEXT: .cfi_offset r30, -8
882 ; PPC-PWR8-NEXT: stw r26, 56(r1) # 4-byte Folded Spill
883 ; PPC-PWR8-NEXT: stw r27, 60(r1) # 4-byte Folded Spill
884 ; PPC-PWR8-NEXT: mr r27, r5
885 ; PPC-PWR8-NEXT: mr r26, r3
886 ; PPC-PWR8-NEXT: lwz r5, 8(r3)
887 ; PPC-PWR8-NEXT: lwz r4, 4(r3)
888 ; PPC-PWR8-NEXT: stw r28, 64(r1) # 4-byte Folded Spill
889 ; PPC-PWR8-NEXT: mr r28, r6
890 ; PPC-PWR8-NEXT: lwz r6, 12(r3)
891 ; PPC-PWR8-NEXT: lwz r3, 0(r3)
892 ; PPC-PWR8-NEXT: stw r24, 48(r1) # 4-byte Folded Spill
893 ; PPC-PWR8-NEXT: addi r24, r1, 16
894 ; PPC-PWR8-NEXT: stw r25, 52(r1) # 4-byte Folded Spill
895 ; PPC-PWR8-NEXT: stw r29, 68(r1) # 4-byte Folded Spill
896 ; PPC-PWR8-NEXT: mr r29, r7
897 ; PPC-PWR8-NEXT: addi r25, r1, 32
898 ; PPC-PWR8-NEXT: stw r30, 72(r1) # 4-byte Folded Spill
899 ; PPC-PWR8-NEXT: mr r30, r8
900 ; PPC-PWR8-NEXT: .p2align 4
901 ; PPC-PWR8-NEXT: .LBB6_1: # %atomicrmw.start
902 ; PPC-PWR8-NEXT: #
903 ; PPC-PWR8-NEXT: stw r3, 32(r1)
904 ; PPC-PWR8-NEXT: stw r4, 36(r1)
905 ; PPC-PWR8-NEXT: nand r7, r5, r29
906 ; PPC-PWR8-NEXT: nand r8, r6, r30
907 ; PPC-PWR8-NEXT: nand r3, r3, r27
908 ; PPC-PWR8-NEXT: nand r4, r4, r28
909 ; PPC-PWR8-NEXT: stw r5, 40(r1)
910 ; PPC-PWR8-NEXT: stw r6, 44(r1)
911 ; PPC-PWR8-NEXT: mr r5, r25
912 ; PPC-PWR8-NEXT: mr r6, r24
913 ; PPC-PWR8-NEXT: stw r8, 28(r1)
914 ; PPC-PWR8-NEXT: stw r7, 24(r1)
915 ; PPC-PWR8-NEXT: li r7, 5
916 ; PPC-PWR8-NEXT: li r8, 5
917 ; PPC-PWR8-NEXT: stw r4, 20(r1)
918 ; PPC-PWR8-NEXT: stw r3, 16(r1)
919 ; PPC-PWR8-NEXT: li r3, 16
920 ; PPC-PWR8-NEXT: mr r4, r26
921 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
922 ; PPC-PWR8-NEXT: cmplwi r3, 0
923 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
924 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
925 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
926 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
927 ; PPC-PWR8-NEXT: beq cr0, .LBB6_1
928 ; PPC-PWR8-NEXT: # %bb.2: # %atomicrmw.end
929 ; PPC-PWR8-NEXT: lwz r30, 72(r1) # 4-byte Folded Reload
930 ; PPC-PWR8-NEXT: lwz r29, 68(r1) # 4-byte Folded Reload
931 ; PPC-PWR8-NEXT: lwz r28, 64(r1) # 4-byte Folded Reload
932 ; PPC-PWR8-NEXT: lwz r27, 60(r1) # 4-byte Folded Reload
933 ; PPC-PWR8-NEXT: lwz r26, 56(r1) # 4-byte Folded Reload
934 ; PPC-PWR8-NEXT: lwz r25, 52(r1) # 4-byte Folded Reload
935 ; PPC-PWR8-NEXT: lwz r24, 48(r1) # 4-byte Folded Reload
936 ; PPC-PWR8-NEXT: lwz r0, 84(r1)
937 ; PPC-PWR8-NEXT: addi r1, r1, 80
938 ; PPC-PWR8-NEXT: mtlr r0
939 ; PPC-PWR8-NEXT: blr
1039 ; PPC-PWR8-LABEL: cas_weak_acquire_acquire:
1040 ; PPC-PWR8: # %bb.0: # %entry
1041 ; PPC-PWR8-NEXT: mflr r0
1042 ; PPC-PWR8-NEXT: stw r0, 4(r1)
1043 ; PPC-PWR8-NEXT: stwu r1, -48(r1)
1044 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 48
1045 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
1046 ; PPC-PWR8-NEXT: mr r4, r3
1047 ; PPC-PWR8-NEXT: lwz r3, 56(r1)
1048 ; PPC-PWR8-NEXT: lwz r11, 60(r1)
1049 ; PPC-PWR8-NEXT: stw r8, 44(r1)
1050 ; PPC-PWR8-NEXT: stw r7, 40(r1)
1051 ; PPC-PWR8-NEXT: li r7, 2
1052 ; PPC-PWR8-NEXT: li r8, 2
1053 ; PPC-PWR8-NEXT: stw r6, 36(r1)
1054 ; PPC-PWR8-NEXT: stw r5, 32(r1)
1055 ; PPC-PWR8-NEXT: addi r5, r1, 32
1056 ; PPC-PWR8-NEXT: addi r6, r1, 16
1057 ; PPC-PWR8-NEXT: stw r3, 24(r1)
1058 ; PPC-PWR8-NEXT: li r3, 16
1059 ; PPC-PWR8-NEXT: stw r11, 28(r1)
1060 ; PPC-PWR8-NEXT: stw r10, 20(r1)
1061 ; PPC-PWR8-NEXT: stw r9, 16(r1)
1062 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
1063 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
1064 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
1065 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
1066 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
1067 ; PPC-PWR8-NEXT: lwz r0, 52(r1)
1068 ; PPC-PWR8-NEXT: addi r1, r1, 48
1069 ; PPC-PWR8-NEXT: mtlr r0
1070 ; PPC-PWR8-NEXT: blr
1170 ; PPC-PWR8-LABEL: cas_weak_release_monotonic:
1171 ; PPC-PWR8: # %bb.0: # %entry
1172 ; PPC-PWR8-NEXT: mflr r0
1173 ; PPC-PWR8-NEXT: stw r0, 4(r1)
1174 ; PPC-PWR8-NEXT: stwu r1, -48(r1)
1175 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 48
1176 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
1177 ; PPC-PWR8-NEXT: mr r4, r3
1178 ; PPC-PWR8-NEXT: lwz r3, 56(r1)
1179 ; PPC-PWR8-NEXT: lwz r11, 60(r1)
1180 ; PPC-PWR8-NEXT: stw r8, 44(r1)
1181 ; PPC-PWR8-NEXT: stw r7, 40(r1)
1182 ; PPC-PWR8-NEXT: li r7, 3
1183 ; PPC-PWR8-NEXT: li r8, 0
1184 ; PPC-PWR8-NEXT: stw r6, 36(r1)
1185 ; PPC-PWR8-NEXT: stw r5, 32(r1)
1186 ; PPC-PWR8-NEXT: addi r5, r1, 32
1187 ; PPC-PWR8-NEXT: addi r6, r1, 16
1188 ; PPC-PWR8-NEXT: stw r3, 24(r1)
1189 ; PPC-PWR8-NEXT: li r3, 16
1190 ; PPC-PWR8-NEXT: stw r11, 28(r1)
1191 ; PPC-PWR8-NEXT: stw r10, 20(r1)
1192 ; PPC-PWR8-NEXT: stw r9, 16(r1)
1193 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
1194 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
1195 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
1196 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
1197 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
1198 ; PPC-PWR8-NEXT: lwz r0, 52(r1)
1199 ; PPC-PWR8-NEXT: addi r1, r1, 48
1200 ; PPC-PWR8-NEXT: mtlr r0
1201 ; PPC-PWR8-NEXT: blr
1303 ; PPC-PWR8-LABEL: cas_sc_sc:
1304 ; PPC-PWR8: # %bb.0: # %entry
1305 ; PPC-PWR8-NEXT: mflr r0
1306 ; PPC-PWR8-NEXT: stw r0, 4(r1)
1307 ; PPC-PWR8-NEXT: stwu r1, -48(r1)
1308 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 48
1309 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
1310 ; PPC-PWR8-NEXT: mr r4, r3
1311 ; PPC-PWR8-NEXT: lwz r3, 56(r1)
1312 ; PPC-PWR8-NEXT: lwz r11, 60(r1)
1313 ; PPC-PWR8-NEXT: stw r8, 44(r1)
1314 ; PPC-PWR8-NEXT: stw r7, 40(r1)
1315 ; PPC-PWR8-NEXT: li r7, 5
1316 ; PPC-PWR8-NEXT: li r8, 5
1317 ; PPC-PWR8-NEXT: stw r6, 36(r1)
1318 ; PPC-PWR8-NEXT: stw r5, 32(r1)
1319 ; PPC-PWR8-NEXT: addi r5, r1, 32
1320 ; PPC-PWR8-NEXT: addi r6, r1, 16
1321 ; PPC-PWR8-NEXT: stw r3, 24(r1)
1322 ; PPC-PWR8-NEXT: li r3, 16
1323 ; PPC-PWR8-NEXT: stw r11, 28(r1)
1324 ; PPC-PWR8-NEXT: stw r10, 20(r1)
1325 ; PPC-PWR8-NEXT: stw r9, 16(r1)
1326 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
1327 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
1328 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
1329 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
1330 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
1331 ; PPC-PWR8-NEXT: lwz r0, 52(r1)
1332 ; PPC-PWR8-NEXT: addi r1, r1, 48
1333 ; PPC-PWR8-NEXT: mtlr r0
1334 ; PPC-PWR8-NEXT: blr
1436 ; PPC-PWR8-LABEL: cas_acqrel_acquire:
1437 ; PPC-PWR8: # %bb.0: # %entry
1438 ; PPC-PWR8-NEXT: mflr r0
1439 ; PPC-PWR8-NEXT: stw r0, 4(r1)
1440 ; PPC-PWR8-NEXT: stwu r1, -48(r1)
1441 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 48
1442 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
1443 ; PPC-PWR8-NEXT: mr r4, r3
1444 ; PPC-PWR8-NEXT: lwz r3, 56(r1)
1445 ; PPC-PWR8-NEXT: lwz r11, 60(r1)
1446 ; PPC-PWR8-NEXT: stw r8, 44(r1)
1447 ; PPC-PWR8-NEXT: stw r7, 40(r1)
1448 ; PPC-PWR8-NEXT: li r7, 4
1449 ; PPC-PWR8-NEXT: li r8, 2
1450 ; PPC-PWR8-NEXT: stw r6, 36(r1)
1451 ; PPC-PWR8-NEXT: stw r5, 32(r1)
1452 ; PPC-PWR8-NEXT: addi r5, r1, 32
1453 ; PPC-PWR8-NEXT: addi r6, r1, 16
1454 ; PPC-PWR8-NEXT: stw r3, 24(r1)
1455 ; PPC-PWR8-NEXT: li r3, 16
1456 ; PPC-PWR8-NEXT: stw r11, 28(r1)
1457 ; PPC-PWR8-NEXT: stw r10, 20(r1)
1458 ; PPC-PWR8-NEXT: stw r9, 16(r1)
1459 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
1460 ; PPC-PWR8-NEXT: lwz r6, 44(r1)
1461 ; PPC-PWR8-NEXT: lwz r5, 40(r1)
1462 ; PPC-PWR8-NEXT: lwz r4, 36(r1)
1463 ; PPC-PWR8-NEXT: lwz r3, 32(r1)
1464 ; PPC-PWR8-NEXT: lwz r0, 52(r1)
1465 ; PPC-PWR8-NEXT: addi r1, r1, 48
1466 ; PPC-PWR8-NEXT: mtlr r0
1467 ; PPC-PWR8-NEXT: blr
1571 ; PPC-PWR8-LABEL: cas_acqrel_acquire_check_succ:
1572 ; PPC-PWR8: # %bb.0: # %entry
1573 ; PPC-PWR8-NEXT: mflr r0
1574 ; PPC-PWR8-NEXT: stw r0, 4(r1)
1575 ; PPC-PWR8-NEXT: stwu r1, -48(r1)
1576 ; PPC-PWR8-NEXT: .cfi_def_cfa_offset 48
1577 ; PPC-PWR8-NEXT: .cfi_offset lr, 4
1578 ; PPC-PWR8-NEXT: mr r4, r3
1579 ; PPC-PWR8-NEXT: lwz r3, 56(r1)
1580 ; PPC-PWR8-NEXT: lwz r11, 60(r1)
1581 ; PPC-PWR8-NEXT: stw r8, 44(r1)
1582 ; PPC-PWR8-NEXT: stw r7, 40(r1)
1583 ; PPC-PWR8-NEXT: li r7, 4
1584 ; PPC-PWR8-NEXT: li r8, 2
1585 ; PPC-PWR8-NEXT: stw r6, 36(r1)
1586 ; PPC-PWR8-NEXT: stw r5, 32(r1)
1587 ; PPC-PWR8-NEXT: addi r5, r1, 32
1588 ; PPC-PWR8-NEXT: addi r6, r1, 16
1589 ; PPC-PWR8-NEXT: stw r3, 24(r1)
1590 ; PPC-PWR8-NEXT: li r3, 16
1591 ; PPC-PWR8-NEXT: stw r11, 28(r1)
1592 ; PPC-PWR8-NEXT: stw r10, 20(r1)
1593 ; PPC-PWR8-NEXT: stw r9, 16(r1)
1594 ; PPC-PWR8-NEXT: bl __atomic_compare_exchange
1595 ; PPC-PWR8-NEXT: lwz r0, 52(r1)
1596 ; PPC-PWR8-NEXT: addi r1, r1, 48
1597 ; PPC-PWR8-NEXT: mtlr r0
1598 ; PPC-PWR8-NEXT: blr