[llvm] f693932 - [SelectionDAG] Transitively copy NodeExtraInfo on RAUW
Marco Elver via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 2 14:08:30 PST 2023
Author: Marco Elver
Date: 2023-03-02T23:07:19+01:00
New Revision: f693932fbea7abc3f65907dd0b0e3d4ffe0b9918
URL: https://github.com/llvm/llvm-project/commit/f693932fbea7abc3f65907dd0b0e3d4ffe0b9918
DIFF: https://github.com/llvm/llvm-project/commit/f693932fbea7abc3f65907dd0b0e3d4ffe0b9918.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.
v2: Optimize copyExtraInfo() deep copy. For now we assume that only
NodeExtraInfo that have PCSections set require deep copy. Furthermore,
limit the depth of graph search while pre-populating the visited set,
assuming the to-be-replaced subgraph 'From' has limited complexity. An
assertion catches if the maximum depth needs to be increased.
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 90911013a73d9..3b2fd7cd17d8c 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -17,6 +17,7 @@
#include "llvm/ADT/APSInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitVector.h"
+#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
@@ -12223,7 +12224,56 @@ void SelectionDAG::copyExtraInfo(SDNode *From, SDNode *To) {
// 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);
+ if (LLVM_LIKELY(!Copy.PCSections)) {
+ // No deep copy required for the types of extra info set.
+ SDEI[To] = std::move(Copy);
+ 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.
+ DenseSet<const SDNode *> Visited;
+ constexpr int MaxDepth = 16;
+ auto VisitFrom = [&Visited](auto &&Self, SDNode *N, int Depth) {
+ if (Depth >= MaxDepth)
+ return;
+ if (!Visited.insert(N).second)
+ return;
+ for (const SDValue &Op : N->op_values())
+ Self(Self, Op.getNode(), Depth + 1);
+ };
+ VisitFrom(VisitFrom, From, 0);
+
+ // 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 true;
+ if (getEntryNode().getNode() == To) {
+ // This should not happen - and if it did, that means From has a depth
+ // greater or equal to MaxDepth, and VisitFrom() could not visit all
+ // common operands. As a result, we're able to reach the entry node.
+ assert(false && "Too complex 'From' node - increase MaxDepth?");
+ return false;
+ }
+ for (const SDValue &Op : To->op_values()) {
+ if (!Self(Self, Op.getNode()))
+ return false;
+ }
+ SDEI[To] = Copy;
+ return true;
+ };
+
+ if (LLVM_UNLIKELY(!DeepCopyTo(DeepCopyTo, To))) {
+ // Fallback - see assert above.
+ SDEI[To] = std::move(Copy);
+ }
}
#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