@@ -37,9 +37,10 @@ define i8 @atomicrmw_add_i8(i8 %val, ptr %ptr) {
37
37
; ATOMIC-NEXT: move.b %d0, %d3
38
38
; ATOMIC-NEXT: sub.b %d2, %d3
39
39
; ATOMIC-NEXT: seq %d2
40
- ; ATOMIC-NEXT: sub.b #1, %d2
40
+ ; ATOMIC-NEXT: and.b #1, %d2
41
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
41
42
; ATOMIC-NEXT: move.b %d0, %d2
42
- ; ATOMIC-NEXT: bne .LBB0_1
43
+ ; ATOMIC-NEXT: beq .LBB0_1
43
44
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
44
45
; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
45
46
; ATOMIC-NEXT: adda.l #8, %sp
@@ -80,9 +81,10 @@ define i16 @atomicrmw_sub_i16(i16 %val, ptr %ptr) {
80
81
; ATOMIC-NEXT: move.w %d0, %d3
81
82
; ATOMIC-NEXT: sub.w %d2, %d3
82
83
; ATOMIC-NEXT: seq %d2
83
- ; ATOMIC-NEXT: sub.b #1, %d2
84
+ ; ATOMIC-NEXT: and.b #1, %d2
85
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
84
86
; ATOMIC-NEXT: move.w %d0, %d2
85
- ; ATOMIC-NEXT: bne .LBB1_1
87
+ ; ATOMIC-NEXT: beq .LBB1_1
86
88
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
87
89
; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
88
90
; ATOMIC-NEXT: adda.l #8, %sp
@@ -121,9 +123,10 @@ define i32 @atomicrmw_and_i32(i32 %val, ptr %ptr) {
121
123
; ATOMIC-NEXT: move.l %d0, %d3
122
124
; ATOMIC-NEXT: sub.l %d2, %d3
123
125
; ATOMIC-NEXT: seq %d2
124
- ; ATOMIC-NEXT: sub.b #1, %d2
126
+ ; ATOMIC-NEXT: and.b #1, %d2
127
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
125
128
; ATOMIC-NEXT: move.l %d0, %d2
126
- ; ATOMIC-NEXT: bne .LBB2_1
129
+ ; ATOMIC-NEXT: beq .LBB2_1
127
130
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
128
131
; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
129
132
; ATOMIC-NEXT: adda.l #8, %sp
@@ -194,9 +197,10 @@ define i8 @atomicrmw_or_i8(i8 %val, ptr %ptr) {
194
197
; ATOMIC-NEXT: move.b %d0, %d3
195
198
; ATOMIC-NEXT: sub.b %d2, %d3
196
199
; ATOMIC-NEXT: seq %d2
197
- ; ATOMIC-NEXT: sub.b #1, %d2
200
+ ; ATOMIC-NEXT: and.b #1, %d2
201
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
198
202
; ATOMIC-NEXT: move.b %d0, %d2
199
- ; ATOMIC-NEXT: bne .LBB4_1
203
+ ; ATOMIC-NEXT: beq .LBB4_1
200
204
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
201
205
; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
202
206
; ATOMIC-NEXT: adda.l #8, %sp
@@ -242,9 +246,10 @@ define i16 @atmoicrmw_nand_i16(i16 %val, ptr %ptr) {
242
246
; ATOMIC-NEXT: move.w %d1, %d3
243
247
; ATOMIC-NEXT: sub.w %d2, %d3
244
248
; ATOMIC-NEXT: seq %d2
245
- ; ATOMIC-NEXT: sub.b #1, %d2
249
+ ; ATOMIC-NEXT: and.b #1, %d2
250
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
246
251
; ATOMIC-NEXT: move.w %d1, %d2
247
- ; ATOMIC-NEXT: bne .LBB5_1
252
+ ; ATOMIC-NEXT: beq .LBB5_1
248
253
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
249
254
; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
250
255
; ATOMIC-NEXT: adda.l #8, %sp
@@ -282,9 +287,10 @@ define i32 @atomicrmw_min_i32(i32 %val, ptr %ptr) {
282
287
; ATOMIC-NEXT: move.l %d0, %d3
283
288
; ATOMIC-NEXT: sub.l %d2, %d3
284
289
; ATOMIC-NEXT: seq %d2
285
- ; ATOMIC-NEXT: sub.b #1, %d2
290
+ ; ATOMIC-NEXT: and.b #1, %d2
291
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
286
292
; ATOMIC-NEXT: move.l %d0, %d2
287
- ; ATOMIC-NEXT: beq .LBB6_4
293
+ ; ATOMIC-NEXT: bne .LBB6_4
288
294
; ATOMIC-NEXT: .LBB6_1: ; %atomicrmw.start
289
295
; ATOMIC-NEXT: ; =>This Inner Loop Header: Depth=1
290
296
; ATOMIC-NEXT: move.l %d2, %d0
@@ -434,9 +440,10 @@ define i8 @atomicrmw_i8_umin(i8 %val, ptr %ptr) {
434
440
; ATOMIC-NEXT: move.b %d0, %d3
435
441
; ATOMIC-NEXT: sub.b %d2, %d3
436
442
; ATOMIC-NEXT: seq %d2
437
- ; ATOMIC-NEXT: sub.b #1, %d2
443
+ ; ATOMIC-NEXT: and.b #1, %d2
444
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
438
445
; ATOMIC-NEXT: move.b %d0, %d2
439
- ; ATOMIC-NEXT: beq .LBB8_4
446
+ ; ATOMIC-NEXT: bne .LBB8_4
440
447
; ATOMIC-NEXT: .LBB8_1: ; %atomicrmw.start
441
448
; ATOMIC-NEXT: ; =>This Inner Loop Header: Depth=1
442
449
; ATOMIC-NEXT: move.b %d2, %d0
@@ -486,9 +493,10 @@ define i16 @atomicrmw_umax_i16(i16 %val, ptr %ptr) {
486
493
; ATOMIC-NEXT: move.w %d0, %d3
487
494
; ATOMIC-NEXT: sub.w %d2, %d3
488
495
; ATOMIC-NEXT: seq %d2
489
- ; ATOMIC-NEXT: sub.b #1, %d2
496
+ ; ATOMIC-NEXT: and.b #1, %d2
497
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
490
498
; ATOMIC-NEXT: move.w %d0, %d2
491
- ; ATOMIC-NEXT: beq .LBB9_4
499
+ ; ATOMIC-NEXT: bne .LBB9_4
492
500
; ATOMIC-NEXT: .LBB9_1: ; %atomicrmw.start
493
501
; ATOMIC-NEXT: ; =>This Inner Loop Header: Depth=1
494
502
; ATOMIC-NEXT: move.w %d2, %d0
@@ -537,9 +545,10 @@ define i16 @atomicrmw_xchg_i16(i16 %val, ptr %ptr) {
537
545
; ATOMIC-NEXT: move.w %d0, %d3
538
546
; ATOMIC-NEXT: sub.w %d2, %d3
539
547
; ATOMIC-NEXT: seq %d2
540
- ; ATOMIC-NEXT: sub.b #1, %d2
548
+ ; ATOMIC-NEXT: and.b #1, %d2
549
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
541
550
; ATOMIC-NEXT: move.w %d0, %d2
542
- ; ATOMIC-NEXT: bne .LBB10_1
551
+ ; ATOMIC-NEXT: beq .LBB10_1
543
552
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
544
553
; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
545
554
; ATOMIC-NEXT: adda.l #8, %sp
@@ -577,9 +586,10 @@ define i32 @atomicrmw_xchg_i32(i32 %val, ptr %ptr) {
577
586
; ATOMIC-NEXT: move.l %d0, %d3
578
587
; ATOMIC-NEXT: sub.l %d2, %d3
579
588
; ATOMIC-NEXT: seq %d2
580
- ; ATOMIC-NEXT: sub.b #1, %d2
589
+ ; ATOMIC-NEXT: and.b #1, %d2
590
+ ; ATOMIC-NEXT: cmpi.b #0, %d2
581
591
; ATOMIC-NEXT: move.l %d0, %d2
582
- ; ATOMIC-NEXT: bne .LBB11_1
592
+ ; ATOMIC-NEXT: beq .LBB11_1
583
593
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
584
594
; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
585
595
; ATOMIC-NEXT: adda.l #8, %sp
@@ -622,9 +632,10 @@ define i8 @atomicrmw_sub_i8_arid(ptr align 2 %self) {
622
632
; ATOMIC-NEXT: move.b %d0, %d2
623
633
; ATOMIC-NEXT: sub.b %d1, %d2
624
634
; ATOMIC-NEXT: seq %d1
625
- ; ATOMIC-NEXT: sub.b #1, %d1
635
+ ; ATOMIC-NEXT: and.b #1, %d1
636
+ ; ATOMIC-NEXT: cmpi.b #0, %d1
626
637
; ATOMIC-NEXT: move.b %d0, %d1
627
- ; ATOMIC-NEXT: bne .LBB12_1
638
+ ; ATOMIC-NEXT: beq .LBB12_1
628
639
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
629
640
; ATOMIC-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload
630
641
; ATOMIC-NEXT: adda.l #4, %sp
@@ -669,9 +680,10 @@ define i16 @atomicrmw_sub_i16_arid(ptr align 2 %self) {
669
680
; ATOMIC-NEXT: move.w %d0, %d2
670
681
; ATOMIC-NEXT: sub.w %d1, %d2
671
682
; ATOMIC-NEXT: seq %d1
672
- ; ATOMIC-NEXT: sub.b #1, %d1
683
+ ; ATOMIC-NEXT: and.b #1, %d1
684
+ ; ATOMIC-NEXT: cmpi.b #0, %d1
673
685
; ATOMIC-NEXT: move.w %d0, %d1
674
- ; ATOMIC-NEXT: bne .LBB13_1
686
+ ; ATOMIC-NEXT: beq .LBB13_1
675
687
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
676
688
; ATOMIC-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload
677
689
; ATOMIC-NEXT: adda.l #4, %sp
@@ -716,9 +728,10 @@ define i32 @atomicrmw_sub_i32_arid(ptr align 2 %self) {
716
728
; ATOMIC-NEXT: move.l %d0, %d2
717
729
; ATOMIC-NEXT: sub.l %d1, %d2
718
730
; ATOMIC-NEXT: seq %d1
719
- ; ATOMIC-NEXT: sub.b #1, %d1
731
+ ; ATOMIC-NEXT: and.b #1, %d1
732
+ ; ATOMIC-NEXT: cmpi.b #0, %d1
720
733
; ATOMIC-NEXT: move.l %d0, %d1
721
- ; ATOMIC-NEXT: bne .LBB14_1
734
+ ; ATOMIC-NEXT: beq .LBB14_1
722
735
; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
723
736
; ATOMIC-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload
724
737
; ATOMIC-NEXT: adda.l #4, %sp
0 commit comments