[llvm] ce5ef7d - [VE] Name instructions in test (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 23 03:02:40 PST 2022
Author: Nikita Popov
Date: 2022-12-23T11:43:01+01:00
New Revision: ce5ef7d1d5dc632a1ff35110821a44978e004e5f
URL: https://github.com/llvm/llvm-project/commit/ce5ef7d1d5dc632a1ff35110821a44978e004e5f
DIFF: https://github.com/llvm/llvm-project/commit/ce5ef7d1d5dc632a1ff35110821a44978e004e5f.diff
LOG: [VE] Name instructions in test (NFC)
Added:
Modified:
llvm/test/CodeGen/VE/Scalar/atomic_cmp_swap.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/VE/Scalar/atomic_cmp_swap.ll b/llvm/test/CodeGen/VE/Scalar/atomic_cmp_swap.ll
index 17d2e49ef71e1..db000e1dcce08 100644
--- a/llvm/test/CodeGen/VE/Scalar/atomic_cmp_swap.ll
+++ b/llvm/test/CodeGen/VE/Scalar/atomic_cmp_swap.ll
@@ -78,9 +78,9 @@
@gv_u128 = global %"struct.std::__1::atomic.45" zeroinitializer, align 16
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i1 @_Z26atomic_cmp_swap_relaxed_i1RNSt3__16atomicIbEERbb(%"struct.std::__1::atomic"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i1 zeroext %2) {
+define zeroext i1 @_Z26atomic_cmp_swap_relaxed_i1RNSt3__16atomicIbEERbb(%"struct.std::__1::atomic"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i1 zeroext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_relaxed_i1RNSt3__16atomicIbEERbb:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -97,33 +97,34 @@ define zeroext i1 @_Z26atomic_cmp_swap_relaxed_i1RNSt3__16atomicIbEERbb(%"struct
; CHECK-NEXT: or %s3, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: breq.w %s2, %s5, .LBB0_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB0_2:
+; CHECK-NEXT: .LBB0_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = zext i1 %2 to i8
- %5 = getelementptr inbounds %"struct.std::__1::atomic", %"struct.std::__1::atomic"* %0, i64 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i8, i8* %1, align 1
- %7 = cmpxchg weak i8* %5, i8 %6, i8 %4 monotonic monotonic
- %8 = extractvalue { i8, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %3
- %10 = extractvalue { i8, i1 } %7, 0
- store i8 %10, i8* %1, align 1
- br label %11
-
-11: ; preds = %3, %9
- ret i1 %8
+bb:
+ %i = zext i1 %arg2 to i8
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic", %"struct.std::__1::atomic"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i8, i8* %arg1, align 1
+ %i5 = cmpxchg weak i8* %i3, i8 %i4, i8 %i monotonic monotonic, align 1
+ %i6 = extractvalue { i8, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i8, i1 } %i5, 0
+ store i8 %i8, i8* %arg1, align 1
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ ret i1 %i6
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i8 @_Z26atomic_cmp_swap_relaxed_i8RNSt3__16atomicIcEERcc(%"struct.std::__1::atomic.0"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i8 signext %2) {
+define signext i8 @_Z26atomic_cmp_swap_relaxed_i8RNSt3__16atomicIcEERcc(%"struct.std::__1::atomic.0"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i8 signext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_relaxed_i8RNSt3__16atomicIcEERcc:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -141,33 +142,34 @@ define signext i8 @_Z26atomic_cmp_swap_relaxed_i8RNSt3__16atomicIcEERcc(%"struct
; CHECK-NEXT: or %s3, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: breq.w %s2, %s5, .LBB1_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB1_2:
+; CHECK-NEXT: .LBB1_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i8, i8* %1, align 1
- %6 = cmpxchg weak i8* %4, i8 %5, i8 %2 monotonic monotonic
- %7 = extractvalue { i8, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i8, i1 } %6, 0
- store i8 %9, i8* %1, align 1
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i8
- ret i8 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i8, i8* %arg1, align 1
+ %i4 = cmpxchg weak i8* %i, i8 %i3, i8 %arg2 monotonic monotonic, align 1
+ %i5 = extractvalue { i8, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i8, i1 } %i4, 0
+ store i8 %i7, i8* %arg1, align 1
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i8
+ ret i8 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i8 @_Z26atomic_cmp_swap_relaxed_u8RNSt3__16atomicIhEERhh(%"struct.std::__1::atomic.5"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i8 zeroext %2) {
+define zeroext i8 @_Z26atomic_cmp_swap_relaxed_u8RNSt3__16atomicIhEERhh(%"struct.std::__1::atomic.5"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i8 zeroext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_relaxed_u8RNSt3__16atomicIhEERhh:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -184,33 +186,34 @@ define zeroext i8 @_Z26atomic_cmp_swap_relaxed_u8RNSt3__16atomicIhEERhh(%"struct
; CHECK-NEXT: or %s3, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: breq.w %s2, %s5, .LBB2_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB2_2:
+; CHECK-NEXT: .LBB2_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i8, i8* %1, align 1
- %6 = cmpxchg weak i8* %4, i8 %5, i8 %2 monotonic monotonic
- %7 = extractvalue { i8, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i8, i1 } %6, 0
- store i8 %9, i8* %1, align 1
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i8
- ret i8 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i8, i8* %arg1, align 1
+ %i4 = cmpxchg weak i8* %i, i8 %i3, i8 %arg2 monotonic monotonic, align 1
+ %i5 = extractvalue { i8, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i8, i1 } %i4, 0
+ store i8 %i7, i8* %arg1, align 1
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i8
+ ret i8 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i16 @_Z27atomic_cmp_swap_relaxed_i16RNSt3__16atomicIsEERss(%"struct.std::__1::atomic.10"* nocapture nonnull align 2 dereferenceable(2) %0, i16* nocapture nonnull align 2 dereferenceable(2) %1, i16 signext %2) {
+define signext i16 @_Z27atomic_cmp_swap_relaxed_i16RNSt3__16atomicIsEERss(%"struct.std::__1::atomic.10"* nocapture nonnull align 2 dereferenceable(2) %arg, i16* nocapture nonnull align 2 dereferenceable(2) %arg1, i16 signext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_relaxed_i16RNSt3__16atomicIsEERss:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld2b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -228,33 +231,34 @@ define signext i16 @_Z27atomic_cmp_swap_relaxed_i16RNSt3__16atomicIsEERss(%"stru
; CHECK-NEXT: or %s3, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: breq.w %s2, %s5, .LBB3_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st2b %s0, (, %s1)
-; CHECK-NEXT: .LBB3_2:
+; CHECK-NEXT: .LBB3_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i16, i16* %1, align 2
- %6 = cmpxchg weak i16* %4, i16 %5, i16 %2 monotonic monotonic
- %7 = extractvalue { i16, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i16, i1 } %6, 0
- store i16 %9, i16* %1, align 2
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i16
- ret i16 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i16, i16* %arg1, align 2
+ %i4 = cmpxchg weak i16* %i, i16 %i3, i16 %arg2 monotonic monotonic, align 2
+ %i5 = extractvalue { i16, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i16, i1 } %i4, 0
+ store i16 %i7, i16* %arg1, align 2
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i16
+ ret i16 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i16 @_Z27atomic_cmp_swap_relaxed_u16RNSt3__16atomicItEERtt(%"struct.std::__1::atomic.15"* nocapture nonnull align 2 dereferenceable(2) %0, i16* nocapture nonnull align 2 dereferenceable(2) %1, i16 zeroext %2) {
+define zeroext i16 @_Z27atomic_cmp_swap_relaxed_u16RNSt3__16atomicItEERtt(%"struct.std::__1::atomic.15"* nocapture nonnull align 2 dereferenceable(2) %arg, i16* nocapture nonnull align 2 dereferenceable(2) %arg1, i16 zeroext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_relaxed_u16RNSt3__16atomicItEERtt:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld2b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -271,163 +275,168 @@ define zeroext i16 @_Z27atomic_cmp_swap_relaxed_u16RNSt3__16atomicItEERtt(%"stru
; CHECK-NEXT: or %s3, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: breq.w %s2, %s5, .LBB4_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st2b %s0, (, %s1)
-; CHECK-NEXT: .LBB4_2:
+; CHECK-NEXT: .LBB4_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i16, i16* %1, align 2
- %6 = cmpxchg weak i16* %4, i16 %5, i16 %2 monotonic monotonic
- %7 = extractvalue { i16, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i16, i1 } %6, 0
- store i16 %9, i16* %1, align 2
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i16
- ret i16 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i16, i16* %arg1, align 2
+ %i4 = cmpxchg weak i16* %i, i16 %i3, i16 %arg2 monotonic monotonic, align 2
+ %i5 = extractvalue { i16, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i16, i1 } %i4, 0
+ store i16 %i7, i16* %arg1, align 2
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i16
+ ret i16 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i32 @_Z27atomic_cmp_swap_relaxed_i32RNSt3__16atomicIiEERii(%"struct.std::__1::atomic.20"* nocapture nonnull align 4 dereferenceable(4) %0, i32* nocapture nonnull align 4 dereferenceable(4) %1, i32 signext %2) {
+define signext i32 @_Z27atomic_cmp_swap_relaxed_i32RNSt3__16atomicIiEERii(%"struct.std::__1::atomic.20"* nocapture nonnull align 4 dereferenceable(4) %arg, i32* nocapture nonnull align 4 dereferenceable(4) %arg1, i32 signext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_relaxed_i32RNSt3__16atomicIiEERii:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s1)
; CHECK-NEXT: cas.w %s2, (%s0), %s3
; CHECK-NEXT: cmps.w.sx %s4, %s2, %s3
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s0, (63)0, %s4
; CHECK-NEXT: breq.w %s2, %s3, .LBB5_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: stl %s2, (, %s1)
-; CHECK-NEXT: .LBB5_2:
+; CHECK-NEXT: .LBB5_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i32, i32* %1, align 4
- %6 = cmpxchg weak i32* %4, i32 %5, i32 %2 monotonic monotonic
- %7 = extractvalue { i32, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i32, i1 } %6, 0
- store i32 %9, i32* %1, align 4
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i32
- ret i32 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i32, i32* %arg1, align 4
+ %i4 = cmpxchg weak i32* %i, i32 %i3, i32 %arg2 monotonic monotonic, align 4
+ %i5 = extractvalue { i32, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i32, i1 } %i4, 0
+ store i32 %i7, i32* %arg1, align 4
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i32
+ ret i32 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i32 @_Z27atomic_cmp_swap_relaxed_u32RNSt3__16atomicIjEERjj(%"struct.std::__1::atomic.25"* nocapture nonnull align 4 dereferenceable(4) %0, i32* nocapture nonnull align 4 dereferenceable(4) %1, i32 zeroext %2) {
+define zeroext i32 @_Z27atomic_cmp_swap_relaxed_u32RNSt3__16atomicIjEERjj(%"struct.std::__1::atomic.25"* nocapture nonnull align 4 dereferenceable(4) %arg, i32* nocapture nonnull align 4 dereferenceable(4) %arg1, i32 zeroext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_relaxed_u32RNSt3__16atomicIjEERjj:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s1)
; CHECK-NEXT: cas.w %s2, (%s0), %s3
; CHECK-NEXT: cmps.w.sx %s4, %s2, %s3
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s0, (63)0, %s4
; CHECK-NEXT: breq.w %s2, %s3, .LBB6_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: stl %s2, (, %s1)
-; CHECK-NEXT: .LBB6_2:
+; CHECK-NEXT: .LBB6_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i32, i32* %1, align 4
- %6 = cmpxchg weak i32* %4, i32 %5, i32 %2 monotonic monotonic
- %7 = extractvalue { i32, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i32, i1 } %6, 0
- store i32 %9, i32* %1, align 4
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i32
- ret i32 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i32, i32* %arg1, align 4
+ %i4 = cmpxchg weak i32* %i, i32 %i3, i32 %arg2 monotonic monotonic, align 4
+ %i5 = extractvalue { i32, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i32, i1 } %i4, 0
+ store i32 %i7, i32* %arg1, align 4
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i32
+ ret i32 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define i64 @_Z27atomic_cmp_swap_relaxed_i64RNSt3__16atomicIlEERll(%"struct.std::__1::atomic.30"* nocapture nonnull align 8 dereferenceable(8) %0, i64* nocapture nonnull align 8 dereferenceable(8) %1, i64 %2) {
+define i64 @_Z27atomic_cmp_swap_relaxed_i64RNSt3__16atomicIlEERll(%"struct.std::__1::atomic.30"* nocapture nonnull align 8 dereferenceable(8) %arg, i64* nocapture nonnull align 8 dereferenceable(8) %arg1, i64 %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_relaxed_i64RNSt3__16atomicIlEERll:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld %s3, (, %s1)
; CHECK-NEXT: cas.l %s2, (%s0), %s3
; CHECK-NEXT: cmps.l %s4, %s2, %s3
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: cmov.l.eq %s0, (63)0, %s4
; CHECK-NEXT: breq.l %s2, %s3, .LBB7_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: st %s2, (, %s1)
-; CHECK-NEXT: .LBB7_2:
+; CHECK-NEXT: .LBB7_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i64, i64* %1, align 8
- %6 = cmpxchg weak i64* %4, i64 %5, i64 %2 monotonic monotonic
- %7 = extractvalue { i64, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i64, i1 } %6, 0
- store i64 %9, i64* %1, align 8
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i64
- ret i64 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i64, i64* %arg1, align 8
+ %i4 = cmpxchg weak i64* %i, i64 %i3, i64 %arg2 monotonic monotonic, align 8
+ %i5 = extractvalue { i64, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i64, i1 } %i4, 0
+ store i64 %i7, i64* %arg1, align 8
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i64
+ ret i64 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define i64 @_Z27atomic_cmp_swap_relaxed_u64RNSt3__16atomicImEERmm(%"struct.std::__1::atomic.35"* nocapture nonnull align 8 dereferenceable(8) %0, i64* nocapture nonnull align 8 dereferenceable(8) %1, i64 %2) {
+define i64 @_Z27atomic_cmp_swap_relaxed_u64RNSt3__16atomicImEERmm(%"struct.std::__1::atomic.35"* nocapture nonnull align 8 dereferenceable(8) %arg, i64* nocapture nonnull align 8 dereferenceable(8) %arg1, i64 %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_relaxed_u64RNSt3__16atomicImEERmm:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld %s3, (, %s1)
; CHECK-NEXT: cas.l %s2, (%s0), %s3
; CHECK-NEXT: cmps.l %s4, %s2, %s3
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: cmov.l.eq %s0, (63)0, %s4
; CHECK-NEXT: breq.l %s2, %s3, .LBB8_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: st %s2, (, %s1)
-; CHECK-NEXT: .LBB8_2:
+; CHECK-NEXT: .LBB8_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i64, i64* %1, align 8
- %6 = cmpxchg weak i64* %4, i64 %5, i64 %2 monotonic monotonic
- %7 = extractvalue { i64, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i64, i1 } %6, 0
- store i64 %9, i64* %1, align 8
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i64
- ret i64 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i64, i64* %arg1, align 8
+ %i4 = cmpxchg weak i64* %i, i64 %i3, i64 %arg2 monotonic monotonic, align 8
+ %i5 = extractvalue { i64, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i64, i1 } %i4, 0
+ store i64 %i7, i64* %arg1, align 8
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i64
+ ret i64 %i9
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z28atomic_cmp_swap_relaxed_i128RNSt3__16atomicInEERnn(%"struct.std::__1::atomic.40"* nonnull align 16 dereferenceable(16) %0, i128* nonnull align 16 dereferenceable(16) %1, i128 %2) {
+define i128 @_Z28atomic_cmp_swap_relaxed_i128RNSt3__16atomicInEERnn(%"struct.std::__1::atomic.40"* nonnull align 16 dereferenceable(16) %arg, i128* nonnull align 16 dereferenceable(16) %arg1, i128 %arg2) {
; CHECK-LABEL: _Z28atomic_cmp_swap_relaxed_i128RNSt3__16atomicInEERnn:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -256(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB9_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -436,7 +445,7 @@ define i128 @_Z28atomic_cmp_swap_relaxed_i128RNSt3__16atomicInEERnn(%"struct.std
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB9_2:
+; CHECK-NEXT: .LBB9_2: # %bb
; CHECK-NEXT: or %s6, 0, %s1
; CHECK-NEXT: or %s1, 0, %s0
; CHECK-NEXT: st %s3, 248(, %s11)
@@ -455,28 +464,29 @@ define i128 @_Z28atomic_cmp_swap_relaxed_i128RNSt3__16atomicInEERnn(%"struct.std
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %4 = alloca i128, align 16
- %5 = bitcast i128* %4 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %5)
- store i128 %2, i128* %4, align 16, !tbaa !2
- %6 = bitcast %"struct.std::__1::atomic.40"* %0 to i8*
- %7 = bitcast i128* %1 to i8*
- %8 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %6, i8* nonnull %7, i8* nonnull %5, i32 signext 0, i32 signext 0)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %5)
- %9 = zext i1 %8 to i128
- ret i128 %9
+bb:
+ %i = alloca i128, align 16
+ %i3 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i3)
+ store i128 %arg2, i128* %i, align 16, !tbaa !0
+ %i4 = bitcast %"struct.std::__1::atomic.40"* %arg to i8*
+ %i5 = bitcast i128* %arg1 to i8*
+ %i6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %i4, i8* nonnull %i5, i8* nonnull %i3, i32 signext 0, i32 signext 0)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i3)
+ %i7 = zext i1 %i6 to i128
+ ret i128 %i7
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z28atomic_cmp_swap_relaxed_u128RNSt3__16atomicIoEERoo(%"struct.std::__1::atomic.45"* nonnull align 16 dereferenceable(16) %0, i128* nonnull align 16 dereferenceable(16) %1, i128 %2) {
+define i128 @_Z28atomic_cmp_swap_relaxed_u128RNSt3__16atomicIoEERoo(%"struct.std::__1::atomic.45"* nonnull align 16 dereferenceable(16) %arg, i128* nonnull align 16 dereferenceable(16) %arg1, i128 %arg2) {
; CHECK-LABEL: _Z28atomic_cmp_swap_relaxed_u128RNSt3__16atomicIoEERoo:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -256(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB10_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -485,7 +495,7 @@ define i128 @_Z28atomic_cmp_swap_relaxed_u128RNSt3__16atomicIoEERoo(%"struct.std
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB10_2:
+; CHECK-NEXT: .LBB10_2: # %bb
; CHECK-NEXT: or %s6, 0, %s1
; CHECK-NEXT: or %s1, 0, %s0
; CHECK-NEXT: st %s3, 248(, %s11)
@@ -504,22 +514,23 @@ define i128 @_Z28atomic_cmp_swap_relaxed_u128RNSt3__16atomicIoEERoo(%"struct.std
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %4 = alloca i128, align 16
- %5 = bitcast i128* %4 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %5)
- store i128 %2, i128* %4, align 16, !tbaa !2
- %6 = bitcast %"struct.std::__1::atomic.45"* %0 to i8*
- %7 = bitcast i128* %1 to i8*
- %8 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %6, i8* nonnull %7, i8* nonnull %5, i32 signext 0, i32 signext 0)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %5)
- %9 = zext i1 %8 to i128
- ret i128 %9
+bb:
+ %i = alloca i128, align 16
+ %i3 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i3)
+ store i128 %arg2, i128* %i, align 16, !tbaa !0
+ %i4 = bitcast %"struct.std::__1::atomic.45"* %arg to i8*
+ %i5 = bitcast i128* %arg1 to i8*
+ %i6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %i4, i8* nonnull %i5, i8* nonnull %i3, i32 signext 0, i32 signext 0)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i3)
+ %i7 = zext i1 %i6 to i128
+ ret i128 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i1 @_Z26atomic_cmp_swap_acquire_i1RNSt3__16atomicIbEERbb(%"struct.std::__1::atomic"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i1 zeroext %2) {
+define zeroext i1 @_Z26atomic_cmp_swap_acquire_i1RNSt3__16atomicIbEERbb(%"struct.std::__1::atomic"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i1 zeroext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_acquire_i1RNSt3__16atomicIbEERbb:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -537,33 +548,34 @@ define zeroext i1 @_Z26atomic_cmp_swap_acquire_i1RNSt3__16atomicIbEERbb(%"struct
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.w %s2, %s5, .LBB11_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB11_2:
+; CHECK-NEXT: .LBB11_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = zext i1 %2 to i8
- %5 = getelementptr inbounds %"struct.std::__1::atomic", %"struct.std::__1::atomic"* %0, i64 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i8, i8* %1, align 1
- %7 = cmpxchg weak i8* %5, i8 %6, i8 %4 acquire acquire
- %8 = extractvalue { i8, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %3
- %10 = extractvalue { i8, i1 } %7, 0
- store i8 %10, i8* %1, align 1
- br label %11
-
-11: ; preds = %3, %9
- ret i1 %8
+bb:
+ %i = zext i1 %arg2 to i8
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic", %"struct.std::__1::atomic"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i8, i8* %arg1, align 1
+ %i5 = cmpxchg weak i8* %i3, i8 %i4, i8 %i acquire acquire, align 1
+ %i6 = extractvalue { i8, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i8, i1 } %i5, 0
+ store i8 %i8, i8* %arg1, align 1
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ ret i1 %i6
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i8 @_Z26atomic_cmp_swap_acquire_i8RNSt3__16atomicIcEERcc(%"struct.std::__1::atomic.0"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i8 signext %2) {
+define signext i8 @_Z26atomic_cmp_swap_acquire_i8RNSt3__16atomicIcEERcc(%"struct.std::__1::atomic.0"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i8 signext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_acquire_i8RNSt3__16atomicIcEERcc:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -582,33 +594,34 @@ define signext i8 @_Z26atomic_cmp_swap_acquire_i8RNSt3__16atomicIcEERcc(%"struct
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.w %s2, %s5, .LBB12_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB12_2:
+; CHECK-NEXT: .LBB12_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i8, i8* %1, align 1
- %6 = cmpxchg weak i8* %4, i8 %5, i8 %2 acquire acquire
- %7 = extractvalue { i8, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i8, i1 } %6, 0
- store i8 %9, i8* %1, align 1
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i8
- ret i8 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i8, i8* %arg1, align 1
+ %i4 = cmpxchg weak i8* %i, i8 %i3, i8 %arg2 acquire acquire, align 1
+ %i5 = extractvalue { i8, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i8, i1 } %i4, 0
+ store i8 %i7, i8* %arg1, align 1
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i8
+ ret i8 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i8 @_Z26atomic_cmp_swap_acquire_u8RNSt3__16atomicIhEERhh(%"struct.std::__1::atomic.5"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i8 zeroext %2) {
+define zeroext i8 @_Z26atomic_cmp_swap_acquire_u8RNSt3__16atomicIhEERhh(%"struct.std::__1::atomic.5"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i8 zeroext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_acquire_u8RNSt3__16atomicIhEERhh:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -626,33 +639,34 @@ define zeroext i8 @_Z26atomic_cmp_swap_acquire_u8RNSt3__16atomicIhEERhh(%"struct
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.w %s2, %s5, .LBB13_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB13_2:
+; CHECK-NEXT: .LBB13_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i8, i8* %1, align 1
- %6 = cmpxchg weak i8* %4, i8 %5, i8 %2 acquire acquire
- %7 = extractvalue { i8, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i8, i1 } %6, 0
- store i8 %9, i8* %1, align 1
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i8
- ret i8 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i8, i8* %arg1, align 1
+ %i4 = cmpxchg weak i8* %i, i8 %i3, i8 %arg2 acquire acquire, align 1
+ %i5 = extractvalue { i8, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i8, i1 } %i4, 0
+ store i8 %i7, i8* %arg1, align 1
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i8
+ ret i8 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i16 @_Z27atomic_cmp_swap_acquire_i16RNSt3__16atomicIsEERss(%"struct.std::__1::atomic.10"* nocapture nonnull align 2 dereferenceable(2) %0, i16* nocapture nonnull align 2 dereferenceable(2) %1, i16 signext %2) {
+define signext i16 @_Z27atomic_cmp_swap_acquire_i16RNSt3__16atomicIsEERss(%"struct.std::__1::atomic.10"* nocapture nonnull align 2 dereferenceable(2) %arg, i16* nocapture nonnull align 2 dereferenceable(2) %arg1, i16 signext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_acquire_i16RNSt3__16atomicIsEERss:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld2b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -671,33 +685,34 @@ define signext i16 @_Z27atomic_cmp_swap_acquire_i16RNSt3__16atomicIsEERss(%"stru
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.w %s2, %s5, .LBB14_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st2b %s0, (, %s1)
-; CHECK-NEXT: .LBB14_2:
+; CHECK-NEXT: .LBB14_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i16, i16* %1, align 2
- %6 = cmpxchg weak i16* %4, i16 %5, i16 %2 acquire acquire
- %7 = extractvalue { i16, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i16, i1 } %6, 0
- store i16 %9, i16* %1, align 2
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i16
- ret i16 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i16, i16* %arg1, align 2
+ %i4 = cmpxchg weak i16* %i, i16 %i3, i16 %arg2 acquire acquire, align 2
+ %i5 = extractvalue { i16, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i16, i1 } %i4, 0
+ store i16 %i7, i16* %arg1, align 2
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i16
+ ret i16 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i16 @_Z27atomic_cmp_swap_acquire_u16RNSt3__16atomicItEERtt(%"struct.std::__1::atomic.15"* nocapture nonnull align 2 dereferenceable(2) %0, i16* nocapture nonnull align 2 dereferenceable(2) %1, i16 zeroext %2) {
+define zeroext i16 @_Z27atomic_cmp_swap_acquire_u16RNSt3__16atomicItEERtt(%"struct.std::__1::atomic.15"* nocapture nonnull align 2 dereferenceable(2) %arg, i16* nocapture nonnull align 2 dereferenceable(2) %arg1, i16 zeroext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_acquire_u16RNSt3__16atomicItEERtt:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld2b.zx %s3, (, %s1)
; CHECK-NEXT: and %s4, -4, %s0
; CHECK-NEXT: and %s0, 3, %s0
@@ -715,33 +730,34 @@ define zeroext i16 @_Z27atomic_cmp_swap_acquire_u16RNSt3__16atomicItEERtt(%"stru
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.w %s2, %s5, .LBB15_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st2b %s0, (, %s1)
-; CHECK-NEXT: .LBB15_2:
+; CHECK-NEXT: .LBB15_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i16, i16* %1, align 2
- %6 = cmpxchg weak i16* %4, i16 %5, i16 %2 acquire acquire
- %7 = extractvalue { i16, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i16, i1 } %6, 0
- store i16 %9, i16* %1, align 2
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i16
- ret i16 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i16, i16* %arg1, align 2
+ %i4 = cmpxchg weak i16* %i, i16 %i3, i16 %arg2 acquire acquire, align 2
+ %i5 = extractvalue { i16, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i16, i1 } %i4, 0
+ store i16 %i7, i16* %arg1, align 2
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i16
+ ret i16 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i32 @_Z27atomic_cmp_swap_acquire_i32RNSt3__16atomicIiEERii(%"struct.std::__1::atomic.20"* nocapture nonnull align 4 dereferenceable(4) %0, i32* nocapture nonnull align 4 dereferenceable(4) %1, i32 signext %2) {
+define signext i32 @_Z27atomic_cmp_swap_acquire_i32RNSt3__16atomicIiEERii(%"struct.std::__1::atomic.20"* nocapture nonnull align 4 dereferenceable(4) %arg, i32* nocapture nonnull align 4 dereferenceable(4) %arg1, i32 signext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_acquire_i32RNSt3__16atomicIiEERii:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s1)
; CHECK-NEXT: cas.w %s2, (%s0), %s3
; CHECK-NEXT: cmps.w.sx %s4, %s2, %s3
@@ -749,31 +765,32 @@ define signext i32 @_Z27atomic_cmp_swap_acquire_i32RNSt3__16atomicIiEERii(%"stru
; CHECK-NEXT: cmov.w.eq %s0, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.w %s2, %s3, .LBB16_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: stl %s2, (, %s1)
-; CHECK-NEXT: .LBB16_2:
+; CHECK-NEXT: .LBB16_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i32, i32* %1, align 4
- %6 = cmpxchg weak i32* %4, i32 %5, i32 %2 acquire acquire
- %7 = extractvalue { i32, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i32, i1 } %6, 0
- store i32 %9, i32* %1, align 4
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i32
- ret i32 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i32, i32* %arg1, align 4
+ %i4 = cmpxchg weak i32* %i, i32 %i3, i32 %arg2 acquire acquire, align 4
+ %i5 = extractvalue { i32, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i32, i1 } %i4, 0
+ store i32 %i7, i32* %arg1, align 4
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i32
+ ret i32 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i32 @_Z27atomic_cmp_swap_acquire_u32RNSt3__16atomicIjEERjj(%"struct.std::__1::atomic.25"* nocapture nonnull align 4 dereferenceable(4) %0, i32* nocapture nonnull align 4 dereferenceable(4) %1, i32 zeroext %2) {
+define zeroext i32 @_Z27atomic_cmp_swap_acquire_u32RNSt3__16atomicIjEERjj(%"struct.std::__1::atomic.25"* nocapture nonnull align 4 dereferenceable(4) %arg, i32* nocapture nonnull align 4 dereferenceable(4) %arg1, i32 zeroext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_acquire_u32RNSt3__16atomicIjEERjj:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s1)
; CHECK-NEXT: cas.w %s2, (%s0), %s3
; CHECK-NEXT: cmps.w.sx %s4, %s2, %s3
@@ -781,31 +798,32 @@ define zeroext i32 @_Z27atomic_cmp_swap_acquire_u32RNSt3__16atomicIjEERjj(%"stru
; CHECK-NEXT: cmov.w.eq %s0, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.w %s2, %s3, .LBB17_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: stl %s2, (, %s1)
-; CHECK-NEXT: .LBB17_2:
+; CHECK-NEXT: .LBB17_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i32, i32* %1, align 4
- %6 = cmpxchg weak i32* %4, i32 %5, i32 %2 acquire acquire
- %7 = extractvalue { i32, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i32, i1 } %6, 0
- store i32 %9, i32* %1, align 4
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i32
- ret i32 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i32, i32* %arg1, align 4
+ %i4 = cmpxchg weak i32* %i, i32 %i3, i32 %arg2 acquire acquire, align 4
+ %i5 = extractvalue { i32, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i32, i1 } %i4, 0
+ store i32 %i7, i32* %arg1, align 4
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i32
+ ret i32 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define i64 @_Z27atomic_cmp_swap_acquire_i64RNSt3__16atomicIlEERll(%"struct.std::__1::atomic.30"* nocapture nonnull align 8 dereferenceable(8) %0, i64* nocapture nonnull align 8 dereferenceable(8) %1, i64 %2) {
+define i64 @_Z27atomic_cmp_swap_acquire_i64RNSt3__16atomicIlEERll(%"struct.std::__1::atomic.30"* nocapture nonnull align 8 dereferenceable(8) %arg, i64* nocapture nonnull align 8 dereferenceable(8) %arg1, i64 %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_acquire_i64RNSt3__16atomicIlEERll:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld %s3, (, %s1)
; CHECK-NEXT: cas.l %s2, (%s0), %s3
; CHECK-NEXT: cmps.l %s4, %s2, %s3
@@ -813,31 +831,32 @@ define i64 @_Z27atomic_cmp_swap_acquire_i64RNSt3__16atomicIlEERll(%"struct.std::
; CHECK-NEXT: cmov.l.eq %s0, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.l %s2, %s3, .LBB18_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: st %s2, (, %s1)
-; CHECK-NEXT: .LBB18_2:
+; CHECK-NEXT: .LBB18_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i64, i64* %1, align 8
- %6 = cmpxchg weak i64* %4, i64 %5, i64 %2 acquire acquire
- %7 = extractvalue { i64, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i64, i1 } %6, 0
- store i64 %9, i64* %1, align 8
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i64
- ret i64 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i64, i64* %arg1, align 8
+ %i4 = cmpxchg weak i64* %i, i64 %i3, i64 %arg2 acquire acquire, align 8
+ %i5 = extractvalue { i64, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i64, i1 } %i4, 0
+ store i64 %i7, i64* %arg1, align 8
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i64
+ ret i64 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define i64 @_Z27atomic_cmp_swap_acquire_u64RNSt3__16atomicImEERmm(%"struct.std::__1::atomic.35"* nocapture nonnull align 8 dereferenceable(8) %0, i64* nocapture nonnull align 8 dereferenceable(8) %1, i64 %2) {
+define i64 @_Z27atomic_cmp_swap_acquire_u64RNSt3__16atomicImEERmm(%"struct.std::__1::atomic.35"* nocapture nonnull align 8 dereferenceable(8) %arg, i64* nocapture nonnull align 8 dereferenceable(8) %arg1, i64 %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_acquire_u64RNSt3__16atomicImEERmm:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld %s3, (, %s1)
; CHECK-NEXT: cas.l %s2, (%s0), %s3
; CHECK-NEXT: cmps.l %s4, %s2, %s3
@@ -845,37 +864,38 @@ define i64 @_Z27atomic_cmp_swap_acquire_u64RNSt3__16atomicImEERmm(%"struct.std::
; CHECK-NEXT: cmov.l.eq %s0, (63)0, %s4
; CHECK-NEXT: fencem 2
; CHECK-NEXT: breq.l %s2, %s3, .LBB19_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: st %s2, (, %s1)
-; CHECK-NEXT: .LBB19_2:
+; CHECK-NEXT: .LBB19_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i64, i64* %1, align 8
- %6 = cmpxchg weak i64* %4, i64 %5, i64 %2 acquire acquire
- %7 = extractvalue { i64, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i64, i1 } %6, 0
- store i64 %9, i64* %1, align 8
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i64
- ret i64 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i64, i64* %arg1, align 8
+ %i4 = cmpxchg weak i64* %i, i64 %i3, i64 %arg2 acquire acquire, align 8
+ %i5 = extractvalue { i64, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i64, i1 } %i4, 0
+ store i64 %i7, i64* %arg1, align 8
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i64
+ ret i64 %i9
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z28atomic_cmp_swap_acquire_i128RNSt3__16atomicInEERnn(%"struct.std::__1::atomic.40"* nonnull align 16 dereferenceable(16) %0, i128* nonnull align 16 dereferenceable(16) %1, i128 %2) {
+define i128 @_Z28atomic_cmp_swap_acquire_i128RNSt3__16atomicInEERnn(%"struct.std::__1::atomic.40"* nonnull align 16 dereferenceable(16) %arg, i128* nonnull align 16 dereferenceable(16) %arg1, i128 %arg2) {
; CHECK-LABEL: _Z28atomic_cmp_swap_acquire_i128RNSt3__16atomicInEERnn:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -256(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB20_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -884,7 +904,7 @@ define i128 @_Z28atomic_cmp_swap_acquire_i128RNSt3__16atomicInEERnn(%"struct.std
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB20_2:
+; CHECK-NEXT: .LBB20_2: # %bb
; CHECK-NEXT: or %s6, 0, %s1
; CHECK-NEXT: or %s1, 0, %s0
; CHECK-NEXT: st %s3, 248(, %s11)
@@ -903,28 +923,29 @@ define i128 @_Z28atomic_cmp_swap_acquire_i128RNSt3__16atomicInEERnn(%"struct.std
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %4 = alloca i128, align 16
- %5 = bitcast i128* %4 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %5)
- store i128 %2, i128* %4, align 16, !tbaa !2
- %6 = bitcast %"struct.std::__1::atomic.40"* %0 to i8*
- %7 = bitcast i128* %1 to i8*
- %8 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %6, i8* nonnull %7, i8* nonnull %5, i32 signext 2, i32 signext 2)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %5)
- %9 = zext i1 %8 to i128
- ret i128 %9
+bb:
+ %i = alloca i128, align 16
+ %i3 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i3)
+ store i128 %arg2, i128* %i, align 16, !tbaa !0
+ %i4 = bitcast %"struct.std::__1::atomic.40"* %arg to i8*
+ %i5 = bitcast i128* %arg1 to i8*
+ %i6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %i4, i8* nonnull %i5, i8* nonnull %i3, i32 signext 2, i32 signext 2)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i3)
+ %i7 = zext i1 %i6 to i128
+ ret i128 %i7
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z28atomic_cmp_swap_acquire_u128RNSt3__16atomicIoEERoo(%"struct.std::__1::atomic.45"* nonnull align 16 dereferenceable(16) %0, i128* nonnull align 16 dereferenceable(16) %1, i128 %2) {
+define i128 @_Z28atomic_cmp_swap_acquire_u128RNSt3__16atomicIoEERoo(%"struct.std::__1::atomic.45"* nonnull align 16 dereferenceable(16) %arg, i128* nonnull align 16 dereferenceable(16) %arg1, i128 %arg2) {
; CHECK-LABEL: _Z28atomic_cmp_swap_acquire_u128RNSt3__16atomicIoEERoo:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -256(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB21_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -933,7 +954,7 @@ define i128 @_Z28atomic_cmp_swap_acquire_u128RNSt3__16atomicIoEERoo(%"struct.std
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB21_2:
+; CHECK-NEXT: .LBB21_2: # %bb
; CHECK-NEXT: or %s6, 0, %s1
; CHECK-NEXT: or %s1, 0, %s0
; CHECK-NEXT: st %s3, 248(, %s11)
@@ -952,22 +973,23 @@ define i128 @_Z28atomic_cmp_swap_acquire_u128RNSt3__16atomicIoEERoo(%"struct.std
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %4 = alloca i128, align 16
- %5 = bitcast i128* %4 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %5)
- store i128 %2, i128* %4, align 16, !tbaa !2
- %6 = bitcast %"struct.std::__1::atomic.45"* %0 to i8*
- %7 = bitcast i128* %1 to i8*
- %8 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %6, i8* nonnull %7, i8* nonnull %5, i32 signext 2, i32 signext 2)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %5)
- %9 = zext i1 %8 to i128
- ret i128 %9
+bb:
+ %i = alloca i128, align 16
+ %i3 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i3)
+ store i128 %arg2, i128* %i, align 16, !tbaa !0
+ %i4 = bitcast %"struct.std::__1::atomic.45"* %arg to i8*
+ %i5 = bitcast i128* %arg1 to i8*
+ %i6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %i4, i8* nonnull %i5, i8* nonnull %i3, i32 signext 2, i32 signext 2)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i3)
+ %i7 = zext i1 %i6 to i128
+ ret i128 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i1 @_Z26atomic_cmp_swap_seq_cst_i1RNSt3__16atomicIbEERbb(%"struct.std::__1::atomic"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i1 zeroext %2) {
+define zeroext i1 @_Z26atomic_cmp_swap_seq_cst_i1RNSt3__16atomicIbEERbb(%"struct.std::__1::atomic"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i1 zeroext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_seq_cst_i1RNSt3__16atomicIbEERbb:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: and %s4, -4, %s0
@@ -986,33 +1008,34 @@ define zeroext i1 @_Z26atomic_cmp_swap_seq_cst_i1RNSt3__16atomicIbEERbb(%"struct
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.w %s2, %s5, .LBB22_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB22_2:
+; CHECK-NEXT: .LBB22_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = zext i1 %2 to i8
- %5 = getelementptr inbounds %"struct.std::__1::atomic", %"struct.std::__1::atomic"* %0, i64 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i8, i8* %1, align 1
- %7 = cmpxchg weak i8* %5, i8 %6, i8 %4 seq_cst seq_cst
- %8 = extractvalue { i8, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %3
- %10 = extractvalue { i8, i1 } %7, 0
- store i8 %10, i8* %1, align 1
- br label %11
-
-11: ; preds = %3, %9
- ret i1 %8
+bb:
+ %i = zext i1 %arg2 to i8
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic", %"struct.std::__1::atomic"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i8, i8* %arg1, align 1
+ %i5 = cmpxchg weak i8* %i3, i8 %i4, i8 %i seq_cst seq_cst, align 1
+ %i6 = extractvalue { i8, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i8, i1 } %i5, 0
+ store i8 %i8, i8* %arg1, align 1
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ ret i1 %i6
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i8 @_Z26atomic_cmp_swap_seq_cst_i8RNSt3__16atomicIcEERcc(%"struct.std::__1::atomic.0"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i8 signext %2) {
+define signext i8 @_Z26atomic_cmp_swap_seq_cst_i8RNSt3__16atomicIcEERcc(%"struct.std::__1::atomic.0"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i8 signext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_seq_cst_i8RNSt3__16atomicIcEERcc:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: and %s4, -4, %s0
@@ -1032,33 +1055,34 @@ define signext i8 @_Z26atomic_cmp_swap_seq_cst_i8RNSt3__16atomicIcEERcc(%"struct
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.w %s2, %s5, .LBB23_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB23_2:
+; CHECK-NEXT: .LBB23_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i8, i8* %1, align 1
- %6 = cmpxchg weak i8* %4, i8 %5, i8 %2 seq_cst seq_cst
- %7 = extractvalue { i8, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i8, i1 } %6, 0
- store i8 %9, i8* %1, align 1
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i8
- ret i8 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i8, i8* %arg1, align 1
+ %i4 = cmpxchg weak i8* %i, i8 %i3, i8 %arg2 seq_cst seq_cst, align 1
+ %i5 = extractvalue { i8, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i8, i1 } %i4, 0
+ store i8 %i7, i8* %arg1, align 1
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i8
+ ret i8 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i8 @_Z26atomic_cmp_swap_seq_cst_u8RNSt3__16atomicIhEERhh(%"struct.std::__1::atomic.5"* nocapture nonnull align 1 dereferenceable(1) %0, i8* nocapture nonnull align 1 dereferenceable(1) %1, i8 zeroext %2) {
+define zeroext i8 @_Z26atomic_cmp_swap_seq_cst_u8RNSt3__16atomicIhEERhh(%"struct.std::__1::atomic.5"* nocapture nonnull align 1 dereferenceable(1) %arg, i8* nocapture nonnull align 1 dereferenceable(1) %arg1, i8 zeroext %arg2) {
; CHECK-LABEL: _Z26atomic_cmp_swap_seq_cst_u8RNSt3__16atomicIhEERhh:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld1b.zx %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: and %s4, -4, %s0
@@ -1077,33 +1101,34 @@ define zeroext i8 @_Z26atomic_cmp_swap_seq_cst_u8RNSt3__16atomicIhEERhh(%"struct
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.w %s2, %s5, .LBB24_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st1b %s0, (, %s1)
-; CHECK-NEXT: .LBB24_2:
+; CHECK-NEXT: .LBB24_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i8, i8* %1, align 1
- %6 = cmpxchg weak i8* %4, i8 %5, i8 %2 seq_cst seq_cst
- %7 = extractvalue { i8, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i8, i1 } %6, 0
- store i8 %9, i8* %1, align 1
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i8
- ret i8 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i8, i8* %arg1, align 1
+ %i4 = cmpxchg weak i8* %i, i8 %i3, i8 %arg2 seq_cst seq_cst, align 1
+ %i5 = extractvalue { i8, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i8, i1 } %i4, 0
+ store i8 %i7, i8* %arg1, align 1
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i8
+ ret i8 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i16 @_Z27atomic_cmp_swap_seq_cst_i16RNSt3__16atomicIsEERss(%"struct.std::__1::atomic.10"* nocapture nonnull align 2 dereferenceable(2) %0, i16* nocapture nonnull align 2 dereferenceable(2) %1, i16 signext %2) {
+define signext i16 @_Z27atomic_cmp_swap_seq_cst_i16RNSt3__16atomicIsEERss(%"struct.std::__1::atomic.10"* nocapture nonnull align 2 dereferenceable(2) %arg, i16* nocapture nonnull align 2 dereferenceable(2) %arg1, i16 signext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_seq_cst_i16RNSt3__16atomicIsEERss:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld2b.zx %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: and %s4, -4, %s0
@@ -1123,33 +1148,34 @@ define signext i16 @_Z27atomic_cmp_swap_seq_cst_i16RNSt3__16atomicIsEERss(%"stru
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.w %s2, %s5, .LBB25_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st2b %s0, (, %s1)
-; CHECK-NEXT: .LBB25_2:
+; CHECK-NEXT: .LBB25_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i16, i16* %1, align 2
- %6 = cmpxchg weak i16* %4, i16 %5, i16 %2 seq_cst seq_cst
- %7 = extractvalue { i16, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i16, i1 } %6, 0
- store i16 %9, i16* %1, align 2
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i16
- ret i16 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i16, i16* %arg1, align 2
+ %i4 = cmpxchg weak i16* %i, i16 %i3, i16 %arg2 seq_cst seq_cst, align 2
+ %i5 = extractvalue { i16, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i16, i1 } %i4, 0
+ store i16 %i7, i16* %arg1, align 2
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i16
+ ret i16 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i16 @_Z27atomic_cmp_swap_seq_cst_u16RNSt3__16atomicItEERtt(%"struct.std::__1::atomic.15"* nocapture nonnull align 2 dereferenceable(2) %0, i16* nocapture nonnull align 2 dereferenceable(2) %1, i16 zeroext %2) {
+define zeroext i16 @_Z27atomic_cmp_swap_seq_cst_u16RNSt3__16atomicItEERtt(%"struct.std::__1::atomic.15"* nocapture nonnull align 2 dereferenceable(2) %arg, i16* nocapture nonnull align 2 dereferenceable(2) %arg1, i16 zeroext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_seq_cst_u16RNSt3__16atomicItEERtt:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld2b.zx %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: and %s4, -4, %s0
@@ -1168,33 +1194,34 @@ define zeroext i16 @_Z27atomic_cmp_swap_seq_cst_u16RNSt3__16atomicItEERtt(%"stru
; CHECK-NEXT: cmov.w.eq %s3, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.w %s2, %s5, .LBB26_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: srl %s0, %s2, %s0
; CHECK-NEXT: st2b %s0, (, %s1)
-; CHECK-NEXT: .LBB26_2:
+; CHECK-NEXT: .LBB26_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s3, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i16, i16* %1, align 2
- %6 = cmpxchg weak i16* %4, i16 %5, i16 %2 seq_cst seq_cst
- %7 = extractvalue { i16, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i16, i1 } %6, 0
- store i16 %9, i16* %1, align 2
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i16
- ret i16 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i16, i16* %arg1, align 2
+ %i4 = cmpxchg weak i16* %i, i16 %i3, i16 %arg2 seq_cst seq_cst, align 2
+ %i5 = extractvalue { i16, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i16, i1 } %i4, 0
+ store i16 %i7, i16* %arg1, align 2
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i16
+ ret i16 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i32 @_Z27atomic_cmp_swap_seq_cst_i32RNSt3__16atomicIiEERii(%"struct.std::__1::atomic.20"* nocapture nonnull align 4 dereferenceable(4) %0, i32* nocapture nonnull align 4 dereferenceable(4) %1, i32 signext %2) {
+define signext i32 @_Z27atomic_cmp_swap_seq_cst_i32RNSt3__16atomicIiEERii(%"struct.std::__1::atomic.20"* nocapture nonnull align 4 dereferenceable(4) %arg, i32* nocapture nonnull align 4 dereferenceable(4) %arg1, i32 signext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_seq_cst_i32RNSt3__16atomicIiEERii:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: cas.w %s2, (%s0), %s3
@@ -1203,31 +1230,32 @@ define signext i32 @_Z27atomic_cmp_swap_seq_cst_i32RNSt3__16atomicIiEERii(%"stru
; CHECK-NEXT: cmov.w.eq %s0, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.w %s2, %s3, .LBB27_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: stl %s2, (, %s1)
-; CHECK-NEXT: .LBB27_2:
+; CHECK-NEXT: .LBB27_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i32, i32* %1, align 4
- %6 = cmpxchg weak i32* %4, i32 %5, i32 %2 seq_cst seq_cst
- %7 = extractvalue { i32, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i32, i1 } %6, 0
- store i32 %9, i32* %1, align 4
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i32
- ret i32 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i32, i32* %arg1, align 4
+ %i4 = cmpxchg weak i32* %i, i32 %i3, i32 %arg2 seq_cst seq_cst, align 4
+ %i5 = extractvalue { i32, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i32, i1 } %i4, 0
+ store i32 %i7, i32* %arg1, align 4
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i32
+ ret i32 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i32 @_Z27atomic_cmp_swap_seq_cst_u32RNSt3__16atomicIjEERjj(%"struct.std::__1::atomic.25"* nocapture nonnull align 4 dereferenceable(4) %0, i32* nocapture nonnull align 4 dereferenceable(4) %1, i32 zeroext %2) {
+define zeroext i32 @_Z27atomic_cmp_swap_seq_cst_u32RNSt3__16atomicIjEERjj(%"struct.std::__1::atomic.25"* nocapture nonnull align 4 dereferenceable(4) %arg, i32* nocapture nonnull align 4 dereferenceable(4) %arg1, i32 zeroext %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_seq_cst_u32RNSt3__16atomicIjEERjj:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: cas.w %s2, (%s0), %s3
@@ -1236,31 +1264,32 @@ define zeroext i32 @_Z27atomic_cmp_swap_seq_cst_u32RNSt3__16atomicIjEERjj(%"stru
; CHECK-NEXT: cmov.w.eq %s0, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.w %s2, %s3, .LBB28_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: stl %s2, (, %s1)
-; CHECK-NEXT: .LBB28_2:
+; CHECK-NEXT: .LBB28_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i32, i32* %1, align 4
- %6 = cmpxchg weak i32* %4, i32 %5, i32 %2 seq_cst seq_cst
- %7 = extractvalue { i32, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i32, i1 } %6, 0
- store i32 %9, i32* %1, align 4
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i32
- ret i32 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i32, i32* %arg1, align 4
+ %i4 = cmpxchg weak i32* %i, i32 %i3, i32 %arg2 seq_cst seq_cst, align 4
+ %i5 = extractvalue { i32, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i32, i1 } %i4, 0
+ store i32 %i7, i32* %arg1, align 4
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i32
+ ret i32 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define i64 @_Z27atomic_cmp_swap_seq_cst_i64RNSt3__16atomicIlEERll(%"struct.std::__1::atomic.30"* nocapture nonnull align 8 dereferenceable(8) %0, i64* nocapture nonnull align 8 dereferenceable(8) %1, i64 %2) {
+define i64 @_Z27atomic_cmp_swap_seq_cst_i64RNSt3__16atomicIlEERll(%"struct.std::__1::atomic.30"* nocapture nonnull align 8 dereferenceable(8) %arg, i64* nocapture nonnull align 8 dereferenceable(8) %arg1, i64 %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_seq_cst_i64RNSt3__16atomicIlEERll:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: cas.l %s2, (%s0), %s3
@@ -1269,31 +1298,32 @@ define i64 @_Z27atomic_cmp_swap_seq_cst_i64RNSt3__16atomicIlEERll(%"struct.std::
; CHECK-NEXT: cmov.l.eq %s0, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.l %s2, %s3, .LBB29_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: st %s2, (, %s1)
-; CHECK-NEXT: .LBB29_2:
+; CHECK-NEXT: .LBB29_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i64, i64* %1, align 8
- %6 = cmpxchg weak i64* %4, i64 %5, i64 %2 seq_cst seq_cst
- %7 = extractvalue { i64, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i64, i1 } %6, 0
- store i64 %9, i64* %1, align 8
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i64
- ret i64 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i64, i64* %arg1, align 8
+ %i4 = cmpxchg weak i64* %i, i64 %i3, i64 %arg2 seq_cst seq_cst, align 8
+ %i5 = extractvalue { i64, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i64, i1 } %i4, 0
+ store i64 %i7, i64* %arg1, align 8
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i64
+ ret i64 %i9
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define i64 @_Z27atomic_cmp_swap_seq_cst_u64RNSt3__16atomicImEERmm(%"struct.std::__1::atomic.35"* nocapture nonnull align 8 dereferenceable(8) %0, i64* nocapture nonnull align 8 dereferenceable(8) %1, i64 %2) {
+define i64 @_Z27atomic_cmp_swap_seq_cst_u64RNSt3__16atomicImEERmm(%"struct.std::__1::atomic.35"* nocapture nonnull align 8 dereferenceable(8) %arg, i64* nocapture nonnull align 8 dereferenceable(8) %arg1, i64 %arg2) {
; CHECK-LABEL: _Z27atomic_cmp_swap_seq_cst_u64RNSt3__16atomicImEERmm:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld %s3, (, %s1)
; CHECK-NEXT: fencem 3
; CHECK-NEXT: cas.l %s2, (%s0), %s3
@@ -1302,37 +1332,38 @@ define i64 @_Z27atomic_cmp_swap_seq_cst_u64RNSt3__16atomicImEERmm(%"struct.std::
; CHECK-NEXT: cmov.l.eq %s0, (63)0, %s4
; CHECK-NEXT: fencem 3
; CHECK-NEXT: breq.l %s2, %s3, .LBB30_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: st %s2, (, %s1)
-; CHECK-NEXT: .LBB30_2:
+; CHECK-NEXT: .LBB30_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %4 = getelementptr inbounds %"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %5 = load i64, i64* %1, align 8
- %6 = cmpxchg weak i64* %4, i64 %5, i64 %2 seq_cst seq_cst
- %7 = extractvalue { i64, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %3
- %9 = extractvalue { i64, i1 } %6, 0
- store i64 %9, i64* %1, align 8
- br label %10
-
-10: ; preds = %3, %8
- %11 = zext i1 %7 to i64
- ret i64 %11
+bb:
+ %i = getelementptr inbounds %"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i3 = load i64, i64* %arg1, align 8
+ %i4 = cmpxchg weak i64* %i, i64 %i3, i64 %arg2 seq_cst seq_cst, align 8
+ %i5 = extractvalue { i64, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i64, i1 } %i4, 0
+ store i64 %i7, i64* %arg1, align 8
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i64
+ ret i64 %i9
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z28atomic_cmp_swap_seq_cst_i128RNSt3__16atomicInEERnn(%"struct.std::__1::atomic.40"* nonnull align 16 dereferenceable(16) %0, i128* nonnull align 16 dereferenceable(16) %1, i128 %2) {
+define i128 @_Z28atomic_cmp_swap_seq_cst_i128RNSt3__16atomicInEERnn(%"struct.std::__1::atomic.40"* nonnull align 16 dereferenceable(16) %arg, i128* nonnull align 16 dereferenceable(16) %arg1, i128 %arg2) {
; CHECK-LABEL: _Z28atomic_cmp_swap_seq_cst_i128RNSt3__16atomicInEERnn:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -256(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB31_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1341,7 +1372,7 @@ define i128 @_Z28atomic_cmp_swap_seq_cst_i128RNSt3__16atomicInEERnn(%"struct.std
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB31_2:
+; CHECK-NEXT: .LBB31_2: # %bb
; CHECK-NEXT: or %s6, 0, %s1
; CHECK-NEXT: or %s1, 0, %s0
; CHECK-NEXT: st %s3, 248(, %s11)
@@ -1360,28 +1391,29 @@ define i128 @_Z28atomic_cmp_swap_seq_cst_i128RNSt3__16atomicInEERnn(%"struct.std
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %4 = alloca i128, align 16
- %5 = bitcast i128* %4 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %5)
- store i128 %2, i128* %4, align 16, !tbaa !2
- %6 = bitcast %"struct.std::__1::atomic.40"* %0 to i8*
- %7 = bitcast i128* %1 to i8*
- %8 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %6, i8* nonnull %7, i8* nonnull %5, i32 signext 5, i32 signext 5)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %5)
- %9 = zext i1 %8 to i128
- ret i128 %9
+bb:
+ %i = alloca i128, align 16
+ %i3 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i3)
+ store i128 %arg2, i128* %i, align 16, !tbaa !0
+ %i4 = bitcast %"struct.std::__1::atomic.40"* %arg to i8*
+ %i5 = bitcast i128* %arg1 to i8*
+ %i6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %i4, i8* nonnull %i5, i8* nonnull %i3, i32 signext 5, i32 signext 5)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i3)
+ %i7 = zext i1 %i6 to i128
+ ret i128 %i7
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z28atomic_cmp_swap_seq_cst_u128RNSt3__16atomicIoEERoo(%"struct.std::__1::atomic.45"* nonnull align 16 dereferenceable(16) %0, i128* nonnull align 16 dereferenceable(16) %1, i128 %2) {
+define i128 @_Z28atomic_cmp_swap_seq_cst_u128RNSt3__16atomicIoEERoo(%"struct.std::__1::atomic.45"* nonnull align 16 dereferenceable(16) %arg, i128* nonnull align 16 dereferenceable(16) %arg1, i128 %arg2) {
; CHECK-LABEL: _Z28atomic_cmp_swap_seq_cst_u128RNSt3__16atomicIoEERoo:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -256(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB32_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1390,7 +1422,7 @@ define i128 @_Z28atomic_cmp_swap_seq_cst_u128RNSt3__16atomicIoEERoo(%"struct.std
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB32_2:
+; CHECK-NEXT: .LBB32_2: # %bb
; CHECK-NEXT: or %s6, 0, %s1
; CHECK-NEXT: or %s1, 0, %s0
; CHECK-NEXT: st %s3, 248(, %s11)
@@ -1409,25 +1441,26 @@ define i128 @_Z28atomic_cmp_swap_seq_cst_u128RNSt3__16atomicIoEERoo(%"struct.std
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %4 = alloca i128, align 16
- %5 = bitcast i128* %4 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %5)
- store i128 %2, i128* %4, align 16, !tbaa !2
- %6 = bitcast %"struct.std::__1::atomic.45"* %0 to i8*
- %7 = bitcast i128* %1 to i8*
- %8 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %6, i8* nonnull %7, i8* nonnull %5, i32 signext 5, i32 signext 5)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %5)
- %9 = zext i1 %8 to i128
- ret i128 %9
+bb:
+ %i = alloca i128, align 16
+ %i3 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i3)
+ store i128 %arg2, i128* %i, align 16, !tbaa !0
+ %i4 = bitcast %"struct.std::__1::atomic.45"* %arg to i8*
+ %i5 = bitcast i128* %arg1 to i8*
+ %i6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %i4, i8* nonnull %i5, i8* nonnull %i3, i32 signext 5, i32 signext 5)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i3)
+ %i7 = zext i1 %i6 to i128
+ ret i128 %i7
}
; Function Attrs: nofree nounwind mustprogress
-define zeroext i1 @_Z30atomic_cmp_swap_relaxed_stk_i1Rbb(i8* nocapture nonnull align 1 dereferenceable(1) %0, i1 zeroext %1) {
+define zeroext i1 @_Z30atomic_cmp_swap_relaxed_stk_i1Rbb(i8* nocapture nonnull align 1 dereferenceable(1) %arg, i1 zeroext %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_stk_i1Rbb:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB33_4
-; CHECK-NEXT: # %bb.3: # %partword.cmpxchg.loop
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1436,7 +1469,7 @@ define zeroext i1 @_Z30atomic_cmp_swap_relaxed_stk_i1Rbb(i8* nocapture nonnull a
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB33_4: # %partword.cmpxchg.loop
+; CHECK-NEXT: .LBB33_4: # %bb
; CHECK-NEXT: ld1b.zx %s2, (, %s0)
; CHECK-NEXT: ldl.zx %s3, 8(, %s11)
; CHECK-NEXT: lea %s4, -256
@@ -1449,29 +1482,30 @@ define zeroext i1 @_Z30atomic_cmp_swap_relaxed_stk_i1Rbb(i8* nocapture nonnull a
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB33_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: st1b %s1, (, %s0)
-; CHECK-NEXT: .LBB33_2:
+; CHECK-NEXT: .LBB33_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic", align 1
- %4 = getelementptr inbounds %"struct.std::__1::atomic", %"struct.std::__1::atomic"* %3, i64 0, i32 0, i32 0, i32 0, i32 0
- call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %4)
- %5 = zext i1 %1 to i8
- %6 = load i8, i8* %0, align 1
- %7 = cmpxchg weak volatile i8* %4, i8 %6, i8 %5 monotonic monotonic
- %8 = extractvalue { i8, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %2
- %10 = extractvalue { i8, i1 } %7, 0
- store i8 %10, i8* %0, align 1
- br label %11
-
-11: ; preds = %2, %9
- call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %4)
- ret i1 %8
+bb:
+ %i = alloca %"struct.std::__1::atomic", align 1
+ %i2 = getelementptr inbounds %"struct.std::__1::atomic", %"struct.std::__1::atomic"* %i, i64 0, i32 0, i32 0, i32 0, i32 0
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %i2)
+ %i3 = zext i1 %arg1 to i8
+ %i4 = load i8, i8* %arg, align 1
+ %i5 = cmpxchg weak volatile i8* %i2, i8 %i4, i8 %i3 monotonic monotonic, align 1
+ %i6 = extractvalue { i8, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i8, i1 } %i5, 0
+ store i8 %i8, i8* %arg, align 1
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %i2)
+ ret i1 %i6
}
; Function Attrs: argmemonly nofree nosync nounwind willreturn
@@ -1481,12 +1515,12 @@ declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture)
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture)
; Function Attrs: nofree nounwind mustprogress
-define signext i8 @_Z30atomic_cmp_swap_relaxed_stk_i8Rcc(i8* nocapture nonnull align 1 dereferenceable(1) %0, i8 signext %1) {
+define signext i8 @_Z30atomic_cmp_swap_relaxed_stk_i8Rcc(i8* nocapture nonnull align 1 dereferenceable(1) %arg, i8 signext %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_stk_i8Rcc:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB34_4
-; CHECK-NEXT: # %bb.3: # %partword.cmpxchg.loop
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1495,7 +1529,7 @@ define signext i8 @_Z30atomic_cmp_swap_relaxed_stk_i8Rcc(i8* nocapture nonnull a
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB34_4: # %partword.cmpxchg.loop
+; CHECK-NEXT: .LBB34_4: # %bb
; CHECK-NEXT: ld1b.zx %s2, (, %s0)
; CHECK-NEXT: ldl.zx %s3, 8(, %s11)
; CHECK-NEXT: and %s1, %s1, (56)0
@@ -1509,38 +1543,39 @@ define signext i8 @_Z30atomic_cmp_swap_relaxed_stk_i8Rcc(i8* nocapture nonnull a
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB34_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: st1b %s1, (, %s0)
-; CHECK-NEXT: .LBB34_2:
+; CHECK-NEXT: .LBB34_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic.0", align 1
- %4 = getelementptr inbounds %"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* %3, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %4)
- %5 = load i8, i8* %0, align 1
- %6 = cmpxchg weak volatile i8* %4, i8 %5, i8 %1 monotonic monotonic
- %7 = extractvalue { i8, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %2
- %9 = extractvalue { i8, i1 } %6, 0
- store i8 %9, i8* %0, align 1
- br label %10
-
-10: ; preds = %2, %8
- %11 = zext i1 %7 to i8
- call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %4)
- ret i8 %11
+bb:
+ %i = alloca %"struct.std::__1::atomic.0", align 1
+ %i2 = getelementptr inbounds %"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* %i, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %i2)
+ %i3 = load i8, i8* %arg, align 1
+ %i4 = cmpxchg weak volatile i8* %i2, i8 %i3, i8 %arg1 monotonic monotonic, align 1
+ %i5 = extractvalue { i8, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i8, i1 } %i4, 0
+ store i8 %i7, i8* %arg, align 1
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i8
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %i2)
+ ret i8 %i9
}
; Function Attrs: nofree nounwind mustprogress
-define zeroext i8 @_Z30atomic_cmp_swap_relaxed_stk_u8Rhh(i8* nocapture nonnull align 1 dereferenceable(1) %0, i8 zeroext %1) {
+define zeroext i8 @_Z30atomic_cmp_swap_relaxed_stk_u8Rhh(i8* nocapture nonnull align 1 dereferenceable(1) %arg, i8 zeroext %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_stk_u8Rhh:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB35_4
-; CHECK-NEXT: # %bb.3: # %partword.cmpxchg.loop
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1549,7 +1584,7 @@ define zeroext i8 @_Z30atomic_cmp_swap_relaxed_stk_u8Rhh(i8* nocapture nonnull a
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB35_4: # %partword.cmpxchg.loop
+; CHECK-NEXT: .LBB35_4: # %bb
; CHECK-NEXT: ld1b.zx %s2, (, %s0)
; CHECK-NEXT: ldl.zx %s3, 8(, %s11)
; CHECK-NEXT: lea %s4, -256
@@ -1562,38 +1597,39 @@ define zeroext i8 @_Z30atomic_cmp_swap_relaxed_stk_u8Rhh(i8* nocapture nonnull a
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB35_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb6
; CHECK-NEXT: st1b %s1, (, %s0)
-; CHECK-NEXT: .LBB35_2:
+; CHECK-NEXT: .LBB35_2: # %bb8
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic.5", align 1
- %4 = getelementptr inbounds %"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* %3, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %4)
- %5 = load i8, i8* %0, align 1
- %6 = cmpxchg weak volatile i8* %4, i8 %5, i8 %1 monotonic monotonic
- %7 = extractvalue { i8, i1 } %6, 1
- br i1 %7, label %10, label %8
-
-8: ; preds = %2
- %9 = extractvalue { i8, i1 } %6, 0
- store i8 %9, i8* %0, align 1
- br label %10
-
-10: ; preds = %2, %8
- %11 = zext i1 %7 to i8
- call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %4)
- ret i8 %11
+bb:
+ %i = alloca %"struct.std::__1::atomic.5", align 1
+ %i2 = getelementptr inbounds %"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* %i, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %i2)
+ %i3 = load i8, i8* %arg, align 1
+ %i4 = cmpxchg weak volatile i8* %i2, i8 %i3, i8 %arg1 monotonic monotonic, align 1
+ %i5 = extractvalue { i8, i1 } %i4, 1
+ br i1 %i5, label %bb8, label %bb6
+
+bb6: ; preds = %bb
+ %i7 = extractvalue { i8, i1 } %i4, 0
+ store i8 %i7, i8* %arg, align 1
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb
+ %i9 = zext i1 %i5 to i8
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %i2)
+ ret i8 %i9
}
; Function Attrs: nofree nounwind mustprogress
-define signext i16 @_Z31atomic_cmp_swap_relaxed_stk_i16Rss(i16* nocapture nonnull align 2 dereferenceable(2) %0, i16 signext %1) {
+define signext i16 @_Z31atomic_cmp_swap_relaxed_stk_i16Rss(i16* nocapture nonnull align 2 dereferenceable(2) %arg, i16 signext %arg1) {
; CHECK-LABEL: _Z31atomic_cmp_swap_relaxed_stk_i16Rss:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB36_4
-; CHECK-NEXT: # %bb.3: # %partword.cmpxchg.loop
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1602,7 +1638,7 @@ define signext i16 @_Z31atomic_cmp_swap_relaxed_stk_i16Rss(i16* nocapture nonnul
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB36_4: # %partword.cmpxchg.loop
+; CHECK-NEXT: .LBB36_4: # %bb
; CHECK-NEXT: ld2b.zx %s2, (, %s0)
; CHECK-NEXT: ldl.zx %s3, 8(, %s11)
; CHECK-NEXT: and %s1, %s1, (48)0
@@ -1616,39 +1652,40 @@ define signext i16 @_Z31atomic_cmp_swap_relaxed_stk_i16Rss(i16* nocapture nonnul
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB36_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: st2b %s1, (, %s0)
-; CHECK-NEXT: .LBB36_2:
+; CHECK-NEXT: .LBB36_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic.10", align 2
- %4 = bitcast %"struct.std::__1::atomic.10"* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 2, i8* nonnull %4)
- %5 = getelementptr inbounds %"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* %3, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i16, i16* %0, align 2
- %7 = cmpxchg weak volatile i16* %5, i16 %6, i16 %1 monotonic monotonic
- %8 = extractvalue { i16, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %2
- %10 = extractvalue { i16, i1 } %7, 0
- store i16 %10, i16* %0, align 2
- br label %11
-
-11: ; preds = %2, %9
- %12 = zext i1 %8 to i16
- call void @llvm.lifetime.end.p0i8(i64 2, i8* nonnull %4)
- ret i16 %12
+bb:
+ %i = alloca %"struct.std::__1::atomic.10", align 2
+ %i2 = bitcast %"struct.std::__1::atomic.10"* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* nonnull %i2)
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* %i, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i16, i16* %arg, align 2
+ %i5 = cmpxchg weak volatile i16* %i3, i16 %i4, i16 %arg1 monotonic monotonic, align 2
+ %i6 = extractvalue { i16, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i16, i1 } %i5, 0
+ store i16 %i8, i16* %arg, align 2
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ %i10 = zext i1 %i6 to i16
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* nonnull %i2)
+ ret i16 %i10
}
; Function Attrs: nofree nounwind mustprogress
-define zeroext i16 @_Z31atomic_cmp_swap_relaxed_stk_u16Rtt(i16* nocapture nonnull align 2 dereferenceable(2) %0, i16 zeroext %1) {
+define zeroext i16 @_Z31atomic_cmp_swap_relaxed_stk_u16Rtt(i16* nocapture nonnull align 2 dereferenceable(2) %arg, i16 zeroext %arg1) {
; CHECK-LABEL: _Z31atomic_cmp_swap_relaxed_stk_u16Rtt:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB37_4
-; CHECK-NEXT: # %bb.3: # %partword.cmpxchg.loop
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1657,7 +1694,7 @@ define zeroext i16 @_Z31atomic_cmp_swap_relaxed_stk_u16Rtt(i16* nocapture nonnul
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB37_4: # %partword.cmpxchg.loop
+; CHECK-NEXT: .LBB37_4: # %bb
; CHECK-NEXT: ld2b.zx %s2, (, %s0)
; CHECK-NEXT: ldl.zx %s3, 8(, %s11)
; CHECK-NEXT: lea %s4, -65536
@@ -1670,39 +1707,40 @@ define zeroext i16 @_Z31atomic_cmp_swap_relaxed_stk_u16Rtt(i16* nocapture nonnul
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB37_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: st2b %s1, (, %s0)
-; CHECK-NEXT: .LBB37_2:
+; CHECK-NEXT: .LBB37_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic.15", align 2
- %4 = bitcast %"struct.std::__1::atomic.15"* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 2, i8* nonnull %4)
- %5 = getelementptr inbounds %"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* %3, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i16, i16* %0, align 2
- %7 = cmpxchg weak volatile i16* %5, i16 %6, i16 %1 monotonic monotonic
- %8 = extractvalue { i16, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %2
- %10 = extractvalue { i16, i1 } %7, 0
- store i16 %10, i16* %0, align 2
- br label %11
-
-11: ; preds = %2, %9
- %12 = zext i1 %8 to i16
- call void @llvm.lifetime.end.p0i8(i64 2, i8* nonnull %4)
- ret i16 %12
+bb:
+ %i = alloca %"struct.std::__1::atomic.15", align 2
+ %i2 = bitcast %"struct.std::__1::atomic.15"* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* nonnull %i2)
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* %i, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i16, i16* %arg, align 2
+ %i5 = cmpxchg weak volatile i16* %i3, i16 %i4, i16 %arg1 monotonic monotonic, align 2
+ %i6 = extractvalue { i16, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i16, i1 } %i5, 0
+ store i16 %i8, i16* %arg, align 2
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ %i10 = zext i1 %i6 to i16
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* nonnull %i2)
+ ret i16 %i10
}
; Function Attrs: nofree nounwind mustprogress
-define signext i32 @_Z31atomic_cmp_swap_relaxed_stk_i32Rii(i32* nocapture nonnull align 4 dereferenceable(4) %0, i32 signext %1) {
+define signext i32 @_Z31atomic_cmp_swap_relaxed_stk_i32Rii(i32* nocapture nonnull align 4 dereferenceable(4) %arg, i32 signext %arg1) {
; CHECK-LABEL: _Z31atomic_cmp_swap_relaxed_stk_i32Rii:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB38_4
-; CHECK-NEXT: # %bb.3:
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1711,46 +1749,47 @@ define signext i32 @_Z31atomic_cmp_swap_relaxed_stk_i32Rii(i32* nocapture nonnul
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB38_4:
+; CHECK-NEXT: .LBB38_4: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s0)
; CHECK-NEXT: cas.w %s1, 8(%s11), %s3
; CHECK-NEXT: cmps.w.sx %s4, %s1, %s3
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB38_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: stl %s1, (, %s0)
-; CHECK-NEXT: .LBB38_2:
+; CHECK-NEXT: .LBB38_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic.20", align 4
- %4 = bitcast %"struct.std::__1::atomic.20"* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %4)
- %5 = getelementptr inbounds %"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* %3, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i32, i32* %0, align 4
- %7 = cmpxchg weak volatile i32* %5, i32 %6, i32 %1 monotonic monotonic
- %8 = extractvalue { i32, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %2
- %10 = extractvalue { i32, i1 } %7, 0
- store i32 %10, i32* %0, align 4
- br label %11
-
-11: ; preds = %2, %9
- %12 = zext i1 %8 to i32
- call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %4)
- ret i32 %12
+bb:
+ %i = alloca %"struct.std::__1::atomic.20", align 4
+ %i2 = bitcast %"struct.std::__1::atomic.20"* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %i2)
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* %i, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i32, i32* %arg, align 4
+ %i5 = cmpxchg weak volatile i32* %i3, i32 %i4, i32 %arg1 monotonic monotonic, align 4
+ %i6 = extractvalue { i32, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i32, i1 } %i5, 0
+ store i32 %i8, i32* %arg, align 4
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ %i10 = zext i1 %i6 to i32
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %i2)
+ ret i32 %i10
}
; Function Attrs: nofree nounwind mustprogress
-define zeroext i32 @_Z31atomic_cmp_swap_relaxed_stk_u32Rjj(i32* nocapture nonnull align 4 dereferenceable(4) %0, i32 zeroext %1) {
+define zeroext i32 @_Z31atomic_cmp_swap_relaxed_stk_u32Rjj(i32* nocapture nonnull align 4 dereferenceable(4) %arg, i32 zeroext %arg1) {
; CHECK-LABEL: _Z31atomic_cmp_swap_relaxed_stk_u32Rjj:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB39_4
-; CHECK-NEXT: # %bb.3:
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1759,46 +1798,47 @@ define zeroext i32 @_Z31atomic_cmp_swap_relaxed_stk_u32Rjj(i32* nocapture nonnul
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB39_4:
+; CHECK-NEXT: .LBB39_4: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s0)
; CHECK-NEXT: cas.w %s1, 8(%s11), %s3
; CHECK-NEXT: cmps.w.sx %s4, %s1, %s3
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB39_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: stl %s1, (, %s0)
-; CHECK-NEXT: .LBB39_2:
+; CHECK-NEXT: .LBB39_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic.25", align 4
- %4 = bitcast %"struct.std::__1::atomic.25"* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %4)
- %5 = getelementptr inbounds %"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* %3, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i32, i32* %0, align 4
- %7 = cmpxchg weak volatile i32* %5, i32 %6, i32 %1 monotonic monotonic
- %8 = extractvalue { i32, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %2
- %10 = extractvalue { i32, i1 } %7, 0
- store i32 %10, i32* %0, align 4
- br label %11
-
-11: ; preds = %2, %9
- %12 = zext i1 %8 to i32
- call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %4)
- ret i32 %12
+bb:
+ %i = alloca %"struct.std::__1::atomic.25", align 4
+ %i2 = bitcast %"struct.std::__1::atomic.25"* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %i2)
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* %i, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i32, i32* %arg, align 4
+ %i5 = cmpxchg weak volatile i32* %i3, i32 %i4, i32 %arg1 monotonic monotonic, align 4
+ %i6 = extractvalue { i32, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i32, i1 } %i5, 0
+ store i32 %i8, i32* %arg, align 4
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ %i10 = zext i1 %i6 to i32
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %i2)
+ ret i32 %i10
}
; Function Attrs: nofree nounwind mustprogress
-define i64 @_Z31atomic_cmp_swap_relaxed_stk_i64Rll(i64* nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {
+define i64 @_Z31atomic_cmp_swap_relaxed_stk_i64Rll(i64* nocapture nonnull align 8 dereferenceable(8) %arg, i64 %arg1) {
; CHECK-LABEL: _Z31atomic_cmp_swap_relaxed_stk_i64Rll:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB40_4
-; CHECK-NEXT: # %bb.3:
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1807,46 +1847,47 @@ define i64 @_Z31atomic_cmp_swap_relaxed_stk_i64Rll(i64* nocapture nonnull align
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB40_4:
+; CHECK-NEXT: .LBB40_4: # %bb
; CHECK-NEXT: ld %s3, (, %s0)
; CHECK-NEXT: cas.l %s1, 8(%s11), %s3
; CHECK-NEXT: cmps.l %s4, %s1, %s3
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.l.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.l %s1, %s3, .LBB40_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: st %s1, (, %s0)
-; CHECK-NEXT: .LBB40_2:
+; CHECK-NEXT: .LBB40_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic.30", align 8
- %4 = bitcast %"struct.std::__1::atomic.30"* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %4)
- %5 = getelementptr inbounds %"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* %3, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i64, i64* %0, align 8
- %7 = cmpxchg weak volatile i64* %5, i64 %6, i64 %1 monotonic monotonic
- %8 = extractvalue { i64, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %2
- %10 = extractvalue { i64, i1 } %7, 0
- store i64 %10, i64* %0, align 8
- br label %11
-
-11: ; preds = %2, %9
- %12 = zext i1 %8 to i64
- call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %4)
- ret i64 %12
+bb:
+ %i = alloca %"struct.std::__1::atomic.30", align 8
+ %i2 = bitcast %"struct.std::__1::atomic.30"* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %i2)
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* %i, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i64, i64* %arg, align 8
+ %i5 = cmpxchg weak volatile i64* %i3, i64 %i4, i64 %arg1 monotonic monotonic, align 8
+ %i6 = extractvalue { i64, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i64, i1 } %i5, 0
+ store i64 %i8, i64* %arg, align 8
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ %i10 = zext i1 %i6 to i64
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %i2)
+ ret i64 %i10
}
; Function Attrs: nofree nounwind mustprogress
-define i64 @_Z31atomic_cmp_swap_relaxed_stk_u64Rmm(i64* nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {
+define i64 @_Z31atomic_cmp_swap_relaxed_stk_u64Rmm(i64* nocapture nonnull align 8 dereferenceable(8) %arg, i64 %arg1) {
; CHECK-LABEL: _Z31atomic_cmp_swap_relaxed_stk_u64Rmm:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: adds.l %s11, -16, %s11
; CHECK-NEXT: brge.l %s11, %s8, .LBB41_4
-; CHECK-NEXT: # %bb.3:
+; CHECK-NEXT: # %bb.3: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1855,49 +1896,50 @@ define i64 @_Z31atomic_cmp_swap_relaxed_stk_u64Rmm(i64* nocapture nonnull align
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB41_4:
+; CHECK-NEXT: .LBB41_4: # %bb
; CHECK-NEXT: ld %s3, (, %s0)
; CHECK-NEXT: cas.l %s1, 8(%s11), %s3
; CHECK-NEXT: cmps.l %s4, %s1, %s3
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.l.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.l %s1, %s3, .LBB41_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb7
; CHECK-NEXT: st %s1, (, %s0)
-; CHECK-NEXT: .LBB41_2:
+; CHECK-NEXT: .LBB41_2: # %bb9
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: adds.l %s11, 16, %s11
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca %"struct.std::__1::atomic.35", align 8
- %4 = bitcast %"struct.std::__1::atomic.35"* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %4)
- %5 = getelementptr inbounds %"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* %3, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
- %6 = load i64, i64* %0, align 8
- %7 = cmpxchg weak volatile i64* %5, i64 %6, i64 %1 monotonic monotonic
- %8 = extractvalue { i64, i1 } %7, 1
- br i1 %8, label %11, label %9
-
-9: ; preds = %2
- %10 = extractvalue { i64, i1 } %7, 0
- store i64 %10, i64* %0, align 8
- br label %11
-
-11: ; preds = %2, %9
- %12 = zext i1 %8 to i64
- call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %4)
- ret i64 %12
+bb:
+ %i = alloca %"struct.std::__1::atomic.35", align 8
+ %i2 = bitcast %"struct.std::__1::atomic.35"* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %i2)
+ %i3 = getelementptr inbounds %"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* %i, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
+ %i4 = load i64, i64* %arg, align 8
+ %i5 = cmpxchg weak volatile i64* %i3, i64 %i4, i64 %arg1 monotonic monotonic, align 8
+ %i6 = extractvalue { i64, i1 } %i5, 1
+ br i1 %i6, label %bb9, label %bb7
+
+bb7: ; preds = %bb
+ %i8 = extractvalue { i64, i1 } %i5, 0
+ store i64 %i8, i64* %arg, align 8
+ br label %bb9
+
+bb9: ; preds = %bb7, %bb
+ %i10 = zext i1 %i6 to i64
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %i2)
+ ret i64 %i10
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z32atomic_cmp_swap_relaxed_stk_i128Rnn(i128* nonnull align 16 dereferenceable(16) %0, i128 %1) {
+define i128 @_Z32atomic_cmp_swap_relaxed_stk_i128Rnn(i128* nonnull align 16 dereferenceable(16) %arg, i128 %arg1) {
; CHECK-LABEL: _Z32atomic_cmp_swap_relaxed_stk_i128Rnn:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -272(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB42_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1906,7 +1948,7 @@ define i128 @_Z32atomic_cmp_swap_relaxed_stk_i128Rnn(i128* nonnull align 16 dere
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB42_2:
+; CHECK-NEXT: .LBB42_2: # %bb
; CHECK-NEXT: or %s6, 0, %s0
; CHECK-NEXT: st %s2, 264(, %s11)
; CHECK-NEXT: st %s1, 256(, %s11)
@@ -1925,31 +1967,32 @@ define i128 @_Z32atomic_cmp_swap_relaxed_stk_i128Rnn(i128* nonnull align 16 dere
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca i128, align 16
- %4 = alloca %"struct.std::__1::atomic.40", align 16
- %5 = bitcast %"struct.std::__1::atomic.40"* %4 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %5)
- %6 = bitcast i128* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %6)
- store i128 %1, i128* %3, align 16, !tbaa !2
- %7 = bitcast i128* %0 to i8*
- %8 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %5, i8* nonnull %7, i8* nonnull %6, i32 signext 0, i32 signext 0)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %6)
- %9 = zext i1 %8 to i128
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %5)
- ret i128 %9
+bb:
+ %i = alloca i128, align 16
+ %i2 = alloca %"struct.std::__1::atomic.40", align 16
+ %i3 = bitcast %"struct.std::__1::atomic.40"* %i2 to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i3)
+ %i4 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i4)
+ store i128 %arg1, i128* %i, align 16, !tbaa !0
+ %i5 = bitcast i128* %arg to i8*
+ %i6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %i3, i8* nonnull %i5, i8* nonnull %i4, i32 signext 0, i32 signext 0)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i4)
+ %i7 = zext i1 %i6 to i128
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i3)
+ ret i128 %i7
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z32atomic_cmp_swap_relaxed_stk_u128Roo(i128* nonnull align 16 dereferenceable(16) %0, i128 %1) {
+define i128 @_Z32atomic_cmp_swap_relaxed_stk_u128Roo(i128* nonnull align 16 dereferenceable(16) %arg, i128 %arg1) {
; CHECK-LABEL: _Z32atomic_cmp_swap_relaxed_stk_u128Roo:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -272(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB43_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -1958,7 +2001,7 @@ define i128 @_Z32atomic_cmp_swap_relaxed_stk_u128Roo(i128* nonnull align 16 dere
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB43_2:
+; CHECK-NEXT: .LBB43_2: # %bb
; CHECK-NEXT: or %s6, 0, %s0
; CHECK-NEXT: st %s2, 264(, %s11)
; CHECK-NEXT: st %s1, 256(, %s11)
@@ -1977,25 +2020,26 @@ define i128 @_Z32atomic_cmp_swap_relaxed_stk_u128Roo(i128* nonnull align 16 dere
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca i128, align 16
- %4 = alloca %"struct.std::__1::atomic.45", align 16
- %5 = bitcast %"struct.std::__1::atomic.45"* %4 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %5)
- %6 = bitcast i128* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %6)
- store i128 %1, i128* %3, align 16, !tbaa !2
- %7 = bitcast i128* %0 to i8*
- %8 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %5, i8* nonnull %7, i8* nonnull %6, i32 signext 0, i32 signext 0)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %6)
- %9 = zext i1 %8 to i128
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %5)
- ret i128 %9
+bb:
+ %i = alloca i128, align 16
+ %i2 = alloca %"struct.std::__1::atomic.45", align 16
+ %i3 = bitcast %"struct.std::__1::atomic.45"* %i2 to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i3)
+ %i4 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i4)
+ store i128 %arg1, i128* %i, align 16, !tbaa !0
+ %i5 = bitcast i128* %arg to i8*
+ %i6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull %i3, i8* nonnull %i5, i8* nonnull %i4, i32 signext 0, i32 signext 0)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i4)
+ %i7 = zext i1 %i6 to i128
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i3)
+ ret i128 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i1 @_Z29atomic_cmp_swap_relaxed_gv_i1Rbb(i8* nocapture nonnull align 1 dereferenceable(1) %0, i1 zeroext %1) {
+define zeroext i1 @_Z29atomic_cmp_swap_relaxed_gv_i1Rbb(i8* nocapture nonnull align 1 dereferenceable(1) %arg, i1 zeroext %arg1) {
; CHECK-LABEL: _Z29atomic_cmp_swap_relaxed_gv_i1Rbb:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: lea %s2, gv_i1 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: lea.sl %s2, gv_i1 at hi(, %s2)
@@ -2012,30 +2056,31 @@ define zeroext i1 @_Z29atomic_cmp_swap_relaxed_gv_i1Rbb(i8* nocapture nonnull al
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB44_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb5
; CHECK-NEXT: st1b %s1, (, %s0)
-; CHECK-NEXT: .LBB44_2:
+; CHECK-NEXT: .LBB44_2: # %bb7
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = zext i1 %1 to i8
- %4 = load i8, i8* %0, align 1
- %5 = cmpxchg weak i8* getelementptr inbounds (%"struct.std::__1::atomic", %"struct.std::__1::atomic"* @gv_i1, i64 0, i32 0, i32 0, i32 0, i32 0), i8 %4, i8 %3 monotonic monotonic
- %6 = extractvalue { i8, i1 } %5, 1
- br i1 %6, label %9, label %7
-
-7: ; preds = %2
- %8 = extractvalue { i8, i1 } %5, 0
- store i8 %8, i8* %0, align 1
- br label %9
-
-9: ; preds = %2, %7
- ret i1 %6
+bb:
+ %i = zext i1 %arg1 to i8
+ %i2 = load i8, i8* %arg, align 1
+ %i3 = cmpxchg weak i8* getelementptr inbounds (%"struct.std::__1::atomic", %"struct.std::__1::atomic"* @gv_i1, i64 0, i32 0, i32 0, i32 0, i32 0), i8 %i2, i8 %i monotonic monotonic, align 1
+ %i4 = extractvalue { i8, i1 } %i3, 1
+ br i1 %i4, label %bb7, label %bb5
+
+bb5: ; preds = %bb
+ %i6 = extractvalue { i8, i1 } %i3, 0
+ store i8 %i6, i8* %arg, align 1
+ br label %bb7
+
+bb7: ; preds = %bb5, %bb
+ ret i1 %i4
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i8 @_Z29atomic_cmp_swap_relaxed_gv_i8Rcc(i8* nocapture nonnull align 1 dereferenceable(1) %0, i8 signext %1) {
+define signext i8 @_Z29atomic_cmp_swap_relaxed_gv_i8Rcc(i8* nocapture nonnull align 1 dereferenceable(1) %arg, i8 signext %arg1) {
; CHECK-LABEL: _Z29atomic_cmp_swap_relaxed_gv_i8Rcc:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: lea %s2, gv_i8 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: lea.sl %s2, gv_i8 at hi(, %s2)
@@ -2053,30 +2098,31 @@ define signext i8 @_Z29atomic_cmp_swap_relaxed_gv_i8Rcc(i8* nocapture nonnull al
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB45_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb4
; CHECK-NEXT: st1b %s1, (, %s0)
-; CHECK-NEXT: .LBB45_2:
+; CHECK-NEXT: .LBB45_2: # %bb6
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = load i8, i8* %0, align 1
- %4 = cmpxchg weak i8* getelementptr inbounds (%"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* @gv_i8, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i8 %3, i8 %1 monotonic monotonic
- %5 = extractvalue { i8, i1 } %4, 1
- br i1 %5, label %8, label %6
-
-6: ; preds = %2
- %7 = extractvalue { i8, i1 } %4, 0
- store i8 %7, i8* %0, align 1
- br label %8
-
-8: ; preds = %2, %6
- %9 = zext i1 %5 to i8
- ret i8 %9
+bb:
+ %i = load i8, i8* %arg, align 1
+ %i2 = cmpxchg weak i8* getelementptr inbounds (%"struct.std::__1::atomic.0", %"struct.std::__1::atomic.0"* @gv_i8, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i8 %i, i8 %arg1 monotonic monotonic, align 1
+ %i3 = extractvalue { i8, i1 } %i2, 1
+ br i1 %i3, label %bb6, label %bb4
+
+bb4: ; preds = %bb
+ %i5 = extractvalue { i8, i1 } %i2, 0
+ store i8 %i5, i8* %arg, align 1
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %i7 = zext i1 %i3 to i8
+ ret i8 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i8 @_Z29atomic_cmp_swap_relaxed_gv_u8Rhh(i8* nocapture nonnull align 1 dereferenceable(1) %0, i8 zeroext %1) {
+define zeroext i8 @_Z29atomic_cmp_swap_relaxed_gv_u8Rhh(i8* nocapture nonnull align 1 dereferenceable(1) %arg, i8 zeroext %arg1) {
; CHECK-LABEL: _Z29atomic_cmp_swap_relaxed_gv_u8Rhh:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: lea %s2, gv_u8 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: lea.sl %s2, gv_u8 at hi(, %s2)
@@ -2093,30 +2139,31 @@ define zeroext i8 @_Z29atomic_cmp_swap_relaxed_gv_u8Rhh(i8* nocapture nonnull al
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB46_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb4
; CHECK-NEXT: st1b %s1, (, %s0)
-; CHECK-NEXT: .LBB46_2:
+; CHECK-NEXT: .LBB46_2: # %bb6
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = load i8, i8* %0, align 1
- %4 = cmpxchg weak i8* getelementptr inbounds (%"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* @gv_u8, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i8 %3, i8 %1 monotonic monotonic
- %5 = extractvalue { i8, i1 } %4, 1
- br i1 %5, label %8, label %6
-
-6: ; preds = %2
- %7 = extractvalue { i8, i1 } %4, 0
- store i8 %7, i8* %0, align 1
- br label %8
-
-8: ; preds = %2, %6
- %9 = zext i1 %5 to i8
- ret i8 %9
+bb:
+ %i = load i8, i8* %arg, align 1
+ %i2 = cmpxchg weak i8* getelementptr inbounds (%"struct.std::__1::atomic.5", %"struct.std::__1::atomic.5"* @gv_u8, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i8 %i, i8 %arg1 monotonic monotonic, align 1
+ %i3 = extractvalue { i8, i1 } %i2, 1
+ br i1 %i3, label %bb6, label %bb4
+
+bb4: ; preds = %bb
+ %i5 = extractvalue { i8, i1 } %i2, 0
+ store i8 %i5, i8* %arg, align 1
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %i7 = zext i1 %i3 to i8
+ ret i8 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i16 @_Z30atomic_cmp_swap_relaxed_gv_i16Rss(i16* nocapture nonnull align 2 dereferenceable(2) %0, i16 signext %1) {
+define signext i16 @_Z30atomic_cmp_swap_relaxed_gv_i16Rss(i16* nocapture nonnull align 2 dereferenceable(2) %arg, i16 signext %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_gv_i16Rss:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: lea %s2, gv_i16 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: lea.sl %s2, gv_i16 at hi(, %s2)
@@ -2132,30 +2179,31 @@ define signext i16 @_Z30atomic_cmp_swap_relaxed_gv_i16Rss(i16* nocapture nonnull
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB47_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb4
; CHECK-NEXT: st2b %s1, (, %s0)
-; CHECK-NEXT: .LBB47_2:
+; CHECK-NEXT: .LBB47_2: # %bb6
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = load i16, i16* %0, align 2
- %4 = cmpxchg weak i16* getelementptr inbounds (%"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* @gv_i16, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i16 %3, i16 %1 monotonic monotonic
- %5 = extractvalue { i16, i1 } %4, 1
- br i1 %5, label %8, label %6
-
-6: ; preds = %2
- %7 = extractvalue { i16, i1 } %4, 0
- store i16 %7, i16* %0, align 2
- br label %8
-
-8: ; preds = %2, %6
- %9 = zext i1 %5 to i16
- ret i16 %9
+bb:
+ %i = load i16, i16* %arg, align 2
+ %i2 = cmpxchg weak i16* getelementptr inbounds (%"struct.std::__1::atomic.10", %"struct.std::__1::atomic.10"* @gv_i16, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i16 %i, i16 %arg1 monotonic monotonic, align 2
+ %i3 = extractvalue { i16, i1 } %i2, 1
+ br i1 %i3, label %bb6, label %bb4
+
+bb4: ; preds = %bb
+ %i5 = extractvalue { i16, i1 } %i2, 0
+ store i16 %i5, i16* %arg, align 2
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %i7 = zext i1 %i3 to i16
+ ret i16 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i16 @_Z30atomic_cmp_swap_relaxed_gv_u16Rtt(i16* nocapture nonnull align 2 dereferenceable(2) %0, i16 zeroext %1) {
+define zeroext i16 @_Z30atomic_cmp_swap_relaxed_gv_u16Rtt(i16* nocapture nonnull align 2 dereferenceable(2) %arg, i16 zeroext %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_gv_u16Rtt:
-; CHECK: # %bb.0: # %partword.cmpxchg.loop
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: lea %s2, gv_u16 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
; CHECK-NEXT: lea.sl %s2, gv_u16 at hi(, %s2)
@@ -2170,30 +2218,31 @@ define zeroext i16 @_Z30atomic_cmp_swap_relaxed_gv_u16Rtt(i16* nocapture nonnull
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB48_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb4
; CHECK-NEXT: st2b %s1, (, %s0)
-; CHECK-NEXT: .LBB48_2:
+; CHECK-NEXT: .LBB48_2: # %bb6
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = load i16, i16* %0, align 2
- %4 = cmpxchg weak i16* getelementptr inbounds (%"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* @gv_u16, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i16 %3, i16 %1 monotonic monotonic
- %5 = extractvalue { i16, i1 } %4, 1
- br i1 %5, label %8, label %6
-
-6: ; preds = %2
- %7 = extractvalue { i16, i1 } %4, 0
- store i16 %7, i16* %0, align 2
- br label %8
-
-8: ; preds = %2, %6
- %9 = zext i1 %5 to i16
- ret i16 %9
+bb:
+ %i = load i16, i16* %arg, align 2
+ %i2 = cmpxchg weak i16* getelementptr inbounds (%"struct.std::__1::atomic.15", %"struct.std::__1::atomic.15"* @gv_u16, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i16 %i, i16 %arg1 monotonic monotonic, align 2
+ %i3 = extractvalue { i16, i1 } %i2, 1
+ br i1 %i3, label %bb6, label %bb4
+
+bb4: ; preds = %bb
+ %i5 = extractvalue { i16, i1 } %i2, 0
+ store i16 %i5, i16* %arg, align 2
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %i7 = zext i1 %i3 to i16
+ ret i16 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define signext i32 @_Z30atomic_cmp_swap_relaxed_gv_i32Rii(i32* nocapture nonnull align 4 dereferenceable(4) %0, i32 signext %1) {
+define signext i32 @_Z30atomic_cmp_swap_relaxed_gv_i32Rii(i32* nocapture nonnull align 4 dereferenceable(4) %arg, i32 signext %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_gv_i32Rii:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s0)
; CHECK-NEXT: lea %s2, gv_i32 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
@@ -2203,30 +2252,31 @@ define signext i32 @_Z30atomic_cmp_swap_relaxed_gv_i32Rii(i32* nocapture nonnull
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB49_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb4
; CHECK-NEXT: stl %s1, (, %s0)
-; CHECK-NEXT: .LBB49_2:
+; CHECK-NEXT: .LBB49_2: # %bb6
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = load i32, i32* %0, align 4
- %4 = cmpxchg weak i32* getelementptr inbounds (%"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* @gv_i32, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i32 %3, i32 %1 monotonic monotonic
- %5 = extractvalue { i32, i1 } %4, 1
- br i1 %5, label %8, label %6
-
-6: ; preds = %2
- %7 = extractvalue { i32, i1 } %4, 0
- store i32 %7, i32* %0, align 4
- br label %8
-
-8: ; preds = %2, %6
- %9 = zext i1 %5 to i32
- ret i32 %9
+bb:
+ %i = load i32, i32* %arg, align 4
+ %i2 = cmpxchg weak i32* getelementptr inbounds (%"struct.std::__1::atomic.20", %"struct.std::__1::atomic.20"* @gv_i32, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i32 %i, i32 %arg1 monotonic monotonic, align 4
+ %i3 = extractvalue { i32, i1 } %i2, 1
+ br i1 %i3, label %bb6, label %bb4
+
+bb4: ; preds = %bb
+ %i5 = extractvalue { i32, i1 } %i2, 0
+ store i32 %i5, i32* %arg, align 4
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %i7 = zext i1 %i3 to i32
+ ret i32 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define zeroext i32 @_Z30atomic_cmp_swap_relaxed_gv_u32Rjj(i32* nocapture nonnull align 4 dereferenceable(4) %0, i32 zeroext %1) {
+define zeroext i32 @_Z30atomic_cmp_swap_relaxed_gv_u32Rjj(i32* nocapture nonnull align 4 dereferenceable(4) %arg, i32 zeroext %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_gv_u32Rjj:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ldl.sx %s3, (, %s0)
; CHECK-NEXT: lea %s2, gv_u32 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
@@ -2236,30 +2286,31 @@ define zeroext i32 @_Z30atomic_cmp_swap_relaxed_gv_u32Rjj(i32* nocapture nonnull
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.w.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.w %s1, %s3, .LBB50_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb4
; CHECK-NEXT: stl %s1, (, %s0)
-; CHECK-NEXT: .LBB50_2:
+; CHECK-NEXT: .LBB50_2: # %bb6
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = load i32, i32* %0, align 4
- %4 = cmpxchg weak i32* getelementptr inbounds (%"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* @gv_u32, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i32 %3, i32 %1 monotonic monotonic
- %5 = extractvalue { i32, i1 } %4, 1
- br i1 %5, label %8, label %6
-
-6: ; preds = %2
- %7 = extractvalue { i32, i1 } %4, 0
- store i32 %7, i32* %0, align 4
- br label %8
-
-8: ; preds = %2, %6
- %9 = zext i1 %5 to i32
- ret i32 %9
+bb:
+ %i = load i32, i32* %arg, align 4
+ %i2 = cmpxchg weak i32* getelementptr inbounds (%"struct.std::__1::atomic.25", %"struct.std::__1::atomic.25"* @gv_u32, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i32 %i, i32 %arg1 monotonic monotonic, align 4
+ %i3 = extractvalue { i32, i1 } %i2, 1
+ br i1 %i3, label %bb6, label %bb4
+
+bb4: ; preds = %bb
+ %i5 = extractvalue { i32, i1 } %i2, 0
+ store i32 %i5, i32* %arg, align 4
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %i7 = zext i1 %i3 to i32
+ ret i32 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define i64 @_Z30atomic_cmp_swap_relaxed_gv_i64Rll(i64* nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {
+define i64 @_Z30atomic_cmp_swap_relaxed_gv_i64Rll(i64* nocapture nonnull align 8 dereferenceable(8) %arg, i64 %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_gv_i64Rll:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld %s3, (, %s0)
; CHECK-NEXT: lea %s2, gv_i64 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
@@ -2269,30 +2320,31 @@ define i64 @_Z30atomic_cmp_swap_relaxed_gv_i64Rll(i64* nocapture nonnull align 8
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.l.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.l %s1, %s3, .LBB51_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb4
; CHECK-NEXT: st %s1, (, %s0)
-; CHECK-NEXT: .LBB51_2:
+; CHECK-NEXT: .LBB51_2: # %bb6
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = load i64, i64* %0, align 8
- %4 = cmpxchg weak i64* getelementptr inbounds (%"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* @gv_i64, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i64 %3, i64 %1 monotonic monotonic
- %5 = extractvalue { i64, i1 } %4, 1
- br i1 %5, label %8, label %6
-
-6: ; preds = %2
- %7 = extractvalue { i64, i1 } %4, 0
- store i64 %7, i64* %0, align 8
- br label %8
-
-8: ; preds = %2, %6
- %9 = zext i1 %5 to i64
- ret i64 %9
+bb:
+ %i = load i64, i64* %arg, align 8
+ %i2 = cmpxchg weak i64* getelementptr inbounds (%"struct.std::__1::atomic.30", %"struct.std::__1::atomic.30"* @gv_i64, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i64 %i, i64 %arg1 monotonic monotonic, align 8
+ %i3 = extractvalue { i64, i1 } %i2, 1
+ br i1 %i3, label %bb6, label %bb4
+
+bb4: ; preds = %bb
+ %i5 = extractvalue { i64, i1 } %i2, 0
+ store i64 %i5, i64* %arg, align 8
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %i7 = zext i1 %i3 to i64
+ ret i64 %i7
}
; Function Attrs: nofree norecurse nounwind mustprogress
-define i64 @_Z30atomic_cmp_swap_relaxed_gv_u64Rmm(i64* nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {
+define i64 @_Z30atomic_cmp_swap_relaxed_gv_u64Rmm(i64* nocapture nonnull align 8 dereferenceable(8) %arg, i64 %arg1) {
; CHECK-LABEL: _Z30atomic_cmp_swap_relaxed_gv_u64Rmm:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: ld %s3, (, %s0)
; CHECK-NEXT: lea %s2, gv_u64 at lo
; CHECK-NEXT: and %s2, %s2, (32)0
@@ -2302,36 +2354,37 @@ define i64 @_Z30atomic_cmp_swap_relaxed_gv_u64Rmm(i64* nocapture nonnull align 8
; CHECK-NEXT: or %s2, 0, (0)1
; CHECK-NEXT: cmov.l.eq %s2, (63)0, %s4
; CHECK-NEXT: breq.l %s1, %s3, .LBB52_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb4
; CHECK-NEXT: st %s1, (, %s0)
-; CHECK-NEXT: .LBB52_2:
+; CHECK-NEXT: .LBB52_2: # %bb6
; CHECK-NEXT: adds.w.zx %s0, %s2, (0)1
; CHECK-NEXT: b.l.t (, %s10)
- %3 = load i64, i64* %0, align 8
- %4 = cmpxchg weak i64* getelementptr inbounds (%"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* @gv_u64, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i64 %3, i64 %1 monotonic monotonic
- %5 = extractvalue { i64, i1 } %4, 1
- br i1 %5, label %8, label %6
-
-6: ; preds = %2
- %7 = extractvalue { i64, i1 } %4, 0
- store i64 %7, i64* %0, align 8
- br label %8
-
-8: ; preds = %2, %6
- %9 = zext i1 %5 to i64
- ret i64 %9
+bb:
+ %i = load i64, i64* %arg, align 8
+ %i2 = cmpxchg weak i64* getelementptr inbounds (%"struct.std::__1::atomic.35", %"struct.std::__1::atomic.35"* @gv_u64, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0), i64 %i, i64 %arg1 monotonic monotonic, align 8
+ %i3 = extractvalue { i64, i1 } %i2, 1
+ br i1 %i3, label %bb6, label %bb4
+
+bb4: ; preds = %bb
+ %i5 = extractvalue { i64, i1 } %i2, 0
+ store i64 %i5, i64* %arg, align 8
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %i7 = zext i1 %i3 to i64
+ ret i64 %i7
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z31atomic_cmp_swap_relaxed_gv_i128Rnn(i128* nonnull align 16 dereferenceable(16) %0, i128 %1) {
+define i128 @_Z31atomic_cmp_swap_relaxed_gv_i128Rnn(i128* nonnull align 16 dereferenceable(16) %arg, i128 %arg1) {
; CHECK-LABEL: _Z31atomic_cmp_swap_relaxed_gv_i128Rnn:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -256(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB53_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -2340,7 +2393,7 @@ define i128 @_Z31atomic_cmp_swap_relaxed_gv_i128Rnn(i128* nonnull align 16 deref
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB53_2:
+; CHECK-NEXT: .LBB53_2: # %bb
; CHECK-NEXT: or %s6, 0, %s0
; CHECK-NEXT: st %s2, 248(, %s11)
; CHECK-NEXT: st %s1, 240(, %s11)
@@ -2361,27 +2414,28 @@ define i128 @_Z31atomic_cmp_swap_relaxed_gv_i128Rnn(i128* nonnull align 16 deref
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca i128, align 16
- %4 = bitcast i128* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %4)
- store i128 %1, i128* %3, align 16, !tbaa !2
- %5 = bitcast i128* %0 to i8*
- %6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull bitcast (%"struct.std::__1::atomic.40"* @gv_i128 to i8*), i8* nonnull %5, i8* nonnull %4, i32 signext 0, i32 signext 0)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %4)
- %7 = zext i1 %6 to i128
- ret i128 %7
+bb:
+ %i = alloca i128, align 16
+ %i2 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i2)
+ store i128 %arg1, i128* %i, align 16, !tbaa !0
+ %i3 = bitcast i128* %arg to i8*
+ %i4 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull bitcast (%"struct.std::__1::atomic.40"* @gv_i128 to i8*), i8* nonnull %i3, i8* nonnull %i2, i32 signext 0, i32 signext 0)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i2)
+ %i5 = zext i1 %i4 to i128
+ ret i128 %i5
}
; Function Attrs: nounwind mustprogress
-define i128 @_Z31atomic_cmp_swap_relaxed_gv_u128Roo(i128* nonnull align 16 dereferenceable(16) %0, i128 %1) {
+define i128 @_Z31atomic_cmp_swap_relaxed_gv_u128Roo(i128* nonnull align 16 dereferenceable(16) %arg, i128 %arg1) {
; CHECK-LABEL: _Z31atomic_cmp_swap_relaxed_gv_u128Roo:
-; CHECK: # %bb.0:
+; CHECK: # %bb.0: # %bb
; CHECK-NEXT: st %s9, (, %s11)
; CHECK-NEXT: st %s10, 8(, %s11)
; CHECK-NEXT: or %s9, 0, %s11
; CHECK-NEXT: lea %s11, -256(, %s11)
; CHECK-NEXT: brge.l.t %s11, %s8, .LBB54_2
-; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: # %bb.1: # %bb
; CHECK-NEXT: ld %s61, 24(, %s14)
; CHECK-NEXT: or %s62, 0, %s0
; CHECK-NEXT: lea %s63, 315
@@ -2390,7 +2444,7 @@ define i128 @_Z31atomic_cmp_swap_relaxed_gv_u128Roo(i128* nonnull align 16 deref
; CHECK-NEXT: shm.l %s11, 16(%s61)
; CHECK-NEXT: monc
; CHECK-NEXT: or %s0, 0, %s62
-; CHECK-NEXT: .LBB54_2:
+; CHECK-NEXT: .LBB54_2: # %bb
; CHECK-NEXT: or %s6, 0, %s0
; CHECK-NEXT: st %s2, 248(, %s11)
; CHECK-NEXT: st %s1, 240(, %s11)
@@ -2411,21 +2465,22 @@ define i128 @_Z31atomic_cmp_swap_relaxed_gv_u128Roo(i128* nonnull align 16 deref
; CHECK-NEXT: ld %s10, 8(, %s11)
; CHECK-NEXT: ld %s9, (, %s11)
; CHECK-NEXT: b.l.t (, %s10)
- %3 = alloca i128, align 16
- %4 = bitcast i128* %3 to i8*
- call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %4)
- store i128 %1, i128* %3, align 16, !tbaa !2
- %5 = bitcast i128* %0 to i8*
- %6 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull bitcast (%"struct.std::__1::atomic.45"* @gv_u128 to i8*), i8* nonnull %5, i8* nonnull %4, i32 signext 0, i32 signext 0)
- call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %4)
- %7 = zext i1 %6 to i128
- ret i128 %7
+bb:
+ %i = alloca i128, align 16
+ %i2 = bitcast i128* %i to i8*
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i2)
+ store i128 %arg1, i128* %i, align 16, !tbaa !0
+ %i3 = bitcast i128* %arg to i8*
+ %i4 = call zeroext i1 @__atomic_compare_exchange(i64 16, i8* nonnull bitcast (%"struct.std::__1::atomic.45"* @gv_u128 to i8*), i8* nonnull %i3, i8* nonnull %i2, i32 signext 0, i32 signext 0)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i2)
+ %i5 = zext i1 %i4 to i128
+ ret i128 %i5
}
; Function Attrs: nounwind willreturn
declare i1 @__atomic_compare_exchange(i64, i8*, i8*, i8*, i32, i32)
-!2 = !{!3, !3, i64 0}
-!3 = !{!"__int128", !4, i64 0}
-!4 = !{!"omnipotent char", !5, i64 0}
-!5 = !{!"Simple C++ TBAA"}
+!0 = !{!1, !1, i64 0}
+!1 = !{!"__int128", !2, i64 0}
+!2 = !{!"omnipotent char", !3, i64 0}
+!3 = !{!"Simple C++ TBAA"}
More information about the llvm-commits
mailing list