@@ -113,10 +113,12 @@ define i32 @atomicrmw_udec_wrap_i32(ptr %ptr, i32 %val) {
113113; CHECK-NEXT: .LBB6_1: // %atomicrmw.start
114114; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
115115; CHECK-NEXT: ldaxr w8, [x0]
116+ ; CHECK-NEXT: subs w9, w8, #1
117+ ; CHECK-NEXT: cset w10, lo
116118; CHECK-NEXT: cmp w8, w1
117- ; CHECK-NEXT: sub w9, w8, #1
118- ; CHECK-NEXT: ccmp w8 , #0, #4, ls
119- ; CHECK-NEXT: csel w9, w1, w9, eq
119+ ; CHECK-NEXT: csinc w10, w10, wzr, ls
120+ ; CHECK-NEXT: cmp w10 , #0
121+ ; CHECK-NEXT: csel w9, w1, w9, ne
120122; CHECK-NEXT: stlxr w10, w9, [x0]
121123; CHECK-NEXT: cbnz w10, .LBB6_1
122124; CHECK-NEXT: // %bb.2: // %atomicrmw.end
@@ -133,10 +135,12 @@ define i64 @atomicrmw_udec_wrap_i64(ptr %ptr, i64 %val) {
133135; CHECK-NEXT: .LBB7_1: // %atomicrmw.start
134136; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
135137; CHECK-NEXT: ldaxr x0, [x8]
138+ ; CHECK-NEXT: subs x9, x0, #1
139+ ; CHECK-NEXT: cset w10, lo
136140; CHECK-NEXT: cmp x0, x1
137- ; CHECK-NEXT: sub x9, x0, #1
138- ; CHECK-NEXT: ccmp x0 , #0, #4, ls
139- ; CHECK-NEXT: csel x9, x1, x9, eq
141+ ; CHECK-NEXT: csinc w10, w10, wzr, ls
142+ ; CHECK-NEXT: cmp w10 , #0
143+ ; CHECK-NEXT: csel x9, x1, x9, ne
140144; CHECK-NEXT: stlxr w10, x9, [x8]
141145; CHECK-NEXT: cbnz w10, .LBB7_1
142146; CHECK-NEXT: // %bb.2: // %atomicrmw.end
0 commit comments