@@ -37,9 +37,10 @@ define i8 @atomicrmw_add_i8(i8 %val, ptr %ptr) {
3737; ATOMIC-NEXT: move.b %d0, %d3
3838; ATOMIC-NEXT: sub.b %d2, %d3
3939; 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
4142; ATOMIC-NEXT: move.b %d0, %d2
42- ; ATOMIC-NEXT: bne .LBB0_1
43+ ; ATOMIC-NEXT: beq .LBB0_1
4344; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
4445; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
4546; ATOMIC-NEXT: adda.l #8, %sp
@@ -80,9 +81,10 @@ define i16 @atomicrmw_sub_i16(i16 %val, ptr %ptr) {
8081; ATOMIC-NEXT: move.w %d0, %d3
8182; ATOMIC-NEXT: sub.w %d2, %d3
8283; 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
8486; ATOMIC-NEXT: move.w %d0, %d2
85- ; ATOMIC-NEXT: bne .LBB1_1
87+ ; ATOMIC-NEXT: beq .LBB1_1
8688; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
8789; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
8890; ATOMIC-NEXT: adda.l #8, %sp
@@ -121,9 +123,10 @@ define i32 @atomicrmw_and_i32(i32 %val, ptr %ptr) {
121123; ATOMIC-NEXT: move.l %d0, %d3
122124; ATOMIC-NEXT: sub.l %d2, %d3
123125; 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
125128; ATOMIC-NEXT: move.l %d0, %d2
126- ; ATOMIC-NEXT: bne .LBB2_1
129+ ; ATOMIC-NEXT: beq .LBB2_1
127130; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
128131; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
129132; ATOMIC-NEXT: adda.l #8, %sp
@@ -194,9 +197,10 @@ define i8 @atomicrmw_or_i8(i8 %val, ptr %ptr) {
194197; ATOMIC-NEXT: move.b %d0, %d3
195198; ATOMIC-NEXT: sub.b %d2, %d3
196199; 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
198202; ATOMIC-NEXT: move.b %d0, %d2
199- ; ATOMIC-NEXT: bne .LBB4_1
203+ ; ATOMIC-NEXT: beq .LBB4_1
200204; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
201205; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
202206; ATOMIC-NEXT: adda.l #8, %sp
@@ -242,9 +246,10 @@ define i16 @atmoicrmw_nand_i16(i16 %val, ptr %ptr) {
242246; ATOMIC-NEXT: move.w %d1, %d3
243247; ATOMIC-NEXT: sub.w %d2, %d3
244248; 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
246251; ATOMIC-NEXT: move.w %d1, %d2
247- ; ATOMIC-NEXT: bne .LBB5_1
252+ ; ATOMIC-NEXT: beq .LBB5_1
248253; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
249254; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
250255; ATOMIC-NEXT: adda.l #8, %sp
@@ -282,9 +287,10 @@ define i32 @atomicrmw_min_i32(i32 %val, ptr %ptr) {
282287; ATOMIC-NEXT: move.l %d0, %d3
283288; ATOMIC-NEXT: sub.l %d2, %d3
284289; 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
286292; ATOMIC-NEXT: move.l %d0, %d2
287- ; ATOMIC-NEXT: beq .LBB6_4
293+ ; ATOMIC-NEXT: bne .LBB6_4
288294; ATOMIC-NEXT: .LBB6_1: ; %atomicrmw.start
289295; ATOMIC-NEXT: ; =>This Inner Loop Header: Depth=1
290296; ATOMIC-NEXT: move.l %d2, %d0
@@ -434,9 +440,10 @@ define i8 @atomicrmw_i8_umin(i8 %val, ptr %ptr) {
434440; ATOMIC-NEXT: move.b %d0, %d3
435441; ATOMIC-NEXT: sub.b %d2, %d3
436442; 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
438445; ATOMIC-NEXT: move.b %d0, %d2
439- ; ATOMIC-NEXT: beq .LBB8_4
446+ ; ATOMIC-NEXT: bne .LBB8_4
440447; ATOMIC-NEXT: .LBB8_1: ; %atomicrmw.start
441448; ATOMIC-NEXT: ; =>This Inner Loop Header: Depth=1
442449; ATOMIC-NEXT: move.b %d2, %d0
@@ -486,9 +493,10 @@ define i16 @atomicrmw_umax_i16(i16 %val, ptr %ptr) {
486493; ATOMIC-NEXT: move.w %d0, %d3
487494; ATOMIC-NEXT: sub.w %d2, %d3
488495; 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
490498; ATOMIC-NEXT: move.w %d0, %d2
491- ; ATOMIC-NEXT: beq .LBB9_4
499+ ; ATOMIC-NEXT: bne .LBB9_4
492500; ATOMIC-NEXT: .LBB9_1: ; %atomicrmw.start
493501; ATOMIC-NEXT: ; =>This Inner Loop Header: Depth=1
494502; ATOMIC-NEXT: move.w %d2, %d0
@@ -537,9 +545,10 @@ define i16 @atomicrmw_xchg_i16(i16 %val, ptr %ptr) {
537545; ATOMIC-NEXT: move.w %d0, %d3
538546; ATOMIC-NEXT: sub.w %d2, %d3
539547; 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
541550; ATOMIC-NEXT: move.w %d0, %d2
542- ; ATOMIC-NEXT: bne .LBB10_1
551+ ; ATOMIC-NEXT: beq .LBB10_1
543552; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
544553; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
545554; ATOMIC-NEXT: adda.l #8, %sp
@@ -577,9 +586,10 @@ define i32 @atomicrmw_xchg_i32(i32 %val, ptr %ptr) {
577586; ATOMIC-NEXT: move.l %d0, %d3
578587; ATOMIC-NEXT: sub.l %d2, %d3
579588; 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
581591; ATOMIC-NEXT: move.l %d0, %d2
582- ; ATOMIC-NEXT: bne .LBB11_1
592+ ; ATOMIC-NEXT: beq .LBB11_1
583593; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
584594; ATOMIC-NEXT: movem.l (0,%sp), %d2-%d3 ; 12-byte Folded Reload
585595; ATOMIC-NEXT: adda.l #8, %sp
@@ -622,9 +632,10 @@ define i8 @atomicrmw_sub_i8_arid(ptr align 2 %self) {
622632; ATOMIC-NEXT: move.b %d0, %d2
623633; ATOMIC-NEXT: sub.b %d1, %d2
624634; 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
626637; ATOMIC-NEXT: move.b %d0, %d1
627- ; ATOMIC-NEXT: bne .LBB12_1
638+ ; ATOMIC-NEXT: beq .LBB12_1
628639; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
629640; ATOMIC-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload
630641; ATOMIC-NEXT: adda.l #4, %sp
@@ -669,9 +680,10 @@ define i16 @atomicrmw_sub_i16_arid(ptr align 2 %self) {
669680; ATOMIC-NEXT: move.w %d0, %d2
670681; ATOMIC-NEXT: sub.w %d1, %d2
671682; 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
673685; ATOMIC-NEXT: move.w %d0, %d1
674- ; ATOMIC-NEXT: bne .LBB13_1
686+ ; ATOMIC-NEXT: beq .LBB13_1
675687; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
676688; ATOMIC-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload
677689; ATOMIC-NEXT: adda.l #4, %sp
@@ -716,9 +728,10 @@ define i32 @atomicrmw_sub_i32_arid(ptr align 2 %self) {
716728; ATOMIC-NEXT: move.l %d0, %d2
717729; ATOMIC-NEXT: sub.l %d1, %d2
718730; 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
720733; ATOMIC-NEXT: move.l %d0, %d1
721- ; ATOMIC-NEXT: bne .LBB14_1
734+ ; ATOMIC-NEXT: beq .LBB14_1
722735; ATOMIC-NEXT: ; %bb.2: ; %atomicrmw.end
723736; ATOMIC-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload
724737; ATOMIC-NEXT: adda.l #4, %sp
0 commit comments