[llvm] 7f635b9 - [SelectionDAG] Transitively copy NodeExtraInfo on RAUW
Marco Elver via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 27 03:17:02 PST 2023
Author: Marco Elver
Date: 2023-02-27T12:16:14+01:00
New Revision: 7f635b90e7bdf1378fd9a65fc62b99e8e07d4aaf
URL: https://github.com/llvm/llvm-project/commit/7f635b90e7bdf1378fd9a65fc62b99e8e07d4aaf
DIFF: https://github.com/llvm/llvm-project/commit/7f635b90e7bdf1378fd9a65fc62b99e8e07d4aaf.diff
LOG: [SelectionDAG] Transitively copy NodeExtraInfo on RAUW
During legalization of the SelectionDAG, some nodes are replaced with
arch-specific nodes. These may be complex nodes, where the root node no
longer corresponds to the node that should carry the extra info.
Fix the issue by copying extra info to the new node and all its new
transitive operands during RAUW. See code comments for more details.
This fixes the remaining pcsections-atomics.ll tests on X86.
Reviewed By: dvyukov
Differential Revision: https://reviews.llvm.org/D144677
Added:
Modified:
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
llvm/test/CodeGen/X86/pcsections-atomics.ll
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 0ada8148bfcf4..1a57069c76afa 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -12199,10 +12199,37 @@ void SelectionDAG::copyExtraInfo(SDNode *From, SDNode *To) {
if (I == SDEI.end())
return;
+ // We need to copy NodeExtraInfo to all _new_ nodes that are being introduced
+ // through the replacement of From with To. Otherwise, replacements of a node
+ // (From) with more complex nodes (To and its operands) may result in lost
+ // extra info where the root node (To) is insignificant in further propagating
+ // and using extra info when further lowering to MIR.
+ //
+ // In the first step pre-populate the visited set with the nodes reachable
+ // from the old From node. This avoids copying NodeExtraInfo to parts of the
+ // DAG that is not new and should be left untouched.
+ SmallPtrSet<const SDNode *, 32> Visited;
+ auto VisitFrom = [&Visited](auto &&Self, SDNode *N) {
+ if (!Visited.insert(N).second)
+ return;
+ for (const SDValue &Op : N->op_values())
+ Self(Self, Op.getNode());
+ };
+ VisitFrom(VisitFrom, From);
+
// Use of operator[] on the DenseMap may cause an insertion, which invalidates
// the iterator, hence the need to make a copy to prevent a use-after-free.
NodeExtraInfo Copy = I->second;
- SDEI[To] = std::move(Copy);
+
+ // Copy extra info to To and all its transitive operands (that are new).
+ auto DeepCopyTo = [this, &Copy, &Visited](auto &&Self, SDNode *To) {
+ if (!Visited.insert(To).second)
+ return;
+ SDEI[To] = Copy;
+ for (const SDValue &Op : To->op_values())
+ Self(Self, Op.getNode());
+ };
+ DeepCopyTo(DeepCopyTo, To);
}
#ifndef NDEBUG
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
index bf4422b657bd4..f6d4ad1b46e90 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
@@ -851,6 +851,12 @@ void SDNode::print_details(raw_ostream &OS, const SelectionDAG *G) const {
Dbg->print(OS);
} else if (getHasDebugValue())
OS << " [NoOfDbgValues>0]";
+
+ if (const auto *MD = G ? G->getPCSections(this) : nullptr) {
+ OS << " [pcsections ";
+ MD->printAsOperand(OS, G->getMachineFunction().getFunction().getParent());
+ OS << ']';
+ }
}
}
diff --git a/llvm/test/CodeGen/X86/pcsections-atomics.ll b/llvm/test/CodeGen/X86/pcsections-atomics.ll
index a2ee8e028d6d7..6881cb373cf71 100644
--- a/llvm/test/CodeGen/X86/pcsections-atomics.ll
+++ b/llvm/test/CodeGen/X86/pcsections-atomics.ll
@@ -683,16 +683,18 @@ define void @atomic8_nand_monotonic(ptr %a) {
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movb %al, %dl
-; O0-NEXT: notb %dl
; O0-NEXT: .Lpcsection17:
+; O0-NEXT: notb %dl
+; O0-NEXT: .Lpcsection18:
; O0-NEXT: orb $-43, %dl
+; O0-NEXT: .Lpcsection19:
; O0-NEXT: lock cmpxchgb %dl, (%rcx)
-; O0-NEXT: .Lpcsection18:
+; O0-NEXT: .Lpcsection20:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection19:
+; O0-NEXT: .Lpcsection21:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
-; O0-NEXT: .Lpcsection20:
+; O0-NEXT: .Lpcsection22:
; O0-NEXT: jne .LBB16_2
; O0-NEXT: jmp .LBB16_1
; O0-NEXT: .LBB16_2: # %atomicrmw.end
@@ -708,11 +710,13 @@ define void @atomic8_nand_monotonic(ptr %a) {
; O1-NEXT: .LBB16_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
-; O1-NEXT: notb %cl
; O1-NEXT: .Lpcsection17:
+; O1-NEXT: notb %cl
+; O1-NEXT: .Lpcsection18:
; O1-NEXT: orb $-43, %cl
+; O1-NEXT: .Lpcsection19:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
-; O1-NEXT: .Lpcsection18:
+; O1-NEXT: .Lpcsection20:
; O1-NEXT: jne .LBB16_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -727,11 +731,13 @@ define void @atomic8_nand_monotonic(ptr %a) {
; O2-NEXT: .LBB16_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
-; O2-NEXT: notb %cl
; O2-NEXT: .Lpcsection17:
+; O2-NEXT: notb %cl
+; O2-NEXT: .Lpcsection18:
; O2-NEXT: orb $-43, %cl
+; O2-NEXT: .Lpcsection19:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
-; O2-NEXT: .Lpcsection18:
+; O2-NEXT: .Lpcsection20:
; O2-NEXT: jne .LBB16_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -746,11 +752,13 @@ define void @atomic8_nand_monotonic(ptr %a) {
; O3-NEXT: .LBB16_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
-; O3-NEXT: notb %cl
; O3-NEXT: .Lpcsection17:
+; O3-NEXT: notb %cl
+; O3-NEXT: .Lpcsection18:
; O3-NEXT: orb $-43, %cl
+; O3-NEXT: .Lpcsection19:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
-; O3-NEXT: .Lpcsection18:
+; O3-NEXT: .Lpcsection20:
; O3-NEXT: jne .LBB16_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -767,7 +775,7 @@ define void @atomic8_xchg_acquire(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movb $42, %al
-; O0-NEXT: .Lpcsection21:
+; O0-NEXT: .Lpcsection23:
; O0-NEXT: xchgb %al, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -776,7 +784,7 @@ define void @atomic8_xchg_acquire(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $42, %al
-; O1-NEXT: .Lpcsection19:
+; O1-NEXT: .Lpcsection21:
; O1-NEXT: xchgb %al, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -785,7 +793,7 @@ define void @atomic8_xchg_acquire(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $42, %al
-; O2-NEXT: .Lpcsection19:
+; O2-NEXT: .Lpcsection21:
; O2-NEXT: xchgb %al, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -794,7 +802,7 @@ define void @atomic8_xchg_acquire(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $42, %al
-; O3-NEXT: .Lpcsection19:
+; O3-NEXT: .Lpcsection21:
; O3-NEXT: xchgb %al, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -809,7 +817,7 @@ define void @atomic8_add_acquire(ptr %a) {
; O0-LABEL: atomic8_add_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection22:
+; O0-NEXT: .Lpcsection24:
; O0-NEXT: lock addb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -817,7 +825,7 @@ define void @atomic8_add_acquire(ptr %a) {
; O1-LABEL: atomic8_add_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection20:
+; O1-NEXT: .Lpcsection22:
; O1-NEXT: lock addb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -825,7 +833,7 @@ define void @atomic8_add_acquire(ptr %a) {
; O2-LABEL: atomic8_add_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection20:
+; O2-NEXT: .Lpcsection22:
; O2-NEXT: lock addb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -833,7 +841,7 @@ define void @atomic8_add_acquire(ptr %a) {
; O3-LABEL: atomic8_add_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection20:
+; O3-NEXT: .Lpcsection22:
; O3-NEXT: lock addb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -848,7 +856,7 @@ define void @atomic8_sub_acquire(ptr %a) {
; O0-LABEL: atomic8_sub_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection23:
+; O0-NEXT: .Lpcsection25:
; O0-NEXT: lock subb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -856,7 +864,7 @@ define void @atomic8_sub_acquire(ptr %a) {
; O1-LABEL: atomic8_sub_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection21:
+; O1-NEXT: .Lpcsection23:
; O1-NEXT: lock subb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -864,7 +872,7 @@ define void @atomic8_sub_acquire(ptr %a) {
; O2-LABEL: atomic8_sub_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection21:
+; O2-NEXT: .Lpcsection23:
; O2-NEXT: lock subb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -872,7 +880,7 @@ define void @atomic8_sub_acquire(ptr %a) {
; O3-LABEL: atomic8_sub_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection21:
+; O3-NEXT: .Lpcsection23:
; O3-NEXT: lock subb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -887,7 +895,7 @@ define void @atomic8_and_acquire(ptr %a) {
; O0-LABEL: atomic8_and_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection24:
+; O0-NEXT: .Lpcsection26:
; O0-NEXT: lock andb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -895,7 +903,7 @@ define void @atomic8_and_acquire(ptr %a) {
; O1-LABEL: atomic8_and_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection22:
+; O1-NEXT: .Lpcsection24:
; O1-NEXT: lock andb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -903,7 +911,7 @@ define void @atomic8_and_acquire(ptr %a) {
; O2-LABEL: atomic8_and_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection22:
+; O2-NEXT: .Lpcsection24:
; O2-NEXT: lock andb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -911,7 +919,7 @@ define void @atomic8_and_acquire(ptr %a) {
; O3-LABEL: atomic8_and_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection22:
+; O3-NEXT: .Lpcsection24:
; O3-NEXT: lock andb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -926,7 +934,7 @@ define void @atomic8_or_acquire(ptr %a) {
; O0-LABEL: atomic8_or_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection25:
+; O0-NEXT: .Lpcsection27:
; O0-NEXT: lock orb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -934,7 +942,7 @@ define void @atomic8_or_acquire(ptr %a) {
; O1-LABEL: atomic8_or_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection23:
+; O1-NEXT: .Lpcsection25:
; O1-NEXT: lock orb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -942,7 +950,7 @@ define void @atomic8_or_acquire(ptr %a) {
; O2-LABEL: atomic8_or_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection23:
+; O2-NEXT: .Lpcsection25:
; O2-NEXT: lock orb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -950,7 +958,7 @@ define void @atomic8_or_acquire(ptr %a) {
; O3-LABEL: atomic8_or_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection23:
+; O3-NEXT: .Lpcsection25:
; O3-NEXT: lock orb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -965,7 +973,7 @@ define void @atomic8_xor_acquire(ptr %a) {
; O0-LABEL: atomic8_xor_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection26:
+; O0-NEXT: .Lpcsection28:
; O0-NEXT: lock xorb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -973,7 +981,7 @@ define void @atomic8_xor_acquire(ptr %a) {
; O1-LABEL: atomic8_xor_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection24:
+; O1-NEXT: .Lpcsection26:
; O1-NEXT: lock xorb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -981,7 +989,7 @@ define void @atomic8_xor_acquire(ptr %a) {
; O2-LABEL: atomic8_xor_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection24:
+; O2-NEXT: .Lpcsection26:
; O2-NEXT: lock xorb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -989,7 +997,7 @@ define void @atomic8_xor_acquire(ptr %a) {
; O3-LABEL: atomic8_xor_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection24:
+; O3-NEXT: .Lpcsection26:
; O3-NEXT: lock xorb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1005,7 +1013,7 @@ define void @atomic8_nand_acquire(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection27:
+; O0-NEXT: .Lpcsection29:
; O0-NEXT: movb (%rdi), %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: .LBB23_1: # %atomicrmw.start
@@ -1013,16 +1021,18 @@ define void @atomic8_nand_acquire(ptr %a) {
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movb %al, %dl
+; O0-NEXT: .Lpcsection30:
; O0-NEXT: notb %dl
-; O0-NEXT: .Lpcsection28:
+; O0-NEXT: .Lpcsection31:
; O0-NEXT: orb $-43, %dl
+; O0-NEXT: .Lpcsection32:
; O0-NEXT: lock cmpxchgb %dl, (%rcx)
-; O0-NEXT: .Lpcsection29:
+; O0-NEXT: .Lpcsection33:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection30:
+; O0-NEXT: .Lpcsection34:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
-; O0-NEXT: .Lpcsection31:
+; O0-NEXT: .Lpcsection35:
; O0-NEXT: jne .LBB23_2
; O0-NEXT: jmp .LBB23_1
; O0-NEXT: .LBB23_2: # %atomicrmw.end
@@ -1032,17 +1042,19 @@ define void @atomic8_nand_acquire(ptr %a) {
; O1-LABEL: atomic8_nand_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection25:
+; O1-NEXT: .Lpcsection27:
; O1-NEXT: movzbl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB23_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection28:
; O1-NEXT: notb %cl
-; O1-NEXT: .Lpcsection26:
+; O1-NEXT: .Lpcsection29:
; O1-NEXT: orb $-43, %cl
+; O1-NEXT: .Lpcsection30:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
-; O1-NEXT: .Lpcsection27:
+; O1-NEXT: .Lpcsection31:
; O1-NEXT: jne .LBB23_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -1051,17 +1063,19 @@ define void @atomic8_nand_acquire(ptr %a) {
; O2-LABEL: atomic8_nand_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection25:
+; O2-NEXT: .Lpcsection27:
; O2-NEXT: movzbl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB23_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection28:
; O2-NEXT: notb %cl
-; O2-NEXT: .Lpcsection26:
+; O2-NEXT: .Lpcsection29:
; O2-NEXT: orb $-43, %cl
+; O2-NEXT: .Lpcsection30:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
-; O2-NEXT: .Lpcsection27:
+; O2-NEXT: .Lpcsection31:
; O2-NEXT: jne .LBB23_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -1070,17 +1084,19 @@ define void @atomic8_nand_acquire(ptr %a) {
; O3-LABEL: atomic8_nand_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection25:
+; O3-NEXT: .Lpcsection27:
; O3-NEXT: movzbl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB23_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection28:
; O3-NEXT: notb %cl
-; O3-NEXT: .Lpcsection26:
+; O3-NEXT: .Lpcsection29:
; O3-NEXT: orb $-43, %cl
+; O3-NEXT: .Lpcsection30:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
-; O3-NEXT: .Lpcsection27:
+; O3-NEXT: .Lpcsection31:
; O3-NEXT: jne .LBB23_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -1097,7 +1113,7 @@ define void @atomic8_xchg_release(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movb $42, %al
-; O0-NEXT: .Lpcsection32:
+; O0-NEXT: .Lpcsection36:
; O0-NEXT: xchgb %al, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1106,7 +1122,7 @@ define void @atomic8_xchg_release(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $42, %al
-; O1-NEXT: .Lpcsection28:
+; O1-NEXT: .Lpcsection32:
; O1-NEXT: xchgb %al, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1115,7 +1131,7 @@ define void @atomic8_xchg_release(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $42, %al
-; O2-NEXT: .Lpcsection28:
+; O2-NEXT: .Lpcsection32:
; O2-NEXT: xchgb %al, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1124,7 +1140,7 @@ define void @atomic8_xchg_release(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $42, %al
-; O3-NEXT: .Lpcsection28:
+; O3-NEXT: .Lpcsection32:
; O3-NEXT: xchgb %al, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1139,7 +1155,7 @@ define void @atomic8_add_release(ptr %a) {
; O0-LABEL: atomic8_add_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection33:
+; O0-NEXT: .Lpcsection37:
; O0-NEXT: lock addb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1147,7 +1163,7 @@ define void @atomic8_add_release(ptr %a) {
; O1-LABEL: atomic8_add_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection29:
+; O1-NEXT: .Lpcsection33:
; O1-NEXT: lock addb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1155,7 +1171,7 @@ define void @atomic8_add_release(ptr %a) {
; O2-LABEL: atomic8_add_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection29:
+; O2-NEXT: .Lpcsection33:
; O2-NEXT: lock addb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1163,7 +1179,7 @@ define void @atomic8_add_release(ptr %a) {
; O3-LABEL: atomic8_add_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection29:
+; O3-NEXT: .Lpcsection33:
; O3-NEXT: lock addb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1178,7 +1194,7 @@ define void @atomic8_sub_release(ptr %a) {
; O0-LABEL: atomic8_sub_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection34:
+; O0-NEXT: .Lpcsection38:
; O0-NEXT: lock subb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1186,7 +1202,7 @@ define void @atomic8_sub_release(ptr %a) {
; O1-LABEL: atomic8_sub_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection30:
+; O1-NEXT: .Lpcsection34:
; O1-NEXT: lock subb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1194,7 +1210,7 @@ define void @atomic8_sub_release(ptr %a) {
; O2-LABEL: atomic8_sub_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection30:
+; O2-NEXT: .Lpcsection34:
; O2-NEXT: lock subb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1202,7 +1218,7 @@ define void @atomic8_sub_release(ptr %a) {
; O3-LABEL: atomic8_sub_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection30:
+; O3-NEXT: .Lpcsection34:
; O3-NEXT: lock subb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1217,7 +1233,7 @@ define void @atomic8_and_release(ptr %a) {
; O0-LABEL: atomic8_and_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection35:
+; O0-NEXT: .Lpcsection39:
; O0-NEXT: lock andb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1225,7 +1241,7 @@ define void @atomic8_and_release(ptr %a) {
; O1-LABEL: atomic8_and_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection31:
+; O1-NEXT: .Lpcsection35:
; O1-NEXT: lock andb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1233,7 +1249,7 @@ define void @atomic8_and_release(ptr %a) {
; O2-LABEL: atomic8_and_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection31:
+; O2-NEXT: .Lpcsection35:
; O2-NEXT: lock andb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1241,7 +1257,7 @@ define void @atomic8_and_release(ptr %a) {
; O3-LABEL: atomic8_and_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection31:
+; O3-NEXT: .Lpcsection35:
; O3-NEXT: lock andb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1256,7 +1272,7 @@ define void @atomic8_or_release(ptr %a) {
; O0-LABEL: atomic8_or_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection36:
+; O0-NEXT: .Lpcsection40:
; O0-NEXT: lock orb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1264,7 +1280,7 @@ define void @atomic8_or_release(ptr %a) {
; O1-LABEL: atomic8_or_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection32:
+; O1-NEXT: .Lpcsection36:
; O1-NEXT: lock orb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1272,7 +1288,7 @@ define void @atomic8_or_release(ptr %a) {
; O2-LABEL: atomic8_or_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection32:
+; O2-NEXT: .Lpcsection36:
; O2-NEXT: lock orb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1280,7 +1296,7 @@ define void @atomic8_or_release(ptr %a) {
; O3-LABEL: atomic8_or_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection32:
+; O3-NEXT: .Lpcsection36:
; O3-NEXT: lock orb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1295,7 +1311,7 @@ define void @atomic8_xor_release(ptr %a) {
; O0-LABEL: atomic8_xor_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection37:
+; O0-NEXT: .Lpcsection41:
; O0-NEXT: lock xorb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1303,7 +1319,7 @@ define void @atomic8_xor_release(ptr %a) {
; O1-LABEL: atomic8_xor_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection33:
+; O1-NEXT: .Lpcsection37:
; O1-NEXT: lock xorb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1311,7 +1327,7 @@ define void @atomic8_xor_release(ptr %a) {
; O2-LABEL: atomic8_xor_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection33:
+; O2-NEXT: .Lpcsection37:
; O2-NEXT: lock xorb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1319,7 +1335,7 @@ define void @atomic8_xor_release(ptr %a) {
; O3-LABEL: atomic8_xor_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection33:
+; O3-NEXT: .Lpcsection37:
; O3-NEXT: lock xorb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1335,7 +1351,7 @@ define void @atomic8_nand_release(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection38:
+; O0-NEXT: .Lpcsection42:
; O0-NEXT: movb (%rdi), %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: .LBB30_1: # %atomicrmw.start
@@ -1343,16 +1359,18 @@ define void @atomic8_nand_release(ptr %a) {
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movb %al, %dl
+; O0-NEXT: .Lpcsection43:
; O0-NEXT: notb %dl
-; O0-NEXT: .Lpcsection39:
+; O0-NEXT: .Lpcsection44:
; O0-NEXT: orb $-43, %dl
+; O0-NEXT: .Lpcsection45:
; O0-NEXT: lock cmpxchgb %dl, (%rcx)
-; O0-NEXT: .Lpcsection40:
+; O0-NEXT: .Lpcsection46:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection41:
+; O0-NEXT: .Lpcsection47:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
-; O0-NEXT: .Lpcsection42:
+; O0-NEXT: .Lpcsection48:
; O0-NEXT: jne .LBB30_2
; O0-NEXT: jmp .LBB30_1
; O0-NEXT: .LBB30_2: # %atomicrmw.end
@@ -1362,17 +1380,19 @@ define void @atomic8_nand_release(ptr %a) {
; O1-LABEL: atomic8_nand_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection34:
+; O1-NEXT: .Lpcsection38:
; O1-NEXT: movzbl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB30_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection39:
; O1-NEXT: notb %cl
-; O1-NEXT: .Lpcsection35:
+; O1-NEXT: .Lpcsection40:
; O1-NEXT: orb $-43, %cl
+; O1-NEXT: .Lpcsection41:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
-; O1-NEXT: .Lpcsection36:
+; O1-NEXT: .Lpcsection42:
; O1-NEXT: jne .LBB30_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -1381,17 +1401,19 @@ define void @atomic8_nand_release(ptr %a) {
; O2-LABEL: atomic8_nand_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection34:
+; O2-NEXT: .Lpcsection38:
; O2-NEXT: movzbl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB30_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection39:
; O2-NEXT: notb %cl
-; O2-NEXT: .Lpcsection35:
+; O2-NEXT: .Lpcsection40:
; O2-NEXT: orb $-43, %cl
+; O2-NEXT: .Lpcsection41:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
-; O2-NEXT: .Lpcsection36:
+; O2-NEXT: .Lpcsection42:
; O2-NEXT: jne .LBB30_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -1400,17 +1422,19 @@ define void @atomic8_nand_release(ptr %a) {
; O3-LABEL: atomic8_nand_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection34:
+; O3-NEXT: .Lpcsection38:
; O3-NEXT: movzbl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB30_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection39:
; O3-NEXT: notb %cl
-; O3-NEXT: .Lpcsection35:
+; O3-NEXT: .Lpcsection40:
; O3-NEXT: orb $-43, %cl
+; O3-NEXT: .Lpcsection41:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
-; O3-NEXT: .Lpcsection36:
+; O3-NEXT: .Lpcsection42:
; O3-NEXT: jne .LBB30_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -1427,7 +1451,7 @@ define void @atomic8_xchg_acq_rel(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movb $42, %al
-; O0-NEXT: .Lpcsection43:
+; O0-NEXT: .Lpcsection49:
; O0-NEXT: xchgb %al, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1436,7 +1460,7 @@ define void @atomic8_xchg_acq_rel(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $42, %al
-; O1-NEXT: .Lpcsection37:
+; O1-NEXT: .Lpcsection43:
; O1-NEXT: xchgb %al, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1445,7 +1469,7 @@ define void @atomic8_xchg_acq_rel(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $42, %al
-; O2-NEXT: .Lpcsection37:
+; O2-NEXT: .Lpcsection43:
; O2-NEXT: xchgb %al, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1454,7 +1478,7 @@ define void @atomic8_xchg_acq_rel(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $42, %al
-; O3-NEXT: .Lpcsection37:
+; O3-NEXT: .Lpcsection43:
; O3-NEXT: xchgb %al, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1469,7 +1493,7 @@ define void @atomic8_add_acq_rel(ptr %a) {
; O0-LABEL: atomic8_add_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection44:
+; O0-NEXT: .Lpcsection50:
; O0-NEXT: lock addb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1477,7 +1501,7 @@ define void @atomic8_add_acq_rel(ptr %a) {
; O1-LABEL: atomic8_add_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection38:
+; O1-NEXT: .Lpcsection44:
; O1-NEXT: lock addb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1485,7 +1509,7 @@ define void @atomic8_add_acq_rel(ptr %a) {
; O2-LABEL: atomic8_add_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection38:
+; O2-NEXT: .Lpcsection44:
; O2-NEXT: lock addb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1493,7 +1517,7 @@ define void @atomic8_add_acq_rel(ptr %a) {
; O3-LABEL: atomic8_add_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection38:
+; O3-NEXT: .Lpcsection44:
; O3-NEXT: lock addb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1508,7 +1532,7 @@ define void @atomic8_sub_acq_rel(ptr %a) {
; O0-LABEL: atomic8_sub_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection45:
+; O0-NEXT: .Lpcsection51:
; O0-NEXT: lock subb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1516,7 +1540,7 @@ define void @atomic8_sub_acq_rel(ptr %a) {
; O1-LABEL: atomic8_sub_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection39:
+; O1-NEXT: .Lpcsection45:
; O1-NEXT: lock subb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1524,7 +1548,7 @@ define void @atomic8_sub_acq_rel(ptr %a) {
; O2-LABEL: atomic8_sub_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection39:
+; O2-NEXT: .Lpcsection45:
; O2-NEXT: lock subb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1532,7 +1556,7 @@ define void @atomic8_sub_acq_rel(ptr %a) {
; O3-LABEL: atomic8_sub_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection39:
+; O3-NEXT: .Lpcsection45:
; O3-NEXT: lock subb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1547,7 +1571,7 @@ define void @atomic8_and_acq_rel(ptr %a) {
; O0-LABEL: atomic8_and_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection46:
+; O0-NEXT: .Lpcsection52:
; O0-NEXT: lock andb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1555,7 +1579,7 @@ define void @atomic8_and_acq_rel(ptr %a) {
; O1-LABEL: atomic8_and_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection40:
+; O1-NEXT: .Lpcsection46:
; O1-NEXT: lock andb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1563,7 +1587,7 @@ define void @atomic8_and_acq_rel(ptr %a) {
; O2-LABEL: atomic8_and_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection40:
+; O2-NEXT: .Lpcsection46:
; O2-NEXT: lock andb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1571,7 +1595,7 @@ define void @atomic8_and_acq_rel(ptr %a) {
; O3-LABEL: atomic8_and_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection40:
+; O3-NEXT: .Lpcsection46:
; O3-NEXT: lock andb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1586,7 +1610,7 @@ define void @atomic8_or_acq_rel(ptr %a) {
; O0-LABEL: atomic8_or_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection47:
+; O0-NEXT: .Lpcsection53:
; O0-NEXT: lock orb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1594,7 +1618,7 @@ define void @atomic8_or_acq_rel(ptr %a) {
; O1-LABEL: atomic8_or_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection41:
+; O1-NEXT: .Lpcsection47:
; O1-NEXT: lock orb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1602,7 +1626,7 @@ define void @atomic8_or_acq_rel(ptr %a) {
; O2-LABEL: atomic8_or_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection41:
+; O2-NEXT: .Lpcsection47:
; O2-NEXT: lock orb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1610,7 +1634,7 @@ define void @atomic8_or_acq_rel(ptr %a) {
; O3-LABEL: atomic8_or_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection41:
+; O3-NEXT: .Lpcsection47:
; O3-NEXT: lock orb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1625,7 +1649,7 @@ define void @atomic8_xor_acq_rel(ptr %a) {
; O0-LABEL: atomic8_xor_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection48:
+; O0-NEXT: .Lpcsection54:
; O0-NEXT: lock xorb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1633,7 +1657,7 @@ define void @atomic8_xor_acq_rel(ptr %a) {
; O1-LABEL: atomic8_xor_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection42:
+; O1-NEXT: .Lpcsection48:
; O1-NEXT: lock xorb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1641,7 +1665,7 @@ define void @atomic8_xor_acq_rel(ptr %a) {
; O2-LABEL: atomic8_xor_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection42:
+; O2-NEXT: .Lpcsection48:
; O2-NEXT: lock xorb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1649,7 +1673,7 @@ define void @atomic8_xor_acq_rel(ptr %a) {
; O3-LABEL: atomic8_xor_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection42:
+; O3-NEXT: .Lpcsection48:
; O3-NEXT: lock xorb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1665,7 +1689,7 @@ define void @atomic8_nand_acq_rel(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection49:
+; O0-NEXT: .Lpcsection55:
; O0-NEXT: movb (%rdi), %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: .LBB37_1: # %atomicrmw.start
@@ -1673,16 +1697,18 @@ define void @atomic8_nand_acq_rel(ptr %a) {
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movb %al, %dl
+; O0-NEXT: .Lpcsection56:
; O0-NEXT: notb %dl
-; O0-NEXT: .Lpcsection50:
+; O0-NEXT: .Lpcsection57:
; O0-NEXT: orb $-43, %dl
+; O0-NEXT: .Lpcsection58:
; O0-NEXT: lock cmpxchgb %dl, (%rcx)
-; O0-NEXT: .Lpcsection51:
+; O0-NEXT: .Lpcsection59:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection52:
+; O0-NEXT: .Lpcsection60:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
-; O0-NEXT: .Lpcsection53:
+; O0-NEXT: .Lpcsection61:
; O0-NEXT: jne .LBB37_2
; O0-NEXT: jmp .LBB37_1
; O0-NEXT: .LBB37_2: # %atomicrmw.end
@@ -1692,17 +1718,19 @@ define void @atomic8_nand_acq_rel(ptr %a) {
; O1-LABEL: atomic8_nand_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection43:
+; O1-NEXT: .Lpcsection49:
; O1-NEXT: movzbl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB37_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection50:
; O1-NEXT: notb %cl
-; O1-NEXT: .Lpcsection44:
+; O1-NEXT: .Lpcsection51:
; O1-NEXT: orb $-43, %cl
+; O1-NEXT: .Lpcsection52:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
-; O1-NEXT: .Lpcsection45:
+; O1-NEXT: .Lpcsection53:
; O1-NEXT: jne .LBB37_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -1711,17 +1739,19 @@ define void @atomic8_nand_acq_rel(ptr %a) {
; O2-LABEL: atomic8_nand_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection43:
+; O2-NEXT: .Lpcsection49:
; O2-NEXT: movzbl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB37_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection50:
; O2-NEXT: notb %cl
-; O2-NEXT: .Lpcsection44:
+; O2-NEXT: .Lpcsection51:
; O2-NEXT: orb $-43, %cl
+; O2-NEXT: .Lpcsection52:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
-; O2-NEXT: .Lpcsection45:
+; O2-NEXT: .Lpcsection53:
; O2-NEXT: jne .LBB37_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -1730,17 +1760,19 @@ define void @atomic8_nand_acq_rel(ptr %a) {
; O3-LABEL: atomic8_nand_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection43:
+; O3-NEXT: .Lpcsection49:
; O3-NEXT: movzbl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB37_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection50:
; O3-NEXT: notb %cl
-; O3-NEXT: .Lpcsection44:
+; O3-NEXT: .Lpcsection51:
; O3-NEXT: orb $-43, %cl
+; O3-NEXT: .Lpcsection52:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
-; O3-NEXT: .Lpcsection45:
+; O3-NEXT: .Lpcsection53:
; O3-NEXT: jne .LBB37_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -1757,7 +1789,7 @@ define void @atomic8_xchg_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movb $42, %al
-; O0-NEXT: .Lpcsection54:
+; O0-NEXT: .Lpcsection62:
; O0-NEXT: xchgb %al, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1766,7 +1798,7 @@ define void @atomic8_xchg_seq_cst(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $42, %al
-; O1-NEXT: .Lpcsection46:
+; O1-NEXT: .Lpcsection54:
; O1-NEXT: xchgb %al, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1775,7 +1807,7 @@ define void @atomic8_xchg_seq_cst(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $42, %al
-; O2-NEXT: .Lpcsection46:
+; O2-NEXT: .Lpcsection54:
; O2-NEXT: xchgb %al, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1784,7 +1816,7 @@ define void @atomic8_xchg_seq_cst(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $42, %al
-; O3-NEXT: .Lpcsection46:
+; O3-NEXT: .Lpcsection54:
; O3-NEXT: xchgb %al, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1799,7 +1831,7 @@ define void @atomic8_add_seq_cst(ptr %a) {
; O0-LABEL: atomic8_add_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection55:
+; O0-NEXT: .Lpcsection63:
; O0-NEXT: lock addb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1807,7 +1839,7 @@ define void @atomic8_add_seq_cst(ptr %a) {
; O1-LABEL: atomic8_add_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection47:
+; O1-NEXT: .Lpcsection55:
; O1-NEXT: lock addb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1815,7 +1847,7 @@ define void @atomic8_add_seq_cst(ptr %a) {
; O2-LABEL: atomic8_add_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection47:
+; O2-NEXT: .Lpcsection55:
; O2-NEXT: lock addb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1823,7 +1855,7 @@ define void @atomic8_add_seq_cst(ptr %a) {
; O3-LABEL: atomic8_add_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection47:
+; O3-NEXT: .Lpcsection55:
; O3-NEXT: lock addb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1838,7 +1870,7 @@ define void @atomic8_sub_seq_cst(ptr %a) {
; O0-LABEL: atomic8_sub_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection56:
+; O0-NEXT: .Lpcsection64:
; O0-NEXT: lock subb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1846,7 +1878,7 @@ define void @atomic8_sub_seq_cst(ptr %a) {
; O1-LABEL: atomic8_sub_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection48:
+; O1-NEXT: .Lpcsection56:
; O1-NEXT: lock subb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1854,7 +1886,7 @@ define void @atomic8_sub_seq_cst(ptr %a) {
; O2-LABEL: atomic8_sub_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection48:
+; O2-NEXT: .Lpcsection56:
; O2-NEXT: lock subb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1862,7 +1894,7 @@ define void @atomic8_sub_seq_cst(ptr %a) {
; O3-LABEL: atomic8_sub_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection48:
+; O3-NEXT: .Lpcsection56:
; O3-NEXT: lock subb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1877,7 +1909,7 @@ define void @atomic8_and_seq_cst(ptr %a) {
; O0-LABEL: atomic8_and_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection57:
+; O0-NEXT: .Lpcsection65:
; O0-NEXT: lock andb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1885,7 +1917,7 @@ define void @atomic8_and_seq_cst(ptr %a) {
; O1-LABEL: atomic8_and_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection49:
+; O1-NEXT: .Lpcsection57:
; O1-NEXT: lock andb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1893,7 +1925,7 @@ define void @atomic8_and_seq_cst(ptr %a) {
; O2-LABEL: atomic8_and_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection49:
+; O2-NEXT: .Lpcsection57:
; O2-NEXT: lock andb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1901,7 +1933,7 @@ define void @atomic8_and_seq_cst(ptr %a) {
; O3-LABEL: atomic8_and_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection49:
+; O3-NEXT: .Lpcsection57:
; O3-NEXT: lock andb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1916,7 +1948,7 @@ define void @atomic8_or_seq_cst(ptr %a) {
; O0-LABEL: atomic8_or_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection58:
+; O0-NEXT: .Lpcsection66:
; O0-NEXT: lock orb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1924,7 +1956,7 @@ define void @atomic8_or_seq_cst(ptr %a) {
; O1-LABEL: atomic8_or_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection50:
+; O1-NEXT: .Lpcsection58:
; O1-NEXT: lock orb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1932,7 +1964,7 @@ define void @atomic8_or_seq_cst(ptr %a) {
; O2-LABEL: atomic8_or_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection50:
+; O2-NEXT: .Lpcsection58:
; O2-NEXT: lock orb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1940,7 +1972,7 @@ define void @atomic8_or_seq_cst(ptr %a) {
; O3-LABEL: atomic8_or_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection50:
+; O3-NEXT: .Lpcsection58:
; O3-NEXT: lock orb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1955,7 +1987,7 @@ define void @atomic8_xor_seq_cst(ptr %a) {
; O0-LABEL: atomic8_xor_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection59:
+; O0-NEXT: .Lpcsection67:
; O0-NEXT: lock xorb $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -1963,7 +1995,7 @@ define void @atomic8_xor_seq_cst(ptr %a) {
; O1-LABEL: atomic8_xor_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection51:
+; O1-NEXT: .Lpcsection59:
; O1-NEXT: lock xorb $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -1971,7 +2003,7 @@ define void @atomic8_xor_seq_cst(ptr %a) {
; O2-LABEL: atomic8_xor_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection51:
+; O2-NEXT: .Lpcsection59:
; O2-NEXT: lock xorb $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -1979,7 +2011,7 @@ define void @atomic8_xor_seq_cst(ptr %a) {
; O3-LABEL: atomic8_xor_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection51:
+; O3-NEXT: .Lpcsection59:
; O3-NEXT: lock xorb $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -1995,7 +2027,7 @@ define void @atomic8_nand_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection60:
+; O0-NEXT: .Lpcsection68:
; O0-NEXT: movb (%rdi), %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: .LBB44_1: # %atomicrmw.start
@@ -2003,16 +2035,18 @@ define void @atomic8_nand_seq_cst(ptr %a) {
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movb %al, %dl
+; O0-NEXT: .Lpcsection69:
; O0-NEXT: notb %dl
-; O0-NEXT: .Lpcsection61:
+; O0-NEXT: .Lpcsection70:
; O0-NEXT: orb $-43, %dl
+; O0-NEXT: .Lpcsection71:
; O0-NEXT: lock cmpxchgb %dl, (%rcx)
-; O0-NEXT: .Lpcsection62:
+; O0-NEXT: .Lpcsection72:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection63:
+; O0-NEXT: .Lpcsection73:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
-; O0-NEXT: .Lpcsection64:
+; O0-NEXT: .Lpcsection74:
; O0-NEXT: jne .LBB44_2
; O0-NEXT: jmp .LBB44_1
; O0-NEXT: .LBB44_2: # %atomicrmw.end
@@ -2022,17 +2056,19 @@ define void @atomic8_nand_seq_cst(ptr %a) {
; O1-LABEL: atomic8_nand_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection52:
+; O1-NEXT: .Lpcsection60:
; O1-NEXT: movzbl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB44_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection61:
; O1-NEXT: notb %cl
-; O1-NEXT: .Lpcsection53:
+; O1-NEXT: .Lpcsection62:
; O1-NEXT: orb $-43, %cl
+; O1-NEXT: .Lpcsection63:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
-; O1-NEXT: .Lpcsection54:
+; O1-NEXT: .Lpcsection64:
; O1-NEXT: jne .LBB44_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -2041,17 +2077,19 @@ define void @atomic8_nand_seq_cst(ptr %a) {
; O2-LABEL: atomic8_nand_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection52:
+; O2-NEXT: .Lpcsection60:
; O2-NEXT: movzbl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB44_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection61:
; O2-NEXT: notb %cl
-; O2-NEXT: .Lpcsection53:
+; O2-NEXT: .Lpcsection62:
; O2-NEXT: orb $-43, %cl
+; O2-NEXT: .Lpcsection63:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
-; O2-NEXT: .Lpcsection54:
+; O2-NEXT: .Lpcsection64:
; O2-NEXT: jne .LBB44_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -2060,17 +2098,19 @@ define void @atomic8_nand_seq_cst(ptr %a) {
; O3-LABEL: atomic8_nand_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection52:
+; O3-NEXT: .Lpcsection60:
; O3-NEXT: movzbl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB44_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection61:
; O3-NEXT: notb %cl
-; O3-NEXT: .Lpcsection53:
+; O3-NEXT: .Lpcsection62:
; O3-NEXT: orb $-43, %cl
+; O3-NEXT: .Lpcsection63:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
-; O3-NEXT: .Lpcsection54:
+; O3-NEXT: .Lpcsection64:
; O3-NEXT: jne .LBB44_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -2089,14 +2129,17 @@ define void @atomic8_cas_monotonic(ptr %a) {
; O0-NEXT: movb $42, %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: movb $1, %cl
+; O0-NEXT: .Lpcsection75:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection65:
+; O0-NEXT: .Lpcsection76:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection77:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection66:
+; O0-NEXT: .Lpcsection78:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection79:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2106,10 +2149,13 @@ define void @atomic8_cas_monotonic(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $1, %cl
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection65:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection66:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection67:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2119,10 +2165,13 @@ define void @atomic8_cas_monotonic(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $1, %cl
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection65:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection66:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection67:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2132,10 +2181,13 @@ define void @atomic8_cas_monotonic(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $1, %cl
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection65:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection66:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection67:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2155,14 +2207,17 @@ define void @atomic8_cas_acquire(ptr %a) {
; O0-NEXT: movb $42, %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: movb $1, %cl
+; O0-NEXT: .Lpcsection80:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection67:
+; O0-NEXT: .Lpcsection81:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection82:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection68:
+; O0-NEXT: .Lpcsection83:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection84:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2172,10 +2227,13 @@ define void @atomic8_cas_acquire(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $1, %cl
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection68:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection69:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection70:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2185,10 +2243,13 @@ define void @atomic8_cas_acquire(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $1, %cl
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection68:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection69:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection70:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2198,10 +2259,13 @@ define void @atomic8_cas_acquire(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $1, %cl
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection68:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection69:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection70:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2221,14 +2285,17 @@ define void @atomic8_cas_release(ptr %a) {
; O0-NEXT: movb $42, %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: movb $1, %cl
+; O0-NEXT: .Lpcsection85:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection69:
+; O0-NEXT: .Lpcsection86:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection87:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection70:
+; O0-NEXT: .Lpcsection88:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection89:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2238,10 +2305,13 @@ define void @atomic8_cas_release(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $1, %cl
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection71:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection72:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection73:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2251,10 +2321,13 @@ define void @atomic8_cas_release(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $1, %cl
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection71:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection72:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection73:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2264,10 +2337,13 @@ define void @atomic8_cas_release(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $1, %cl
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection71:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection72:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection73:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2287,14 +2363,17 @@ define void @atomic8_cas_acq_rel(ptr %a) {
; O0-NEXT: movb $42, %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: movb $1, %cl
+; O0-NEXT: .Lpcsection90:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection71:
+; O0-NEXT: .Lpcsection91:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection92:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection72:
+; O0-NEXT: .Lpcsection93:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection94:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2304,10 +2383,13 @@ define void @atomic8_cas_acq_rel(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $1, %cl
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection74:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection75:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection76:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2317,10 +2399,13 @@ define void @atomic8_cas_acq_rel(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $1, %cl
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection74:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection75:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection76:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2330,10 +2415,13 @@ define void @atomic8_cas_acq_rel(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $1, %cl
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection74:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection75:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection76:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2353,14 +2441,17 @@ define void @atomic8_cas_seq_cst(ptr %a) {
; O0-NEXT: movb $42, %al
; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
; O0-NEXT: movb $1, %cl
+; O0-NEXT: .Lpcsection95:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection73:
+; O0-NEXT: .Lpcsection96:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection97:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
-; O0-NEXT: .Lpcsection74:
+; O0-NEXT: .Lpcsection98:
; O0-NEXT: # kill: def $dl killed $al
; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
+; O0-NEXT: .Lpcsection99:
; O0-NEXT: lock cmpxchgb %cl, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2370,10 +2461,13 @@ define void @atomic8_cas_seq_cst(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movb $1, %cl
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection77:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection78:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movb $42, %al
+; O1-NEXT: .Lpcsection79:
; O1-NEXT: lock cmpxchgb %cl, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2383,10 +2477,13 @@ define void @atomic8_cas_seq_cst(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movb $1, %cl
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection77:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection78:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movb $42, %al
+; O2-NEXT: .Lpcsection79:
; O2-NEXT: lock cmpxchgb %cl, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2396,10 +2493,13 @@ define void @atomic8_cas_seq_cst(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movb $1, %cl
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection77:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection78:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movb $42, %al
+; O3-NEXT: .Lpcsection79:
; O3-NEXT: lock cmpxchgb %cl, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2416,7 +2516,7 @@ define i16 @atomic16_load_unordered(ptr %a) {
; O0-LABEL: atomic16_load_unordered:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection75:
+; O0-NEXT: .Lpcsection100:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2424,7 +2524,7 @@ define i16 @atomic16_load_unordered(ptr %a) {
; O1-LABEL: atomic16_load_unordered:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection55:
+; O1-NEXT: .Lpcsection80:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2432,7 +2532,7 @@ define i16 @atomic16_load_unordered(ptr %a) {
; O2-LABEL: atomic16_load_unordered:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection55:
+; O2-NEXT: .Lpcsection80:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2440,7 +2540,7 @@ define i16 @atomic16_load_unordered(ptr %a) {
; O3-LABEL: atomic16_load_unordered:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection55:
+; O3-NEXT: .Lpcsection80:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2455,7 +2555,7 @@ define i16 @atomic16_load_monotonic(ptr %a) {
; O0-LABEL: atomic16_load_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection76:
+; O0-NEXT: .Lpcsection101:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2463,7 +2563,7 @@ define i16 @atomic16_load_monotonic(ptr %a) {
; O1-LABEL: atomic16_load_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection56:
+; O1-NEXT: .Lpcsection81:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2471,7 +2571,7 @@ define i16 @atomic16_load_monotonic(ptr %a) {
; O2-LABEL: atomic16_load_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection56:
+; O2-NEXT: .Lpcsection81:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2479,7 +2579,7 @@ define i16 @atomic16_load_monotonic(ptr %a) {
; O3-LABEL: atomic16_load_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection56:
+; O3-NEXT: .Lpcsection81:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2494,7 +2594,7 @@ define i16 @atomic16_load_acquire(ptr %a) {
; O0-LABEL: atomic16_load_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection77:
+; O0-NEXT: .Lpcsection102:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2502,7 +2602,7 @@ define i16 @atomic16_load_acquire(ptr %a) {
; O1-LABEL: atomic16_load_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection57:
+; O1-NEXT: .Lpcsection82:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2510,7 +2610,7 @@ define i16 @atomic16_load_acquire(ptr %a) {
; O2-LABEL: atomic16_load_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection57:
+; O2-NEXT: .Lpcsection82:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2518,7 +2618,7 @@ define i16 @atomic16_load_acquire(ptr %a) {
; O3-LABEL: atomic16_load_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection57:
+; O3-NEXT: .Lpcsection82:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2533,7 +2633,7 @@ define i16 @atomic16_load_seq_cst(ptr %a) {
; O0-LABEL: atomic16_load_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection78:
+; O0-NEXT: .Lpcsection103:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2541,7 +2641,7 @@ define i16 @atomic16_load_seq_cst(ptr %a) {
; O1-LABEL: atomic16_load_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection58:
+; O1-NEXT: .Lpcsection83:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2549,7 +2649,7 @@ define i16 @atomic16_load_seq_cst(ptr %a) {
; O2-LABEL: atomic16_load_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection58:
+; O2-NEXT: .Lpcsection83:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2557,7 +2657,7 @@ define i16 @atomic16_load_seq_cst(ptr %a) {
; O3-LABEL: atomic16_load_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection58:
+; O3-NEXT: .Lpcsection83:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2572,7 +2672,7 @@ define void @atomic16_store_unordered(ptr %a) {
; O0-LABEL: atomic16_store_unordered:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection79:
+; O0-NEXT: .Lpcsection104:
; O0-NEXT: movw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2580,7 +2680,7 @@ define void @atomic16_store_unordered(ptr %a) {
; O1-LABEL: atomic16_store_unordered:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection59:
+; O1-NEXT: .Lpcsection84:
; O1-NEXT: movw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2588,7 +2688,7 @@ define void @atomic16_store_unordered(ptr %a) {
; O2-LABEL: atomic16_store_unordered:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection59:
+; O2-NEXT: .Lpcsection84:
; O2-NEXT: movw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2596,7 +2696,7 @@ define void @atomic16_store_unordered(ptr %a) {
; O3-LABEL: atomic16_store_unordered:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection59:
+; O3-NEXT: .Lpcsection84:
; O3-NEXT: movw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2611,7 +2711,7 @@ define void @atomic16_store_monotonic(ptr %a) {
; O0-LABEL: atomic16_store_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection80:
+; O0-NEXT: .Lpcsection105:
; O0-NEXT: movw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2619,7 +2719,7 @@ define void @atomic16_store_monotonic(ptr %a) {
; O1-LABEL: atomic16_store_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection60:
+; O1-NEXT: .Lpcsection85:
; O1-NEXT: movw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2627,7 +2727,7 @@ define void @atomic16_store_monotonic(ptr %a) {
; O2-LABEL: atomic16_store_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection60:
+; O2-NEXT: .Lpcsection85:
; O2-NEXT: movw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2635,7 +2735,7 @@ define void @atomic16_store_monotonic(ptr %a) {
; O3-LABEL: atomic16_store_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection60:
+; O3-NEXT: .Lpcsection85:
; O3-NEXT: movw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2650,7 +2750,7 @@ define void @atomic16_store_release(ptr %a) {
; O0-LABEL: atomic16_store_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection81:
+; O0-NEXT: .Lpcsection106:
; O0-NEXT: movw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2658,7 +2758,7 @@ define void @atomic16_store_release(ptr %a) {
; O1-LABEL: atomic16_store_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection61:
+; O1-NEXT: .Lpcsection86:
; O1-NEXT: movw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2666,7 +2766,7 @@ define void @atomic16_store_release(ptr %a) {
; O2-LABEL: atomic16_store_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection61:
+; O2-NEXT: .Lpcsection86:
; O2-NEXT: movw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2674,7 +2774,7 @@ define void @atomic16_store_release(ptr %a) {
; O3-LABEL: atomic16_store_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection61:
+; O3-NEXT: .Lpcsection86:
; O3-NEXT: movw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2690,7 +2790,7 @@ define void @atomic16_store_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movw $42, %ax
-; O0-NEXT: .Lpcsection82:
+; O0-NEXT: .Lpcsection107:
; O0-NEXT: xchgw %ax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2699,7 +2799,7 @@ define void @atomic16_store_seq_cst(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $42, %ax
-; O1-NEXT: .Lpcsection62:
+; O1-NEXT: .Lpcsection87:
; O1-NEXT: xchgw %ax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2708,7 +2808,7 @@ define void @atomic16_store_seq_cst(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $42, %ax
-; O2-NEXT: .Lpcsection62:
+; O2-NEXT: .Lpcsection87:
; O2-NEXT: xchgw %ax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2717,7 +2817,7 @@ define void @atomic16_store_seq_cst(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $42, %ax
-; O3-NEXT: .Lpcsection62:
+; O3-NEXT: .Lpcsection87:
; O3-NEXT: xchgw %ax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2733,7 +2833,7 @@ define void @atomic16_xchg_monotonic(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movw $42, %ax
-; O0-NEXT: .Lpcsection83:
+; O0-NEXT: .Lpcsection108:
; O0-NEXT: xchgw %ax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2742,7 +2842,7 @@ define void @atomic16_xchg_monotonic(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $42, %ax
-; O1-NEXT: .Lpcsection63:
+; O1-NEXT: .Lpcsection88:
; O1-NEXT: xchgw %ax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2751,7 +2851,7 @@ define void @atomic16_xchg_monotonic(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $42, %ax
-; O2-NEXT: .Lpcsection63:
+; O2-NEXT: .Lpcsection88:
; O2-NEXT: xchgw %ax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2760,7 +2860,7 @@ define void @atomic16_xchg_monotonic(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $42, %ax
-; O3-NEXT: .Lpcsection63:
+; O3-NEXT: .Lpcsection88:
; O3-NEXT: xchgw %ax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2775,7 +2875,7 @@ define void @atomic16_add_monotonic(ptr %a) {
; O0-LABEL: atomic16_add_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection84:
+; O0-NEXT: .Lpcsection109:
; O0-NEXT: lock addw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2783,7 +2883,7 @@ define void @atomic16_add_monotonic(ptr %a) {
; O1-LABEL: atomic16_add_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection64:
+; O1-NEXT: .Lpcsection89:
; O1-NEXT: lock addw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2791,7 +2891,7 @@ define void @atomic16_add_monotonic(ptr %a) {
; O2-LABEL: atomic16_add_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection64:
+; O2-NEXT: .Lpcsection89:
; O2-NEXT: lock addw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2799,7 +2899,7 @@ define void @atomic16_add_monotonic(ptr %a) {
; O3-LABEL: atomic16_add_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection64:
+; O3-NEXT: .Lpcsection89:
; O3-NEXT: lock addw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2814,7 +2914,7 @@ define void @atomic16_sub_monotonic(ptr %a) {
; O0-LABEL: atomic16_sub_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection85:
+; O0-NEXT: .Lpcsection110:
; O0-NEXT: lock subw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2822,7 +2922,7 @@ define void @atomic16_sub_monotonic(ptr %a) {
; O1-LABEL: atomic16_sub_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection65:
+; O1-NEXT: .Lpcsection90:
; O1-NEXT: lock subw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2830,7 +2930,7 @@ define void @atomic16_sub_monotonic(ptr %a) {
; O2-LABEL: atomic16_sub_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection65:
+; O2-NEXT: .Lpcsection90:
; O2-NEXT: lock subw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2838,7 +2938,7 @@ define void @atomic16_sub_monotonic(ptr %a) {
; O3-LABEL: atomic16_sub_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection65:
+; O3-NEXT: .Lpcsection90:
; O3-NEXT: lock subw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2853,7 +2953,7 @@ define void @atomic16_and_monotonic(ptr %a) {
; O0-LABEL: atomic16_and_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection86:
+; O0-NEXT: .Lpcsection111:
; O0-NEXT: lock andw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2861,7 +2961,7 @@ define void @atomic16_and_monotonic(ptr %a) {
; O1-LABEL: atomic16_and_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection66:
+; O1-NEXT: .Lpcsection91:
; O1-NEXT: lock andw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2869,7 +2969,7 @@ define void @atomic16_and_monotonic(ptr %a) {
; O2-LABEL: atomic16_and_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection66:
+; O2-NEXT: .Lpcsection91:
; O2-NEXT: lock andw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2877,7 +2977,7 @@ define void @atomic16_and_monotonic(ptr %a) {
; O3-LABEL: atomic16_and_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection66:
+; O3-NEXT: .Lpcsection91:
; O3-NEXT: lock andw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2892,7 +2992,7 @@ define void @atomic16_or_monotonic(ptr %a) {
; O0-LABEL: atomic16_or_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection87:
+; O0-NEXT: .Lpcsection112:
; O0-NEXT: lock orw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2900,7 +3000,7 @@ define void @atomic16_or_monotonic(ptr %a) {
; O1-LABEL: atomic16_or_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection67:
+; O1-NEXT: .Lpcsection92:
; O1-NEXT: lock orw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2908,7 +3008,7 @@ define void @atomic16_or_monotonic(ptr %a) {
; O2-LABEL: atomic16_or_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection67:
+; O2-NEXT: .Lpcsection92:
; O2-NEXT: lock orw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2916,7 +3016,7 @@ define void @atomic16_or_monotonic(ptr %a) {
; O3-LABEL: atomic16_or_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection67:
+; O3-NEXT: .Lpcsection92:
; O3-NEXT: lock orw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2931,7 +3031,7 @@ define void @atomic16_xor_monotonic(ptr %a) {
; O0-LABEL: atomic16_xor_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection88:
+; O0-NEXT: .Lpcsection113:
; O0-NEXT: lock xorw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -2939,7 +3039,7 @@ define void @atomic16_xor_monotonic(ptr %a) {
; O1-LABEL: atomic16_xor_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection68:
+; O1-NEXT: .Lpcsection93:
; O1-NEXT: lock xorw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -2947,7 +3047,7 @@ define void @atomic16_xor_monotonic(ptr %a) {
; O2-LABEL: atomic16_xor_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection68:
+; O2-NEXT: .Lpcsection93:
; O2-NEXT: lock xorw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -2955,7 +3055,7 @@ define void @atomic16_xor_monotonic(ptr %a) {
; O3-LABEL: atomic16_xor_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection68:
+; O3-NEXT: .Lpcsection93:
; O3-NEXT: lock xorw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -2971,26 +3071,30 @@ define void @atomic16_nand_monotonic(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection89:
+; O0-NEXT: .Lpcsection114:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: .LBB64_1: # %atomicrmw.start
; O0-NEXT: # =>This Inner Loop Header: Depth=1
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
+; O0-NEXT: .Lpcsection115:
; O0-NEXT: # implicit-def: $edx
; O0-NEXT: movw %ax, %dx
+; O0-NEXT: .Lpcsection116:
; O0-NEXT: notl %edx
+; O0-NEXT: .Lpcsection117:
; O0-NEXT: orl $65493, %edx # imm = 0xFFD5
-; O0-NEXT: .Lpcsection90:
+; O0-NEXT: .Lpcsection118:
; O0-NEXT: # kill: def $dx killed $dx killed $edx
+; O0-NEXT: .Lpcsection119:
; O0-NEXT: lock cmpxchgw %dx, (%rcx)
-; O0-NEXT: .Lpcsection91:
+; O0-NEXT: .Lpcsection120:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection92:
+; O0-NEXT: .Lpcsection121:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
-; O0-NEXT: .Lpcsection93:
+; O0-NEXT: .Lpcsection122:
; O0-NEXT: jne .LBB64_2
; O0-NEXT: jmp .LBB64_1
; O0-NEXT: .LBB64_2: # %atomicrmw.end
@@ -3000,19 +3104,23 @@ define void @atomic16_nand_monotonic(ptr %a) {
; O1-LABEL: atomic16_nand_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection69:
+; O1-NEXT: .Lpcsection94:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB64_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection95:
; O1-NEXT: notl %ecx
+; O1-NEXT: .Lpcsection96:
; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O1-NEXT: .Lpcsection97:
; O1-NEXT: # kill: def $ax killed $ax killed $eax
+; O1-NEXT: .Lpcsection98:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
-; O1-NEXT: .Lpcsection70:
+; O1-NEXT: .Lpcsection99:
; O1-NEXT: # kill: def $ax killed $ax def $eax
-; O1-NEXT: .Lpcsection71:
+; O1-NEXT: .Lpcsection100:
; O1-NEXT: jne .LBB64_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -3021,19 +3129,23 @@ define void @atomic16_nand_monotonic(ptr %a) {
; O2-LABEL: atomic16_nand_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection69:
+; O2-NEXT: .Lpcsection94:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB64_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection95:
; O2-NEXT: notl %ecx
+; O2-NEXT: .Lpcsection96:
; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O2-NEXT: .Lpcsection97:
; O2-NEXT: # kill: def $ax killed $ax killed $eax
+; O2-NEXT: .Lpcsection98:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
-; O2-NEXT: .Lpcsection70:
+; O2-NEXT: .Lpcsection99:
; O2-NEXT: # kill: def $ax killed $ax def $eax
-; O2-NEXT: .Lpcsection71:
+; O2-NEXT: .Lpcsection100:
; O2-NEXT: jne .LBB64_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -3042,19 +3154,23 @@ define void @atomic16_nand_monotonic(ptr %a) {
; O3-LABEL: atomic16_nand_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection69:
+; O3-NEXT: .Lpcsection94:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB64_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection95:
; O3-NEXT: notl %ecx
+; O3-NEXT: .Lpcsection96:
; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O3-NEXT: .Lpcsection97:
; O3-NEXT: # kill: def $ax killed $ax killed $eax
+; O3-NEXT: .Lpcsection98:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
-; O3-NEXT: .Lpcsection70:
+; O3-NEXT: .Lpcsection99:
; O3-NEXT: # kill: def $ax killed $ax def $eax
-; O3-NEXT: .Lpcsection71:
+; O3-NEXT: .Lpcsection100:
; O3-NEXT: jne .LBB64_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -3071,7 +3187,7 @@ define void @atomic16_xchg_acquire(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movw $42, %ax
-; O0-NEXT: .Lpcsection94:
+; O0-NEXT: .Lpcsection123:
; O0-NEXT: xchgw %ax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3080,7 +3196,7 @@ define void @atomic16_xchg_acquire(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $42, %ax
-; O1-NEXT: .Lpcsection72:
+; O1-NEXT: .Lpcsection101:
; O1-NEXT: xchgw %ax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3089,7 +3205,7 @@ define void @atomic16_xchg_acquire(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $42, %ax
-; O2-NEXT: .Lpcsection72:
+; O2-NEXT: .Lpcsection101:
; O2-NEXT: xchgw %ax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3098,7 +3214,7 @@ define void @atomic16_xchg_acquire(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $42, %ax
-; O3-NEXT: .Lpcsection72:
+; O3-NEXT: .Lpcsection101:
; O3-NEXT: xchgw %ax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3113,7 +3229,7 @@ define void @atomic16_add_acquire(ptr %a) {
; O0-LABEL: atomic16_add_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection95:
+; O0-NEXT: .Lpcsection124:
; O0-NEXT: lock addw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3121,7 +3237,7 @@ define void @atomic16_add_acquire(ptr %a) {
; O1-LABEL: atomic16_add_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection73:
+; O1-NEXT: .Lpcsection102:
; O1-NEXT: lock addw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3129,7 +3245,7 @@ define void @atomic16_add_acquire(ptr %a) {
; O2-LABEL: atomic16_add_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection73:
+; O2-NEXT: .Lpcsection102:
; O2-NEXT: lock addw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3137,7 +3253,7 @@ define void @atomic16_add_acquire(ptr %a) {
; O3-LABEL: atomic16_add_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection73:
+; O3-NEXT: .Lpcsection102:
; O3-NEXT: lock addw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3152,7 +3268,7 @@ define void @atomic16_sub_acquire(ptr %a) {
; O0-LABEL: atomic16_sub_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection96:
+; O0-NEXT: .Lpcsection125:
; O0-NEXT: lock subw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3160,7 +3276,7 @@ define void @atomic16_sub_acquire(ptr %a) {
; O1-LABEL: atomic16_sub_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection74:
+; O1-NEXT: .Lpcsection103:
; O1-NEXT: lock subw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3168,7 +3284,7 @@ define void @atomic16_sub_acquire(ptr %a) {
; O2-LABEL: atomic16_sub_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection74:
+; O2-NEXT: .Lpcsection103:
; O2-NEXT: lock subw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3176,7 +3292,7 @@ define void @atomic16_sub_acquire(ptr %a) {
; O3-LABEL: atomic16_sub_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection74:
+; O3-NEXT: .Lpcsection103:
; O3-NEXT: lock subw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3191,7 +3307,7 @@ define void @atomic16_and_acquire(ptr %a) {
; O0-LABEL: atomic16_and_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection97:
+; O0-NEXT: .Lpcsection126:
; O0-NEXT: lock andw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3199,7 +3315,7 @@ define void @atomic16_and_acquire(ptr %a) {
; O1-LABEL: atomic16_and_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection75:
+; O1-NEXT: .Lpcsection104:
; O1-NEXT: lock andw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3207,7 +3323,7 @@ define void @atomic16_and_acquire(ptr %a) {
; O2-LABEL: atomic16_and_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection75:
+; O2-NEXT: .Lpcsection104:
; O2-NEXT: lock andw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3215,7 +3331,7 @@ define void @atomic16_and_acquire(ptr %a) {
; O3-LABEL: atomic16_and_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection75:
+; O3-NEXT: .Lpcsection104:
; O3-NEXT: lock andw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3230,7 +3346,7 @@ define void @atomic16_or_acquire(ptr %a) {
; O0-LABEL: atomic16_or_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection98:
+; O0-NEXT: .Lpcsection127:
; O0-NEXT: lock orw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3238,7 +3354,7 @@ define void @atomic16_or_acquire(ptr %a) {
; O1-LABEL: atomic16_or_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection76:
+; O1-NEXT: .Lpcsection105:
; O1-NEXT: lock orw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3246,7 +3362,7 @@ define void @atomic16_or_acquire(ptr %a) {
; O2-LABEL: atomic16_or_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection76:
+; O2-NEXT: .Lpcsection105:
; O2-NEXT: lock orw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3254,7 +3370,7 @@ define void @atomic16_or_acquire(ptr %a) {
; O3-LABEL: atomic16_or_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection76:
+; O3-NEXT: .Lpcsection105:
; O3-NEXT: lock orw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3269,7 +3385,7 @@ define void @atomic16_xor_acquire(ptr %a) {
; O0-LABEL: atomic16_xor_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection99:
+; O0-NEXT: .Lpcsection128:
; O0-NEXT: lock xorw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3277,7 +3393,7 @@ define void @atomic16_xor_acquire(ptr %a) {
; O1-LABEL: atomic16_xor_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection77:
+; O1-NEXT: .Lpcsection106:
; O1-NEXT: lock xorw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3285,7 +3401,7 @@ define void @atomic16_xor_acquire(ptr %a) {
; O2-LABEL: atomic16_xor_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection77:
+; O2-NEXT: .Lpcsection106:
; O2-NEXT: lock xorw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3293,7 +3409,7 @@ define void @atomic16_xor_acquire(ptr %a) {
; O3-LABEL: atomic16_xor_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection77:
+; O3-NEXT: .Lpcsection106:
; O3-NEXT: lock xorw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3309,26 +3425,30 @@ define void @atomic16_nand_acquire(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection100:
+; O0-NEXT: .Lpcsection129:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: .LBB71_1: # %atomicrmw.start
; O0-NEXT: # =>This Inner Loop Header: Depth=1
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
+; O0-NEXT: .Lpcsection130:
; O0-NEXT: # implicit-def: $edx
; O0-NEXT: movw %ax, %dx
+; O0-NEXT: .Lpcsection131:
; O0-NEXT: notl %edx
+; O0-NEXT: .Lpcsection132:
; O0-NEXT: orl $65493, %edx # imm = 0xFFD5
-; O0-NEXT: .Lpcsection101:
+; O0-NEXT: .Lpcsection133:
; O0-NEXT: # kill: def $dx killed $dx killed $edx
+; O0-NEXT: .Lpcsection134:
; O0-NEXT: lock cmpxchgw %dx, (%rcx)
-; O0-NEXT: .Lpcsection102:
+; O0-NEXT: .Lpcsection135:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection103:
+; O0-NEXT: .Lpcsection136:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
-; O0-NEXT: .Lpcsection104:
+; O0-NEXT: .Lpcsection137:
; O0-NEXT: jne .LBB71_2
; O0-NEXT: jmp .LBB71_1
; O0-NEXT: .LBB71_2: # %atomicrmw.end
@@ -3338,19 +3458,23 @@ define void @atomic16_nand_acquire(ptr %a) {
; O1-LABEL: atomic16_nand_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection78:
+; O1-NEXT: .Lpcsection107:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB71_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection108:
; O1-NEXT: notl %ecx
+; O1-NEXT: .Lpcsection109:
; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O1-NEXT: .Lpcsection110:
; O1-NEXT: # kill: def $ax killed $ax killed $eax
+; O1-NEXT: .Lpcsection111:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
-; O1-NEXT: .Lpcsection79:
+; O1-NEXT: .Lpcsection112:
; O1-NEXT: # kill: def $ax killed $ax def $eax
-; O1-NEXT: .Lpcsection80:
+; O1-NEXT: .Lpcsection113:
; O1-NEXT: jne .LBB71_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -3359,19 +3483,23 @@ define void @atomic16_nand_acquire(ptr %a) {
; O2-LABEL: atomic16_nand_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection78:
+; O2-NEXT: .Lpcsection107:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB71_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection108:
; O2-NEXT: notl %ecx
+; O2-NEXT: .Lpcsection109:
; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O2-NEXT: .Lpcsection110:
; O2-NEXT: # kill: def $ax killed $ax killed $eax
+; O2-NEXT: .Lpcsection111:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
-; O2-NEXT: .Lpcsection79:
+; O2-NEXT: .Lpcsection112:
; O2-NEXT: # kill: def $ax killed $ax def $eax
-; O2-NEXT: .Lpcsection80:
+; O2-NEXT: .Lpcsection113:
; O2-NEXT: jne .LBB71_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -3380,19 +3508,23 @@ define void @atomic16_nand_acquire(ptr %a) {
; O3-LABEL: atomic16_nand_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection78:
+; O3-NEXT: .Lpcsection107:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB71_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection108:
; O3-NEXT: notl %ecx
+; O3-NEXT: .Lpcsection109:
; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O3-NEXT: .Lpcsection110:
; O3-NEXT: # kill: def $ax killed $ax killed $eax
+; O3-NEXT: .Lpcsection111:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
-; O3-NEXT: .Lpcsection79:
+; O3-NEXT: .Lpcsection112:
; O3-NEXT: # kill: def $ax killed $ax def $eax
-; O3-NEXT: .Lpcsection80:
+; O3-NEXT: .Lpcsection113:
; O3-NEXT: jne .LBB71_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -3409,7 +3541,7 @@ define void @atomic16_xchg_release(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movw $42, %ax
-; O0-NEXT: .Lpcsection105:
+; O0-NEXT: .Lpcsection138:
; O0-NEXT: xchgw %ax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3418,7 +3550,7 @@ define void @atomic16_xchg_release(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $42, %ax
-; O1-NEXT: .Lpcsection81:
+; O1-NEXT: .Lpcsection114:
; O1-NEXT: xchgw %ax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3427,7 +3559,7 @@ define void @atomic16_xchg_release(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $42, %ax
-; O2-NEXT: .Lpcsection81:
+; O2-NEXT: .Lpcsection114:
; O2-NEXT: xchgw %ax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3436,7 +3568,7 @@ define void @atomic16_xchg_release(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $42, %ax
-; O3-NEXT: .Lpcsection81:
+; O3-NEXT: .Lpcsection114:
; O3-NEXT: xchgw %ax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3451,7 +3583,7 @@ define void @atomic16_add_release(ptr %a) {
; O0-LABEL: atomic16_add_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection106:
+; O0-NEXT: .Lpcsection139:
; O0-NEXT: lock addw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3459,7 +3591,7 @@ define void @atomic16_add_release(ptr %a) {
; O1-LABEL: atomic16_add_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection82:
+; O1-NEXT: .Lpcsection115:
; O1-NEXT: lock addw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3467,7 +3599,7 @@ define void @atomic16_add_release(ptr %a) {
; O2-LABEL: atomic16_add_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection82:
+; O2-NEXT: .Lpcsection115:
; O2-NEXT: lock addw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3475,7 +3607,7 @@ define void @atomic16_add_release(ptr %a) {
; O3-LABEL: atomic16_add_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection82:
+; O3-NEXT: .Lpcsection115:
; O3-NEXT: lock addw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3490,7 +3622,7 @@ define void @atomic16_sub_release(ptr %a) {
; O0-LABEL: atomic16_sub_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection107:
+; O0-NEXT: .Lpcsection140:
; O0-NEXT: lock subw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3498,7 +3630,7 @@ define void @atomic16_sub_release(ptr %a) {
; O1-LABEL: atomic16_sub_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection83:
+; O1-NEXT: .Lpcsection116:
; O1-NEXT: lock subw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3506,7 +3638,7 @@ define void @atomic16_sub_release(ptr %a) {
; O2-LABEL: atomic16_sub_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection83:
+; O2-NEXT: .Lpcsection116:
; O2-NEXT: lock subw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3514,7 +3646,7 @@ define void @atomic16_sub_release(ptr %a) {
; O3-LABEL: atomic16_sub_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection83:
+; O3-NEXT: .Lpcsection116:
; O3-NEXT: lock subw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3529,7 +3661,7 @@ define void @atomic16_and_release(ptr %a) {
; O0-LABEL: atomic16_and_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection108:
+; O0-NEXT: .Lpcsection141:
; O0-NEXT: lock andw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3537,7 +3669,7 @@ define void @atomic16_and_release(ptr %a) {
; O1-LABEL: atomic16_and_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection84:
+; O1-NEXT: .Lpcsection117:
; O1-NEXT: lock andw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3545,7 +3677,7 @@ define void @atomic16_and_release(ptr %a) {
; O2-LABEL: atomic16_and_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection84:
+; O2-NEXT: .Lpcsection117:
; O2-NEXT: lock andw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3553,7 +3685,7 @@ define void @atomic16_and_release(ptr %a) {
; O3-LABEL: atomic16_and_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection84:
+; O3-NEXT: .Lpcsection117:
; O3-NEXT: lock andw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3568,7 +3700,7 @@ define void @atomic16_or_release(ptr %a) {
; O0-LABEL: atomic16_or_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection109:
+; O0-NEXT: .Lpcsection142:
; O0-NEXT: lock orw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3576,7 +3708,7 @@ define void @atomic16_or_release(ptr %a) {
; O1-LABEL: atomic16_or_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection85:
+; O1-NEXT: .Lpcsection118:
; O1-NEXT: lock orw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3584,7 +3716,7 @@ define void @atomic16_or_release(ptr %a) {
; O2-LABEL: atomic16_or_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection85:
+; O2-NEXT: .Lpcsection118:
; O2-NEXT: lock orw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3592,7 +3724,7 @@ define void @atomic16_or_release(ptr %a) {
; O3-LABEL: atomic16_or_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection85:
+; O3-NEXT: .Lpcsection118:
; O3-NEXT: lock orw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3607,7 +3739,7 @@ define void @atomic16_xor_release(ptr %a) {
; O0-LABEL: atomic16_xor_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection110:
+; O0-NEXT: .Lpcsection143:
; O0-NEXT: lock xorw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3615,7 +3747,7 @@ define void @atomic16_xor_release(ptr %a) {
; O1-LABEL: atomic16_xor_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection86:
+; O1-NEXT: .Lpcsection119:
; O1-NEXT: lock xorw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3623,7 +3755,7 @@ define void @atomic16_xor_release(ptr %a) {
; O2-LABEL: atomic16_xor_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection86:
+; O2-NEXT: .Lpcsection119:
; O2-NEXT: lock xorw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3631,7 +3763,7 @@ define void @atomic16_xor_release(ptr %a) {
; O3-LABEL: atomic16_xor_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection86:
+; O3-NEXT: .Lpcsection119:
; O3-NEXT: lock xorw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3647,26 +3779,30 @@ define void @atomic16_nand_release(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection111:
+; O0-NEXT: .Lpcsection144:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: .LBB78_1: # %atomicrmw.start
; O0-NEXT: # =>This Inner Loop Header: Depth=1
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
+; O0-NEXT: .Lpcsection145:
; O0-NEXT: # implicit-def: $edx
; O0-NEXT: movw %ax, %dx
+; O0-NEXT: .Lpcsection146:
; O0-NEXT: notl %edx
+; O0-NEXT: .Lpcsection147:
; O0-NEXT: orl $65493, %edx # imm = 0xFFD5
-; O0-NEXT: .Lpcsection112:
+; O0-NEXT: .Lpcsection148:
; O0-NEXT: # kill: def $dx killed $dx killed $edx
+; O0-NEXT: .Lpcsection149:
; O0-NEXT: lock cmpxchgw %dx, (%rcx)
-; O0-NEXT: .Lpcsection113:
+; O0-NEXT: .Lpcsection150:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection114:
+; O0-NEXT: .Lpcsection151:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
-; O0-NEXT: .Lpcsection115:
+; O0-NEXT: .Lpcsection152:
; O0-NEXT: jne .LBB78_2
; O0-NEXT: jmp .LBB78_1
; O0-NEXT: .LBB78_2: # %atomicrmw.end
@@ -3676,19 +3812,23 @@ define void @atomic16_nand_release(ptr %a) {
; O1-LABEL: atomic16_nand_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection87:
+; O1-NEXT: .Lpcsection120:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB78_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection121:
; O1-NEXT: notl %ecx
+; O1-NEXT: .Lpcsection122:
; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O1-NEXT: .Lpcsection123:
; O1-NEXT: # kill: def $ax killed $ax killed $eax
+; O1-NEXT: .Lpcsection124:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
-; O1-NEXT: .Lpcsection88:
+; O1-NEXT: .Lpcsection125:
; O1-NEXT: # kill: def $ax killed $ax def $eax
-; O1-NEXT: .Lpcsection89:
+; O1-NEXT: .Lpcsection126:
; O1-NEXT: jne .LBB78_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -3697,19 +3837,23 @@ define void @atomic16_nand_release(ptr %a) {
; O2-LABEL: atomic16_nand_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection87:
+; O2-NEXT: .Lpcsection120:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB78_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection121:
; O2-NEXT: notl %ecx
+; O2-NEXT: .Lpcsection122:
; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O2-NEXT: .Lpcsection123:
; O2-NEXT: # kill: def $ax killed $ax killed $eax
+; O2-NEXT: .Lpcsection124:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
-; O2-NEXT: .Lpcsection88:
+; O2-NEXT: .Lpcsection125:
; O2-NEXT: # kill: def $ax killed $ax def $eax
-; O2-NEXT: .Lpcsection89:
+; O2-NEXT: .Lpcsection126:
; O2-NEXT: jne .LBB78_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -3718,19 +3862,23 @@ define void @atomic16_nand_release(ptr %a) {
; O3-LABEL: atomic16_nand_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection87:
+; O3-NEXT: .Lpcsection120:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB78_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection121:
; O3-NEXT: notl %ecx
+; O3-NEXT: .Lpcsection122:
; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O3-NEXT: .Lpcsection123:
; O3-NEXT: # kill: def $ax killed $ax killed $eax
+; O3-NEXT: .Lpcsection124:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
-; O3-NEXT: .Lpcsection88:
+; O3-NEXT: .Lpcsection125:
; O3-NEXT: # kill: def $ax killed $ax def $eax
-; O3-NEXT: .Lpcsection89:
+; O3-NEXT: .Lpcsection126:
; O3-NEXT: jne .LBB78_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -3747,7 +3895,7 @@ define void @atomic16_xchg_acq_rel(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movw $42, %ax
-; O0-NEXT: .Lpcsection116:
+; O0-NEXT: .Lpcsection153:
; O0-NEXT: xchgw %ax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3756,7 +3904,7 @@ define void @atomic16_xchg_acq_rel(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $42, %ax
-; O1-NEXT: .Lpcsection90:
+; O1-NEXT: .Lpcsection127:
; O1-NEXT: xchgw %ax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3765,7 +3913,7 @@ define void @atomic16_xchg_acq_rel(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $42, %ax
-; O2-NEXT: .Lpcsection90:
+; O2-NEXT: .Lpcsection127:
; O2-NEXT: xchgw %ax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3774,7 +3922,7 @@ define void @atomic16_xchg_acq_rel(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $42, %ax
-; O3-NEXT: .Lpcsection90:
+; O3-NEXT: .Lpcsection127:
; O3-NEXT: xchgw %ax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3789,7 +3937,7 @@ define void @atomic16_add_acq_rel(ptr %a) {
; O0-LABEL: atomic16_add_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection117:
+; O0-NEXT: .Lpcsection154:
; O0-NEXT: lock addw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3797,7 +3945,7 @@ define void @atomic16_add_acq_rel(ptr %a) {
; O1-LABEL: atomic16_add_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection91:
+; O1-NEXT: .Lpcsection128:
; O1-NEXT: lock addw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3805,7 +3953,7 @@ define void @atomic16_add_acq_rel(ptr %a) {
; O2-LABEL: atomic16_add_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection91:
+; O2-NEXT: .Lpcsection128:
; O2-NEXT: lock addw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3813,7 +3961,7 @@ define void @atomic16_add_acq_rel(ptr %a) {
; O3-LABEL: atomic16_add_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection91:
+; O3-NEXT: .Lpcsection128:
; O3-NEXT: lock addw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3828,7 +3976,7 @@ define void @atomic16_sub_acq_rel(ptr %a) {
; O0-LABEL: atomic16_sub_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection118:
+; O0-NEXT: .Lpcsection155:
; O0-NEXT: lock subw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3836,7 +3984,7 @@ define void @atomic16_sub_acq_rel(ptr %a) {
; O1-LABEL: atomic16_sub_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection92:
+; O1-NEXT: .Lpcsection129:
; O1-NEXT: lock subw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3844,7 +3992,7 @@ define void @atomic16_sub_acq_rel(ptr %a) {
; O2-LABEL: atomic16_sub_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection92:
+; O2-NEXT: .Lpcsection129:
; O2-NEXT: lock subw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3852,7 +4000,7 @@ define void @atomic16_sub_acq_rel(ptr %a) {
; O3-LABEL: atomic16_sub_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection92:
+; O3-NEXT: .Lpcsection129:
; O3-NEXT: lock subw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3867,7 +4015,7 @@ define void @atomic16_and_acq_rel(ptr %a) {
; O0-LABEL: atomic16_and_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection119:
+; O0-NEXT: .Lpcsection156:
; O0-NEXT: lock andw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3875,7 +4023,7 @@ define void @atomic16_and_acq_rel(ptr %a) {
; O1-LABEL: atomic16_and_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection93:
+; O1-NEXT: .Lpcsection130:
; O1-NEXT: lock andw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3883,7 +4031,7 @@ define void @atomic16_and_acq_rel(ptr %a) {
; O2-LABEL: atomic16_and_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection93:
+; O2-NEXT: .Lpcsection130:
; O2-NEXT: lock andw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3891,7 +4039,7 @@ define void @atomic16_and_acq_rel(ptr %a) {
; O3-LABEL: atomic16_and_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection93:
+; O3-NEXT: .Lpcsection130:
; O3-NEXT: lock andw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3906,7 +4054,7 @@ define void @atomic16_or_acq_rel(ptr %a) {
; O0-LABEL: atomic16_or_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection120:
+; O0-NEXT: .Lpcsection157:
; O0-NEXT: lock orw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3914,7 +4062,7 @@ define void @atomic16_or_acq_rel(ptr %a) {
; O1-LABEL: atomic16_or_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection94:
+; O1-NEXT: .Lpcsection131:
; O1-NEXT: lock orw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3922,7 +4070,7 @@ define void @atomic16_or_acq_rel(ptr %a) {
; O2-LABEL: atomic16_or_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection94:
+; O2-NEXT: .Lpcsection131:
; O2-NEXT: lock orw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3930,7 +4078,7 @@ define void @atomic16_or_acq_rel(ptr %a) {
; O3-LABEL: atomic16_or_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection94:
+; O3-NEXT: .Lpcsection131:
; O3-NEXT: lock orw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3945,7 +4093,7 @@ define void @atomic16_xor_acq_rel(ptr %a) {
; O0-LABEL: atomic16_xor_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection121:
+; O0-NEXT: .Lpcsection158:
; O0-NEXT: lock xorw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -3953,7 +4101,7 @@ define void @atomic16_xor_acq_rel(ptr %a) {
; O1-LABEL: atomic16_xor_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection95:
+; O1-NEXT: .Lpcsection132:
; O1-NEXT: lock xorw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -3961,7 +4109,7 @@ define void @atomic16_xor_acq_rel(ptr %a) {
; O2-LABEL: atomic16_xor_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection95:
+; O2-NEXT: .Lpcsection132:
; O2-NEXT: lock xorw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -3969,7 +4117,7 @@ define void @atomic16_xor_acq_rel(ptr %a) {
; O3-LABEL: atomic16_xor_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection95:
+; O3-NEXT: .Lpcsection132:
; O3-NEXT: lock xorw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -3985,26 +4133,30 @@ define void @atomic16_nand_acq_rel(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection122:
+; O0-NEXT: .Lpcsection159:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: .LBB85_1: # %atomicrmw.start
; O0-NEXT: # =>This Inner Loop Header: Depth=1
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
+; O0-NEXT: .Lpcsection160:
; O0-NEXT: # implicit-def: $edx
; O0-NEXT: movw %ax, %dx
+; O0-NEXT: .Lpcsection161:
; O0-NEXT: notl %edx
+; O0-NEXT: .Lpcsection162:
; O0-NEXT: orl $65493, %edx # imm = 0xFFD5
-; O0-NEXT: .Lpcsection123:
+; O0-NEXT: .Lpcsection163:
; O0-NEXT: # kill: def $dx killed $dx killed $edx
+; O0-NEXT: .Lpcsection164:
; O0-NEXT: lock cmpxchgw %dx, (%rcx)
-; O0-NEXT: .Lpcsection124:
+; O0-NEXT: .Lpcsection165:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection125:
+; O0-NEXT: .Lpcsection166:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
-; O0-NEXT: .Lpcsection126:
+; O0-NEXT: .Lpcsection167:
; O0-NEXT: jne .LBB85_2
; O0-NEXT: jmp .LBB85_1
; O0-NEXT: .LBB85_2: # %atomicrmw.end
@@ -4014,19 +4166,23 @@ define void @atomic16_nand_acq_rel(ptr %a) {
; O1-LABEL: atomic16_nand_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection96:
+; O1-NEXT: .Lpcsection133:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB85_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection134:
; O1-NEXT: notl %ecx
+; O1-NEXT: .Lpcsection135:
; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O1-NEXT: .Lpcsection136:
; O1-NEXT: # kill: def $ax killed $ax killed $eax
+; O1-NEXT: .Lpcsection137:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
-; O1-NEXT: .Lpcsection97:
+; O1-NEXT: .Lpcsection138:
; O1-NEXT: # kill: def $ax killed $ax def $eax
-; O1-NEXT: .Lpcsection98:
+; O1-NEXT: .Lpcsection139:
; O1-NEXT: jne .LBB85_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -4035,19 +4191,23 @@ define void @atomic16_nand_acq_rel(ptr %a) {
; O2-LABEL: atomic16_nand_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection96:
+; O2-NEXT: .Lpcsection133:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB85_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection134:
; O2-NEXT: notl %ecx
+; O2-NEXT: .Lpcsection135:
; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O2-NEXT: .Lpcsection136:
; O2-NEXT: # kill: def $ax killed $ax killed $eax
+; O2-NEXT: .Lpcsection137:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
-; O2-NEXT: .Lpcsection97:
+; O2-NEXT: .Lpcsection138:
; O2-NEXT: # kill: def $ax killed $ax def $eax
-; O2-NEXT: .Lpcsection98:
+; O2-NEXT: .Lpcsection139:
; O2-NEXT: jne .LBB85_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -4056,19 +4216,23 @@ define void @atomic16_nand_acq_rel(ptr %a) {
; O3-LABEL: atomic16_nand_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection96:
+; O3-NEXT: .Lpcsection133:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB85_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection134:
; O3-NEXT: notl %ecx
+; O3-NEXT: .Lpcsection135:
; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O3-NEXT: .Lpcsection136:
; O3-NEXT: # kill: def $ax killed $ax killed $eax
+; O3-NEXT: .Lpcsection137:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
-; O3-NEXT: .Lpcsection97:
+; O3-NEXT: .Lpcsection138:
; O3-NEXT: # kill: def $ax killed $ax def $eax
-; O3-NEXT: .Lpcsection98:
+; O3-NEXT: .Lpcsection139:
; O3-NEXT: jne .LBB85_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -4085,7 +4249,7 @@ define void @atomic16_xchg_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movw $42, %ax
-; O0-NEXT: .Lpcsection127:
+; O0-NEXT: .Lpcsection168:
; O0-NEXT: xchgw %ax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4094,7 +4258,7 @@ define void @atomic16_xchg_seq_cst(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $42, %ax
-; O1-NEXT: .Lpcsection99:
+; O1-NEXT: .Lpcsection140:
; O1-NEXT: xchgw %ax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4103,7 +4267,7 @@ define void @atomic16_xchg_seq_cst(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $42, %ax
-; O2-NEXT: .Lpcsection99:
+; O2-NEXT: .Lpcsection140:
; O2-NEXT: xchgw %ax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4112,7 +4276,7 @@ define void @atomic16_xchg_seq_cst(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $42, %ax
-; O3-NEXT: .Lpcsection99:
+; O3-NEXT: .Lpcsection140:
; O3-NEXT: xchgw %ax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4127,7 +4291,7 @@ define void @atomic16_add_seq_cst(ptr %a) {
; O0-LABEL: atomic16_add_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection128:
+; O0-NEXT: .Lpcsection169:
; O0-NEXT: lock addw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4135,7 +4299,7 @@ define void @atomic16_add_seq_cst(ptr %a) {
; O1-LABEL: atomic16_add_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection100:
+; O1-NEXT: .Lpcsection141:
; O1-NEXT: lock addw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4143,7 +4307,7 @@ define void @atomic16_add_seq_cst(ptr %a) {
; O2-LABEL: atomic16_add_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection100:
+; O2-NEXT: .Lpcsection141:
; O2-NEXT: lock addw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4151,7 +4315,7 @@ define void @atomic16_add_seq_cst(ptr %a) {
; O3-LABEL: atomic16_add_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection100:
+; O3-NEXT: .Lpcsection141:
; O3-NEXT: lock addw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4166,7 +4330,7 @@ define void @atomic16_sub_seq_cst(ptr %a) {
; O0-LABEL: atomic16_sub_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection129:
+; O0-NEXT: .Lpcsection170:
; O0-NEXT: lock subw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4174,7 +4338,7 @@ define void @atomic16_sub_seq_cst(ptr %a) {
; O1-LABEL: atomic16_sub_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection101:
+; O1-NEXT: .Lpcsection142:
; O1-NEXT: lock subw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4182,7 +4346,7 @@ define void @atomic16_sub_seq_cst(ptr %a) {
; O2-LABEL: atomic16_sub_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection101:
+; O2-NEXT: .Lpcsection142:
; O2-NEXT: lock subw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4190,7 +4354,7 @@ define void @atomic16_sub_seq_cst(ptr %a) {
; O3-LABEL: atomic16_sub_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection101:
+; O3-NEXT: .Lpcsection142:
; O3-NEXT: lock subw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4205,7 +4369,7 @@ define void @atomic16_and_seq_cst(ptr %a) {
; O0-LABEL: atomic16_and_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection130:
+; O0-NEXT: .Lpcsection171:
; O0-NEXT: lock andw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4213,7 +4377,7 @@ define void @atomic16_and_seq_cst(ptr %a) {
; O1-LABEL: atomic16_and_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection102:
+; O1-NEXT: .Lpcsection143:
; O1-NEXT: lock andw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4221,7 +4385,7 @@ define void @atomic16_and_seq_cst(ptr %a) {
; O2-LABEL: atomic16_and_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection102:
+; O2-NEXT: .Lpcsection143:
; O2-NEXT: lock andw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4229,7 +4393,7 @@ define void @atomic16_and_seq_cst(ptr %a) {
; O3-LABEL: atomic16_and_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection102:
+; O3-NEXT: .Lpcsection143:
; O3-NEXT: lock andw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4244,7 +4408,7 @@ define void @atomic16_or_seq_cst(ptr %a) {
; O0-LABEL: atomic16_or_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection131:
+; O0-NEXT: .Lpcsection172:
; O0-NEXT: lock orw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4252,7 +4416,7 @@ define void @atomic16_or_seq_cst(ptr %a) {
; O1-LABEL: atomic16_or_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection103:
+; O1-NEXT: .Lpcsection144:
; O1-NEXT: lock orw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4260,7 +4424,7 @@ define void @atomic16_or_seq_cst(ptr %a) {
; O2-LABEL: atomic16_or_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection103:
+; O2-NEXT: .Lpcsection144:
; O2-NEXT: lock orw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4268,7 +4432,7 @@ define void @atomic16_or_seq_cst(ptr %a) {
; O3-LABEL: atomic16_or_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection103:
+; O3-NEXT: .Lpcsection144:
; O3-NEXT: lock orw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4283,7 +4447,7 @@ define void @atomic16_xor_seq_cst(ptr %a) {
; O0-LABEL: atomic16_xor_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection132:
+; O0-NEXT: .Lpcsection173:
; O0-NEXT: lock xorw $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4291,7 +4455,7 @@ define void @atomic16_xor_seq_cst(ptr %a) {
; O1-LABEL: atomic16_xor_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection104:
+; O1-NEXT: .Lpcsection145:
; O1-NEXT: lock xorw $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4299,7 +4463,7 @@ define void @atomic16_xor_seq_cst(ptr %a) {
; O2-LABEL: atomic16_xor_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection104:
+; O2-NEXT: .Lpcsection145:
; O2-NEXT: lock xorw $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4307,7 +4471,7 @@ define void @atomic16_xor_seq_cst(ptr %a) {
; O3-LABEL: atomic16_xor_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection104:
+; O3-NEXT: .Lpcsection145:
; O3-NEXT: lock xorw $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4323,26 +4487,30 @@ define void @atomic16_nand_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection133:
+; O0-NEXT: .Lpcsection174:
; O0-NEXT: movw (%rdi), %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: .LBB92_1: # %atomicrmw.start
; O0-NEXT: # =>This Inner Loop Header: Depth=1
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
+; O0-NEXT: .Lpcsection175:
; O0-NEXT: # implicit-def: $edx
; O0-NEXT: movw %ax, %dx
+; O0-NEXT: .Lpcsection176:
; O0-NEXT: notl %edx
+; O0-NEXT: .Lpcsection177:
; O0-NEXT: orl $65493, %edx # imm = 0xFFD5
-; O0-NEXT: .Lpcsection134:
+; O0-NEXT: .Lpcsection178:
; O0-NEXT: # kill: def $dx killed $dx killed $edx
+; O0-NEXT: .Lpcsection179:
; O0-NEXT: lock cmpxchgw %dx, (%rcx)
-; O0-NEXT: .Lpcsection135:
+; O0-NEXT: .Lpcsection180:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection136:
+; O0-NEXT: .Lpcsection181:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
-; O0-NEXT: .Lpcsection137:
+; O0-NEXT: .Lpcsection182:
; O0-NEXT: jne .LBB92_2
; O0-NEXT: jmp .LBB92_1
; O0-NEXT: .LBB92_2: # %atomicrmw.end
@@ -4352,19 +4520,23 @@ define void @atomic16_nand_seq_cst(ptr %a) {
; O1-LABEL: atomic16_nand_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection105:
+; O1-NEXT: .Lpcsection146:
; O1-NEXT: movzwl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB92_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection147:
; O1-NEXT: notl %ecx
+; O1-NEXT: .Lpcsection148:
; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O1-NEXT: .Lpcsection149:
; O1-NEXT: # kill: def $ax killed $ax killed $eax
+; O1-NEXT: .Lpcsection150:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
-; O1-NEXT: .Lpcsection106:
+; O1-NEXT: .Lpcsection151:
; O1-NEXT: # kill: def $ax killed $ax def $eax
-; O1-NEXT: .Lpcsection107:
+; O1-NEXT: .Lpcsection152:
; O1-NEXT: jne .LBB92_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -4373,19 +4545,23 @@ define void @atomic16_nand_seq_cst(ptr %a) {
; O2-LABEL: atomic16_nand_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection105:
+; O2-NEXT: .Lpcsection146:
; O2-NEXT: movzwl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB92_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection147:
; O2-NEXT: notl %ecx
+; O2-NEXT: .Lpcsection148:
; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O2-NEXT: .Lpcsection149:
; O2-NEXT: # kill: def $ax killed $ax killed $eax
+; O2-NEXT: .Lpcsection150:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
-; O2-NEXT: .Lpcsection106:
+; O2-NEXT: .Lpcsection151:
; O2-NEXT: # kill: def $ax killed $ax def $eax
-; O2-NEXT: .Lpcsection107:
+; O2-NEXT: .Lpcsection152:
; O2-NEXT: jne .LBB92_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -4394,19 +4570,23 @@ define void @atomic16_nand_seq_cst(ptr %a) {
; O3-LABEL: atomic16_nand_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection105:
+; O3-NEXT: .Lpcsection146:
; O3-NEXT: movzwl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB92_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection147:
; O3-NEXT: notl %ecx
+; O3-NEXT: .Lpcsection148:
; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5
+; O3-NEXT: .Lpcsection149:
; O3-NEXT: # kill: def $ax killed $ax killed $eax
+; O3-NEXT: .Lpcsection150:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
-; O3-NEXT: .Lpcsection106:
+; O3-NEXT: .Lpcsection151:
; O3-NEXT: # kill: def $ax killed $ax def $eax
-; O3-NEXT: .Lpcsection107:
+; O3-NEXT: .Lpcsection152:
; O3-NEXT: jne .LBB92_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -4425,14 +4605,17 @@ define void @atomic16_cas_monotonic(ptr %a) {
; O0-NEXT: movw $42, %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: movw $1, %cx
+; O0-NEXT: .Lpcsection183:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection138:
+; O0-NEXT: .Lpcsection184:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection185:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection139:
+; O0-NEXT: .Lpcsection186:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection187:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4442,10 +4625,13 @@ define void @atomic16_cas_monotonic(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $1, %cx
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection153:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection154:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection155:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4455,10 +4641,13 @@ define void @atomic16_cas_monotonic(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $1, %cx
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection153:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection154:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection155:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4468,10 +4657,13 @@ define void @atomic16_cas_monotonic(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $1, %cx
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection153:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection154:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection155:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4491,14 +4683,17 @@ define void @atomic16_cas_acquire(ptr %a) {
; O0-NEXT: movw $42, %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: movw $1, %cx
+; O0-NEXT: .Lpcsection188:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection140:
+; O0-NEXT: .Lpcsection189:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection190:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection141:
+; O0-NEXT: .Lpcsection191:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection192:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4508,10 +4703,13 @@ define void @atomic16_cas_acquire(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $1, %cx
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection156:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection157:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection158:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4521,10 +4719,13 @@ define void @atomic16_cas_acquire(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $1, %cx
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection156:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection157:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection158:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4534,10 +4735,13 @@ define void @atomic16_cas_acquire(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $1, %cx
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection156:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection157:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection158:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4557,14 +4761,17 @@ define void @atomic16_cas_release(ptr %a) {
; O0-NEXT: movw $42, %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: movw $1, %cx
+; O0-NEXT: .Lpcsection193:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection142:
+; O0-NEXT: .Lpcsection194:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection195:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection143:
+; O0-NEXT: .Lpcsection196:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection197:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4574,10 +4781,13 @@ define void @atomic16_cas_release(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $1, %cx
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection159:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection160:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection161:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4587,10 +4797,13 @@ define void @atomic16_cas_release(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $1, %cx
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection159:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection160:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection161:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4600,10 +4813,13 @@ define void @atomic16_cas_release(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $1, %cx
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection159:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection160:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection161:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4623,14 +4839,17 @@ define void @atomic16_cas_acq_rel(ptr %a) {
; O0-NEXT: movw $42, %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: movw $1, %cx
+; O0-NEXT: .Lpcsection198:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection144:
+; O0-NEXT: .Lpcsection199:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection200:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection145:
+; O0-NEXT: .Lpcsection201:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection202:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4640,10 +4859,13 @@ define void @atomic16_cas_acq_rel(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $1, %cx
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection162:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection163:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection164:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4653,10 +4875,13 @@ define void @atomic16_cas_acq_rel(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $1, %cx
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection162:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection163:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection164:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4666,10 +4891,13 @@ define void @atomic16_cas_acq_rel(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $1, %cx
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection162:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection163:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection164:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4689,14 +4917,17 @@ define void @atomic16_cas_seq_cst(ptr %a) {
; O0-NEXT: movw $42, %ax
; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
; O0-NEXT: movw $1, %cx
+; O0-NEXT: .Lpcsection203:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection146:
+; O0-NEXT: .Lpcsection204:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection205:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
-; O0-NEXT: .Lpcsection147:
+; O0-NEXT: .Lpcsection206:
; O0-NEXT: # kill: def $dx killed $ax
; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload
+; O0-NEXT: .Lpcsection207:
; O0-NEXT: lock cmpxchgw %cx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4706,10 +4937,13 @@ define void @atomic16_cas_seq_cst(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movw $1, %cx
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection165:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection166:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movw $42, %ax
+; O1-NEXT: .Lpcsection167:
; O1-NEXT: lock cmpxchgw %cx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4719,10 +4953,13 @@ define void @atomic16_cas_seq_cst(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movw $1, %cx
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection165:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection166:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movw $42, %ax
+; O2-NEXT: .Lpcsection167:
; O2-NEXT: lock cmpxchgw %cx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4732,10 +4969,13 @@ define void @atomic16_cas_seq_cst(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movw $1, %cx
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection165:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection166:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movw $42, %ax
+; O3-NEXT: .Lpcsection167:
; O3-NEXT: lock cmpxchgw %cx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4752,7 +4992,7 @@ define i32 @atomic32_load_unordered(ptr %a) {
; O0-LABEL: atomic32_load_unordered:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection148:
+; O0-NEXT: .Lpcsection208:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4760,7 +5000,7 @@ define i32 @atomic32_load_unordered(ptr %a) {
; O1-LABEL: atomic32_load_unordered:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection108:
+; O1-NEXT: .Lpcsection168:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4768,7 +5008,7 @@ define i32 @atomic32_load_unordered(ptr %a) {
; O2-LABEL: atomic32_load_unordered:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection108:
+; O2-NEXT: .Lpcsection168:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4776,7 +5016,7 @@ define i32 @atomic32_load_unordered(ptr %a) {
; O3-LABEL: atomic32_load_unordered:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection108:
+; O3-NEXT: .Lpcsection168:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4791,7 +5031,7 @@ define i32 @atomic32_load_monotonic(ptr %a) {
; O0-LABEL: atomic32_load_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection149:
+; O0-NEXT: .Lpcsection209:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4799,7 +5039,7 @@ define i32 @atomic32_load_monotonic(ptr %a) {
; O1-LABEL: atomic32_load_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection109:
+; O1-NEXT: .Lpcsection169:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4807,7 +5047,7 @@ define i32 @atomic32_load_monotonic(ptr %a) {
; O2-LABEL: atomic32_load_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection109:
+; O2-NEXT: .Lpcsection169:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4815,7 +5055,7 @@ define i32 @atomic32_load_monotonic(ptr %a) {
; O3-LABEL: atomic32_load_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection109:
+; O3-NEXT: .Lpcsection169:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4830,7 +5070,7 @@ define i32 @atomic32_load_acquire(ptr %a) {
; O0-LABEL: atomic32_load_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection150:
+; O0-NEXT: .Lpcsection210:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4838,7 +5078,7 @@ define i32 @atomic32_load_acquire(ptr %a) {
; O1-LABEL: atomic32_load_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection110:
+; O1-NEXT: .Lpcsection170:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4846,7 +5086,7 @@ define i32 @atomic32_load_acquire(ptr %a) {
; O2-LABEL: atomic32_load_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection110:
+; O2-NEXT: .Lpcsection170:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4854,7 +5094,7 @@ define i32 @atomic32_load_acquire(ptr %a) {
; O3-LABEL: atomic32_load_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection110:
+; O3-NEXT: .Lpcsection170:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4869,7 +5109,7 @@ define i32 @atomic32_load_seq_cst(ptr %a) {
; O0-LABEL: atomic32_load_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection151:
+; O0-NEXT: .Lpcsection211:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4877,7 +5117,7 @@ define i32 @atomic32_load_seq_cst(ptr %a) {
; O1-LABEL: atomic32_load_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection111:
+; O1-NEXT: .Lpcsection171:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4885,7 +5125,7 @@ define i32 @atomic32_load_seq_cst(ptr %a) {
; O2-LABEL: atomic32_load_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection111:
+; O2-NEXT: .Lpcsection171:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4893,7 +5133,7 @@ define i32 @atomic32_load_seq_cst(ptr %a) {
; O3-LABEL: atomic32_load_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection111:
+; O3-NEXT: .Lpcsection171:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4908,7 +5148,7 @@ define void @atomic32_store_unordered(ptr %a) {
; O0-LABEL: atomic32_store_unordered:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection152:
+; O0-NEXT: .Lpcsection212:
; O0-NEXT: movl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4916,7 +5156,7 @@ define void @atomic32_store_unordered(ptr %a) {
; O1-LABEL: atomic32_store_unordered:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection112:
+; O1-NEXT: .Lpcsection172:
; O1-NEXT: movl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4924,7 +5164,7 @@ define void @atomic32_store_unordered(ptr %a) {
; O2-LABEL: atomic32_store_unordered:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection112:
+; O2-NEXT: .Lpcsection172:
; O2-NEXT: movl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4932,7 +5172,7 @@ define void @atomic32_store_unordered(ptr %a) {
; O3-LABEL: atomic32_store_unordered:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection112:
+; O3-NEXT: .Lpcsection172:
; O3-NEXT: movl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4947,7 +5187,7 @@ define void @atomic32_store_monotonic(ptr %a) {
; O0-LABEL: atomic32_store_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection153:
+; O0-NEXT: .Lpcsection213:
; O0-NEXT: movl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4955,7 +5195,7 @@ define void @atomic32_store_monotonic(ptr %a) {
; O1-LABEL: atomic32_store_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection113:
+; O1-NEXT: .Lpcsection173:
; O1-NEXT: movl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -4963,7 +5203,7 @@ define void @atomic32_store_monotonic(ptr %a) {
; O2-LABEL: atomic32_store_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection113:
+; O2-NEXT: .Lpcsection173:
; O2-NEXT: movl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -4971,7 +5211,7 @@ define void @atomic32_store_monotonic(ptr %a) {
; O3-LABEL: atomic32_store_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection113:
+; O3-NEXT: .Lpcsection173:
; O3-NEXT: movl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -4986,7 +5226,7 @@ define void @atomic32_store_release(ptr %a) {
; O0-LABEL: atomic32_store_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection154:
+; O0-NEXT: .Lpcsection214:
; O0-NEXT: movl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -4994,7 +5234,7 @@ define void @atomic32_store_release(ptr %a) {
; O1-LABEL: atomic32_store_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection114:
+; O1-NEXT: .Lpcsection174:
; O1-NEXT: movl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5002,7 +5242,7 @@ define void @atomic32_store_release(ptr %a) {
; O2-LABEL: atomic32_store_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection114:
+; O2-NEXT: .Lpcsection174:
; O2-NEXT: movl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5010,7 +5250,7 @@ define void @atomic32_store_release(ptr %a) {
; O3-LABEL: atomic32_store_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection114:
+; O3-NEXT: .Lpcsection174:
; O3-NEXT: movl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5026,7 +5266,7 @@ define void @atomic32_store_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection155:
+; O0-NEXT: .Lpcsection215:
; O0-NEXT: xchgl %eax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5035,7 +5275,7 @@ define void @atomic32_store_seq_cst(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection115:
+; O1-NEXT: .Lpcsection175:
; O1-NEXT: xchgl %eax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5044,7 +5284,7 @@ define void @atomic32_store_seq_cst(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection115:
+; O2-NEXT: .Lpcsection175:
; O2-NEXT: xchgl %eax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5053,7 +5293,7 @@ define void @atomic32_store_seq_cst(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection115:
+; O3-NEXT: .Lpcsection175:
; O3-NEXT: xchgl %eax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5069,7 +5309,7 @@ define void @atomic32_xchg_monotonic(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection156:
+; O0-NEXT: .Lpcsection216:
; O0-NEXT: xchgl %eax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5078,7 +5318,7 @@ define void @atomic32_xchg_monotonic(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection116:
+; O1-NEXT: .Lpcsection176:
; O1-NEXT: xchgl %eax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5087,7 +5327,7 @@ define void @atomic32_xchg_monotonic(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection116:
+; O2-NEXT: .Lpcsection176:
; O2-NEXT: xchgl %eax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5096,7 +5336,7 @@ define void @atomic32_xchg_monotonic(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection116:
+; O3-NEXT: .Lpcsection176:
; O3-NEXT: xchgl %eax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5111,7 +5351,7 @@ define void @atomic32_add_monotonic(ptr %a) {
; O0-LABEL: atomic32_add_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection157:
+; O0-NEXT: .Lpcsection217:
; O0-NEXT: lock addl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5119,7 +5359,7 @@ define void @atomic32_add_monotonic(ptr %a) {
; O1-LABEL: atomic32_add_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection117:
+; O1-NEXT: .Lpcsection177:
; O1-NEXT: lock addl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5127,7 +5367,7 @@ define void @atomic32_add_monotonic(ptr %a) {
; O2-LABEL: atomic32_add_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection117:
+; O2-NEXT: .Lpcsection177:
; O2-NEXT: lock addl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5135,7 +5375,7 @@ define void @atomic32_add_monotonic(ptr %a) {
; O3-LABEL: atomic32_add_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection117:
+; O3-NEXT: .Lpcsection177:
; O3-NEXT: lock addl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5150,7 +5390,7 @@ define void @atomic32_sub_monotonic(ptr %a) {
; O0-LABEL: atomic32_sub_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection158:
+; O0-NEXT: .Lpcsection218:
; O0-NEXT: lock subl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5158,7 +5398,7 @@ define void @atomic32_sub_monotonic(ptr %a) {
; O1-LABEL: atomic32_sub_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection118:
+; O1-NEXT: .Lpcsection178:
; O1-NEXT: lock subl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5166,7 +5406,7 @@ define void @atomic32_sub_monotonic(ptr %a) {
; O2-LABEL: atomic32_sub_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection118:
+; O2-NEXT: .Lpcsection178:
; O2-NEXT: lock subl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5174,7 +5414,7 @@ define void @atomic32_sub_monotonic(ptr %a) {
; O3-LABEL: atomic32_sub_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection118:
+; O3-NEXT: .Lpcsection178:
; O3-NEXT: lock subl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5189,7 +5429,7 @@ define void @atomic32_and_monotonic(ptr %a) {
; O0-LABEL: atomic32_and_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection159:
+; O0-NEXT: .Lpcsection219:
; O0-NEXT: lock andl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5197,7 +5437,7 @@ define void @atomic32_and_monotonic(ptr %a) {
; O1-LABEL: atomic32_and_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection119:
+; O1-NEXT: .Lpcsection179:
; O1-NEXT: lock andl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5205,7 +5445,7 @@ define void @atomic32_and_monotonic(ptr %a) {
; O2-LABEL: atomic32_and_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection119:
+; O2-NEXT: .Lpcsection179:
; O2-NEXT: lock andl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5213,7 +5453,7 @@ define void @atomic32_and_monotonic(ptr %a) {
; O3-LABEL: atomic32_and_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection119:
+; O3-NEXT: .Lpcsection179:
; O3-NEXT: lock andl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5228,7 +5468,7 @@ define void @atomic32_or_monotonic(ptr %a) {
; O0-LABEL: atomic32_or_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection160:
+; O0-NEXT: .Lpcsection220:
; O0-NEXT: lock orl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5236,7 +5476,7 @@ define void @atomic32_or_monotonic(ptr %a) {
; O1-LABEL: atomic32_or_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection120:
+; O1-NEXT: .Lpcsection180:
; O1-NEXT: lock orl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5244,7 +5484,7 @@ define void @atomic32_or_monotonic(ptr %a) {
; O2-LABEL: atomic32_or_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection120:
+; O2-NEXT: .Lpcsection180:
; O2-NEXT: lock orl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5252,7 +5492,7 @@ define void @atomic32_or_monotonic(ptr %a) {
; O3-LABEL: atomic32_or_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection120:
+; O3-NEXT: .Lpcsection180:
; O3-NEXT: lock orl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5267,7 +5507,7 @@ define void @atomic32_xor_monotonic(ptr %a) {
; O0-LABEL: atomic32_xor_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection161:
+; O0-NEXT: .Lpcsection221:
; O0-NEXT: lock xorl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5275,7 +5515,7 @@ define void @atomic32_xor_monotonic(ptr %a) {
; O1-LABEL: atomic32_xor_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection121:
+; O1-NEXT: .Lpcsection181:
; O1-NEXT: lock xorl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5283,7 +5523,7 @@ define void @atomic32_xor_monotonic(ptr %a) {
; O2-LABEL: atomic32_xor_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection121:
+; O2-NEXT: .Lpcsection181:
; O2-NEXT: lock xorl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5291,7 +5531,7 @@ define void @atomic32_xor_monotonic(ptr %a) {
; O3-LABEL: atomic32_xor_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection121:
+; O3-NEXT: .Lpcsection181:
; O3-NEXT: lock xorl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5307,7 +5547,7 @@ define void @atomic32_nand_monotonic(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection162:
+; O0-NEXT: .Lpcsection222:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: .LBB112_1: # %atomicrmw.start
@@ -5315,16 +5555,18 @@ define void @atomic32_nand_monotonic(ptr %a) {
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %edx
+; O0-NEXT: .Lpcsection223:
; O0-NEXT: notl %edx
-; O0-NEXT: .Lpcsection163:
+; O0-NEXT: .Lpcsection224:
; O0-NEXT: orl $-43, %edx
+; O0-NEXT: .Lpcsection225:
; O0-NEXT: lock cmpxchgl %edx, (%rcx)
-; O0-NEXT: .Lpcsection164:
+; O0-NEXT: .Lpcsection226:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection165:
+; O0-NEXT: .Lpcsection227:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
-; O0-NEXT: .Lpcsection166:
+; O0-NEXT: .Lpcsection228:
; O0-NEXT: jne .LBB112_2
; O0-NEXT: jmp .LBB112_1
; O0-NEXT: .LBB112_2: # %atomicrmw.end
@@ -5334,17 +5576,19 @@ define void @atomic32_nand_monotonic(ptr %a) {
; O1-LABEL: atomic32_nand_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection122:
+; O1-NEXT: .Lpcsection182:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB112_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection183:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection123:
+; O1-NEXT: .Lpcsection184:
; O1-NEXT: orl $-43, %ecx
+; O1-NEXT: .Lpcsection185:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O1-NEXT: .Lpcsection124:
+; O1-NEXT: .Lpcsection186:
; O1-NEXT: jne .LBB112_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -5353,17 +5597,19 @@ define void @atomic32_nand_monotonic(ptr %a) {
; O2-LABEL: atomic32_nand_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection122:
+; O2-NEXT: .Lpcsection182:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB112_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection183:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection123:
+; O2-NEXT: .Lpcsection184:
; O2-NEXT: orl $-43, %ecx
+; O2-NEXT: .Lpcsection185:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O2-NEXT: .Lpcsection124:
+; O2-NEXT: .Lpcsection186:
; O2-NEXT: jne .LBB112_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -5372,17 +5618,19 @@ define void @atomic32_nand_monotonic(ptr %a) {
; O3-LABEL: atomic32_nand_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection122:
+; O3-NEXT: .Lpcsection182:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB112_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection183:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection123:
+; O3-NEXT: .Lpcsection184:
; O3-NEXT: orl $-43, %ecx
+; O3-NEXT: .Lpcsection185:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O3-NEXT: .Lpcsection124:
+; O3-NEXT: .Lpcsection186:
; O3-NEXT: jne .LBB112_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -5399,7 +5647,7 @@ define void @atomic32_xchg_acquire(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection167:
+; O0-NEXT: .Lpcsection229:
; O0-NEXT: xchgl %eax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5408,7 +5656,7 @@ define void @atomic32_xchg_acquire(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection125:
+; O1-NEXT: .Lpcsection187:
; O1-NEXT: xchgl %eax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5417,7 +5665,7 @@ define void @atomic32_xchg_acquire(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection125:
+; O2-NEXT: .Lpcsection187:
; O2-NEXT: xchgl %eax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5426,7 +5674,7 @@ define void @atomic32_xchg_acquire(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection125:
+; O3-NEXT: .Lpcsection187:
; O3-NEXT: xchgl %eax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5441,7 +5689,7 @@ define void @atomic32_add_acquire(ptr %a) {
; O0-LABEL: atomic32_add_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection168:
+; O0-NEXT: .Lpcsection230:
; O0-NEXT: lock addl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5449,7 +5697,7 @@ define void @atomic32_add_acquire(ptr %a) {
; O1-LABEL: atomic32_add_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection126:
+; O1-NEXT: .Lpcsection188:
; O1-NEXT: lock addl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5457,7 +5705,7 @@ define void @atomic32_add_acquire(ptr %a) {
; O2-LABEL: atomic32_add_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection126:
+; O2-NEXT: .Lpcsection188:
; O2-NEXT: lock addl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5465,7 +5713,7 @@ define void @atomic32_add_acquire(ptr %a) {
; O3-LABEL: atomic32_add_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection126:
+; O3-NEXT: .Lpcsection188:
; O3-NEXT: lock addl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5480,7 +5728,7 @@ define void @atomic32_sub_acquire(ptr %a) {
; O0-LABEL: atomic32_sub_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection169:
+; O0-NEXT: .Lpcsection231:
; O0-NEXT: lock subl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5488,7 +5736,7 @@ define void @atomic32_sub_acquire(ptr %a) {
; O1-LABEL: atomic32_sub_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection127:
+; O1-NEXT: .Lpcsection189:
; O1-NEXT: lock subl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5496,7 +5744,7 @@ define void @atomic32_sub_acquire(ptr %a) {
; O2-LABEL: atomic32_sub_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection127:
+; O2-NEXT: .Lpcsection189:
; O2-NEXT: lock subl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5504,7 +5752,7 @@ define void @atomic32_sub_acquire(ptr %a) {
; O3-LABEL: atomic32_sub_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection127:
+; O3-NEXT: .Lpcsection189:
; O3-NEXT: lock subl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5519,7 +5767,7 @@ define void @atomic32_and_acquire(ptr %a) {
; O0-LABEL: atomic32_and_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection170:
+; O0-NEXT: .Lpcsection232:
; O0-NEXT: lock andl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5527,7 +5775,7 @@ define void @atomic32_and_acquire(ptr %a) {
; O1-LABEL: atomic32_and_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection128:
+; O1-NEXT: .Lpcsection190:
; O1-NEXT: lock andl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5535,7 +5783,7 @@ define void @atomic32_and_acquire(ptr %a) {
; O2-LABEL: atomic32_and_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection128:
+; O2-NEXT: .Lpcsection190:
; O2-NEXT: lock andl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5543,7 +5791,7 @@ define void @atomic32_and_acquire(ptr %a) {
; O3-LABEL: atomic32_and_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection128:
+; O3-NEXT: .Lpcsection190:
; O3-NEXT: lock andl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5558,7 +5806,7 @@ define void @atomic32_or_acquire(ptr %a) {
; O0-LABEL: atomic32_or_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection171:
+; O0-NEXT: .Lpcsection233:
; O0-NEXT: lock orl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5566,7 +5814,7 @@ define void @atomic32_or_acquire(ptr %a) {
; O1-LABEL: atomic32_or_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection129:
+; O1-NEXT: .Lpcsection191:
; O1-NEXT: lock orl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5574,7 +5822,7 @@ define void @atomic32_or_acquire(ptr %a) {
; O2-LABEL: atomic32_or_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection129:
+; O2-NEXT: .Lpcsection191:
; O2-NEXT: lock orl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5582,7 +5830,7 @@ define void @atomic32_or_acquire(ptr %a) {
; O3-LABEL: atomic32_or_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection129:
+; O3-NEXT: .Lpcsection191:
; O3-NEXT: lock orl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5597,7 +5845,7 @@ define void @atomic32_xor_acquire(ptr %a) {
; O0-LABEL: atomic32_xor_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection172:
+; O0-NEXT: .Lpcsection234:
; O0-NEXT: lock xorl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5605,7 +5853,7 @@ define void @atomic32_xor_acquire(ptr %a) {
; O1-LABEL: atomic32_xor_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection130:
+; O1-NEXT: .Lpcsection192:
; O1-NEXT: lock xorl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5613,7 +5861,7 @@ define void @atomic32_xor_acquire(ptr %a) {
; O2-LABEL: atomic32_xor_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection130:
+; O2-NEXT: .Lpcsection192:
; O2-NEXT: lock xorl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5621,7 +5869,7 @@ define void @atomic32_xor_acquire(ptr %a) {
; O3-LABEL: atomic32_xor_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection130:
+; O3-NEXT: .Lpcsection192:
; O3-NEXT: lock xorl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5637,7 +5885,7 @@ define void @atomic32_nand_acquire(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection173:
+; O0-NEXT: .Lpcsection235:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: .LBB119_1: # %atomicrmw.start
@@ -5645,16 +5893,18 @@ define void @atomic32_nand_acquire(ptr %a) {
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %edx
+; O0-NEXT: .Lpcsection236:
; O0-NEXT: notl %edx
-; O0-NEXT: .Lpcsection174:
+; O0-NEXT: .Lpcsection237:
; O0-NEXT: orl $-43, %edx
+; O0-NEXT: .Lpcsection238:
; O0-NEXT: lock cmpxchgl %edx, (%rcx)
-; O0-NEXT: .Lpcsection175:
+; O0-NEXT: .Lpcsection239:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection176:
+; O0-NEXT: .Lpcsection240:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
-; O0-NEXT: .Lpcsection177:
+; O0-NEXT: .Lpcsection241:
; O0-NEXT: jne .LBB119_2
; O0-NEXT: jmp .LBB119_1
; O0-NEXT: .LBB119_2: # %atomicrmw.end
@@ -5664,17 +5914,19 @@ define void @atomic32_nand_acquire(ptr %a) {
; O1-LABEL: atomic32_nand_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection131:
+; O1-NEXT: .Lpcsection193:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB119_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection194:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection132:
+; O1-NEXT: .Lpcsection195:
; O1-NEXT: orl $-43, %ecx
+; O1-NEXT: .Lpcsection196:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O1-NEXT: .Lpcsection133:
+; O1-NEXT: .Lpcsection197:
; O1-NEXT: jne .LBB119_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -5683,17 +5935,19 @@ define void @atomic32_nand_acquire(ptr %a) {
; O2-LABEL: atomic32_nand_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection131:
+; O2-NEXT: .Lpcsection193:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB119_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection194:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection132:
+; O2-NEXT: .Lpcsection195:
; O2-NEXT: orl $-43, %ecx
+; O2-NEXT: .Lpcsection196:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O2-NEXT: .Lpcsection133:
+; O2-NEXT: .Lpcsection197:
; O2-NEXT: jne .LBB119_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -5702,17 +5956,19 @@ define void @atomic32_nand_acquire(ptr %a) {
; O3-LABEL: atomic32_nand_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection131:
+; O3-NEXT: .Lpcsection193:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB119_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection194:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection132:
+; O3-NEXT: .Lpcsection195:
; O3-NEXT: orl $-43, %ecx
+; O3-NEXT: .Lpcsection196:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O3-NEXT: .Lpcsection133:
+; O3-NEXT: .Lpcsection197:
; O3-NEXT: jne .LBB119_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -5729,7 +5985,7 @@ define void @atomic32_xchg_release(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection178:
+; O0-NEXT: .Lpcsection242:
; O0-NEXT: xchgl %eax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5738,7 +5994,7 @@ define void @atomic32_xchg_release(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection134:
+; O1-NEXT: .Lpcsection198:
; O1-NEXT: xchgl %eax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5747,7 +6003,7 @@ define void @atomic32_xchg_release(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection134:
+; O2-NEXT: .Lpcsection198:
; O2-NEXT: xchgl %eax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5756,7 +6012,7 @@ define void @atomic32_xchg_release(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection134:
+; O3-NEXT: .Lpcsection198:
; O3-NEXT: xchgl %eax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5771,7 +6027,7 @@ define void @atomic32_add_release(ptr %a) {
; O0-LABEL: atomic32_add_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection179:
+; O0-NEXT: .Lpcsection243:
; O0-NEXT: lock addl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5779,7 +6035,7 @@ define void @atomic32_add_release(ptr %a) {
; O1-LABEL: atomic32_add_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection135:
+; O1-NEXT: .Lpcsection199:
; O1-NEXT: lock addl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5787,7 +6043,7 @@ define void @atomic32_add_release(ptr %a) {
; O2-LABEL: atomic32_add_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection135:
+; O2-NEXT: .Lpcsection199:
; O2-NEXT: lock addl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5795,7 +6051,7 @@ define void @atomic32_add_release(ptr %a) {
; O3-LABEL: atomic32_add_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection135:
+; O3-NEXT: .Lpcsection199:
; O3-NEXT: lock addl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5810,7 +6066,7 @@ define void @atomic32_sub_release(ptr %a) {
; O0-LABEL: atomic32_sub_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection180:
+; O0-NEXT: .Lpcsection244:
; O0-NEXT: lock subl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5818,7 +6074,7 @@ define void @atomic32_sub_release(ptr %a) {
; O1-LABEL: atomic32_sub_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection136:
+; O1-NEXT: .Lpcsection200:
; O1-NEXT: lock subl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5826,7 +6082,7 @@ define void @atomic32_sub_release(ptr %a) {
; O2-LABEL: atomic32_sub_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection136:
+; O2-NEXT: .Lpcsection200:
; O2-NEXT: lock subl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5834,7 +6090,7 @@ define void @atomic32_sub_release(ptr %a) {
; O3-LABEL: atomic32_sub_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection136:
+; O3-NEXT: .Lpcsection200:
; O3-NEXT: lock subl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5849,7 +6105,7 @@ define void @atomic32_and_release(ptr %a) {
; O0-LABEL: atomic32_and_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection181:
+; O0-NEXT: .Lpcsection245:
; O0-NEXT: lock andl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5857,7 +6113,7 @@ define void @atomic32_and_release(ptr %a) {
; O1-LABEL: atomic32_and_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection137:
+; O1-NEXT: .Lpcsection201:
; O1-NEXT: lock andl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5865,7 +6121,7 @@ define void @atomic32_and_release(ptr %a) {
; O2-LABEL: atomic32_and_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection137:
+; O2-NEXT: .Lpcsection201:
; O2-NEXT: lock andl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5873,7 +6129,7 @@ define void @atomic32_and_release(ptr %a) {
; O3-LABEL: atomic32_and_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection137:
+; O3-NEXT: .Lpcsection201:
; O3-NEXT: lock andl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5888,7 +6144,7 @@ define void @atomic32_or_release(ptr %a) {
; O0-LABEL: atomic32_or_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection182:
+; O0-NEXT: .Lpcsection246:
; O0-NEXT: lock orl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5896,7 +6152,7 @@ define void @atomic32_or_release(ptr %a) {
; O1-LABEL: atomic32_or_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection138:
+; O1-NEXT: .Lpcsection202:
; O1-NEXT: lock orl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5904,7 +6160,7 @@ define void @atomic32_or_release(ptr %a) {
; O2-LABEL: atomic32_or_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection138:
+; O2-NEXT: .Lpcsection202:
; O2-NEXT: lock orl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5912,7 +6168,7 @@ define void @atomic32_or_release(ptr %a) {
; O3-LABEL: atomic32_or_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection138:
+; O3-NEXT: .Lpcsection202:
; O3-NEXT: lock orl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5927,7 +6183,7 @@ define void @atomic32_xor_release(ptr %a) {
; O0-LABEL: atomic32_xor_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection183:
+; O0-NEXT: .Lpcsection247:
; O0-NEXT: lock xorl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -5935,7 +6191,7 @@ define void @atomic32_xor_release(ptr %a) {
; O1-LABEL: atomic32_xor_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection139:
+; O1-NEXT: .Lpcsection203:
; O1-NEXT: lock xorl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -5943,7 +6199,7 @@ define void @atomic32_xor_release(ptr %a) {
; O2-LABEL: atomic32_xor_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection139:
+; O2-NEXT: .Lpcsection203:
; O2-NEXT: lock xorl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -5951,7 +6207,7 @@ define void @atomic32_xor_release(ptr %a) {
; O3-LABEL: atomic32_xor_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection139:
+; O3-NEXT: .Lpcsection203:
; O3-NEXT: lock xorl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -5967,7 +6223,7 @@ define void @atomic32_nand_release(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection184:
+; O0-NEXT: .Lpcsection248:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: .LBB126_1: # %atomicrmw.start
@@ -5975,16 +6231,18 @@ define void @atomic32_nand_release(ptr %a) {
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %edx
+; O0-NEXT: .Lpcsection249:
; O0-NEXT: notl %edx
-; O0-NEXT: .Lpcsection185:
+; O0-NEXT: .Lpcsection250:
; O0-NEXT: orl $-43, %edx
+; O0-NEXT: .Lpcsection251:
; O0-NEXT: lock cmpxchgl %edx, (%rcx)
-; O0-NEXT: .Lpcsection186:
+; O0-NEXT: .Lpcsection252:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection187:
+; O0-NEXT: .Lpcsection253:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
-; O0-NEXT: .Lpcsection188:
+; O0-NEXT: .Lpcsection254:
; O0-NEXT: jne .LBB126_2
; O0-NEXT: jmp .LBB126_1
; O0-NEXT: .LBB126_2: # %atomicrmw.end
@@ -5994,17 +6252,19 @@ define void @atomic32_nand_release(ptr %a) {
; O1-LABEL: atomic32_nand_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection140:
+; O1-NEXT: .Lpcsection204:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB126_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection205:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection141:
+; O1-NEXT: .Lpcsection206:
; O1-NEXT: orl $-43, %ecx
+; O1-NEXT: .Lpcsection207:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O1-NEXT: .Lpcsection142:
+; O1-NEXT: .Lpcsection208:
; O1-NEXT: jne .LBB126_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -6013,17 +6273,19 @@ define void @atomic32_nand_release(ptr %a) {
; O2-LABEL: atomic32_nand_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection140:
+; O2-NEXT: .Lpcsection204:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB126_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection205:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection141:
+; O2-NEXT: .Lpcsection206:
; O2-NEXT: orl $-43, %ecx
+; O2-NEXT: .Lpcsection207:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O2-NEXT: .Lpcsection142:
+; O2-NEXT: .Lpcsection208:
; O2-NEXT: jne .LBB126_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -6032,17 +6294,19 @@ define void @atomic32_nand_release(ptr %a) {
; O3-LABEL: atomic32_nand_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection140:
+; O3-NEXT: .Lpcsection204:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB126_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection205:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection141:
+; O3-NEXT: .Lpcsection206:
; O3-NEXT: orl $-43, %ecx
+; O3-NEXT: .Lpcsection207:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O3-NEXT: .Lpcsection142:
+; O3-NEXT: .Lpcsection208:
; O3-NEXT: jne .LBB126_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -6059,7 +6323,7 @@ define void @atomic32_xchg_acq_rel(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection189:
+; O0-NEXT: .Lpcsection255:
; O0-NEXT: xchgl %eax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6068,7 +6332,7 @@ define void @atomic32_xchg_acq_rel(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection143:
+; O1-NEXT: .Lpcsection209:
; O1-NEXT: xchgl %eax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6077,7 +6341,7 @@ define void @atomic32_xchg_acq_rel(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection143:
+; O2-NEXT: .Lpcsection209:
; O2-NEXT: xchgl %eax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6086,7 +6350,7 @@ define void @atomic32_xchg_acq_rel(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection143:
+; O3-NEXT: .Lpcsection209:
; O3-NEXT: xchgl %eax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6101,7 +6365,7 @@ define void @atomic32_add_acq_rel(ptr %a) {
; O0-LABEL: atomic32_add_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection190:
+; O0-NEXT: .Lpcsection256:
; O0-NEXT: lock addl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6109,7 +6373,7 @@ define void @atomic32_add_acq_rel(ptr %a) {
; O1-LABEL: atomic32_add_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection144:
+; O1-NEXT: .Lpcsection210:
; O1-NEXT: lock addl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6117,7 +6381,7 @@ define void @atomic32_add_acq_rel(ptr %a) {
; O2-LABEL: atomic32_add_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection144:
+; O2-NEXT: .Lpcsection210:
; O2-NEXT: lock addl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6125,7 +6389,7 @@ define void @atomic32_add_acq_rel(ptr %a) {
; O3-LABEL: atomic32_add_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection144:
+; O3-NEXT: .Lpcsection210:
; O3-NEXT: lock addl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6140,7 +6404,7 @@ define void @atomic32_sub_acq_rel(ptr %a) {
; O0-LABEL: atomic32_sub_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection191:
+; O0-NEXT: .Lpcsection257:
; O0-NEXT: lock subl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6148,7 +6412,7 @@ define void @atomic32_sub_acq_rel(ptr %a) {
; O1-LABEL: atomic32_sub_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection145:
+; O1-NEXT: .Lpcsection211:
; O1-NEXT: lock subl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6156,7 +6420,7 @@ define void @atomic32_sub_acq_rel(ptr %a) {
; O2-LABEL: atomic32_sub_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection145:
+; O2-NEXT: .Lpcsection211:
; O2-NEXT: lock subl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6164,7 +6428,7 @@ define void @atomic32_sub_acq_rel(ptr %a) {
; O3-LABEL: atomic32_sub_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection145:
+; O3-NEXT: .Lpcsection211:
; O3-NEXT: lock subl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6179,7 +6443,7 @@ define void @atomic32_and_acq_rel(ptr %a) {
; O0-LABEL: atomic32_and_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection192:
+; O0-NEXT: .Lpcsection258:
; O0-NEXT: lock andl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6187,7 +6451,7 @@ define void @atomic32_and_acq_rel(ptr %a) {
; O1-LABEL: atomic32_and_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection146:
+; O1-NEXT: .Lpcsection212:
; O1-NEXT: lock andl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6195,7 +6459,7 @@ define void @atomic32_and_acq_rel(ptr %a) {
; O2-LABEL: atomic32_and_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection146:
+; O2-NEXT: .Lpcsection212:
; O2-NEXT: lock andl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6203,7 +6467,7 @@ define void @atomic32_and_acq_rel(ptr %a) {
; O3-LABEL: atomic32_and_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection146:
+; O3-NEXT: .Lpcsection212:
; O3-NEXT: lock andl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6218,7 +6482,7 @@ define void @atomic32_or_acq_rel(ptr %a) {
; O0-LABEL: atomic32_or_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection193:
+; O0-NEXT: .Lpcsection259:
; O0-NEXT: lock orl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6226,7 +6490,7 @@ define void @atomic32_or_acq_rel(ptr %a) {
; O1-LABEL: atomic32_or_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection147:
+; O1-NEXT: .Lpcsection213:
; O1-NEXT: lock orl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6234,7 +6498,7 @@ define void @atomic32_or_acq_rel(ptr %a) {
; O2-LABEL: atomic32_or_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection147:
+; O2-NEXT: .Lpcsection213:
; O2-NEXT: lock orl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6242,7 +6506,7 @@ define void @atomic32_or_acq_rel(ptr %a) {
; O3-LABEL: atomic32_or_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection147:
+; O3-NEXT: .Lpcsection213:
; O3-NEXT: lock orl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6257,7 +6521,7 @@ define void @atomic32_xor_acq_rel(ptr %a) {
; O0-LABEL: atomic32_xor_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection194:
+; O0-NEXT: .Lpcsection260:
; O0-NEXT: lock xorl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6265,7 +6529,7 @@ define void @atomic32_xor_acq_rel(ptr %a) {
; O1-LABEL: atomic32_xor_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection148:
+; O1-NEXT: .Lpcsection214:
; O1-NEXT: lock xorl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6273,7 +6537,7 @@ define void @atomic32_xor_acq_rel(ptr %a) {
; O2-LABEL: atomic32_xor_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection148:
+; O2-NEXT: .Lpcsection214:
; O2-NEXT: lock xorl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6281,7 +6545,7 @@ define void @atomic32_xor_acq_rel(ptr %a) {
; O3-LABEL: atomic32_xor_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection148:
+; O3-NEXT: .Lpcsection214:
; O3-NEXT: lock xorl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6297,7 +6561,7 @@ define void @atomic32_nand_acq_rel(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection195:
+; O0-NEXT: .Lpcsection261:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: .LBB133_1: # %atomicrmw.start
@@ -6305,16 +6569,18 @@ define void @atomic32_nand_acq_rel(ptr %a) {
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %edx
+; O0-NEXT: .Lpcsection262:
; O0-NEXT: notl %edx
-; O0-NEXT: .Lpcsection196:
+; O0-NEXT: .Lpcsection263:
; O0-NEXT: orl $-43, %edx
+; O0-NEXT: .Lpcsection264:
; O0-NEXT: lock cmpxchgl %edx, (%rcx)
-; O0-NEXT: .Lpcsection197:
+; O0-NEXT: .Lpcsection265:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection198:
+; O0-NEXT: .Lpcsection266:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
-; O0-NEXT: .Lpcsection199:
+; O0-NEXT: .Lpcsection267:
; O0-NEXT: jne .LBB133_2
; O0-NEXT: jmp .LBB133_1
; O0-NEXT: .LBB133_2: # %atomicrmw.end
@@ -6324,17 +6590,19 @@ define void @atomic32_nand_acq_rel(ptr %a) {
; O1-LABEL: atomic32_nand_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection149:
+; O1-NEXT: .Lpcsection215:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB133_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection216:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection150:
+; O1-NEXT: .Lpcsection217:
; O1-NEXT: orl $-43, %ecx
+; O1-NEXT: .Lpcsection218:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O1-NEXT: .Lpcsection151:
+; O1-NEXT: .Lpcsection219:
; O1-NEXT: jne .LBB133_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -6343,17 +6611,19 @@ define void @atomic32_nand_acq_rel(ptr %a) {
; O2-LABEL: atomic32_nand_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection149:
+; O2-NEXT: .Lpcsection215:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB133_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection216:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection150:
+; O2-NEXT: .Lpcsection217:
; O2-NEXT: orl $-43, %ecx
+; O2-NEXT: .Lpcsection218:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O2-NEXT: .Lpcsection151:
+; O2-NEXT: .Lpcsection219:
; O2-NEXT: jne .LBB133_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -6362,17 +6632,19 @@ define void @atomic32_nand_acq_rel(ptr %a) {
; O3-LABEL: atomic32_nand_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection149:
+; O3-NEXT: .Lpcsection215:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB133_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection216:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection150:
+; O3-NEXT: .Lpcsection217:
; O3-NEXT: orl $-43, %ecx
+; O3-NEXT: .Lpcsection218:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O3-NEXT: .Lpcsection151:
+; O3-NEXT: .Lpcsection219:
; O3-NEXT: jne .LBB133_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -6389,7 +6661,7 @@ define void @atomic32_xchg_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection200:
+; O0-NEXT: .Lpcsection268:
; O0-NEXT: xchgl %eax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6398,7 +6670,7 @@ define void @atomic32_xchg_seq_cst(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection152:
+; O1-NEXT: .Lpcsection220:
; O1-NEXT: xchgl %eax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6407,7 +6679,7 @@ define void @atomic32_xchg_seq_cst(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection152:
+; O2-NEXT: .Lpcsection220:
; O2-NEXT: xchgl %eax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6416,7 +6688,7 @@ define void @atomic32_xchg_seq_cst(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection152:
+; O3-NEXT: .Lpcsection220:
; O3-NEXT: xchgl %eax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6431,7 +6703,7 @@ define void @atomic32_add_seq_cst(ptr %a) {
; O0-LABEL: atomic32_add_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection201:
+; O0-NEXT: .Lpcsection269:
; O0-NEXT: lock addl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6439,7 +6711,7 @@ define void @atomic32_add_seq_cst(ptr %a) {
; O1-LABEL: atomic32_add_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection153:
+; O1-NEXT: .Lpcsection221:
; O1-NEXT: lock addl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6447,7 +6719,7 @@ define void @atomic32_add_seq_cst(ptr %a) {
; O2-LABEL: atomic32_add_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection153:
+; O2-NEXT: .Lpcsection221:
; O2-NEXT: lock addl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6455,7 +6727,7 @@ define void @atomic32_add_seq_cst(ptr %a) {
; O3-LABEL: atomic32_add_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection153:
+; O3-NEXT: .Lpcsection221:
; O3-NEXT: lock addl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6470,7 +6742,7 @@ define void @atomic32_sub_seq_cst(ptr %a) {
; O0-LABEL: atomic32_sub_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection202:
+; O0-NEXT: .Lpcsection270:
; O0-NEXT: lock subl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6478,7 +6750,7 @@ define void @atomic32_sub_seq_cst(ptr %a) {
; O1-LABEL: atomic32_sub_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection154:
+; O1-NEXT: .Lpcsection222:
; O1-NEXT: lock subl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6486,7 +6758,7 @@ define void @atomic32_sub_seq_cst(ptr %a) {
; O2-LABEL: atomic32_sub_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection154:
+; O2-NEXT: .Lpcsection222:
; O2-NEXT: lock subl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6494,7 +6766,7 @@ define void @atomic32_sub_seq_cst(ptr %a) {
; O3-LABEL: atomic32_sub_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection154:
+; O3-NEXT: .Lpcsection222:
; O3-NEXT: lock subl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6509,7 +6781,7 @@ define void @atomic32_and_seq_cst(ptr %a) {
; O0-LABEL: atomic32_and_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection203:
+; O0-NEXT: .Lpcsection271:
; O0-NEXT: lock andl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6517,7 +6789,7 @@ define void @atomic32_and_seq_cst(ptr %a) {
; O1-LABEL: atomic32_and_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection155:
+; O1-NEXT: .Lpcsection223:
; O1-NEXT: lock andl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6525,7 +6797,7 @@ define void @atomic32_and_seq_cst(ptr %a) {
; O2-LABEL: atomic32_and_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection155:
+; O2-NEXT: .Lpcsection223:
; O2-NEXT: lock andl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6533,7 +6805,7 @@ define void @atomic32_and_seq_cst(ptr %a) {
; O3-LABEL: atomic32_and_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection155:
+; O3-NEXT: .Lpcsection223:
; O3-NEXT: lock andl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6548,7 +6820,7 @@ define void @atomic32_or_seq_cst(ptr %a) {
; O0-LABEL: atomic32_or_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection204:
+; O0-NEXT: .Lpcsection272:
; O0-NEXT: lock orl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6556,7 +6828,7 @@ define void @atomic32_or_seq_cst(ptr %a) {
; O1-LABEL: atomic32_or_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection156:
+; O1-NEXT: .Lpcsection224:
; O1-NEXT: lock orl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6564,7 +6836,7 @@ define void @atomic32_or_seq_cst(ptr %a) {
; O2-LABEL: atomic32_or_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection156:
+; O2-NEXT: .Lpcsection224:
; O2-NEXT: lock orl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6572,7 +6844,7 @@ define void @atomic32_or_seq_cst(ptr %a) {
; O3-LABEL: atomic32_or_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection156:
+; O3-NEXT: .Lpcsection224:
; O3-NEXT: lock orl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6587,7 +6859,7 @@ define void @atomic32_xor_seq_cst(ptr %a) {
; O0-LABEL: atomic32_xor_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection205:
+; O0-NEXT: .Lpcsection273:
; O0-NEXT: lock xorl $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6595,7 +6867,7 @@ define void @atomic32_xor_seq_cst(ptr %a) {
; O1-LABEL: atomic32_xor_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection157:
+; O1-NEXT: .Lpcsection225:
; O1-NEXT: lock xorl $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6603,7 +6875,7 @@ define void @atomic32_xor_seq_cst(ptr %a) {
; O2-LABEL: atomic32_xor_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection157:
+; O2-NEXT: .Lpcsection225:
; O2-NEXT: lock xorl $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6611,7 +6883,7 @@ define void @atomic32_xor_seq_cst(ptr %a) {
; O3-LABEL: atomic32_xor_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection157:
+; O3-NEXT: .Lpcsection225:
; O3-NEXT: lock xorl $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6627,7 +6899,7 @@ define void @atomic32_nand_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection206:
+; O0-NEXT: .Lpcsection274:
; O0-NEXT: movl (%rdi), %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: .LBB140_1: # %atomicrmw.start
@@ -6635,16 +6907,18 @@ define void @atomic32_nand_seq_cst(ptr %a) {
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %edx
+; O0-NEXT: .Lpcsection275:
; O0-NEXT: notl %edx
-; O0-NEXT: .Lpcsection207:
+; O0-NEXT: .Lpcsection276:
; O0-NEXT: orl $-43, %edx
+; O0-NEXT: .Lpcsection277:
; O0-NEXT: lock cmpxchgl %edx, (%rcx)
-; O0-NEXT: .Lpcsection208:
+; O0-NEXT: .Lpcsection278:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection209:
+; O0-NEXT: .Lpcsection279:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
-; O0-NEXT: .Lpcsection210:
+; O0-NEXT: .Lpcsection280:
; O0-NEXT: jne .LBB140_2
; O0-NEXT: jmp .LBB140_1
; O0-NEXT: .LBB140_2: # %atomicrmw.end
@@ -6654,17 +6928,19 @@ define void @atomic32_nand_seq_cst(ptr %a) {
; O1-LABEL: atomic32_nand_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection158:
+; O1-NEXT: .Lpcsection226:
; O1-NEXT: movl (%rdi), %eax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB140_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection227:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection159:
+; O1-NEXT: .Lpcsection228:
; O1-NEXT: orl $-43, %ecx
+; O1-NEXT: .Lpcsection229:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O1-NEXT: .Lpcsection160:
+; O1-NEXT: .Lpcsection230:
; O1-NEXT: jne .LBB140_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -6673,17 +6949,19 @@ define void @atomic32_nand_seq_cst(ptr %a) {
; O2-LABEL: atomic32_nand_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection158:
+; O2-NEXT: .Lpcsection226:
; O2-NEXT: movl (%rdi), %eax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB140_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection227:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection159:
+; O2-NEXT: .Lpcsection228:
; O2-NEXT: orl $-43, %ecx
+; O2-NEXT: .Lpcsection229:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O2-NEXT: .Lpcsection160:
+; O2-NEXT: .Lpcsection230:
; O2-NEXT: jne .LBB140_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -6692,17 +6970,19 @@ define void @atomic32_nand_seq_cst(ptr %a) {
; O3-LABEL: atomic32_nand_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection158:
+; O3-NEXT: .Lpcsection226:
; O3-NEXT: movl (%rdi), %eax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB140_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection227:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection159:
+; O3-NEXT: .Lpcsection228:
; O3-NEXT: orl $-43, %ecx
+; O3-NEXT: .Lpcsection229:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O3-NEXT: .Lpcsection160:
+; O3-NEXT: .Lpcsection230:
; O3-NEXT: jne .LBB140_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -6721,14 +7001,17 @@ define void @atomic32_cas_monotonic(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection281:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection211:
+; O0-NEXT: .Lpcsection282:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection283:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection212:
+; O0-NEXT: .Lpcsection284:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection285:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6738,10 +7021,13 @@ define void @atomic32_cas_monotonic(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection231:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection232:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection233:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6751,10 +7037,13 @@ define void @atomic32_cas_monotonic(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection231:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection232:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection233:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6764,10 +7053,13 @@ define void @atomic32_cas_monotonic(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection231:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection232:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection233:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6787,14 +7079,17 @@ define void @atomic32_cas_acquire(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection286:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection213:
+; O0-NEXT: .Lpcsection287:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection288:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection214:
+; O0-NEXT: .Lpcsection289:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection290:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6804,10 +7099,13 @@ define void @atomic32_cas_acquire(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection234:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection235:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection236:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6817,10 +7115,13 @@ define void @atomic32_cas_acquire(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection234:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection235:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection236:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6830,10 +7131,13 @@ define void @atomic32_cas_acquire(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection234:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection235:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection236:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6853,14 +7157,17 @@ define void @atomic32_cas_release(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection291:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection215:
+; O0-NEXT: .Lpcsection292:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection293:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection216:
+; O0-NEXT: .Lpcsection294:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection295:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6870,10 +7177,13 @@ define void @atomic32_cas_release(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection237:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection238:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection239:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6883,10 +7193,13 @@ define void @atomic32_cas_release(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection237:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection238:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection239:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6896,10 +7209,13 @@ define void @atomic32_cas_release(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection237:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection238:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection239:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6919,14 +7235,17 @@ define void @atomic32_cas_acq_rel(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection296:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection217:
+; O0-NEXT: .Lpcsection297:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection298:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection218:
+; O0-NEXT: .Lpcsection299:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection300:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -6936,10 +7255,13 @@ define void @atomic32_cas_acq_rel(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection240:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection241:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection242:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -6949,10 +7271,13 @@ define void @atomic32_cas_acq_rel(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection240:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection241:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection242:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -6962,10 +7287,13 @@ define void @atomic32_cas_acq_rel(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection240:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection241:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection242:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -6985,14 +7313,17 @@ define void @atomic32_cas_seq_cst(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection301:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection219:
+; O0-NEXT: .Lpcsection302:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection303:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
-; O0-NEXT: .Lpcsection220:
+; O0-NEXT: .Lpcsection304:
; O0-NEXT: # kill: def $edx killed $eax
; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
+; O0-NEXT: .Lpcsection305:
; O0-NEXT: lock cmpxchgl %ecx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7002,10 +7333,13 @@ define void @atomic32_cas_seq_cst(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection243:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection244:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection245:
; O1-NEXT: lock cmpxchgl %ecx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7015,10 +7349,13 @@ define void @atomic32_cas_seq_cst(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection243:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection244:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection245:
; O2-NEXT: lock cmpxchgl %ecx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7028,10 +7365,13 @@ define void @atomic32_cas_seq_cst(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection243:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection244:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection245:
; O3-NEXT: lock cmpxchgl %ecx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7048,7 +7388,7 @@ define i64 @atomic64_load_unordered(ptr %a) {
; O0-LABEL: atomic64_load_unordered:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection221:
+; O0-NEXT: .Lpcsection306:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7056,7 +7396,7 @@ define i64 @atomic64_load_unordered(ptr %a) {
; O1-LABEL: atomic64_load_unordered:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection161:
+; O1-NEXT: .Lpcsection246:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7064,7 +7404,7 @@ define i64 @atomic64_load_unordered(ptr %a) {
; O2-LABEL: atomic64_load_unordered:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection161:
+; O2-NEXT: .Lpcsection246:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7072,7 +7412,7 @@ define i64 @atomic64_load_unordered(ptr %a) {
; O3-LABEL: atomic64_load_unordered:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection161:
+; O3-NEXT: .Lpcsection246:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7087,7 +7427,7 @@ define i64 @atomic64_load_monotonic(ptr %a) {
; O0-LABEL: atomic64_load_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection222:
+; O0-NEXT: .Lpcsection307:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7095,7 +7435,7 @@ define i64 @atomic64_load_monotonic(ptr %a) {
; O1-LABEL: atomic64_load_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection162:
+; O1-NEXT: .Lpcsection247:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7103,7 +7443,7 @@ define i64 @atomic64_load_monotonic(ptr %a) {
; O2-LABEL: atomic64_load_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection162:
+; O2-NEXT: .Lpcsection247:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7111,7 +7451,7 @@ define i64 @atomic64_load_monotonic(ptr %a) {
; O3-LABEL: atomic64_load_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection162:
+; O3-NEXT: .Lpcsection247:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7126,7 +7466,7 @@ define i64 @atomic64_load_acquire(ptr %a) {
; O0-LABEL: atomic64_load_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection223:
+; O0-NEXT: .Lpcsection308:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7134,7 +7474,7 @@ define i64 @atomic64_load_acquire(ptr %a) {
; O1-LABEL: atomic64_load_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection163:
+; O1-NEXT: .Lpcsection248:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7142,7 +7482,7 @@ define i64 @atomic64_load_acquire(ptr %a) {
; O2-LABEL: atomic64_load_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection163:
+; O2-NEXT: .Lpcsection248:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7150,7 +7490,7 @@ define i64 @atomic64_load_acquire(ptr %a) {
; O3-LABEL: atomic64_load_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection163:
+; O3-NEXT: .Lpcsection248:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7165,7 +7505,7 @@ define i64 @atomic64_load_seq_cst(ptr %a) {
; O0-LABEL: atomic64_load_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection224:
+; O0-NEXT: .Lpcsection309:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7173,7 +7513,7 @@ define i64 @atomic64_load_seq_cst(ptr %a) {
; O1-LABEL: atomic64_load_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection164:
+; O1-NEXT: .Lpcsection249:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7181,7 +7521,7 @@ define i64 @atomic64_load_seq_cst(ptr %a) {
; O2-LABEL: atomic64_load_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection164:
+; O2-NEXT: .Lpcsection249:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7189,7 +7529,7 @@ define i64 @atomic64_load_seq_cst(ptr %a) {
; O3-LABEL: atomic64_load_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection164:
+; O3-NEXT: .Lpcsection249:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7204,7 +7544,7 @@ define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) {
; O0-LABEL: atomic64_load_seq_cst_ptr_ty:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection225:
+; O0-NEXT: .Lpcsection310:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7212,7 +7552,7 @@ define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) {
; O1-LABEL: atomic64_load_seq_cst_ptr_ty:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection165:
+; O1-NEXT: .Lpcsection250:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7220,7 +7560,7 @@ define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) {
; O2-LABEL: atomic64_load_seq_cst_ptr_ty:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection165:
+; O2-NEXT: .Lpcsection250:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7228,7 +7568,7 @@ define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) {
; O3-LABEL: atomic64_load_seq_cst_ptr_ty:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection165:
+; O3-NEXT: .Lpcsection250:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7243,7 +7583,7 @@ define void @atomic64_store_unordered(ptr %a) {
; O0-LABEL: atomic64_store_unordered:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection226:
+; O0-NEXT: .Lpcsection311:
; O0-NEXT: movq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7251,7 +7591,7 @@ define void @atomic64_store_unordered(ptr %a) {
; O1-LABEL: atomic64_store_unordered:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection166:
+; O1-NEXT: .Lpcsection251:
; O1-NEXT: movq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7259,7 +7599,7 @@ define void @atomic64_store_unordered(ptr %a) {
; O2-LABEL: atomic64_store_unordered:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection166:
+; O2-NEXT: .Lpcsection251:
; O2-NEXT: movq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7267,7 +7607,7 @@ define void @atomic64_store_unordered(ptr %a) {
; O3-LABEL: atomic64_store_unordered:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection166:
+; O3-NEXT: .Lpcsection251:
; O3-NEXT: movq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7282,7 +7622,7 @@ define void @atomic64_store_monotonic(ptr %a) {
; O0-LABEL: atomic64_store_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection227:
+; O0-NEXT: .Lpcsection312:
; O0-NEXT: movq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7290,7 +7630,7 @@ define void @atomic64_store_monotonic(ptr %a) {
; O1-LABEL: atomic64_store_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection167:
+; O1-NEXT: .Lpcsection252:
; O1-NEXT: movq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7298,7 +7638,7 @@ define void @atomic64_store_monotonic(ptr %a) {
; O2-LABEL: atomic64_store_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection167:
+; O2-NEXT: .Lpcsection252:
; O2-NEXT: movq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7306,7 +7646,7 @@ define void @atomic64_store_monotonic(ptr %a) {
; O3-LABEL: atomic64_store_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection167:
+; O3-NEXT: .Lpcsection252:
; O3-NEXT: movq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7321,7 +7661,7 @@ define void @atomic64_store_release(ptr %a) {
; O0-LABEL: atomic64_store_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection228:
+; O0-NEXT: .Lpcsection313:
; O0-NEXT: movq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7329,7 +7669,7 @@ define void @atomic64_store_release(ptr %a) {
; O1-LABEL: atomic64_store_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection168:
+; O1-NEXT: .Lpcsection253:
; O1-NEXT: movq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7337,7 +7677,7 @@ define void @atomic64_store_release(ptr %a) {
; O2-LABEL: atomic64_store_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection168:
+; O2-NEXT: .Lpcsection253:
; O2-NEXT: movq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7345,7 +7685,7 @@ define void @atomic64_store_release(ptr %a) {
; O3-LABEL: atomic64_store_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection168:
+; O3-NEXT: .Lpcsection253:
; O3-NEXT: movq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7361,7 +7701,7 @@ define void @atomic64_store_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection229:
+; O0-NEXT: .Lpcsection314:
; O0-NEXT: xchgq %rax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7370,7 +7710,7 @@ define void @atomic64_store_seq_cst(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection169:
+; O1-NEXT: .Lpcsection254:
; O1-NEXT: xchgq %rax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7379,7 +7719,7 @@ define void @atomic64_store_seq_cst(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection169:
+; O2-NEXT: .Lpcsection254:
; O2-NEXT: xchgq %rax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7388,7 +7728,7 @@ define void @atomic64_store_seq_cst(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection169:
+; O3-NEXT: .Lpcsection254:
; O3-NEXT: xchgq %rax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7403,7 +7743,7 @@ define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) {
; O0-LABEL: atomic64_store_seq_cst_ptr_ty:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection230:
+; O0-NEXT: .Lpcsection315:
; O0-NEXT: xchgq %rsi, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7411,7 +7751,7 @@ define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) {
; O1-LABEL: atomic64_store_seq_cst_ptr_ty:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection170:
+; O1-NEXT: .Lpcsection255:
; O1-NEXT: xchgq %rsi, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7419,7 +7759,7 @@ define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) {
; O2-LABEL: atomic64_store_seq_cst_ptr_ty:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection170:
+; O2-NEXT: .Lpcsection255:
; O2-NEXT: xchgq %rsi, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7427,7 +7767,7 @@ define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) {
; O3-LABEL: atomic64_store_seq_cst_ptr_ty:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection170:
+; O3-NEXT: .Lpcsection255:
; O3-NEXT: xchgq %rsi, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7443,7 +7783,7 @@ define void @atomic64_xchg_monotonic(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection231:
+; O0-NEXT: .Lpcsection316:
; O0-NEXT: xchgq %rax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7452,7 +7792,7 @@ define void @atomic64_xchg_monotonic(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection171:
+; O1-NEXT: .Lpcsection256:
; O1-NEXT: xchgq %rax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7461,7 +7801,7 @@ define void @atomic64_xchg_monotonic(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection171:
+; O2-NEXT: .Lpcsection256:
; O2-NEXT: xchgq %rax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7470,7 +7810,7 @@ define void @atomic64_xchg_monotonic(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection171:
+; O3-NEXT: .Lpcsection256:
; O3-NEXT: xchgq %rax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7485,7 +7825,7 @@ define void @atomic64_add_monotonic(ptr %a) {
; O0-LABEL: atomic64_add_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection232:
+; O0-NEXT: .Lpcsection317:
; O0-NEXT: lock addq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7493,7 +7833,7 @@ define void @atomic64_add_monotonic(ptr %a) {
; O1-LABEL: atomic64_add_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection172:
+; O1-NEXT: .Lpcsection257:
; O1-NEXT: lock addq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7501,7 +7841,7 @@ define void @atomic64_add_monotonic(ptr %a) {
; O2-LABEL: atomic64_add_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection172:
+; O2-NEXT: .Lpcsection257:
; O2-NEXT: lock addq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7509,7 +7849,7 @@ define void @atomic64_add_monotonic(ptr %a) {
; O3-LABEL: atomic64_add_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection172:
+; O3-NEXT: .Lpcsection257:
; O3-NEXT: lock addq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7524,7 +7864,7 @@ define void @atomic64_sub_monotonic(ptr %a) {
; O0-LABEL: atomic64_sub_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection233:
+; O0-NEXT: .Lpcsection318:
; O0-NEXT: lock subq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7532,7 +7872,7 @@ define void @atomic64_sub_monotonic(ptr %a) {
; O1-LABEL: atomic64_sub_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection173:
+; O1-NEXT: .Lpcsection258:
; O1-NEXT: lock subq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7540,7 +7880,7 @@ define void @atomic64_sub_monotonic(ptr %a) {
; O2-LABEL: atomic64_sub_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection173:
+; O2-NEXT: .Lpcsection258:
; O2-NEXT: lock subq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7548,7 +7888,7 @@ define void @atomic64_sub_monotonic(ptr %a) {
; O3-LABEL: atomic64_sub_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection173:
+; O3-NEXT: .Lpcsection258:
; O3-NEXT: lock subq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7563,7 +7903,7 @@ define void @atomic64_and_monotonic(ptr %a) {
; O0-LABEL: atomic64_and_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection234:
+; O0-NEXT: .Lpcsection319:
; O0-NEXT: lock andq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7571,7 +7911,7 @@ define void @atomic64_and_monotonic(ptr %a) {
; O1-LABEL: atomic64_and_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection174:
+; O1-NEXT: .Lpcsection259:
; O1-NEXT: lock andq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7579,7 +7919,7 @@ define void @atomic64_and_monotonic(ptr %a) {
; O2-LABEL: atomic64_and_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection174:
+; O2-NEXT: .Lpcsection259:
; O2-NEXT: lock andq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7587,7 +7927,7 @@ define void @atomic64_and_monotonic(ptr %a) {
; O3-LABEL: atomic64_and_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection174:
+; O3-NEXT: .Lpcsection259:
; O3-NEXT: lock andq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7602,7 +7942,7 @@ define void @atomic64_or_monotonic(ptr %a) {
; O0-LABEL: atomic64_or_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection235:
+; O0-NEXT: .Lpcsection320:
; O0-NEXT: lock orq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7610,7 +7950,7 @@ define void @atomic64_or_monotonic(ptr %a) {
; O1-LABEL: atomic64_or_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection175:
+; O1-NEXT: .Lpcsection260:
; O1-NEXT: lock orq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7618,7 +7958,7 @@ define void @atomic64_or_monotonic(ptr %a) {
; O2-LABEL: atomic64_or_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection175:
+; O2-NEXT: .Lpcsection260:
; O2-NEXT: lock orq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7626,7 +7966,7 @@ define void @atomic64_or_monotonic(ptr %a) {
; O3-LABEL: atomic64_or_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection175:
+; O3-NEXT: .Lpcsection260:
; O3-NEXT: lock orq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7641,7 +7981,7 @@ define void @atomic64_xor_monotonic(ptr %a) {
; O0-LABEL: atomic64_xor_monotonic:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection236:
+; O0-NEXT: .Lpcsection321:
; O0-NEXT: lock xorq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7649,7 +7989,7 @@ define void @atomic64_xor_monotonic(ptr %a) {
; O1-LABEL: atomic64_xor_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection176:
+; O1-NEXT: .Lpcsection261:
; O1-NEXT: lock xorq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7657,7 +7997,7 @@ define void @atomic64_xor_monotonic(ptr %a) {
; O2-LABEL: atomic64_xor_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection176:
+; O2-NEXT: .Lpcsection261:
; O2-NEXT: lock xorq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7665,7 +8005,7 @@ define void @atomic64_xor_monotonic(ptr %a) {
; O3-LABEL: atomic64_xor_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection176:
+; O3-NEXT: .Lpcsection261:
; O3-NEXT: lock xorq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7681,7 +8021,7 @@ define void @atomic64_nand_monotonic(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection237:
+; O0-NEXT: .Lpcsection322:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: .LBB162_1: # %atomicrmw.start
@@ -7689,18 +8029,21 @@ define void @atomic64_nand_monotonic(ptr %a) {
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %esi
+; O0-NEXT: .Lpcsection323:
; O0-NEXT: notl %esi
+; O0-NEXT: .Lpcsection324:
; O0-NEXT: # implicit-def: $rdx
; O0-NEXT: movl %esi, %edx
-; O0-NEXT: .Lpcsection238:
+; O0-NEXT: .Lpcsection325:
; O0-NEXT: orq $-43, %rdx
+; O0-NEXT: .Lpcsection326:
; O0-NEXT: lock cmpxchgq %rdx, (%rcx)
-; O0-NEXT: .Lpcsection239:
+; O0-NEXT: .Lpcsection327:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection240:
+; O0-NEXT: .Lpcsection328:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; O0-NEXT: .Lpcsection241:
+; O0-NEXT: .Lpcsection329:
; O0-NEXT: jne .LBB162_2
; O0-NEXT: jmp .LBB162_1
; O0-NEXT: .LBB162_2: # %atomicrmw.end
@@ -7710,17 +8053,19 @@ define void @atomic64_nand_monotonic(ptr %a) {
; O1-LABEL: atomic64_nand_monotonic:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection177:
+; O1-NEXT: .Lpcsection262:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB162_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection263:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection178:
+; O1-NEXT: .Lpcsection264:
; O1-NEXT: orq $-43, %rcx
+; O1-NEXT: .Lpcsection265:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O1-NEXT: .Lpcsection179:
+; O1-NEXT: .Lpcsection266:
; O1-NEXT: jne .LBB162_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -7729,17 +8074,19 @@ define void @atomic64_nand_monotonic(ptr %a) {
; O2-LABEL: atomic64_nand_monotonic:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection177:
+; O2-NEXT: .Lpcsection262:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB162_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection263:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection178:
+; O2-NEXT: .Lpcsection264:
; O2-NEXT: orq $-43, %rcx
+; O2-NEXT: .Lpcsection265:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O2-NEXT: .Lpcsection179:
+; O2-NEXT: .Lpcsection266:
; O2-NEXT: jne .LBB162_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -7748,17 +8095,19 @@ define void @atomic64_nand_monotonic(ptr %a) {
; O3-LABEL: atomic64_nand_monotonic:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection177:
+; O3-NEXT: .Lpcsection262:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB162_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection263:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection178:
+; O3-NEXT: .Lpcsection264:
; O3-NEXT: orq $-43, %rcx
+; O3-NEXT: .Lpcsection265:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O3-NEXT: .Lpcsection179:
+; O3-NEXT: .Lpcsection266:
; O3-NEXT: jne .LBB162_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -7775,7 +8124,7 @@ define void @atomic64_xchg_acquire(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection242:
+; O0-NEXT: .Lpcsection330:
; O0-NEXT: xchgq %rax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7784,7 +8133,7 @@ define void @atomic64_xchg_acquire(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection180:
+; O1-NEXT: .Lpcsection267:
; O1-NEXT: xchgq %rax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7793,7 +8142,7 @@ define void @atomic64_xchg_acquire(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection180:
+; O2-NEXT: .Lpcsection267:
; O2-NEXT: xchgq %rax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7802,7 +8151,7 @@ define void @atomic64_xchg_acquire(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection180:
+; O3-NEXT: .Lpcsection267:
; O3-NEXT: xchgq %rax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7817,7 +8166,7 @@ define void @atomic64_add_acquire(ptr %a) {
; O0-LABEL: atomic64_add_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection243:
+; O0-NEXT: .Lpcsection331:
; O0-NEXT: lock addq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7825,7 +8174,7 @@ define void @atomic64_add_acquire(ptr %a) {
; O1-LABEL: atomic64_add_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection181:
+; O1-NEXT: .Lpcsection268:
; O1-NEXT: lock addq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7833,7 +8182,7 @@ define void @atomic64_add_acquire(ptr %a) {
; O2-LABEL: atomic64_add_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection181:
+; O2-NEXT: .Lpcsection268:
; O2-NEXT: lock addq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7841,7 +8190,7 @@ define void @atomic64_add_acquire(ptr %a) {
; O3-LABEL: atomic64_add_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection181:
+; O3-NEXT: .Lpcsection268:
; O3-NEXT: lock addq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7856,7 +8205,7 @@ define void @atomic64_sub_acquire(ptr %a) {
; O0-LABEL: atomic64_sub_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection244:
+; O0-NEXT: .Lpcsection332:
; O0-NEXT: lock subq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7864,7 +8213,7 @@ define void @atomic64_sub_acquire(ptr %a) {
; O1-LABEL: atomic64_sub_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection182:
+; O1-NEXT: .Lpcsection269:
; O1-NEXT: lock subq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7872,7 +8221,7 @@ define void @atomic64_sub_acquire(ptr %a) {
; O2-LABEL: atomic64_sub_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection182:
+; O2-NEXT: .Lpcsection269:
; O2-NEXT: lock subq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7880,7 +8229,7 @@ define void @atomic64_sub_acquire(ptr %a) {
; O3-LABEL: atomic64_sub_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection182:
+; O3-NEXT: .Lpcsection269:
; O3-NEXT: lock subq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7895,7 +8244,7 @@ define void @atomic64_and_acquire(ptr %a) {
; O0-LABEL: atomic64_and_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection245:
+; O0-NEXT: .Lpcsection333:
; O0-NEXT: lock andq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7903,7 +8252,7 @@ define void @atomic64_and_acquire(ptr %a) {
; O1-LABEL: atomic64_and_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection183:
+; O1-NEXT: .Lpcsection270:
; O1-NEXT: lock andq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7911,7 +8260,7 @@ define void @atomic64_and_acquire(ptr %a) {
; O2-LABEL: atomic64_and_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection183:
+; O2-NEXT: .Lpcsection270:
; O2-NEXT: lock andq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7919,7 +8268,7 @@ define void @atomic64_and_acquire(ptr %a) {
; O3-LABEL: atomic64_and_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection183:
+; O3-NEXT: .Lpcsection270:
; O3-NEXT: lock andq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7934,7 +8283,7 @@ define void @atomic64_or_acquire(ptr %a) {
; O0-LABEL: atomic64_or_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection246:
+; O0-NEXT: .Lpcsection334:
; O0-NEXT: lock orq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7942,7 +8291,7 @@ define void @atomic64_or_acquire(ptr %a) {
; O1-LABEL: atomic64_or_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection184:
+; O1-NEXT: .Lpcsection271:
; O1-NEXT: lock orq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7950,7 +8299,7 @@ define void @atomic64_or_acquire(ptr %a) {
; O2-LABEL: atomic64_or_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection184:
+; O2-NEXT: .Lpcsection271:
; O2-NEXT: lock orq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7958,7 +8307,7 @@ define void @atomic64_or_acquire(ptr %a) {
; O3-LABEL: atomic64_or_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection184:
+; O3-NEXT: .Lpcsection271:
; O3-NEXT: lock orq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -7973,7 +8322,7 @@ define void @atomic64_xor_acquire(ptr %a) {
; O0-LABEL: atomic64_xor_acquire:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection247:
+; O0-NEXT: .Lpcsection335:
; O0-NEXT: lock xorq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -7981,7 +8330,7 @@ define void @atomic64_xor_acquire(ptr %a) {
; O1-LABEL: atomic64_xor_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection185:
+; O1-NEXT: .Lpcsection272:
; O1-NEXT: lock xorq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -7989,7 +8338,7 @@ define void @atomic64_xor_acquire(ptr %a) {
; O2-LABEL: atomic64_xor_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection185:
+; O2-NEXT: .Lpcsection272:
; O2-NEXT: lock xorq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -7997,7 +8346,7 @@ define void @atomic64_xor_acquire(ptr %a) {
; O3-LABEL: atomic64_xor_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection185:
+; O3-NEXT: .Lpcsection272:
; O3-NEXT: lock xorq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8013,7 +8362,7 @@ define void @atomic64_nand_acquire(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection248:
+; O0-NEXT: .Lpcsection336:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: .LBB169_1: # %atomicrmw.start
@@ -8021,18 +8370,21 @@ define void @atomic64_nand_acquire(ptr %a) {
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %esi
+; O0-NEXT: .Lpcsection337:
; O0-NEXT: notl %esi
+; O0-NEXT: .Lpcsection338:
; O0-NEXT: # implicit-def: $rdx
; O0-NEXT: movl %esi, %edx
-; O0-NEXT: .Lpcsection249:
+; O0-NEXT: .Lpcsection339:
; O0-NEXT: orq $-43, %rdx
+; O0-NEXT: .Lpcsection340:
; O0-NEXT: lock cmpxchgq %rdx, (%rcx)
-; O0-NEXT: .Lpcsection250:
+; O0-NEXT: .Lpcsection341:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection251:
+; O0-NEXT: .Lpcsection342:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; O0-NEXT: .Lpcsection252:
+; O0-NEXT: .Lpcsection343:
; O0-NEXT: jne .LBB169_2
; O0-NEXT: jmp .LBB169_1
; O0-NEXT: .LBB169_2: # %atomicrmw.end
@@ -8042,17 +8394,19 @@ define void @atomic64_nand_acquire(ptr %a) {
; O1-LABEL: atomic64_nand_acquire:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection186:
+; O1-NEXT: .Lpcsection273:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB169_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection274:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection187:
+; O1-NEXT: .Lpcsection275:
; O1-NEXT: orq $-43, %rcx
+; O1-NEXT: .Lpcsection276:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O1-NEXT: .Lpcsection188:
+; O1-NEXT: .Lpcsection277:
; O1-NEXT: jne .LBB169_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -8061,17 +8415,19 @@ define void @atomic64_nand_acquire(ptr %a) {
; O2-LABEL: atomic64_nand_acquire:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection186:
+; O2-NEXT: .Lpcsection273:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB169_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection274:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection187:
+; O2-NEXT: .Lpcsection275:
; O2-NEXT: orq $-43, %rcx
+; O2-NEXT: .Lpcsection276:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O2-NEXT: .Lpcsection188:
+; O2-NEXT: .Lpcsection277:
; O2-NEXT: jne .LBB169_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -8080,17 +8436,19 @@ define void @atomic64_nand_acquire(ptr %a) {
; O3-LABEL: atomic64_nand_acquire:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection186:
+; O3-NEXT: .Lpcsection273:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB169_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection274:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection187:
+; O3-NEXT: .Lpcsection275:
; O3-NEXT: orq $-43, %rcx
+; O3-NEXT: .Lpcsection276:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O3-NEXT: .Lpcsection188:
+; O3-NEXT: .Lpcsection277:
; O3-NEXT: jne .LBB169_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -8107,7 +8465,7 @@ define void @atomic64_xchg_release(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection253:
+; O0-NEXT: .Lpcsection344:
; O0-NEXT: xchgq %rax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8116,7 +8474,7 @@ define void @atomic64_xchg_release(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection189:
+; O1-NEXT: .Lpcsection278:
; O1-NEXT: xchgq %rax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8125,7 +8483,7 @@ define void @atomic64_xchg_release(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection189:
+; O2-NEXT: .Lpcsection278:
; O2-NEXT: xchgq %rax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8134,7 +8492,7 @@ define void @atomic64_xchg_release(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection189:
+; O3-NEXT: .Lpcsection278:
; O3-NEXT: xchgq %rax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8149,7 +8507,7 @@ define void @atomic64_add_release(ptr %a) {
; O0-LABEL: atomic64_add_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection254:
+; O0-NEXT: .Lpcsection345:
; O0-NEXT: lock addq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8157,7 +8515,7 @@ define void @atomic64_add_release(ptr %a) {
; O1-LABEL: atomic64_add_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection190:
+; O1-NEXT: .Lpcsection279:
; O1-NEXT: lock addq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8165,7 +8523,7 @@ define void @atomic64_add_release(ptr %a) {
; O2-LABEL: atomic64_add_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection190:
+; O2-NEXT: .Lpcsection279:
; O2-NEXT: lock addq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8173,7 +8531,7 @@ define void @atomic64_add_release(ptr %a) {
; O3-LABEL: atomic64_add_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection190:
+; O3-NEXT: .Lpcsection279:
; O3-NEXT: lock addq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8188,7 +8546,7 @@ define void @atomic64_sub_release(ptr %a) {
; O0-LABEL: atomic64_sub_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection255:
+; O0-NEXT: .Lpcsection346:
; O0-NEXT: lock subq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8196,7 +8554,7 @@ define void @atomic64_sub_release(ptr %a) {
; O1-LABEL: atomic64_sub_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection191:
+; O1-NEXT: .Lpcsection280:
; O1-NEXT: lock subq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8204,7 +8562,7 @@ define void @atomic64_sub_release(ptr %a) {
; O2-LABEL: atomic64_sub_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection191:
+; O2-NEXT: .Lpcsection280:
; O2-NEXT: lock subq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8212,7 +8570,7 @@ define void @atomic64_sub_release(ptr %a) {
; O3-LABEL: atomic64_sub_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection191:
+; O3-NEXT: .Lpcsection280:
; O3-NEXT: lock subq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8227,7 +8585,7 @@ define void @atomic64_and_release(ptr %a) {
; O0-LABEL: atomic64_and_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection256:
+; O0-NEXT: .Lpcsection347:
; O0-NEXT: lock andq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8235,7 +8593,7 @@ define void @atomic64_and_release(ptr %a) {
; O1-LABEL: atomic64_and_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection192:
+; O1-NEXT: .Lpcsection281:
; O1-NEXT: lock andq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8243,7 +8601,7 @@ define void @atomic64_and_release(ptr %a) {
; O2-LABEL: atomic64_and_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection192:
+; O2-NEXT: .Lpcsection281:
; O2-NEXT: lock andq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8251,7 +8609,7 @@ define void @atomic64_and_release(ptr %a) {
; O3-LABEL: atomic64_and_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection192:
+; O3-NEXT: .Lpcsection281:
; O3-NEXT: lock andq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8266,7 +8624,7 @@ define void @atomic64_or_release(ptr %a) {
; O0-LABEL: atomic64_or_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection257:
+; O0-NEXT: .Lpcsection348:
; O0-NEXT: lock orq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8274,7 +8632,7 @@ define void @atomic64_or_release(ptr %a) {
; O1-LABEL: atomic64_or_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection193:
+; O1-NEXT: .Lpcsection282:
; O1-NEXT: lock orq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8282,7 +8640,7 @@ define void @atomic64_or_release(ptr %a) {
; O2-LABEL: atomic64_or_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection193:
+; O2-NEXT: .Lpcsection282:
; O2-NEXT: lock orq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8290,7 +8648,7 @@ define void @atomic64_or_release(ptr %a) {
; O3-LABEL: atomic64_or_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection193:
+; O3-NEXT: .Lpcsection282:
; O3-NEXT: lock orq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8305,7 +8663,7 @@ define void @atomic64_xor_release(ptr %a) {
; O0-LABEL: atomic64_xor_release:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection258:
+; O0-NEXT: .Lpcsection349:
; O0-NEXT: lock xorq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8313,7 +8671,7 @@ define void @atomic64_xor_release(ptr %a) {
; O1-LABEL: atomic64_xor_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection194:
+; O1-NEXT: .Lpcsection283:
; O1-NEXT: lock xorq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8321,7 +8679,7 @@ define void @atomic64_xor_release(ptr %a) {
; O2-LABEL: atomic64_xor_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection194:
+; O2-NEXT: .Lpcsection283:
; O2-NEXT: lock xorq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8329,7 +8687,7 @@ define void @atomic64_xor_release(ptr %a) {
; O3-LABEL: atomic64_xor_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection194:
+; O3-NEXT: .Lpcsection283:
; O3-NEXT: lock xorq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8345,7 +8703,7 @@ define void @atomic64_nand_release(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection259:
+; O0-NEXT: .Lpcsection350:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: .LBB176_1: # %atomicrmw.start
@@ -8353,18 +8711,21 @@ define void @atomic64_nand_release(ptr %a) {
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %esi
+; O0-NEXT: .Lpcsection351:
; O0-NEXT: notl %esi
+; O0-NEXT: .Lpcsection352:
; O0-NEXT: # implicit-def: $rdx
; O0-NEXT: movl %esi, %edx
-; O0-NEXT: .Lpcsection260:
+; O0-NEXT: .Lpcsection353:
; O0-NEXT: orq $-43, %rdx
+; O0-NEXT: .Lpcsection354:
; O0-NEXT: lock cmpxchgq %rdx, (%rcx)
-; O0-NEXT: .Lpcsection261:
+; O0-NEXT: .Lpcsection355:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection262:
+; O0-NEXT: .Lpcsection356:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; O0-NEXT: .Lpcsection263:
+; O0-NEXT: .Lpcsection357:
; O0-NEXT: jne .LBB176_2
; O0-NEXT: jmp .LBB176_1
; O0-NEXT: .LBB176_2: # %atomicrmw.end
@@ -8374,17 +8735,19 @@ define void @atomic64_nand_release(ptr %a) {
; O1-LABEL: atomic64_nand_release:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection195:
+; O1-NEXT: .Lpcsection284:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB176_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection285:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection196:
+; O1-NEXT: .Lpcsection286:
; O1-NEXT: orq $-43, %rcx
+; O1-NEXT: .Lpcsection287:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O1-NEXT: .Lpcsection197:
+; O1-NEXT: .Lpcsection288:
; O1-NEXT: jne .LBB176_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -8393,17 +8756,19 @@ define void @atomic64_nand_release(ptr %a) {
; O2-LABEL: atomic64_nand_release:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection195:
+; O2-NEXT: .Lpcsection284:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB176_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection285:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection196:
+; O2-NEXT: .Lpcsection286:
; O2-NEXT: orq $-43, %rcx
+; O2-NEXT: .Lpcsection287:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O2-NEXT: .Lpcsection197:
+; O2-NEXT: .Lpcsection288:
; O2-NEXT: jne .LBB176_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -8412,17 +8777,19 @@ define void @atomic64_nand_release(ptr %a) {
; O3-LABEL: atomic64_nand_release:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection195:
+; O3-NEXT: .Lpcsection284:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB176_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection285:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection196:
+; O3-NEXT: .Lpcsection286:
; O3-NEXT: orq $-43, %rcx
+; O3-NEXT: .Lpcsection287:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O3-NEXT: .Lpcsection197:
+; O3-NEXT: .Lpcsection288:
; O3-NEXT: jne .LBB176_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -8439,7 +8806,7 @@ define void @atomic64_xchg_acq_rel(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection264:
+; O0-NEXT: .Lpcsection358:
; O0-NEXT: xchgq %rax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8448,7 +8815,7 @@ define void @atomic64_xchg_acq_rel(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection198:
+; O1-NEXT: .Lpcsection289:
; O1-NEXT: xchgq %rax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8457,7 +8824,7 @@ define void @atomic64_xchg_acq_rel(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection198:
+; O2-NEXT: .Lpcsection289:
; O2-NEXT: xchgq %rax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8466,7 +8833,7 @@ define void @atomic64_xchg_acq_rel(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection198:
+; O3-NEXT: .Lpcsection289:
; O3-NEXT: xchgq %rax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8481,7 +8848,7 @@ define void @atomic64_add_acq_rel(ptr %a) {
; O0-LABEL: atomic64_add_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection265:
+; O0-NEXT: .Lpcsection359:
; O0-NEXT: lock addq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8489,7 +8856,7 @@ define void @atomic64_add_acq_rel(ptr %a) {
; O1-LABEL: atomic64_add_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection199:
+; O1-NEXT: .Lpcsection290:
; O1-NEXT: lock addq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8497,7 +8864,7 @@ define void @atomic64_add_acq_rel(ptr %a) {
; O2-LABEL: atomic64_add_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection199:
+; O2-NEXT: .Lpcsection290:
; O2-NEXT: lock addq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8505,7 +8872,7 @@ define void @atomic64_add_acq_rel(ptr %a) {
; O3-LABEL: atomic64_add_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection199:
+; O3-NEXT: .Lpcsection290:
; O3-NEXT: lock addq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8520,7 +8887,7 @@ define void @atomic64_sub_acq_rel(ptr %a) {
; O0-LABEL: atomic64_sub_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection266:
+; O0-NEXT: .Lpcsection360:
; O0-NEXT: lock subq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8528,7 +8895,7 @@ define void @atomic64_sub_acq_rel(ptr %a) {
; O1-LABEL: atomic64_sub_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection200:
+; O1-NEXT: .Lpcsection291:
; O1-NEXT: lock subq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8536,7 +8903,7 @@ define void @atomic64_sub_acq_rel(ptr %a) {
; O2-LABEL: atomic64_sub_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection200:
+; O2-NEXT: .Lpcsection291:
; O2-NEXT: lock subq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8544,7 +8911,7 @@ define void @atomic64_sub_acq_rel(ptr %a) {
; O3-LABEL: atomic64_sub_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection200:
+; O3-NEXT: .Lpcsection291:
; O3-NEXT: lock subq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8559,7 +8926,7 @@ define void @atomic64_and_acq_rel(ptr %a) {
; O0-LABEL: atomic64_and_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection267:
+; O0-NEXT: .Lpcsection361:
; O0-NEXT: lock andq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8567,7 +8934,7 @@ define void @atomic64_and_acq_rel(ptr %a) {
; O1-LABEL: atomic64_and_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection201:
+; O1-NEXT: .Lpcsection292:
; O1-NEXT: lock andq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8575,7 +8942,7 @@ define void @atomic64_and_acq_rel(ptr %a) {
; O2-LABEL: atomic64_and_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection201:
+; O2-NEXT: .Lpcsection292:
; O2-NEXT: lock andq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8583,7 +8950,7 @@ define void @atomic64_and_acq_rel(ptr %a) {
; O3-LABEL: atomic64_and_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection201:
+; O3-NEXT: .Lpcsection292:
; O3-NEXT: lock andq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8598,7 +8965,7 @@ define void @atomic64_or_acq_rel(ptr %a) {
; O0-LABEL: atomic64_or_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection268:
+; O0-NEXT: .Lpcsection362:
; O0-NEXT: lock orq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8606,7 +8973,7 @@ define void @atomic64_or_acq_rel(ptr %a) {
; O1-LABEL: atomic64_or_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection202:
+; O1-NEXT: .Lpcsection293:
; O1-NEXT: lock orq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8614,7 +8981,7 @@ define void @atomic64_or_acq_rel(ptr %a) {
; O2-LABEL: atomic64_or_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection202:
+; O2-NEXT: .Lpcsection293:
; O2-NEXT: lock orq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8622,7 +8989,7 @@ define void @atomic64_or_acq_rel(ptr %a) {
; O3-LABEL: atomic64_or_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection202:
+; O3-NEXT: .Lpcsection293:
; O3-NEXT: lock orq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8637,7 +9004,7 @@ define void @atomic64_xor_acq_rel(ptr %a) {
; O0-LABEL: atomic64_xor_acq_rel:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection269:
+; O0-NEXT: .Lpcsection363:
; O0-NEXT: lock xorq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8645,7 +9012,7 @@ define void @atomic64_xor_acq_rel(ptr %a) {
; O1-LABEL: atomic64_xor_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection203:
+; O1-NEXT: .Lpcsection294:
; O1-NEXT: lock xorq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8653,7 +9020,7 @@ define void @atomic64_xor_acq_rel(ptr %a) {
; O2-LABEL: atomic64_xor_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection203:
+; O2-NEXT: .Lpcsection294:
; O2-NEXT: lock xorq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8661,7 +9028,7 @@ define void @atomic64_xor_acq_rel(ptr %a) {
; O3-LABEL: atomic64_xor_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection203:
+; O3-NEXT: .Lpcsection294:
; O3-NEXT: lock xorq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8677,7 +9044,7 @@ define void @atomic64_nand_acq_rel(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection270:
+; O0-NEXT: .Lpcsection364:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: .LBB183_1: # %atomicrmw.start
@@ -8685,18 +9052,21 @@ define void @atomic64_nand_acq_rel(ptr %a) {
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %esi
+; O0-NEXT: .Lpcsection365:
; O0-NEXT: notl %esi
+; O0-NEXT: .Lpcsection366:
; O0-NEXT: # implicit-def: $rdx
; O0-NEXT: movl %esi, %edx
-; O0-NEXT: .Lpcsection271:
+; O0-NEXT: .Lpcsection367:
; O0-NEXT: orq $-43, %rdx
+; O0-NEXT: .Lpcsection368:
; O0-NEXT: lock cmpxchgq %rdx, (%rcx)
-; O0-NEXT: .Lpcsection272:
+; O0-NEXT: .Lpcsection369:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection273:
+; O0-NEXT: .Lpcsection370:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; O0-NEXT: .Lpcsection274:
+; O0-NEXT: .Lpcsection371:
; O0-NEXT: jne .LBB183_2
; O0-NEXT: jmp .LBB183_1
; O0-NEXT: .LBB183_2: # %atomicrmw.end
@@ -8706,17 +9076,19 @@ define void @atomic64_nand_acq_rel(ptr %a) {
; O1-LABEL: atomic64_nand_acq_rel:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection204:
+; O1-NEXT: .Lpcsection295:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB183_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection296:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection205:
+; O1-NEXT: .Lpcsection297:
; O1-NEXT: orq $-43, %rcx
+; O1-NEXT: .Lpcsection298:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O1-NEXT: .Lpcsection206:
+; O1-NEXT: .Lpcsection299:
; O1-NEXT: jne .LBB183_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -8725,17 +9097,19 @@ define void @atomic64_nand_acq_rel(ptr %a) {
; O2-LABEL: atomic64_nand_acq_rel:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection204:
+; O2-NEXT: .Lpcsection295:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB183_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection296:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection205:
+; O2-NEXT: .Lpcsection297:
; O2-NEXT: orq $-43, %rcx
+; O2-NEXT: .Lpcsection298:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O2-NEXT: .Lpcsection206:
+; O2-NEXT: .Lpcsection299:
; O2-NEXT: jne .LBB183_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -8744,17 +9118,19 @@ define void @atomic64_nand_acq_rel(ptr %a) {
; O3-LABEL: atomic64_nand_acq_rel:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection204:
+; O3-NEXT: .Lpcsection295:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB183_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection296:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection205:
+; O3-NEXT: .Lpcsection297:
; O3-NEXT: orq $-43, %rcx
+; O3-NEXT: .Lpcsection298:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O3-NEXT: .Lpcsection206:
+; O3-NEXT: .Lpcsection299:
; O3-NEXT: jne .LBB183_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -8771,7 +9147,7 @@ define void @atomic64_xchg_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
; O0-NEXT: movl $42, %eax
-; O0-NEXT: .Lpcsection275:
+; O0-NEXT: .Lpcsection372:
; O0-NEXT: xchgq %rax, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8780,7 +9156,7 @@ define void @atomic64_xchg_seq_cst(ptr %a) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $42, %eax
-; O1-NEXT: .Lpcsection207:
+; O1-NEXT: .Lpcsection300:
; O1-NEXT: xchgq %rax, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8789,7 +9165,7 @@ define void @atomic64_xchg_seq_cst(ptr %a) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $42, %eax
-; O2-NEXT: .Lpcsection207:
+; O2-NEXT: .Lpcsection300:
; O2-NEXT: xchgq %rax, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8798,7 +9174,7 @@ define void @atomic64_xchg_seq_cst(ptr %a) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $42, %eax
-; O3-NEXT: .Lpcsection207:
+; O3-NEXT: .Lpcsection300:
; O3-NEXT: xchgq %rax, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8813,7 +9189,7 @@ define void @atomic64_add_seq_cst(ptr %a) {
; O0-LABEL: atomic64_add_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection276:
+; O0-NEXT: .Lpcsection373:
; O0-NEXT: lock addq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8821,7 +9197,7 @@ define void @atomic64_add_seq_cst(ptr %a) {
; O1-LABEL: atomic64_add_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection208:
+; O1-NEXT: .Lpcsection301:
; O1-NEXT: lock addq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8829,7 +9205,7 @@ define void @atomic64_add_seq_cst(ptr %a) {
; O2-LABEL: atomic64_add_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection208:
+; O2-NEXT: .Lpcsection301:
; O2-NEXT: lock addq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8837,7 +9213,7 @@ define void @atomic64_add_seq_cst(ptr %a) {
; O3-LABEL: atomic64_add_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection208:
+; O3-NEXT: .Lpcsection301:
; O3-NEXT: lock addq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8852,7 +9228,7 @@ define void @atomic64_sub_seq_cst(ptr %a) {
; O0-LABEL: atomic64_sub_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection277:
+; O0-NEXT: .Lpcsection374:
; O0-NEXT: lock subq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8860,7 +9236,7 @@ define void @atomic64_sub_seq_cst(ptr %a) {
; O1-LABEL: atomic64_sub_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection209:
+; O1-NEXT: .Lpcsection302:
; O1-NEXT: lock subq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8868,7 +9244,7 @@ define void @atomic64_sub_seq_cst(ptr %a) {
; O2-LABEL: atomic64_sub_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection209:
+; O2-NEXT: .Lpcsection302:
; O2-NEXT: lock subq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8876,7 +9252,7 @@ define void @atomic64_sub_seq_cst(ptr %a) {
; O3-LABEL: atomic64_sub_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection209:
+; O3-NEXT: .Lpcsection302:
; O3-NEXT: lock subq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8891,7 +9267,7 @@ define void @atomic64_and_seq_cst(ptr %a) {
; O0-LABEL: atomic64_and_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection278:
+; O0-NEXT: .Lpcsection375:
; O0-NEXT: lock andq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8899,7 +9275,7 @@ define void @atomic64_and_seq_cst(ptr %a) {
; O1-LABEL: atomic64_and_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection210:
+; O1-NEXT: .Lpcsection303:
; O1-NEXT: lock andq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8907,7 +9283,7 @@ define void @atomic64_and_seq_cst(ptr %a) {
; O2-LABEL: atomic64_and_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection210:
+; O2-NEXT: .Lpcsection303:
; O2-NEXT: lock andq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8915,7 +9291,7 @@ define void @atomic64_and_seq_cst(ptr %a) {
; O3-LABEL: atomic64_and_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection210:
+; O3-NEXT: .Lpcsection303:
; O3-NEXT: lock andq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8930,7 +9306,7 @@ define void @atomic64_or_seq_cst(ptr %a) {
; O0-LABEL: atomic64_or_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection279:
+; O0-NEXT: .Lpcsection376:
; O0-NEXT: lock orq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8938,7 +9314,7 @@ define void @atomic64_or_seq_cst(ptr %a) {
; O1-LABEL: atomic64_or_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection211:
+; O1-NEXT: .Lpcsection304:
; O1-NEXT: lock orq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8946,7 +9322,7 @@ define void @atomic64_or_seq_cst(ptr %a) {
; O2-LABEL: atomic64_or_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection211:
+; O2-NEXT: .Lpcsection304:
; O2-NEXT: lock orq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8954,7 +9330,7 @@ define void @atomic64_or_seq_cst(ptr %a) {
; O3-LABEL: atomic64_or_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection211:
+; O3-NEXT: .Lpcsection304:
; O3-NEXT: lock orq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -8969,7 +9345,7 @@ define void @atomic64_xor_seq_cst(ptr %a) {
; O0-LABEL: atomic64_xor_seq_cst:
; O0: # %bb.0: # %entry
; O0-NEXT: movq foo(%rip), %rax
-; O0-NEXT: .Lpcsection280:
+; O0-NEXT: .Lpcsection377:
; O0-NEXT: lock xorq $42, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -8977,7 +9353,7 @@ define void @atomic64_xor_seq_cst(ptr %a) {
; O1-LABEL: atomic64_xor_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection212:
+; O1-NEXT: .Lpcsection305:
; O1-NEXT: lock xorq $42, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -8985,7 +9361,7 @@ define void @atomic64_xor_seq_cst(ptr %a) {
; O2-LABEL: atomic64_xor_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection212:
+; O2-NEXT: .Lpcsection305:
; O2-NEXT: lock xorq $42, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -8993,7 +9369,7 @@ define void @atomic64_xor_seq_cst(ptr %a) {
; O3-LABEL: atomic64_xor_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection212:
+; O3-NEXT: .Lpcsection305:
; O3-NEXT: lock xorq $42, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -9009,7 +9385,7 @@ define void @atomic64_nand_seq_cst(ptr %a) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movq foo, %rax
-; O0-NEXT: .Lpcsection281:
+; O0-NEXT: .Lpcsection378:
; O0-NEXT: movq (%rdi), %rax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: .LBB190_1: # %atomicrmw.start
@@ -9017,18 +9393,21 @@ define void @atomic64_nand_seq_cst(ptr %a) {
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
; O0-NEXT: movl %eax, %esi
+; O0-NEXT: .Lpcsection379:
; O0-NEXT: notl %esi
+; O0-NEXT: .Lpcsection380:
; O0-NEXT: # implicit-def: $rdx
; O0-NEXT: movl %esi, %edx
-; O0-NEXT: .Lpcsection282:
+; O0-NEXT: .Lpcsection381:
; O0-NEXT: orq $-43, %rdx
+; O0-NEXT: .Lpcsection382:
; O0-NEXT: lock cmpxchgq %rdx, (%rcx)
-; O0-NEXT: .Lpcsection283:
+; O0-NEXT: .Lpcsection383:
; O0-NEXT: sete %cl
-; O0-NEXT: .Lpcsection284:
+; O0-NEXT: .Lpcsection384:
; O0-NEXT: testb $1, %cl
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; O0-NEXT: .Lpcsection285:
+; O0-NEXT: .Lpcsection385:
; O0-NEXT: jne .LBB190_2
; O0-NEXT: jmp .LBB190_1
; O0-NEXT: .LBB190_2: # %atomicrmw.end
@@ -9038,17 +9417,19 @@ define void @atomic64_nand_seq_cst(ptr %a) {
; O1-LABEL: atomic64_nand_seq_cst:
; O1: # %bb.0: # %entry
; O1-NEXT: movq foo(%rip), %rax
-; O1-NEXT: .Lpcsection213:
+; O1-NEXT: .Lpcsection306:
; O1-NEXT: movq (%rdi), %rax
; O1-NEXT: .p2align 4, 0x90
; O1-NEXT: .LBB190_1: # %atomicrmw.start
; O1-NEXT: # =>This Inner Loop Header: Depth=1
; O1-NEXT: movl %eax, %ecx
+; O1-NEXT: .Lpcsection307:
; O1-NEXT: notl %ecx
-; O1-NEXT: .Lpcsection214:
+; O1-NEXT: .Lpcsection308:
; O1-NEXT: orq $-43, %rcx
+; O1-NEXT: .Lpcsection309:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O1-NEXT: .Lpcsection215:
+; O1-NEXT: .Lpcsection310:
; O1-NEXT: jne .LBB190_1
; O1-NEXT: # %bb.2: # %atomicrmw.end
; O1-NEXT: movq $1, foo(%rip)
@@ -9057,17 +9438,19 @@ define void @atomic64_nand_seq_cst(ptr %a) {
; O2-LABEL: atomic64_nand_seq_cst:
; O2: # %bb.0: # %entry
; O2-NEXT: movq foo(%rip), %rax
-; O2-NEXT: .Lpcsection213:
+; O2-NEXT: .Lpcsection306:
; O2-NEXT: movq (%rdi), %rax
; O2-NEXT: .p2align 4, 0x90
; O2-NEXT: .LBB190_1: # %atomicrmw.start
; O2-NEXT: # =>This Inner Loop Header: Depth=1
; O2-NEXT: movl %eax, %ecx
+; O2-NEXT: .Lpcsection307:
; O2-NEXT: notl %ecx
-; O2-NEXT: .Lpcsection214:
+; O2-NEXT: .Lpcsection308:
; O2-NEXT: orq $-43, %rcx
+; O2-NEXT: .Lpcsection309:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O2-NEXT: .Lpcsection215:
+; O2-NEXT: .Lpcsection310:
; O2-NEXT: jne .LBB190_1
; O2-NEXT: # %bb.2: # %atomicrmw.end
; O2-NEXT: movq $1, foo(%rip)
@@ -9076,17 +9459,19 @@ define void @atomic64_nand_seq_cst(ptr %a) {
; O3-LABEL: atomic64_nand_seq_cst:
; O3: # %bb.0: # %entry
; O3-NEXT: movq foo(%rip), %rax
-; O3-NEXT: .Lpcsection213:
+; O3-NEXT: .Lpcsection306:
; O3-NEXT: movq (%rdi), %rax
; O3-NEXT: .p2align 4, 0x90
; O3-NEXT: .LBB190_1: # %atomicrmw.start
; O3-NEXT: # =>This Inner Loop Header: Depth=1
; O3-NEXT: movl %eax, %ecx
+; O3-NEXT: .Lpcsection307:
; O3-NEXT: notl %ecx
-; O3-NEXT: .Lpcsection214:
+; O3-NEXT: .Lpcsection308:
; O3-NEXT: orq $-43, %rcx
+; O3-NEXT: .Lpcsection309:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O3-NEXT: .Lpcsection215:
+; O3-NEXT: .Lpcsection310:
; O3-NEXT: jne .LBB190_1
; O3-NEXT: # %bb.2: # %atomicrmw.end
; O3-NEXT: movq $1, foo(%rip)
@@ -9105,14 +9490,17 @@ define void @atomic64_cas_monotonic(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection386:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection286:
+; O0-NEXT: .Lpcsection387:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection388:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection287:
+; O0-NEXT: .Lpcsection389:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection390:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -9122,10 +9510,13 @@ define void @atomic64_cas_monotonic(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection311:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection312:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection313:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -9135,10 +9526,13 @@ define void @atomic64_cas_monotonic(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection311:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection312:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection313:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -9148,10 +9542,13 @@ define void @atomic64_cas_monotonic(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection311:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection312:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection313:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -9171,14 +9568,17 @@ define void @atomic64_cas_acquire(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection391:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection288:
+; O0-NEXT: .Lpcsection392:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection393:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection289:
+; O0-NEXT: .Lpcsection394:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection395:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -9188,10 +9588,13 @@ define void @atomic64_cas_acquire(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection314:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection315:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection316:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -9201,10 +9604,13 @@ define void @atomic64_cas_acquire(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection314:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection315:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection316:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -9214,10 +9620,13 @@ define void @atomic64_cas_acquire(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection314:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection315:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection316:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -9237,14 +9646,17 @@ define void @atomic64_cas_release(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection396:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection290:
+; O0-NEXT: .Lpcsection397:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection398:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection291:
+; O0-NEXT: .Lpcsection399:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection400:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -9254,10 +9666,13 @@ define void @atomic64_cas_release(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection317:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection318:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection319:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -9267,10 +9682,13 @@ define void @atomic64_cas_release(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection317:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection318:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection319:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -9280,10 +9698,13 @@ define void @atomic64_cas_release(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection317:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection318:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection319:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -9303,14 +9724,17 @@ define void @atomic64_cas_acq_rel(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection401:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection292:
+; O0-NEXT: .Lpcsection402:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection403:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection293:
+; O0-NEXT: .Lpcsection404:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection405:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -9320,10 +9744,13 @@ define void @atomic64_cas_acq_rel(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection320:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection321:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection322:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -9333,10 +9760,13 @@ define void @atomic64_cas_acq_rel(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection320:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection321:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection322:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -9346,10 +9776,13 @@ define void @atomic64_cas_acq_rel(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection320:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection321:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection322:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
@@ -9369,14 +9802,17 @@ define void @atomic64_cas_seq_cst(ptr %a) {
; O0-NEXT: movl $42, %eax
; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; O0-NEXT: movl $1, %ecx
+; O0-NEXT: .Lpcsection406:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection294:
+; O0-NEXT: .Lpcsection407:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection408:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
-; O0-NEXT: .Lpcsection295:
+; O0-NEXT: .Lpcsection409:
; O0-NEXT: # kill: def $rdx killed $rax
; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
+; O0-NEXT: .Lpcsection410:
; O0-NEXT: lock cmpxchgq %rcx, (%rdi)
; O0-NEXT: movq $3, foo
; O0-NEXT: retq
@@ -9386,10 +9822,13 @@ define void @atomic64_cas_seq_cst(ptr %a) {
; O1-NEXT: movq foo(%rip), %rax
; O1-NEXT: movl $1, %ecx
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection323:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection324:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movl $42, %eax
+; O1-NEXT: .Lpcsection325:
; O1-NEXT: lock cmpxchgq %rcx, (%rdi)
; O1-NEXT: movq $3, foo(%rip)
; O1-NEXT: retq
@@ -9399,10 +9838,13 @@ define void @atomic64_cas_seq_cst(ptr %a) {
; O2-NEXT: movq foo(%rip), %rax
; O2-NEXT: movl $1, %ecx
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection323:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection324:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movl $42, %eax
+; O2-NEXT: .Lpcsection325:
; O2-NEXT: lock cmpxchgq %rcx, (%rdi)
; O2-NEXT: movq $3, foo(%rip)
; O2-NEXT: retq
@@ -9412,10 +9854,13 @@ define void @atomic64_cas_seq_cst(ptr %a) {
; O3-NEXT: movq foo(%rip), %rax
; O3-NEXT: movl $1, %ecx
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection323:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection324:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movl $42, %eax
+; O3-NEXT: .Lpcsection325:
; O3-NEXT: lock cmpxchgq %rcx, (%rdi)
; O3-NEXT: movq $3, foo(%rip)
; O3-NEXT: retq
@@ -9433,6 +9878,7 @@ define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) {
; O0: # %bb.0: # %entry
; O0-NEXT: movq %rsi, %rax
; O0-NEXT: movq foo(%rip), %rcx
+; O0-NEXT: .Lpcsection411:
; O0-NEXT: lock cmpxchgq %rdx, (%rdi)
; O0-NEXT: movq $1, foo
; O0-NEXT: retq
@@ -9441,6 +9887,7 @@ define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) {
; O1: # %bb.0: # %entry
; O1-NEXT: movq %rsi, %rax
; O1-NEXT: movq foo(%rip), %rcx
+; O1-NEXT: .Lpcsection326:
; O1-NEXT: lock cmpxchgq %rdx, (%rdi)
; O1-NEXT: movq $1, foo(%rip)
; O1-NEXT: retq
@@ -9449,6 +9896,7 @@ define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) {
; O2: # %bb.0: # %entry
; O2-NEXT: movq %rsi, %rax
; O2-NEXT: movq foo(%rip), %rcx
+; O2-NEXT: .Lpcsection326:
; O2-NEXT: lock cmpxchgq %rdx, (%rdi)
; O2-NEXT: movq $1, foo(%rip)
; O2-NEXT: retq
@@ -9457,6 +9905,7 @@ define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) {
; O3: # %bb.0: # %entry
; O3-NEXT: movq %rsi, %rax
; O3-NEXT: movq foo(%rip), %rcx
+; O3-NEXT: .Lpcsection326:
; O3-NEXT: lock cmpxchgq %rdx, (%rdi)
; O3-NEXT: movq $1, foo(%rip)
; O3-NEXT: retq
More information about the llvm-commits
mailing list