diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 0ada8148bfcf4..1a57069c76afa 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -12199,10 +12199,37 @@ void SelectionDAG::copyExtraInfo(SDNode *From, SDNode *To) { if (I == SDEI.end()) return; + // We need to copy NodeExtraInfo to all _new_ nodes that are being introduced + // through the replacement of From with To. Otherwise, replacements of a node + // (From) with more complex nodes (To and its operands) may result in lost + // extra info where the root node (To) is insignificant in further propagating + // and using extra info when further lowering to MIR. + // + // In the first step pre-populate the visited set with the nodes reachable + // from the old From node. This avoids copying NodeExtraInfo to parts of the + // DAG that is not new and should be left untouched. + SmallPtrSet Visited; + auto VisitFrom = [&Visited](auto &&Self, SDNode *N) { + if (!Visited.insert(N).second) + return; + for (const SDValue &Op : N->op_values()) + Self(Self, Op.getNode()); + }; + VisitFrom(VisitFrom, From); + // Use of operator[] on the DenseMap may cause an insertion, which invalidates // the iterator, hence the need to make a copy to prevent a use-after-free. NodeExtraInfo Copy = I->second; - SDEI[To] = std::move(Copy); + + // Copy extra info to To and all its transitive operands (that are new). + auto DeepCopyTo = [this, &Copy, &Visited](auto &&Self, SDNode *To) { + if (!Visited.insert(To).second) + return; + SDEI[To] = Copy; + for (const SDValue &Op : To->op_values()) + Self(Self, Op.getNode()); + }; + DeepCopyTo(DeepCopyTo, To); } #ifndef NDEBUG diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp index bf4422b657bd4..f6d4ad1b46e90 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp @@ -851,6 +851,12 @@ void SDNode::print_details(raw_ostream &OS, const SelectionDAG *G) const { Dbg->print(OS); } else if (getHasDebugValue()) OS << " [NoOfDbgValues>0]"; + + if (const auto *MD = G ? G->getPCSections(this) : nullptr) { + OS << " [pcsections "; + MD->printAsOperand(OS, G->getMachineFunction().getFunction().getParent()); + OS << ']'; + } } } diff --git a/llvm/test/CodeGen/X86/pcsections-atomics.ll b/llvm/test/CodeGen/X86/pcsections-atomics.ll index a2ee8e028d6d7..6881cb373cf71 100644 --- a/llvm/test/CodeGen/X86/pcsections-atomics.ll +++ b/llvm/test/CodeGen/X86/pcsections-atomics.ll @@ -683,16 +683,18 @@ define void @atomic8_nand_monotonic(ptr %a) { ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movb %al, %dl -; O0-NEXT: notb %dl ; O0-NEXT: .Lpcsection17: +; O0-NEXT: notb %dl +; O0-NEXT: .Lpcsection18: ; O0-NEXT: orb $-43, %dl +; O0-NEXT: .Lpcsection19: ; O0-NEXT: lock cmpxchgb %dl, (%rcx) -; O0-NEXT: .Lpcsection18: +; O0-NEXT: .Lpcsection20: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection19: +; O0-NEXT: .Lpcsection21: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill -; O0-NEXT: .Lpcsection20: +; O0-NEXT: .Lpcsection22: ; O0-NEXT: jne .LBB16_2 ; O0-NEXT: jmp .LBB16_1 ; O0-NEXT: .LBB16_2: # %atomicrmw.end @@ -708,11 +710,13 @@ define void @atomic8_nand_monotonic(ptr %a) { ; O1-NEXT: .LBB16_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx -; O1-NEXT: notb %cl ; O1-NEXT: .Lpcsection17: +; O1-NEXT: notb %cl +; O1-NEXT: .Lpcsection18: ; O1-NEXT: orb $-43, %cl +; O1-NEXT: .Lpcsection19: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) -; O1-NEXT: .Lpcsection18: +; O1-NEXT: .Lpcsection20: ; O1-NEXT: jne .LBB16_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -727,11 +731,13 @@ define void @atomic8_nand_monotonic(ptr %a) { ; O2-NEXT: .LBB16_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx -; O2-NEXT: notb %cl ; O2-NEXT: .Lpcsection17: +; O2-NEXT: notb %cl +; O2-NEXT: .Lpcsection18: ; O2-NEXT: orb $-43, %cl +; O2-NEXT: .Lpcsection19: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) -; O2-NEXT: .Lpcsection18: +; O2-NEXT: .Lpcsection20: ; O2-NEXT: jne .LBB16_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -746,11 +752,13 @@ define void @atomic8_nand_monotonic(ptr %a) { ; O3-NEXT: .LBB16_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx -; O3-NEXT: notb %cl ; O3-NEXT: .Lpcsection17: +; O3-NEXT: notb %cl +; O3-NEXT: .Lpcsection18: ; O3-NEXT: orb $-43, %cl +; O3-NEXT: .Lpcsection19: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) -; O3-NEXT: .Lpcsection18: +; O3-NEXT: .Lpcsection20: ; O3-NEXT: jne .LBB16_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -767,7 +775,7 @@ define void @atomic8_xchg_acquire(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movb $42, %al -; O0-NEXT: .Lpcsection21: +; O0-NEXT: .Lpcsection23: ; O0-NEXT: xchgb %al, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -776,7 +784,7 @@ define void @atomic8_xchg_acquire(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $42, %al -; O1-NEXT: .Lpcsection19: +; O1-NEXT: .Lpcsection21: ; O1-NEXT: xchgb %al, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -785,7 +793,7 @@ define void @atomic8_xchg_acquire(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $42, %al -; O2-NEXT: .Lpcsection19: +; O2-NEXT: .Lpcsection21: ; O2-NEXT: xchgb %al, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -794,7 +802,7 @@ define void @atomic8_xchg_acquire(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $42, %al -; O3-NEXT: .Lpcsection19: +; O3-NEXT: .Lpcsection21: ; O3-NEXT: xchgb %al, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -809,7 +817,7 @@ define void @atomic8_add_acquire(ptr %a) { ; O0-LABEL: atomic8_add_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection22: +; O0-NEXT: .Lpcsection24: ; O0-NEXT: lock addb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -817,7 +825,7 @@ define void @atomic8_add_acquire(ptr %a) { ; O1-LABEL: atomic8_add_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection20: +; O1-NEXT: .Lpcsection22: ; O1-NEXT: lock addb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -825,7 +833,7 @@ define void @atomic8_add_acquire(ptr %a) { ; O2-LABEL: atomic8_add_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection20: +; O2-NEXT: .Lpcsection22: ; O2-NEXT: lock addb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -833,7 +841,7 @@ define void @atomic8_add_acquire(ptr %a) { ; O3-LABEL: atomic8_add_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection20: +; O3-NEXT: .Lpcsection22: ; O3-NEXT: lock addb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -848,7 +856,7 @@ define void @atomic8_sub_acquire(ptr %a) { ; O0-LABEL: atomic8_sub_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection23: +; O0-NEXT: .Lpcsection25: ; O0-NEXT: lock subb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -856,7 +864,7 @@ define void @atomic8_sub_acquire(ptr %a) { ; O1-LABEL: atomic8_sub_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection21: +; O1-NEXT: .Lpcsection23: ; O1-NEXT: lock subb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -864,7 +872,7 @@ define void @atomic8_sub_acquire(ptr %a) { ; O2-LABEL: atomic8_sub_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection21: +; O2-NEXT: .Lpcsection23: ; O2-NEXT: lock subb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -872,7 +880,7 @@ define void @atomic8_sub_acquire(ptr %a) { ; O3-LABEL: atomic8_sub_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection21: +; O3-NEXT: .Lpcsection23: ; O3-NEXT: lock subb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -887,7 +895,7 @@ define void @atomic8_and_acquire(ptr %a) { ; O0-LABEL: atomic8_and_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection24: +; O0-NEXT: .Lpcsection26: ; O0-NEXT: lock andb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -895,7 +903,7 @@ define void @atomic8_and_acquire(ptr %a) { ; O1-LABEL: atomic8_and_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection22: +; O1-NEXT: .Lpcsection24: ; O1-NEXT: lock andb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -903,7 +911,7 @@ define void @atomic8_and_acquire(ptr %a) { ; O2-LABEL: atomic8_and_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection22: +; O2-NEXT: .Lpcsection24: ; O2-NEXT: lock andb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -911,7 +919,7 @@ define void @atomic8_and_acquire(ptr %a) { ; O3-LABEL: atomic8_and_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection22: +; O3-NEXT: .Lpcsection24: ; O3-NEXT: lock andb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -926,7 +934,7 @@ define void @atomic8_or_acquire(ptr %a) { ; O0-LABEL: atomic8_or_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection25: +; O0-NEXT: .Lpcsection27: ; O0-NEXT: lock orb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -934,7 +942,7 @@ define void @atomic8_or_acquire(ptr %a) { ; O1-LABEL: atomic8_or_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection23: +; O1-NEXT: .Lpcsection25: ; O1-NEXT: lock orb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -942,7 +950,7 @@ define void @atomic8_or_acquire(ptr %a) { ; O2-LABEL: atomic8_or_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection23: +; O2-NEXT: .Lpcsection25: ; O2-NEXT: lock orb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -950,7 +958,7 @@ define void @atomic8_or_acquire(ptr %a) { ; O3-LABEL: atomic8_or_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection23: +; O3-NEXT: .Lpcsection25: ; O3-NEXT: lock orb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -965,7 +973,7 @@ define void @atomic8_xor_acquire(ptr %a) { ; O0-LABEL: atomic8_xor_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection26: +; O0-NEXT: .Lpcsection28: ; O0-NEXT: lock xorb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -973,7 +981,7 @@ define void @atomic8_xor_acquire(ptr %a) { ; O1-LABEL: atomic8_xor_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection24: +; O1-NEXT: .Lpcsection26: ; O1-NEXT: lock xorb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -981,7 +989,7 @@ define void @atomic8_xor_acquire(ptr %a) { ; O2-LABEL: atomic8_xor_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection24: +; O2-NEXT: .Lpcsection26: ; O2-NEXT: lock xorb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -989,7 +997,7 @@ define void @atomic8_xor_acquire(ptr %a) { ; O3-LABEL: atomic8_xor_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection24: +; O3-NEXT: .Lpcsection26: ; O3-NEXT: lock xorb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1005,7 +1013,7 @@ define void @atomic8_nand_acquire(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection27: +; O0-NEXT: .Lpcsection29: ; O0-NEXT: movb (%rdi), %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: .LBB23_1: # %atomicrmw.start @@ -1013,16 +1021,18 @@ define void @atomic8_nand_acquire(ptr %a) { ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movb %al, %dl +; O0-NEXT: .Lpcsection30: ; O0-NEXT: notb %dl -; O0-NEXT: .Lpcsection28: +; O0-NEXT: .Lpcsection31: ; O0-NEXT: orb $-43, %dl +; O0-NEXT: .Lpcsection32: ; O0-NEXT: lock cmpxchgb %dl, (%rcx) -; O0-NEXT: .Lpcsection29: +; O0-NEXT: .Lpcsection33: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection30: +; O0-NEXT: .Lpcsection34: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill -; O0-NEXT: .Lpcsection31: +; O0-NEXT: .Lpcsection35: ; O0-NEXT: jne .LBB23_2 ; O0-NEXT: jmp .LBB23_1 ; O0-NEXT: .LBB23_2: # %atomicrmw.end @@ -1032,17 +1042,19 @@ define void @atomic8_nand_acquire(ptr %a) { ; O1-LABEL: atomic8_nand_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection25: +; O1-NEXT: .Lpcsection27: ; O1-NEXT: movzbl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB23_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection28: ; O1-NEXT: notb %cl -; O1-NEXT: .Lpcsection26: +; O1-NEXT: .Lpcsection29: ; O1-NEXT: orb $-43, %cl +; O1-NEXT: .Lpcsection30: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) -; O1-NEXT: .Lpcsection27: +; O1-NEXT: .Lpcsection31: ; O1-NEXT: jne .LBB23_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -1051,17 +1063,19 @@ define void @atomic8_nand_acquire(ptr %a) { ; O2-LABEL: atomic8_nand_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection25: +; O2-NEXT: .Lpcsection27: ; O2-NEXT: movzbl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB23_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection28: ; O2-NEXT: notb %cl -; O2-NEXT: .Lpcsection26: +; O2-NEXT: .Lpcsection29: ; O2-NEXT: orb $-43, %cl +; O2-NEXT: .Lpcsection30: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) -; O2-NEXT: .Lpcsection27: +; O2-NEXT: .Lpcsection31: ; O2-NEXT: jne .LBB23_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -1070,17 +1084,19 @@ define void @atomic8_nand_acquire(ptr %a) { ; O3-LABEL: atomic8_nand_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection25: +; O3-NEXT: .Lpcsection27: ; O3-NEXT: movzbl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB23_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection28: ; O3-NEXT: notb %cl -; O3-NEXT: .Lpcsection26: +; O3-NEXT: .Lpcsection29: ; O3-NEXT: orb $-43, %cl +; O3-NEXT: .Lpcsection30: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) -; O3-NEXT: .Lpcsection27: +; O3-NEXT: .Lpcsection31: ; O3-NEXT: jne .LBB23_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -1097,7 +1113,7 @@ define void @atomic8_xchg_release(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movb $42, %al -; O0-NEXT: .Lpcsection32: +; O0-NEXT: .Lpcsection36: ; O0-NEXT: xchgb %al, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1106,7 +1122,7 @@ define void @atomic8_xchg_release(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $42, %al -; O1-NEXT: .Lpcsection28: +; O1-NEXT: .Lpcsection32: ; O1-NEXT: xchgb %al, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1115,7 +1131,7 @@ define void @atomic8_xchg_release(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $42, %al -; O2-NEXT: .Lpcsection28: +; O2-NEXT: .Lpcsection32: ; O2-NEXT: xchgb %al, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1124,7 +1140,7 @@ define void @atomic8_xchg_release(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $42, %al -; O3-NEXT: .Lpcsection28: +; O3-NEXT: .Lpcsection32: ; O3-NEXT: xchgb %al, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1139,7 +1155,7 @@ define void @atomic8_add_release(ptr %a) { ; O0-LABEL: atomic8_add_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection33: +; O0-NEXT: .Lpcsection37: ; O0-NEXT: lock addb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1147,7 +1163,7 @@ define void @atomic8_add_release(ptr %a) { ; O1-LABEL: atomic8_add_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection29: +; O1-NEXT: .Lpcsection33: ; O1-NEXT: lock addb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1155,7 +1171,7 @@ define void @atomic8_add_release(ptr %a) { ; O2-LABEL: atomic8_add_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection29: +; O2-NEXT: .Lpcsection33: ; O2-NEXT: lock addb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1163,7 +1179,7 @@ define void @atomic8_add_release(ptr %a) { ; O3-LABEL: atomic8_add_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection29: +; O3-NEXT: .Lpcsection33: ; O3-NEXT: lock addb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1178,7 +1194,7 @@ define void @atomic8_sub_release(ptr %a) { ; O0-LABEL: atomic8_sub_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection34: +; O0-NEXT: .Lpcsection38: ; O0-NEXT: lock subb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1186,7 +1202,7 @@ define void @atomic8_sub_release(ptr %a) { ; O1-LABEL: atomic8_sub_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection30: +; O1-NEXT: .Lpcsection34: ; O1-NEXT: lock subb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1194,7 +1210,7 @@ define void @atomic8_sub_release(ptr %a) { ; O2-LABEL: atomic8_sub_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection30: +; O2-NEXT: .Lpcsection34: ; O2-NEXT: lock subb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1202,7 +1218,7 @@ define void @atomic8_sub_release(ptr %a) { ; O3-LABEL: atomic8_sub_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection30: +; O3-NEXT: .Lpcsection34: ; O3-NEXT: lock subb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1217,7 +1233,7 @@ define void @atomic8_and_release(ptr %a) { ; O0-LABEL: atomic8_and_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection35: +; O0-NEXT: .Lpcsection39: ; O0-NEXT: lock andb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1225,7 +1241,7 @@ define void @atomic8_and_release(ptr %a) { ; O1-LABEL: atomic8_and_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection31: +; O1-NEXT: .Lpcsection35: ; O1-NEXT: lock andb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1233,7 +1249,7 @@ define void @atomic8_and_release(ptr %a) { ; O2-LABEL: atomic8_and_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection31: +; O2-NEXT: .Lpcsection35: ; O2-NEXT: lock andb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1241,7 +1257,7 @@ define void @atomic8_and_release(ptr %a) { ; O3-LABEL: atomic8_and_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection31: +; O3-NEXT: .Lpcsection35: ; O3-NEXT: lock andb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1256,7 +1272,7 @@ define void @atomic8_or_release(ptr %a) { ; O0-LABEL: atomic8_or_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection36: +; O0-NEXT: .Lpcsection40: ; O0-NEXT: lock orb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1264,7 +1280,7 @@ define void @atomic8_or_release(ptr %a) { ; O1-LABEL: atomic8_or_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection32: +; O1-NEXT: .Lpcsection36: ; O1-NEXT: lock orb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1272,7 +1288,7 @@ define void @atomic8_or_release(ptr %a) { ; O2-LABEL: atomic8_or_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection32: +; O2-NEXT: .Lpcsection36: ; O2-NEXT: lock orb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1280,7 +1296,7 @@ define void @atomic8_or_release(ptr %a) { ; O3-LABEL: atomic8_or_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection32: +; O3-NEXT: .Lpcsection36: ; O3-NEXT: lock orb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1295,7 +1311,7 @@ define void @atomic8_xor_release(ptr %a) { ; O0-LABEL: atomic8_xor_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection37: +; O0-NEXT: .Lpcsection41: ; O0-NEXT: lock xorb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1303,7 +1319,7 @@ define void @atomic8_xor_release(ptr %a) { ; O1-LABEL: atomic8_xor_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection33: +; O1-NEXT: .Lpcsection37: ; O1-NEXT: lock xorb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1311,7 +1327,7 @@ define void @atomic8_xor_release(ptr %a) { ; O2-LABEL: atomic8_xor_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection33: +; O2-NEXT: .Lpcsection37: ; O2-NEXT: lock xorb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1319,7 +1335,7 @@ define void @atomic8_xor_release(ptr %a) { ; O3-LABEL: atomic8_xor_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection33: +; O3-NEXT: .Lpcsection37: ; O3-NEXT: lock xorb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1335,7 +1351,7 @@ define void @atomic8_nand_release(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection38: +; O0-NEXT: .Lpcsection42: ; O0-NEXT: movb (%rdi), %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: .LBB30_1: # %atomicrmw.start @@ -1343,16 +1359,18 @@ define void @atomic8_nand_release(ptr %a) { ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movb %al, %dl +; O0-NEXT: .Lpcsection43: ; O0-NEXT: notb %dl -; O0-NEXT: .Lpcsection39: +; O0-NEXT: .Lpcsection44: ; O0-NEXT: orb $-43, %dl +; O0-NEXT: .Lpcsection45: ; O0-NEXT: lock cmpxchgb %dl, (%rcx) -; O0-NEXT: .Lpcsection40: +; O0-NEXT: .Lpcsection46: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection41: +; O0-NEXT: .Lpcsection47: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill -; O0-NEXT: .Lpcsection42: +; O0-NEXT: .Lpcsection48: ; O0-NEXT: jne .LBB30_2 ; O0-NEXT: jmp .LBB30_1 ; O0-NEXT: .LBB30_2: # %atomicrmw.end @@ -1362,17 +1380,19 @@ define void @atomic8_nand_release(ptr %a) { ; O1-LABEL: atomic8_nand_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection34: +; O1-NEXT: .Lpcsection38: ; O1-NEXT: movzbl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB30_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection39: ; O1-NEXT: notb %cl -; O1-NEXT: .Lpcsection35: +; O1-NEXT: .Lpcsection40: ; O1-NEXT: orb $-43, %cl +; O1-NEXT: .Lpcsection41: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) -; O1-NEXT: .Lpcsection36: +; O1-NEXT: .Lpcsection42: ; O1-NEXT: jne .LBB30_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -1381,17 +1401,19 @@ define void @atomic8_nand_release(ptr %a) { ; O2-LABEL: atomic8_nand_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection34: +; O2-NEXT: .Lpcsection38: ; O2-NEXT: movzbl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB30_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection39: ; O2-NEXT: notb %cl -; O2-NEXT: .Lpcsection35: +; O2-NEXT: .Lpcsection40: ; O2-NEXT: orb $-43, %cl +; O2-NEXT: .Lpcsection41: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) -; O2-NEXT: .Lpcsection36: +; O2-NEXT: .Lpcsection42: ; O2-NEXT: jne .LBB30_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -1400,17 +1422,19 @@ define void @atomic8_nand_release(ptr %a) { ; O3-LABEL: atomic8_nand_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection34: +; O3-NEXT: .Lpcsection38: ; O3-NEXT: movzbl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB30_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection39: ; O3-NEXT: notb %cl -; O3-NEXT: .Lpcsection35: +; O3-NEXT: .Lpcsection40: ; O3-NEXT: orb $-43, %cl +; O3-NEXT: .Lpcsection41: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) -; O3-NEXT: .Lpcsection36: +; O3-NEXT: .Lpcsection42: ; O3-NEXT: jne .LBB30_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -1427,7 +1451,7 @@ define void @atomic8_xchg_acq_rel(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movb $42, %al -; O0-NEXT: .Lpcsection43: +; O0-NEXT: .Lpcsection49: ; O0-NEXT: xchgb %al, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1436,7 +1460,7 @@ define void @atomic8_xchg_acq_rel(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $42, %al -; O1-NEXT: .Lpcsection37: +; O1-NEXT: .Lpcsection43: ; O1-NEXT: xchgb %al, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1445,7 +1469,7 @@ define void @atomic8_xchg_acq_rel(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $42, %al -; O2-NEXT: .Lpcsection37: +; O2-NEXT: .Lpcsection43: ; O2-NEXT: xchgb %al, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1454,7 +1478,7 @@ define void @atomic8_xchg_acq_rel(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $42, %al -; O3-NEXT: .Lpcsection37: +; O3-NEXT: .Lpcsection43: ; O3-NEXT: xchgb %al, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1469,7 +1493,7 @@ define void @atomic8_add_acq_rel(ptr %a) { ; O0-LABEL: atomic8_add_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection44: +; O0-NEXT: .Lpcsection50: ; O0-NEXT: lock addb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1477,7 +1501,7 @@ define void @atomic8_add_acq_rel(ptr %a) { ; O1-LABEL: atomic8_add_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection38: +; O1-NEXT: .Lpcsection44: ; O1-NEXT: lock addb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1485,7 +1509,7 @@ define void @atomic8_add_acq_rel(ptr %a) { ; O2-LABEL: atomic8_add_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection38: +; O2-NEXT: .Lpcsection44: ; O2-NEXT: lock addb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1493,7 +1517,7 @@ define void @atomic8_add_acq_rel(ptr %a) { ; O3-LABEL: atomic8_add_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection38: +; O3-NEXT: .Lpcsection44: ; O3-NEXT: lock addb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1508,7 +1532,7 @@ define void @atomic8_sub_acq_rel(ptr %a) { ; O0-LABEL: atomic8_sub_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection45: +; O0-NEXT: .Lpcsection51: ; O0-NEXT: lock subb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1516,7 +1540,7 @@ define void @atomic8_sub_acq_rel(ptr %a) { ; O1-LABEL: atomic8_sub_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection39: +; O1-NEXT: .Lpcsection45: ; O1-NEXT: lock subb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1524,7 +1548,7 @@ define void @atomic8_sub_acq_rel(ptr %a) { ; O2-LABEL: atomic8_sub_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection39: +; O2-NEXT: .Lpcsection45: ; O2-NEXT: lock subb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1532,7 +1556,7 @@ define void @atomic8_sub_acq_rel(ptr %a) { ; O3-LABEL: atomic8_sub_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection39: +; O3-NEXT: .Lpcsection45: ; O3-NEXT: lock subb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1547,7 +1571,7 @@ define void @atomic8_and_acq_rel(ptr %a) { ; O0-LABEL: atomic8_and_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection46: +; O0-NEXT: .Lpcsection52: ; O0-NEXT: lock andb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1555,7 +1579,7 @@ define void @atomic8_and_acq_rel(ptr %a) { ; O1-LABEL: atomic8_and_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection40: +; O1-NEXT: .Lpcsection46: ; O1-NEXT: lock andb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1563,7 +1587,7 @@ define void @atomic8_and_acq_rel(ptr %a) { ; O2-LABEL: atomic8_and_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection40: +; O2-NEXT: .Lpcsection46: ; O2-NEXT: lock andb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1571,7 +1595,7 @@ define void @atomic8_and_acq_rel(ptr %a) { ; O3-LABEL: atomic8_and_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection40: +; O3-NEXT: .Lpcsection46: ; O3-NEXT: lock andb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1586,7 +1610,7 @@ define void @atomic8_or_acq_rel(ptr %a) { ; O0-LABEL: atomic8_or_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection47: +; O0-NEXT: .Lpcsection53: ; O0-NEXT: lock orb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1594,7 +1618,7 @@ define void @atomic8_or_acq_rel(ptr %a) { ; O1-LABEL: atomic8_or_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection41: +; O1-NEXT: .Lpcsection47: ; O1-NEXT: lock orb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1602,7 +1626,7 @@ define void @atomic8_or_acq_rel(ptr %a) { ; O2-LABEL: atomic8_or_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection41: +; O2-NEXT: .Lpcsection47: ; O2-NEXT: lock orb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1610,7 +1634,7 @@ define void @atomic8_or_acq_rel(ptr %a) { ; O3-LABEL: atomic8_or_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection41: +; O3-NEXT: .Lpcsection47: ; O3-NEXT: lock orb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1625,7 +1649,7 @@ define void @atomic8_xor_acq_rel(ptr %a) { ; O0-LABEL: atomic8_xor_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection48: +; O0-NEXT: .Lpcsection54: ; O0-NEXT: lock xorb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1633,7 +1657,7 @@ define void @atomic8_xor_acq_rel(ptr %a) { ; O1-LABEL: atomic8_xor_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection42: +; O1-NEXT: .Lpcsection48: ; O1-NEXT: lock xorb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1641,7 +1665,7 @@ define void @atomic8_xor_acq_rel(ptr %a) { ; O2-LABEL: atomic8_xor_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection42: +; O2-NEXT: .Lpcsection48: ; O2-NEXT: lock xorb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1649,7 +1673,7 @@ define void @atomic8_xor_acq_rel(ptr %a) { ; O3-LABEL: atomic8_xor_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection42: +; O3-NEXT: .Lpcsection48: ; O3-NEXT: lock xorb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1665,7 +1689,7 @@ define void @atomic8_nand_acq_rel(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection49: +; O0-NEXT: .Lpcsection55: ; O0-NEXT: movb (%rdi), %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: .LBB37_1: # %atomicrmw.start @@ -1673,16 +1697,18 @@ define void @atomic8_nand_acq_rel(ptr %a) { ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movb %al, %dl +; O0-NEXT: .Lpcsection56: ; O0-NEXT: notb %dl -; O0-NEXT: .Lpcsection50: +; O0-NEXT: .Lpcsection57: ; O0-NEXT: orb $-43, %dl +; O0-NEXT: .Lpcsection58: ; O0-NEXT: lock cmpxchgb %dl, (%rcx) -; O0-NEXT: .Lpcsection51: +; O0-NEXT: .Lpcsection59: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection52: +; O0-NEXT: .Lpcsection60: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill -; O0-NEXT: .Lpcsection53: +; O0-NEXT: .Lpcsection61: ; O0-NEXT: jne .LBB37_2 ; O0-NEXT: jmp .LBB37_1 ; O0-NEXT: .LBB37_2: # %atomicrmw.end @@ -1692,17 +1718,19 @@ define void @atomic8_nand_acq_rel(ptr %a) { ; O1-LABEL: atomic8_nand_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection43: +; O1-NEXT: .Lpcsection49: ; O1-NEXT: movzbl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB37_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection50: ; O1-NEXT: notb %cl -; O1-NEXT: .Lpcsection44: +; O1-NEXT: .Lpcsection51: ; O1-NEXT: orb $-43, %cl +; O1-NEXT: .Lpcsection52: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) -; O1-NEXT: .Lpcsection45: +; O1-NEXT: .Lpcsection53: ; O1-NEXT: jne .LBB37_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -1711,17 +1739,19 @@ define void @atomic8_nand_acq_rel(ptr %a) { ; O2-LABEL: atomic8_nand_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection43: +; O2-NEXT: .Lpcsection49: ; O2-NEXT: movzbl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB37_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection50: ; O2-NEXT: notb %cl -; O2-NEXT: .Lpcsection44: +; O2-NEXT: .Lpcsection51: ; O2-NEXT: orb $-43, %cl +; O2-NEXT: .Lpcsection52: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) -; O2-NEXT: .Lpcsection45: +; O2-NEXT: .Lpcsection53: ; O2-NEXT: jne .LBB37_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -1730,17 +1760,19 @@ define void @atomic8_nand_acq_rel(ptr %a) { ; O3-LABEL: atomic8_nand_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection43: +; O3-NEXT: .Lpcsection49: ; O3-NEXT: movzbl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB37_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection50: ; O3-NEXT: notb %cl -; O3-NEXT: .Lpcsection44: +; O3-NEXT: .Lpcsection51: ; O3-NEXT: orb $-43, %cl +; O3-NEXT: .Lpcsection52: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) -; O3-NEXT: .Lpcsection45: +; O3-NEXT: .Lpcsection53: ; O3-NEXT: jne .LBB37_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -1757,7 +1789,7 @@ define void @atomic8_xchg_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movb $42, %al -; O0-NEXT: .Lpcsection54: +; O0-NEXT: .Lpcsection62: ; O0-NEXT: xchgb %al, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1766,7 +1798,7 @@ define void @atomic8_xchg_seq_cst(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $42, %al -; O1-NEXT: .Lpcsection46: +; O1-NEXT: .Lpcsection54: ; O1-NEXT: xchgb %al, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1775,7 +1807,7 @@ define void @atomic8_xchg_seq_cst(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $42, %al -; O2-NEXT: .Lpcsection46: +; O2-NEXT: .Lpcsection54: ; O2-NEXT: xchgb %al, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1784,7 +1816,7 @@ define void @atomic8_xchg_seq_cst(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $42, %al -; O3-NEXT: .Lpcsection46: +; O3-NEXT: .Lpcsection54: ; O3-NEXT: xchgb %al, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1799,7 +1831,7 @@ define void @atomic8_add_seq_cst(ptr %a) { ; O0-LABEL: atomic8_add_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection55: +; O0-NEXT: .Lpcsection63: ; O0-NEXT: lock addb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1807,7 +1839,7 @@ define void @atomic8_add_seq_cst(ptr %a) { ; O1-LABEL: atomic8_add_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection47: +; O1-NEXT: .Lpcsection55: ; O1-NEXT: lock addb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1815,7 +1847,7 @@ define void @atomic8_add_seq_cst(ptr %a) { ; O2-LABEL: atomic8_add_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection47: +; O2-NEXT: .Lpcsection55: ; O2-NEXT: lock addb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1823,7 +1855,7 @@ define void @atomic8_add_seq_cst(ptr %a) { ; O3-LABEL: atomic8_add_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection47: +; O3-NEXT: .Lpcsection55: ; O3-NEXT: lock addb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1838,7 +1870,7 @@ define void @atomic8_sub_seq_cst(ptr %a) { ; O0-LABEL: atomic8_sub_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection56: +; O0-NEXT: .Lpcsection64: ; O0-NEXT: lock subb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1846,7 +1878,7 @@ define void @atomic8_sub_seq_cst(ptr %a) { ; O1-LABEL: atomic8_sub_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection48: +; O1-NEXT: .Lpcsection56: ; O1-NEXT: lock subb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1854,7 +1886,7 @@ define void @atomic8_sub_seq_cst(ptr %a) { ; O2-LABEL: atomic8_sub_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection48: +; O2-NEXT: .Lpcsection56: ; O2-NEXT: lock subb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1862,7 +1894,7 @@ define void @atomic8_sub_seq_cst(ptr %a) { ; O3-LABEL: atomic8_sub_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection48: +; O3-NEXT: .Lpcsection56: ; O3-NEXT: lock subb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1877,7 +1909,7 @@ define void @atomic8_and_seq_cst(ptr %a) { ; O0-LABEL: atomic8_and_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection57: +; O0-NEXT: .Lpcsection65: ; O0-NEXT: lock andb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1885,7 +1917,7 @@ define void @atomic8_and_seq_cst(ptr %a) { ; O1-LABEL: atomic8_and_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection49: +; O1-NEXT: .Lpcsection57: ; O1-NEXT: lock andb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1893,7 +1925,7 @@ define void @atomic8_and_seq_cst(ptr %a) { ; O2-LABEL: atomic8_and_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection49: +; O2-NEXT: .Lpcsection57: ; O2-NEXT: lock andb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1901,7 +1933,7 @@ define void @atomic8_and_seq_cst(ptr %a) { ; O3-LABEL: atomic8_and_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection49: +; O3-NEXT: .Lpcsection57: ; O3-NEXT: lock andb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1916,7 +1948,7 @@ define void @atomic8_or_seq_cst(ptr %a) { ; O0-LABEL: atomic8_or_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection58: +; O0-NEXT: .Lpcsection66: ; O0-NEXT: lock orb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1924,7 +1956,7 @@ define void @atomic8_or_seq_cst(ptr %a) { ; O1-LABEL: atomic8_or_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection50: +; O1-NEXT: .Lpcsection58: ; O1-NEXT: lock orb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1932,7 +1964,7 @@ define void @atomic8_or_seq_cst(ptr %a) { ; O2-LABEL: atomic8_or_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection50: +; O2-NEXT: .Lpcsection58: ; O2-NEXT: lock orb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1940,7 +1972,7 @@ define void @atomic8_or_seq_cst(ptr %a) { ; O3-LABEL: atomic8_or_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection50: +; O3-NEXT: .Lpcsection58: ; O3-NEXT: lock orb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1955,7 +1987,7 @@ define void @atomic8_xor_seq_cst(ptr %a) { ; O0-LABEL: atomic8_xor_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection59: +; O0-NEXT: .Lpcsection67: ; O0-NEXT: lock xorb $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -1963,7 +1995,7 @@ define void @atomic8_xor_seq_cst(ptr %a) { ; O1-LABEL: atomic8_xor_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection51: +; O1-NEXT: .Lpcsection59: ; O1-NEXT: lock xorb $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -1971,7 +2003,7 @@ define void @atomic8_xor_seq_cst(ptr %a) { ; O2-LABEL: atomic8_xor_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection51: +; O2-NEXT: .Lpcsection59: ; O2-NEXT: lock xorb $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -1979,7 +2011,7 @@ define void @atomic8_xor_seq_cst(ptr %a) { ; O3-LABEL: atomic8_xor_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection51: +; O3-NEXT: .Lpcsection59: ; O3-NEXT: lock xorb $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -1995,7 +2027,7 @@ define void @atomic8_nand_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection60: +; O0-NEXT: .Lpcsection68: ; O0-NEXT: movb (%rdi), %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: .LBB44_1: # %atomicrmw.start @@ -2003,16 +2035,18 @@ define void @atomic8_nand_seq_cst(ptr %a) { ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movb %al, %dl +; O0-NEXT: .Lpcsection69: ; O0-NEXT: notb %dl -; O0-NEXT: .Lpcsection61: +; O0-NEXT: .Lpcsection70: ; O0-NEXT: orb $-43, %dl +; O0-NEXT: .Lpcsection71: ; O0-NEXT: lock cmpxchgb %dl, (%rcx) -; O0-NEXT: .Lpcsection62: +; O0-NEXT: .Lpcsection72: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection63: +; O0-NEXT: .Lpcsection73: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill -; O0-NEXT: .Lpcsection64: +; O0-NEXT: .Lpcsection74: ; O0-NEXT: jne .LBB44_2 ; O0-NEXT: jmp .LBB44_1 ; O0-NEXT: .LBB44_2: # %atomicrmw.end @@ -2022,17 +2056,19 @@ define void @atomic8_nand_seq_cst(ptr %a) { ; O1-LABEL: atomic8_nand_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection52: +; O1-NEXT: .Lpcsection60: ; O1-NEXT: movzbl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB44_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection61: ; O1-NEXT: notb %cl -; O1-NEXT: .Lpcsection53: +; O1-NEXT: .Lpcsection62: ; O1-NEXT: orb $-43, %cl +; O1-NEXT: .Lpcsection63: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) -; O1-NEXT: .Lpcsection54: +; O1-NEXT: .Lpcsection64: ; O1-NEXT: jne .LBB44_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -2041,17 +2077,19 @@ define void @atomic8_nand_seq_cst(ptr %a) { ; O2-LABEL: atomic8_nand_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection52: +; O2-NEXT: .Lpcsection60: ; O2-NEXT: movzbl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB44_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection61: ; O2-NEXT: notb %cl -; O2-NEXT: .Lpcsection53: +; O2-NEXT: .Lpcsection62: ; O2-NEXT: orb $-43, %cl +; O2-NEXT: .Lpcsection63: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) -; O2-NEXT: .Lpcsection54: +; O2-NEXT: .Lpcsection64: ; O2-NEXT: jne .LBB44_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -2060,17 +2098,19 @@ define void @atomic8_nand_seq_cst(ptr %a) { ; O3-LABEL: atomic8_nand_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection52: +; O3-NEXT: .Lpcsection60: ; O3-NEXT: movzbl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB44_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection61: ; O3-NEXT: notb %cl -; O3-NEXT: .Lpcsection53: +; O3-NEXT: .Lpcsection62: ; O3-NEXT: orb $-43, %cl +; O3-NEXT: .Lpcsection63: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) -; O3-NEXT: .Lpcsection54: +; O3-NEXT: .Lpcsection64: ; O3-NEXT: jne .LBB44_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -2089,14 +2129,17 @@ define void @atomic8_cas_monotonic(ptr %a) { ; O0-NEXT: movb $42, %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: movb $1, %cl +; O0-NEXT: .Lpcsection75: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection65: +; O0-NEXT: .Lpcsection76: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection77: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection66: +; O0-NEXT: .Lpcsection78: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection79: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2106,10 +2149,13 @@ define void @atomic8_cas_monotonic(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $1, %cl ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection65: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection66: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection67: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2119,10 +2165,13 @@ define void @atomic8_cas_monotonic(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $1, %cl ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection65: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection66: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection67: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2132,10 +2181,13 @@ define void @atomic8_cas_monotonic(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $1, %cl ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection65: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection66: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection67: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2155,14 +2207,17 @@ define void @atomic8_cas_acquire(ptr %a) { ; O0-NEXT: movb $42, %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: movb $1, %cl +; O0-NEXT: .Lpcsection80: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection67: +; O0-NEXT: .Lpcsection81: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection82: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection68: +; O0-NEXT: .Lpcsection83: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection84: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2172,10 +2227,13 @@ define void @atomic8_cas_acquire(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $1, %cl ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection68: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection69: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection70: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2185,10 +2243,13 @@ define void @atomic8_cas_acquire(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $1, %cl ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection68: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection69: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection70: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2198,10 +2259,13 @@ define void @atomic8_cas_acquire(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $1, %cl ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection68: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection69: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection70: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2221,14 +2285,17 @@ define void @atomic8_cas_release(ptr %a) { ; O0-NEXT: movb $42, %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: movb $1, %cl +; O0-NEXT: .Lpcsection85: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection69: +; O0-NEXT: .Lpcsection86: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection87: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection70: +; O0-NEXT: .Lpcsection88: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection89: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2238,10 +2305,13 @@ define void @atomic8_cas_release(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $1, %cl ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection71: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection72: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection73: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2251,10 +2321,13 @@ define void @atomic8_cas_release(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $1, %cl ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection71: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection72: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection73: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2264,10 +2337,13 @@ define void @atomic8_cas_release(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $1, %cl ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection71: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection72: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection73: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2287,14 +2363,17 @@ define void @atomic8_cas_acq_rel(ptr %a) { ; O0-NEXT: movb $42, %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: movb $1, %cl +; O0-NEXT: .Lpcsection90: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection71: +; O0-NEXT: .Lpcsection91: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection92: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection72: +; O0-NEXT: .Lpcsection93: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection94: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2304,10 +2383,13 @@ define void @atomic8_cas_acq_rel(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $1, %cl ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection74: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection75: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection76: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2317,10 +2399,13 @@ define void @atomic8_cas_acq_rel(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $1, %cl ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection74: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection75: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection76: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2330,10 +2415,13 @@ define void @atomic8_cas_acq_rel(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $1, %cl ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection74: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection75: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection76: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2353,14 +2441,17 @@ define void @atomic8_cas_seq_cst(ptr %a) { ; O0-NEXT: movb $42, %al ; O0-NEXT: movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill ; O0-NEXT: movb $1, %cl +; O0-NEXT: .Lpcsection95: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection73: +; O0-NEXT: .Lpcsection96: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection97: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) -; O0-NEXT: .Lpcsection74: +; O0-NEXT: .Lpcsection98: ; O0-NEXT: # kill: def $dl killed $al ; O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload +; O0-NEXT: .Lpcsection99: ; O0-NEXT: lock cmpxchgb %cl, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2370,10 +2461,13 @@ define void @atomic8_cas_seq_cst(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movb $1, %cl ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection77: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection78: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movb $42, %al +; O1-NEXT: .Lpcsection79: ; O1-NEXT: lock cmpxchgb %cl, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2383,10 +2477,13 @@ define void @atomic8_cas_seq_cst(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movb $1, %cl ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection77: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection78: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movb $42, %al +; O2-NEXT: .Lpcsection79: ; O2-NEXT: lock cmpxchgb %cl, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2396,10 +2493,13 @@ define void @atomic8_cas_seq_cst(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movb $1, %cl ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection77: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection78: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movb $42, %al +; O3-NEXT: .Lpcsection79: ; O3-NEXT: lock cmpxchgb %cl, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2416,7 +2516,7 @@ define i16 @atomic16_load_unordered(ptr %a) { ; O0-LABEL: atomic16_load_unordered: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection75: +; O0-NEXT: .Lpcsection100: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2424,7 +2524,7 @@ define i16 @atomic16_load_unordered(ptr %a) { ; O1-LABEL: atomic16_load_unordered: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection55: +; O1-NEXT: .Lpcsection80: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2432,7 +2532,7 @@ define i16 @atomic16_load_unordered(ptr %a) { ; O2-LABEL: atomic16_load_unordered: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection55: +; O2-NEXT: .Lpcsection80: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2440,7 +2540,7 @@ define i16 @atomic16_load_unordered(ptr %a) { ; O3-LABEL: atomic16_load_unordered: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection55: +; O3-NEXT: .Lpcsection80: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2455,7 +2555,7 @@ define i16 @atomic16_load_monotonic(ptr %a) { ; O0-LABEL: atomic16_load_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection76: +; O0-NEXT: .Lpcsection101: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2463,7 +2563,7 @@ define i16 @atomic16_load_monotonic(ptr %a) { ; O1-LABEL: atomic16_load_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection56: +; O1-NEXT: .Lpcsection81: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2471,7 +2571,7 @@ define i16 @atomic16_load_monotonic(ptr %a) { ; O2-LABEL: atomic16_load_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection56: +; O2-NEXT: .Lpcsection81: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2479,7 +2579,7 @@ define i16 @atomic16_load_monotonic(ptr %a) { ; O3-LABEL: atomic16_load_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection56: +; O3-NEXT: .Lpcsection81: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2494,7 +2594,7 @@ define i16 @atomic16_load_acquire(ptr %a) { ; O0-LABEL: atomic16_load_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection77: +; O0-NEXT: .Lpcsection102: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2502,7 +2602,7 @@ define i16 @atomic16_load_acquire(ptr %a) { ; O1-LABEL: atomic16_load_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection57: +; O1-NEXT: .Lpcsection82: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2510,7 +2610,7 @@ define i16 @atomic16_load_acquire(ptr %a) { ; O2-LABEL: atomic16_load_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection57: +; O2-NEXT: .Lpcsection82: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2518,7 +2618,7 @@ define i16 @atomic16_load_acquire(ptr %a) { ; O3-LABEL: atomic16_load_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection57: +; O3-NEXT: .Lpcsection82: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2533,7 +2633,7 @@ define i16 @atomic16_load_seq_cst(ptr %a) { ; O0-LABEL: atomic16_load_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection78: +; O0-NEXT: .Lpcsection103: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2541,7 +2641,7 @@ define i16 @atomic16_load_seq_cst(ptr %a) { ; O1-LABEL: atomic16_load_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection58: +; O1-NEXT: .Lpcsection83: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2549,7 +2649,7 @@ define i16 @atomic16_load_seq_cst(ptr %a) { ; O2-LABEL: atomic16_load_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection58: +; O2-NEXT: .Lpcsection83: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2557,7 +2657,7 @@ define i16 @atomic16_load_seq_cst(ptr %a) { ; O3-LABEL: atomic16_load_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection58: +; O3-NEXT: .Lpcsection83: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2572,7 +2672,7 @@ define void @atomic16_store_unordered(ptr %a) { ; O0-LABEL: atomic16_store_unordered: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection79: +; O0-NEXT: .Lpcsection104: ; O0-NEXT: movw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2580,7 +2680,7 @@ define void @atomic16_store_unordered(ptr %a) { ; O1-LABEL: atomic16_store_unordered: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection59: +; O1-NEXT: .Lpcsection84: ; O1-NEXT: movw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2588,7 +2688,7 @@ define void @atomic16_store_unordered(ptr %a) { ; O2-LABEL: atomic16_store_unordered: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection59: +; O2-NEXT: .Lpcsection84: ; O2-NEXT: movw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2596,7 +2696,7 @@ define void @atomic16_store_unordered(ptr %a) { ; O3-LABEL: atomic16_store_unordered: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection59: +; O3-NEXT: .Lpcsection84: ; O3-NEXT: movw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2611,7 +2711,7 @@ define void @atomic16_store_monotonic(ptr %a) { ; O0-LABEL: atomic16_store_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection80: +; O0-NEXT: .Lpcsection105: ; O0-NEXT: movw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2619,7 +2719,7 @@ define void @atomic16_store_monotonic(ptr %a) { ; O1-LABEL: atomic16_store_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection60: +; O1-NEXT: .Lpcsection85: ; O1-NEXT: movw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2627,7 +2727,7 @@ define void @atomic16_store_monotonic(ptr %a) { ; O2-LABEL: atomic16_store_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection60: +; O2-NEXT: .Lpcsection85: ; O2-NEXT: movw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2635,7 +2735,7 @@ define void @atomic16_store_monotonic(ptr %a) { ; O3-LABEL: atomic16_store_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection60: +; O3-NEXT: .Lpcsection85: ; O3-NEXT: movw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2650,7 +2750,7 @@ define void @atomic16_store_release(ptr %a) { ; O0-LABEL: atomic16_store_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection81: +; O0-NEXT: .Lpcsection106: ; O0-NEXT: movw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2658,7 +2758,7 @@ define void @atomic16_store_release(ptr %a) { ; O1-LABEL: atomic16_store_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection61: +; O1-NEXT: .Lpcsection86: ; O1-NEXT: movw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2666,7 +2766,7 @@ define void @atomic16_store_release(ptr %a) { ; O2-LABEL: atomic16_store_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection61: +; O2-NEXT: .Lpcsection86: ; O2-NEXT: movw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2674,7 +2774,7 @@ define void @atomic16_store_release(ptr %a) { ; O3-LABEL: atomic16_store_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection61: +; O3-NEXT: .Lpcsection86: ; O3-NEXT: movw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2690,7 +2790,7 @@ define void @atomic16_store_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movw $42, %ax -; O0-NEXT: .Lpcsection82: +; O0-NEXT: .Lpcsection107: ; O0-NEXT: xchgw %ax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2699,7 +2799,7 @@ define void @atomic16_store_seq_cst(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $42, %ax -; O1-NEXT: .Lpcsection62: +; O1-NEXT: .Lpcsection87: ; O1-NEXT: xchgw %ax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2708,7 +2808,7 @@ define void @atomic16_store_seq_cst(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $42, %ax -; O2-NEXT: .Lpcsection62: +; O2-NEXT: .Lpcsection87: ; O2-NEXT: xchgw %ax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2717,7 +2817,7 @@ define void @atomic16_store_seq_cst(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $42, %ax -; O3-NEXT: .Lpcsection62: +; O3-NEXT: .Lpcsection87: ; O3-NEXT: xchgw %ax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2733,7 +2833,7 @@ define void @atomic16_xchg_monotonic(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movw $42, %ax -; O0-NEXT: .Lpcsection83: +; O0-NEXT: .Lpcsection108: ; O0-NEXT: xchgw %ax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2742,7 +2842,7 @@ define void @atomic16_xchg_monotonic(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $42, %ax -; O1-NEXT: .Lpcsection63: +; O1-NEXT: .Lpcsection88: ; O1-NEXT: xchgw %ax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2751,7 +2851,7 @@ define void @atomic16_xchg_monotonic(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $42, %ax -; O2-NEXT: .Lpcsection63: +; O2-NEXT: .Lpcsection88: ; O2-NEXT: xchgw %ax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2760,7 +2860,7 @@ define void @atomic16_xchg_monotonic(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $42, %ax -; O3-NEXT: .Lpcsection63: +; O3-NEXT: .Lpcsection88: ; O3-NEXT: xchgw %ax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2775,7 +2875,7 @@ define void @atomic16_add_monotonic(ptr %a) { ; O0-LABEL: atomic16_add_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection84: +; O0-NEXT: .Lpcsection109: ; O0-NEXT: lock addw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2783,7 +2883,7 @@ define void @atomic16_add_monotonic(ptr %a) { ; O1-LABEL: atomic16_add_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection64: +; O1-NEXT: .Lpcsection89: ; O1-NEXT: lock addw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2791,7 +2891,7 @@ define void @atomic16_add_monotonic(ptr %a) { ; O2-LABEL: atomic16_add_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection64: +; O2-NEXT: .Lpcsection89: ; O2-NEXT: lock addw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2799,7 +2899,7 @@ define void @atomic16_add_monotonic(ptr %a) { ; O3-LABEL: atomic16_add_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection64: +; O3-NEXT: .Lpcsection89: ; O3-NEXT: lock addw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2814,7 +2914,7 @@ define void @atomic16_sub_monotonic(ptr %a) { ; O0-LABEL: atomic16_sub_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection85: +; O0-NEXT: .Lpcsection110: ; O0-NEXT: lock subw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2822,7 +2922,7 @@ define void @atomic16_sub_monotonic(ptr %a) { ; O1-LABEL: atomic16_sub_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection65: +; O1-NEXT: .Lpcsection90: ; O1-NEXT: lock subw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2830,7 +2930,7 @@ define void @atomic16_sub_monotonic(ptr %a) { ; O2-LABEL: atomic16_sub_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection65: +; O2-NEXT: .Lpcsection90: ; O2-NEXT: lock subw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2838,7 +2938,7 @@ define void @atomic16_sub_monotonic(ptr %a) { ; O3-LABEL: atomic16_sub_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection65: +; O3-NEXT: .Lpcsection90: ; O3-NEXT: lock subw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2853,7 +2953,7 @@ define void @atomic16_and_monotonic(ptr %a) { ; O0-LABEL: atomic16_and_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection86: +; O0-NEXT: .Lpcsection111: ; O0-NEXT: lock andw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2861,7 +2961,7 @@ define void @atomic16_and_monotonic(ptr %a) { ; O1-LABEL: atomic16_and_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection66: +; O1-NEXT: .Lpcsection91: ; O1-NEXT: lock andw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2869,7 +2969,7 @@ define void @atomic16_and_monotonic(ptr %a) { ; O2-LABEL: atomic16_and_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection66: +; O2-NEXT: .Lpcsection91: ; O2-NEXT: lock andw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2877,7 +2977,7 @@ define void @atomic16_and_monotonic(ptr %a) { ; O3-LABEL: atomic16_and_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection66: +; O3-NEXT: .Lpcsection91: ; O3-NEXT: lock andw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2892,7 +2992,7 @@ define void @atomic16_or_monotonic(ptr %a) { ; O0-LABEL: atomic16_or_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection87: +; O0-NEXT: .Lpcsection112: ; O0-NEXT: lock orw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2900,7 +3000,7 @@ define void @atomic16_or_monotonic(ptr %a) { ; O1-LABEL: atomic16_or_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection67: +; O1-NEXT: .Lpcsection92: ; O1-NEXT: lock orw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2908,7 +3008,7 @@ define void @atomic16_or_monotonic(ptr %a) { ; O2-LABEL: atomic16_or_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection67: +; O2-NEXT: .Lpcsection92: ; O2-NEXT: lock orw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2916,7 +3016,7 @@ define void @atomic16_or_monotonic(ptr %a) { ; O3-LABEL: atomic16_or_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection67: +; O3-NEXT: .Lpcsection92: ; O3-NEXT: lock orw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2931,7 +3031,7 @@ define void @atomic16_xor_monotonic(ptr %a) { ; O0-LABEL: atomic16_xor_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection88: +; O0-NEXT: .Lpcsection113: ; O0-NEXT: lock xorw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -2939,7 +3039,7 @@ define void @atomic16_xor_monotonic(ptr %a) { ; O1-LABEL: atomic16_xor_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection68: +; O1-NEXT: .Lpcsection93: ; O1-NEXT: lock xorw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -2947,7 +3047,7 @@ define void @atomic16_xor_monotonic(ptr %a) { ; O2-LABEL: atomic16_xor_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection68: +; O2-NEXT: .Lpcsection93: ; O2-NEXT: lock xorw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -2955,7 +3055,7 @@ define void @atomic16_xor_monotonic(ptr %a) { ; O3-LABEL: atomic16_xor_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection68: +; O3-NEXT: .Lpcsection93: ; O3-NEXT: lock xorw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -2971,26 +3071,30 @@ define void @atomic16_nand_monotonic(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection89: +; O0-NEXT: .Lpcsection114: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: .LBB64_1: # %atomicrmw.start ; O0-NEXT: # =>This Inner Loop Header: Depth=1 ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload +; O0-NEXT: .Lpcsection115: ; O0-NEXT: # implicit-def: $edx ; O0-NEXT: movw %ax, %dx +; O0-NEXT: .Lpcsection116: ; O0-NEXT: notl %edx +; O0-NEXT: .Lpcsection117: ; O0-NEXT: orl $65493, %edx # imm = 0xFFD5 -; O0-NEXT: .Lpcsection90: +; O0-NEXT: .Lpcsection118: ; O0-NEXT: # kill: def $dx killed $dx killed $edx +; O0-NEXT: .Lpcsection119: ; O0-NEXT: lock cmpxchgw %dx, (%rcx) -; O0-NEXT: .Lpcsection91: +; O0-NEXT: .Lpcsection120: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection92: +; O0-NEXT: .Lpcsection121: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill -; O0-NEXT: .Lpcsection93: +; O0-NEXT: .Lpcsection122: ; O0-NEXT: jne .LBB64_2 ; O0-NEXT: jmp .LBB64_1 ; O0-NEXT: .LBB64_2: # %atomicrmw.end @@ -3000,19 +3104,23 @@ define void @atomic16_nand_monotonic(ptr %a) { ; O1-LABEL: atomic16_nand_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection69: +; O1-NEXT: .Lpcsection94: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB64_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection95: ; O1-NEXT: notl %ecx +; O1-NEXT: .Lpcsection96: ; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O1-NEXT: .Lpcsection97: ; O1-NEXT: # kill: def $ax killed $ax killed $eax +; O1-NEXT: .Lpcsection98: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) -; O1-NEXT: .Lpcsection70: +; O1-NEXT: .Lpcsection99: ; O1-NEXT: # kill: def $ax killed $ax def $eax -; O1-NEXT: .Lpcsection71: +; O1-NEXT: .Lpcsection100: ; O1-NEXT: jne .LBB64_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -3021,19 +3129,23 @@ define void @atomic16_nand_monotonic(ptr %a) { ; O2-LABEL: atomic16_nand_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection69: +; O2-NEXT: .Lpcsection94: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB64_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection95: ; O2-NEXT: notl %ecx +; O2-NEXT: .Lpcsection96: ; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O2-NEXT: .Lpcsection97: ; O2-NEXT: # kill: def $ax killed $ax killed $eax +; O2-NEXT: .Lpcsection98: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) -; O2-NEXT: .Lpcsection70: +; O2-NEXT: .Lpcsection99: ; O2-NEXT: # kill: def $ax killed $ax def $eax -; O2-NEXT: .Lpcsection71: +; O2-NEXT: .Lpcsection100: ; O2-NEXT: jne .LBB64_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -3042,19 +3154,23 @@ define void @atomic16_nand_monotonic(ptr %a) { ; O3-LABEL: atomic16_nand_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection69: +; O3-NEXT: .Lpcsection94: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB64_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection95: ; O3-NEXT: notl %ecx +; O3-NEXT: .Lpcsection96: ; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O3-NEXT: .Lpcsection97: ; O3-NEXT: # kill: def $ax killed $ax killed $eax +; O3-NEXT: .Lpcsection98: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) -; O3-NEXT: .Lpcsection70: +; O3-NEXT: .Lpcsection99: ; O3-NEXT: # kill: def $ax killed $ax def $eax -; O3-NEXT: .Lpcsection71: +; O3-NEXT: .Lpcsection100: ; O3-NEXT: jne .LBB64_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -3071,7 +3187,7 @@ define void @atomic16_xchg_acquire(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movw $42, %ax -; O0-NEXT: .Lpcsection94: +; O0-NEXT: .Lpcsection123: ; O0-NEXT: xchgw %ax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3080,7 +3196,7 @@ define void @atomic16_xchg_acquire(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $42, %ax -; O1-NEXT: .Lpcsection72: +; O1-NEXT: .Lpcsection101: ; O1-NEXT: xchgw %ax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3089,7 +3205,7 @@ define void @atomic16_xchg_acquire(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $42, %ax -; O2-NEXT: .Lpcsection72: +; O2-NEXT: .Lpcsection101: ; O2-NEXT: xchgw %ax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3098,7 +3214,7 @@ define void @atomic16_xchg_acquire(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $42, %ax -; O3-NEXT: .Lpcsection72: +; O3-NEXT: .Lpcsection101: ; O3-NEXT: xchgw %ax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3113,7 +3229,7 @@ define void @atomic16_add_acquire(ptr %a) { ; O0-LABEL: atomic16_add_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection95: +; O0-NEXT: .Lpcsection124: ; O0-NEXT: lock addw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3121,7 +3237,7 @@ define void @atomic16_add_acquire(ptr %a) { ; O1-LABEL: atomic16_add_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection73: +; O1-NEXT: .Lpcsection102: ; O1-NEXT: lock addw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3129,7 +3245,7 @@ define void @atomic16_add_acquire(ptr %a) { ; O2-LABEL: atomic16_add_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection73: +; O2-NEXT: .Lpcsection102: ; O2-NEXT: lock addw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3137,7 +3253,7 @@ define void @atomic16_add_acquire(ptr %a) { ; O3-LABEL: atomic16_add_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection73: +; O3-NEXT: .Lpcsection102: ; O3-NEXT: lock addw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3152,7 +3268,7 @@ define void @atomic16_sub_acquire(ptr %a) { ; O0-LABEL: atomic16_sub_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection96: +; O0-NEXT: .Lpcsection125: ; O0-NEXT: lock subw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3160,7 +3276,7 @@ define void @atomic16_sub_acquire(ptr %a) { ; O1-LABEL: atomic16_sub_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection74: +; O1-NEXT: .Lpcsection103: ; O1-NEXT: lock subw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3168,7 +3284,7 @@ define void @atomic16_sub_acquire(ptr %a) { ; O2-LABEL: atomic16_sub_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection74: +; O2-NEXT: .Lpcsection103: ; O2-NEXT: lock subw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3176,7 +3292,7 @@ define void @atomic16_sub_acquire(ptr %a) { ; O3-LABEL: atomic16_sub_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection74: +; O3-NEXT: .Lpcsection103: ; O3-NEXT: lock subw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3191,7 +3307,7 @@ define void @atomic16_and_acquire(ptr %a) { ; O0-LABEL: atomic16_and_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection97: +; O0-NEXT: .Lpcsection126: ; O0-NEXT: lock andw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3199,7 +3315,7 @@ define void @atomic16_and_acquire(ptr %a) { ; O1-LABEL: atomic16_and_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection75: +; O1-NEXT: .Lpcsection104: ; O1-NEXT: lock andw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3207,7 +3323,7 @@ define void @atomic16_and_acquire(ptr %a) { ; O2-LABEL: atomic16_and_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection75: +; O2-NEXT: .Lpcsection104: ; O2-NEXT: lock andw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3215,7 +3331,7 @@ define void @atomic16_and_acquire(ptr %a) { ; O3-LABEL: atomic16_and_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection75: +; O3-NEXT: .Lpcsection104: ; O3-NEXT: lock andw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3230,7 +3346,7 @@ define void @atomic16_or_acquire(ptr %a) { ; O0-LABEL: atomic16_or_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection98: +; O0-NEXT: .Lpcsection127: ; O0-NEXT: lock orw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3238,7 +3354,7 @@ define void @atomic16_or_acquire(ptr %a) { ; O1-LABEL: atomic16_or_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection76: +; O1-NEXT: .Lpcsection105: ; O1-NEXT: lock orw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3246,7 +3362,7 @@ define void @atomic16_or_acquire(ptr %a) { ; O2-LABEL: atomic16_or_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection76: +; O2-NEXT: .Lpcsection105: ; O2-NEXT: lock orw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3254,7 +3370,7 @@ define void @atomic16_or_acquire(ptr %a) { ; O3-LABEL: atomic16_or_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection76: +; O3-NEXT: .Lpcsection105: ; O3-NEXT: lock orw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3269,7 +3385,7 @@ define void @atomic16_xor_acquire(ptr %a) { ; O0-LABEL: atomic16_xor_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection99: +; O0-NEXT: .Lpcsection128: ; O0-NEXT: lock xorw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3277,7 +3393,7 @@ define void @atomic16_xor_acquire(ptr %a) { ; O1-LABEL: atomic16_xor_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection77: +; O1-NEXT: .Lpcsection106: ; O1-NEXT: lock xorw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3285,7 +3401,7 @@ define void @atomic16_xor_acquire(ptr %a) { ; O2-LABEL: atomic16_xor_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection77: +; O2-NEXT: .Lpcsection106: ; O2-NEXT: lock xorw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3293,7 +3409,7 @@ define void @atomic16_xor_acquire(ptr %a) { ; O3-LABEL: atomic16_xor_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection77: +; O3-NEXT: .Lpcsection106: ; O3-NEXT: lock xorw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3309,26 +3425,30 @@ define void @atomic16_nand_acquire(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection100: +; O0-NEXT: .Lpcsection129: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: .LBB71_1: # %atomicrmw.start ; O0-NEXT: # =>This Inner Loop Header: Depth=1 ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload +; O0-NEXT: .Lpcsection130: ; O0-NEXT: # implicit-def: $edx ; O0-NEXT: movw %ax, %dx +; O0-NEXT: .Lpcsection131: ; O0-NEXT: notl %edx +; O0-NEXT: .Lpcsection132: ; O0-NEXT: orl $65493, %edx # imm = 0xFFD5 -; O0-NEXT: .Lpcsection101: +; O0-NEXT: .Lpcsection133: ; O0-NEXT: # kill: def $dx killed $dx killed $edx +; O0-NEXT: .Lpcsection134: ; O0-NEXT: lock cmpxchgw %dx, (%rcx) -; O0-NEXT: .Lpcsection102: +; O0-NEXT: .Lpcsection135: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection103: +; O0-NEXT: .Lpcsection136: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill -; O0-NEXT: .Lpcsection104: +; O0-NEXT: .Lpcsection137: ; O0-NEXT: jne .LBB71_2 ; O0-NEXT: jmp .LBB71_1 ; O0-NEXT: .LBB71_2: # %atomicrmw.end @@ -3338,19 +3458,23 @@ define void @atomic16_nand_acquire(ptr %a) { ; O1-LABEL: atomic16_nand_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection78: +; O1-NEXT: .Lpcsection107: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB71_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection108: ; O1-NEXT: notl %ecx +; O1-NEXT: .Lpcsection109: ; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O1-NEXT: .Lpcsection110: ; O1-NEXT: # kill: def $ax killed $ax killed $eax +; O1-NEXT: .Lpcsection111: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) -; O1-NEXT: .Lpcsection79: +; O1-NEXT: .Lpcsection112: ; O1-NEXT: # kill: def $ax killed $ax def $eax -; O1-NEXT: .Lpcsection80: +; O1-NEXT: .Lpcsection113: ; O1-NEXT: jne .LBB71_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -3359,19 +3483,23 @@ define void @atomic16_nand_acquire(ptr %a) { ; O2-LABEL: atomic16_nand_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection78: +; O2-NEXT: .Lpcsection107: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB71_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection108: ; O2-NEXT: notl %ecx +; O2-NEXT: .Lpcsection109: ; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O2-NEXT: .Lpcsection110: ; O2-NEXT: # kill: def $ax killed $ax killed $eax +; O2-NEXT: .Lpcsection111: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) -; O2-NEXT: .Lpcsection79: +; O2-NEXT: .Lpcsection112: ; O2-NEXT: # kill: def $ax killed $ax def $eax -; O2-NEXT: .Lpcsection80: +; O2-NEXT: .Lpcsection113: ; O2-NEXT: jne .LBB71_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -3380,19 +3508,23 @@ define void @atomic16_nand_acquire(ptr %a) { ; O3-LABEL: atomic16_nand_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection78: +; O3-NEXT: .Lpcsection107: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB71_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection108: ; O3-NEXT: notl %ecx +; O3-NEXT: .Lpcsection109: ; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O3-NEXT: .Lpcsection110: ; O3-NEXT: # kill: def $ax killed $ax killed $eax +; O3-NEXT: .Lpcsection111: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) -; O3-NEXT: .Lpcsection79: +; O3-NEXT: .Lpcsection112: ; O3-NEXT: # kill: def $ax killed $ax def $eax -; O3-NEXT: .Lpcsection80: +; O3-NEXT: .Lpcsection113: ; O3-NEXT: jne .LBB71_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -3409,7 +3541,7 @@ define void @atomic16_xchg_release(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movw $42, %ax -; O0-NEXT: .Lpcsection105: +; O0-NEXT: .Lpcsection138: ; O0-NEXT: xchgw %ax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3418,7 +3550,7 @@ define void @atomic16_xchg_release(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $42, %ax -; O1-NEXT: .Lpcsection81: +; O1-NEXT: .Lpcsection114: ; O1-NEXT: xchgw %ax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3427,7 +3559,7 @@ define void @atomic16_xchg_release(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $42, %ax -; O2-NEXT: .Lpcsection81: +; O2-NEXT: .Lpcsection114: ; O2-NEXT: xchgw %ax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3436,7 +3568,7 @@ define void @atomic16_xchg_release(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $42, %ax -; O3-NEXT: .Lpcsection81: +; O3-NEXT: .Lpcsection114: ; O3-NEXT: xchgw %ax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3451,7 +3583,7 @@ define void @atomic16_add_release(ptr %a) { ; O0-LABEL: atomic16_add_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection106: +; O0-NEXT: .Lpcsection139: ; O0-NEXT: lock addw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3459,7 +3591,7 @@ define void @atomic16_add_release(ptr %a) { ; O1-LABEL: atomic16_add_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection82: +; O1-NEXT: .Lpcsection115: ; O1-NEXT: lock addw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3467,7 +3599,7 @@ define void @atomic16_add_release(ptr %a) { ; O2-LABEL: atomic16_add_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection82: +; O2-NEXT: .Lpcsection115: ; O2-NEXT: lock addw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3475,7 +3607,7 @@ define void @atomic16_add_release(ptr %a) { ; O3-LABEL: atomic16_add_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection82: +; O3-NEXT: .Lpcsection115: ; O3-NEXT: lock addw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3490,7 +3622,7 @@ define void @atomic16_sub_release(ptr %a) { ; O0-LABEL: atomic16_sub_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection107: +; O0-NEXT: .Lpcsection140: ; O0-NEXT: lock subw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3498,7 +3630,7 @@ define void @atomic16_sub_release(ptr %a) { ; O1-LABEL: atomic16_sub_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection83: +; O1-NEXT: .Lpcsection116: ; O1-NEXT: lock subw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3506,7 +3638,7 @@ define void @atomic16_sub_release(ptr %a) { ; O2-LABEL: atomic16_sub_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection83: +; O2-NEXT: .Lpcsection116: ; O2-NEXT: lock subw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3514,7 +3646,7 @@ define void @atomic16_sub_release(ptr %a) { ; O3-LABEL: atomic16_sub_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection83: +; O3-NEXT: .Lpcsection116: ; O3-NEXT: lock subw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3529,7 +3661,7 @@ define void @atomic16_and_release(ptr %a) { ; O0-LABEL: atomic16_and_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection108: +; O0-NEXT: .Lpcsection141: ; O0-NEXT: lock andw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3537,7 +3669,7 @@ define void @atomic16_and_release(ptr %a) { ; O1-LABEL: atomic16_and_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection84: +; O1-NEXT: .Lpcsection117: ; O1-NEXT: lock andw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3545,7 +3677,7 @@ define void @atomic16_and_release(ptr %a) { ; O2-LABEL: atomic16_and_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection84: +; O2-NEXT: .Lpcsection117: ; O2-NEXT: lock andw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3553,7 +3685,7 @@ define void @atomic16_and_release(ptr %a) { ; O3-LABEL: atomic16_and_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection84: +; O3-NEXT: .Lpcsection117: ; O3-NEXT: lock andw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3568,7 +3700,7 @@ define void @atomic16_or_release(ptr %a) { ; O0-LABEL: atomic16_or_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection109: +; O0-NEXT: .Lpcsection142: ; O0-NEXT: lock orw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3576,7 +3708,7 @@ define void @atomic16_or_release(ptr %a) { ; O1-LABEL: atomic16_or_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection85: +; O1-NEXT: .Lpcsection118: ; O1-NEXT: lock orw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3584,7 +3716,7 @@ define void @atomic16_or_release(ptr %a) { ; O2-LABEL: atomic16_or_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection85: +; O2-NEXT: .Lpcsection118: ; O2-NEXT: lock orw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3592,7 +3724,7 @@ define void @atomic16_or_release(ptr %a) { ; O3-LABEL: atomic16_or_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection85: +; O3-NEXT: .Lpcsection118: ; O3-NEXT: lock orw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3607,7 +3739,7 @@ define void @atomic16_xor_release(ptr %a) { ; O0-LABEL: atomic16_xor_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection110: +; O0-NEXT: .Lpcsection143: ; O0-NEXT: lock xorw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3615,7 +3747,7 @@ define void @atomic16_xor_release(ptr %a) { ; O1-LABEL: atomic16_xor_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection86: +; O1-NEXT: .Lpcsection119: ; O1-NEXT: lock xorw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3623,7 +3755,7 @@ define void @atomic16_xor_release(ptr %a) { ; O2-LABEL: atomic16_xor_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection86: +; O2-NEXT: .Lpcsection119: ; O2-NEXT: lock xorw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3631,7 +3763,7 @@ define void @atomic16_xor_release(ptr %a) { ; O3-LABEL: atomic16_xor_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection86: +; O3-NEXT: .Lpcsection119: ; O3-NEXT: lock xorw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3647,26 +3779,30 @@ define void @atomic16_nand_release(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection111: +; O0-NEXT: .Lpcsection144: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: .LBB78_1: # %atomicrmw.start ; O0-NEXT: # =>This Inner Loop Header: Depth=1 ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload +; O0-NEXT: .Lpcsection145: ; O0-NEXT: # implicit-def: $edx ; O0-NEXT: movw %ax, %dx +; O0-NEXT: .Lpcsection146: ; O0-NEXT: notl %edx +; O0-NEXT: .Lpcsection147: ; O0-NEXT: orl $65493, %edx # imm = 0xFFD5 -; O0-NEXT: .Lpcsection112: +; O0-NEXT: .Lpcsection148: ; O0-NEXT: # kill: def $dx killed $dx killed $edx +; O0-NEXT: .Lpcsection149: ; O0-NEXT: lock cmpxchgw %dx, (%rcx) -; O0-NEXT: .Lpcsection113: +; O0-NEXT: .Lpcsection150: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection114: +; O0-NEXT: .Lpcsection151: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill -; O0-NEXT: .Lpcsection115: +; O0-NEXT: .Lpcsection152: ; O0-NEXT: jne .LBB78_2 ; O0-NEXT: jmp .LBB78_1 ; O0-NEXT: .LBB78_2: # %atomicrmw.end @@ -3676,19 +3812,23 @@ define void @atomic16_nand_release(ptr %a) { ; O1-LABEL: atomic16_nand_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection87: +; O1-NEXT: .Lpcsection120: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB78_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection121: ; O1-NEXT: notl %ecx +; O1-NEXT: .Lpcsection122: ; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O1-NEXT: .Lpcsection123: ; O1-NEXT: # kill: def $ax killed $ax killed $eax +; O1-NEXT: .Lpcsection124: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) -; O1-NEXT: .Lpcsection88: +; O1-NEXT: .Lpcsection125: ; O1-NEXT: # kill: def $ax killed $ax def $eax -; O1-NEXT: .Lpcsection89: +; O1-NEXT: .Lpcsection126: ; O1-NEXT: jne .LBB78_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -3697,19 +3837,23 @@ define void @atomic16_nand_release(ptr %a) { ; O2-LABEL: atomic16_nand_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection87: +; O2-NEXT: .Lpcsection120: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB78_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection121: ; O2-NEXT: notl %ecx +; O2-NEXT: .Lpcsection122: ; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O2-NEXT: .Lpcsection123: ; O2-NEXT: # kill: def $ax killed $ax killed $eax +; O2-NEXT: .Lpcsection124: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) -; O2-NEXT: .Lpcsection88: +; O2-NEXT: .Lpcsection125: ; O2-NEXT: # kill: def $ax killed $ax def $eax -; O2-NEXT: .Lpcsection89: +; O2-NEXT: .Lpcsection126: ; O2-NEXT: jne .LBB78_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -3718,19 +3862,23 @@ define void @atomic16_nand_release(ptr %a) { ; O3-LABEL: atomic16_nand_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection87: +; O3-NEXT: .Lpcsection120: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB78_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection121: ; O3-NEXT: notl %ecx +; O3-NEXT: .Lpcsection122: ; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O3-NEXT: .Lpcsection123: ; O3-NEXT: # kill: def $ax killed $ax killed $eax +; O3-NEXT: .Lpcsection124: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) -; O3-NEXT: .Lpcsection88: +; O3-NEXT: .Lpcsection125: ; O3-NEXT: # kill: def $ax killed $ax def $eax -; O3-NEXT: .Lpcsection89: +; O3-NEXT: .Lpcsection126: ; O3-NEXT: jne .LBB78_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -3747,7 +3895,7 @@ define void @atomic16_xchg_acq_rel(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movw $42, %ax -; O0-NEXT: .Lpcsection116: +; O0-NEXT: .Lpcsection153: ; O0-NEXT: xchgw %ax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3756,7 +3904,7 @@ define void @atomic16_xchg_acq_rel(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $42, %ax -; O1-NEXT: .Lpcsection90: +; O1-NEXT: .Lpcsection127: ; O1-NEXT: xchgw %ax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3765,7 +3913,7 @@ define void @atomic16_xchg_acq_rel(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $42, %ax -; O2-NEXT: .Lpcsection90: +; O2-NEXT: .Lpcsection127: ; O2-NEXT: xchgw %ax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3774,7 +3922,7 @@ define void @atomic16_xchg_acq_rel(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $42, %ax -; O3-NEXT: .Lpcsection90: +; O3-NEXT: .Lpcsection127: ; O3-NEXT: xchgw %ax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3789,7 +3937,7 @@ define void @atomic16_add_acq_rel(ptr %a) { ; O0-LABEL: atomic16_add_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection117: +; O0-NEXT: .Lpcsection154: ; O0-NEXT: lock addw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3797,7 +3945,7 @@ define void @atomic16_add_acq_rel(ptr %a) { ; O1-LABEL: atomic16_add_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection91: +; O1-NEXT: .Lpcsection128: ; O1-NEXT: lock addw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3805,7 +3953,7 @@ define void @atomic16_add_acq_rel(ptr %a) { ; O2-LABEL: atomic16_add_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection91: +; O2-NEXT: .Lpcsection128: ; O2-NEXT: lock addw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3813,7 +3961,7 @@ define void @atomic16_add_acq_rel(ptr %a) { ; O3-LABEL: atomic16_add_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection91: +; O3-NEXT: .Lpcsection128: ; O3-NEXT: lock addw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3828,7 +3976,7 @@ define void @atomic16_sub_acq_rel(ptr %a) { ; O0-LABEL: atomic16_sub_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection118: +; O0-NEXT: .Lpcsection155: ; O0-NEXT: lock subw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3836,7 +3984,7 @@ define void @atomic16_sub_acq_rel(ptr %a) { ; O1-LABEL: atomic16_sub_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection92: +; O1-NEXT: .Lpcsection129: ; O1-NEXT: lock subw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3844,7 +3992,7 @@ define void @atomic16_sub_acq_rel(ptr %a) { ; O2-LABEL: atomic16_sub_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection92: +; O2-NEXT: .Lpcsection129: ; O2-NEXT: lock subw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3852,7 +4000,7 @@ define void @atomic16_sub_acq_rel(ptr %a) { ; O3-LABEL: atomic16_sub_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection92: +; O3-NEXT: .Lpcsection129: ; O3-NEXT: lock subw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3867,7 +4015,7 @@ define void @atomic16_and_acq_rel(ptr %a) { ; O0-LABEL: atomic16_and_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection119: +; O0-NEXT: .Lpcsection156: ; O0-NEXT: lock andw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3875,7 +4023,7 @@ define void @atomic16_and_acq_rel(ptr %a) { ; O1-LABEL: atomic16_and_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection93: +; O1-NEXT: .Lpcsection130: ; O1-NEXT: lock andw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3883,7 +4031,7 @@ define void @atomic16_and_acq_rel(ptr %a) { ; O2-LABEL: atomic16_and_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection93: +; O2-NEXT: .Lpcsection130: ; O2-NEXT: lock andw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3891,7 +4039,7 @@ define void @atomic16_and_acq_rel(ptr %a) { ; O3-LABEL: atomic16_and_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection93: +; O3-NEXT: .Lpcsection130: ; O3-NEXT: lock andw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3906,7 +4054,7 @@ define void @atomic16_or_acq_rel(ptr %a) { ; O0-LABEL: atomic16_or_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection120: +; O0-NEXT: .Lpcsection157: ; O0-NEXT: lock orw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3914,7 +4062,7 @@ define void @atomic16_or_acq_rel(ptr %a) { ; O1-LABEL: atomic16_or_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection94: +; O1-NEXT: .Lpcsection131: ; O1-NEXT: lock orw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3922,7 +4070,7 @@ define void @atomic16_or_acq_rel(ptr %a) { ; O2-LABEL: atomic16_or_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection94: +; O2-NEXT: .Lpcsection131: ; O2-NEXT: lock orw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3930,7 +4078,7 @@ define void @atomic16_or_acq_rel(ptr %a) { ; O3-LABEL: atomic16_or_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection94: +; O3-NEXT: .Lpcsection131: ; O3-NEXT: lock orw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3945,7 +4093,7 @@ define void @atomic16_xor_acq_rel(ptr %a) { ; O0-LABEL: atomic16_xor_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection121: +; O0-NEXT: .Lpcsection158: ; O0-NEXT: lock xorw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -3953,7 +4101,7 @@ define void @atomic16_xor_acq_rel(ptr %a) { ; O1-LABEL: atomic16_xor_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection95: +; O1-NEXT: .Lpcsection132: ; O1-NEXT: lock xorw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -3961,7 +4109,7 @@ define void @atomic16_xor_acq_rel(ptr %a) { ; O2-LABEL: atomic16_xor_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection95: +; O2-NEXT: .Lpcsection132: ; O2-NEXT: lock xorw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -3969,7 +4117,7 @@ define void @atomic16_xor_acq_rel(ptr %a) { ; O3-LABEL: atomic16_xor_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection95: +; O3-NEXT: .Lpcsection132: ; O3-NEXT: lock xorw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -3985,26 +4133,30 @@ define void @atomic16_nand_acq_rel(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection122: +; O0-NEXT: .Lpcsection159: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: .LBB85_1: # %atomicrmw.start ; O0-NEXT: # =>This Inner Loop Header: Depth=1 ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload +; O0-NEXT: .Lpcsection160: ; O0-NEXT: # implicit-def: $edx ; O0-NEXT: movw %ax, %dx +; O0-NEXT: .Lpcsection161: ; O0-NEXT: notl %edx +; O0-NEXT: .Lpcsection162: ; O0-NEXT: orl $65493, %edx # imm = 0xFFD5 -; O0-NEXT: .Lpcsection123: +; O0-NEXT: .Lpcsection163: ; O0-NEXT: # kill: def $dx killed $dx killed $edx +; O0-NEXT: .Lpcsection164: ; O0-NEXT: lock cmpxchgw %dx, (%rcx) -; O0-NEXT: .Lpcsection124: +; O0-NEXT: .Lpcsection165: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection125: +; O0-NEXT: .Lpcsection166: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill -; O0-NEXT: .Lpcsection126: +; O0-NEXT: .Lpcsection167: ; O0-NEXT: jne .LBB85_2 ; O0-NEXT: jmp .LBB85_1 ; O0-NEXT: .LBB85_2: # %atomicrmw.end @@ -4014,19 +4166,23 @@ define void @atomic16_nand_acq_rel(ptr %a) { ; O1-LABEL: atomic16_nand_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection96: +; O1-NEXT: .Lpcsection133: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB85_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection134: ; O1-NEXT: notl %ecx +; O1-NEXT: .Lpcsection135: ; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O1-NEXT: .Lpcsection136: ; O1-NEXT: # kill: def $ax killed $ax killed $eax +; O1-NEXT: .Lpcsection137: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) -; O1-NEXT: .Lpcsection97: +; O1-NEXT: .Lpcsection138: ; O1-NEXT: # kill: def $ax killed $ax def $eax -; O1-NEXT: .Lpcsection98: +; O1-NEXT: .Lpcsection139: ; O1-NEXT: jne .LBB85_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -4035,19 +4191,23 @@ define void @atomic16_nand_acq_rel(ptr %a) { ; O2-LABEL: atomic16_nand_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection96: +; O2-NEXT: .Lpcsection133: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB85_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection134: ; O2-NEXT: notl %ecx +; O2-NEXT: .Lpcsection135: ; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O2-NEXT: .Lpcsection136: ; O2-NEXT: # kill: def $ax killed $ax killed $eax +; O2-NEXT: .Lpcsection137: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) -; O2-NEXT: .Lpcsection97: +; O2-NEXT: .Lpcsection138: ; O2-NEXT: # kill: def $ax killed $ax def $eax -; O2-NEXT: .Lpcsection98: +; O2-NEXT: .Lpcsection139: ; O2-NEXT: jne .LBB85_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -4056,19 +4216,23 @@ define void @atomic16_nand_acq_rel(ptr %a) { ; O3-LABEL: atomic16_nand_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection96: +; O3-NEXT: .Lpcsection133: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB85_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection134: ; O3-NEXT: notl %ecx +; O3-NEXT: .Lpcsection135: ; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O3-NEXT: .Lpcsection136: ; O3-NEXT: # kill: def $ax killed $ax killed $eax +; O3-NEXT: .Lpcsection137: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) -; O3-NEXT: .Lpcsection97: +; O3-NEXT: .Lpcsection138: ; O3-NEXT: # kill: def $ax killed $ax def $eax -; O3-NEXT: .Lpcsection98: +; O3-NEXT: .Lpcsection139: ; O3-NEXT: jne .LBB85_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -4085,7 +4249,7 @@ define void @atomic16_xchg_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movw $42, %ax -; O0-NEXT: .Lpcsection127: +; O0-NEXT: .Lpcsection168: ; O0-NEXT: xchgw %ax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4094,7 +4258,7 @@ define void @atomic16_xchg_seq_cst(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $42, %ax -; O1-NEXT: .Lpcsection99: +; O1-NEXT: .Lpcsection140: ; O1-NEXT: xchgw %ax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4103,7 +4267,7 @@ define void @atomic16_xchg_seq_cst(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $42, %ax -; O2-NEXT: .Lpcsection99: +; O2-NEXT: .Lpcsection140: ; O2-NEXT: xchgw %ax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4112,7 +4276,7 @@ define void @atomic16_xchg_seq_cst(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $42, %ax -; O3-NEXT: .Lpcsection99: +; O3-NEXT: .Lpcsection140: ; O3-NEXT: xchgw %ax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4127,7 +4291,7 @@ define void @atomic16_add_seq_cst(ptr %a) { ; O0-LABEL: atomic16_add_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection128: +; O0-NEXT: .Lpcsection169: ; O0-NEXT: lock addw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4135,7 +4299,7 @@ define void @atomic16_add_seq_cst(ptr %a) { ; O1-LABEL: atomic16_add_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection100: +; O1-NEXT: .Lpcsection141: ; O1-NEXT: lock addw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4143,7 +4307,7 @@ define void @atomic16_add_seq_cst(ptr %a) { ; O2-LABEL: atomic16_add_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection100: +; O2-NEXT: .Lpcsection141: ; O2-NEXT: lock addw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4151,7 +4315,7 @@ define void @atomic16_add_seq_cst(ptr %a) { ; O3-LABEL: atomic16_add_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection100: +; O3-NEXT: .Lpcsection141: ; O3-NEXT: lock addw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4166,7 +4330,7 @@ define void @atomic16_sub_seq_cst(ptr %a) { ; O0-LABEL: atomic16_sub_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection129: +; O0-NEXT: .Lpcsection170: ; O0-NEXT: lock subw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4174,7 +4338,7 @@ define void @atomic16_sub_seq_cst(ptr %a) { ; O1-LABEL: atomic16_sub_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection101: +; O1-NEXT: .Lpcsection142: ; O1-NEXT: lock subw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4182,7 +4346,7 @@ define void @atomic16_sub_seq_cst(ptr %a) { ; O2-LABEL: atomic16_sub_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection101: +; O2-NEXT: .Lpcsection142: ; O2-NEXT: lock subw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4190,7 +4354,7 @@ define void @atomic16_sub_seq_cst(ptr %a) { ; O3-LABEL: atomic16_sub_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection101: +; O3-NEXT: .Lpcsection142: ; O3-NEXT: lock subw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4205,7 +4369,7 @@ define void @atomic16_and_seq_cst(ptr %a) { ; O0-LABEL: atomic16_and_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection130: +; O0-NEXT: .Lpcsection171: ; O0-NEXT: lock andw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4213,7 +4377,7 @@ define void @atomic16_and_seq_cst(ptr %a) { ; O1-LABEL: atomic16_and_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection102: +; O1-NEXT: .Lpcsection143: ; O1-NEXT: lock andw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4221,7 +4385,7 @@ define void @atomic16_and_seq_cst(ptr %a) { ; O2-LABEL: atomic16_and_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection102: +; O2-NEXT: .Lpcsection143: ; O2-NEXT: lock andw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4229,7 +4393,7 @@ define void @atomic16_and_seq_cst(ptr %a) { ; O3-LABEL: atomic16_and_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection102: +; O3-NEXT: .Lpcsection143: ; O3-NEXT: lock andw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4244,7 +4408,7 @@ define void @atomic16_or_seq_cst(ptr %a) { ; O0-LABEL: atomic16_or_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection131: +; O0-NEXT: .Lpcsection172: ; O0-NEXT: lock orw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4252,7 +4416,7 @@ define void @atomic16_or_seq_cst(ptr %a) { ; O1-LABEL: atomic16_or_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection103: +; O1-NEXT: .Lpcsection144: ; O1-NEXT: lock orw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4260,7 +4424,7 @@ define void @atomic16_or_seq_cst(ptr %a) { ; O2-LABEL: atomic16_or_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection103: +; O2-NEXT: .Lpcsection144: ; O2-NEXT: lock orw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4268,7 +4432,7 @@ define void @atomic16_or_seq_cst(ptr %a) { ; O3-LABEL: atomic16_or_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection103: +; O3-NEXT: .Lpcsection144: ; O3-NEXT: lock orw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4283,7 +4447,7 @@ define void @atomic16_xor_seq_cst(ptr %a) { ; O0-LABEL: atomic16_xor_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection132: +; O0-NEXT: .Lpcsection173: ; O0-NEXT: lock xorw $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4291,7 +4455,7 @@ define void @atomic16_xor_seq_cst(ptr %a) { ; O1-LABEL: atomic16_xor_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection104: +; O1-NEXT: .Lpcsection145: ; O1-NEXT: lock xorw $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4299,7 +4463,7 @@ define void @atomic16_xor_seq_cst(ptr %a) { ; O2-LABEL: atomic16_xor_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection104: +; O2-NEXT: .Lpcsection145: ; O2-NEXT: lock xorw $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4307,7 +4471,7 @@ define void @atomic16_xor_seq_cst(ptr %a) { ; O3-LABEL: atomic16_xor_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection104: +; O3-NEXT: .Lpcsection145: ; O3-NEXT: lock xorw $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4323,26 +4487,30 @@ define void @atomic16_nand_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection133: +; O0-NEXT: .Lpcsection174: ; O0-NEXT: movw (%rdi), %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: .LBB92_1: # %atomicrmw.start ; O0-NEXT: # =>This Inner Loop Header: Depth=1 ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload +; O0-NEXT: .Lpcsection175: ; O0-NEXT: # implicit-def: $edx ; O0-NEXT: movw %ax, %dx +; O0-NEXT: .Lpcsection176: ; O0-NEXT: notl %edx +; O0-NEXT: .Lpcsection177: ; O0-NEXT: orl $65493, %edx # imm = 0xFFD5 -; O0-NEXT: .Lpcsection134: +; O0-NEXT: .Lpcsection178: ; O0-NEXT: # kill: def $dx killed $dx killed $edx +; O0-NEXT: .Lpcsection179: ; O0-NEXT: lock cmpxchgw %dx, (%rcx) -; O0-NEXT: .Lpcsection135: +; O0-NEXT: .Lpcsection180: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection136: +; O0-NEXT: .Lpcsection181: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill -; O0-NEXT: .Lpcsection137: +; O0-NEXT: .Lpcsection182: ; O0-NEXT: jne .LBB92_2 ; O0-NEXT: jmp .LBB92_1 ; O0-NEXT: .LBB92_2: # %atomicrmw.end @@ -4352,19 +4520,23 @@ define void @atomic16_nand_seq_cst(ptr %a) { ; O1-LABEL: atomic16_nand_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection105: +; O1-NEXT: .Lpcsection146: ; O1-NEXT: movzwl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB92_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection147: ; O1-NEXT: notl %ecx +; O1-NEXT: .Lpcsection148: ; O1-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O1-NEXT: .Lpcsection149: ; O1-NEXT: # kill: def $ax killed $ax killed $eax +; O1-NEXT: .Lpcsection150: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) -; O1-NEXT: .Lpcsection106: +; O1-NEXT: .Lpcsection151: ; O1-NEXT: # kill: def $ax killed $ax def $eax -; O1-NEXT: .Lpcsection107: +; O1-NEXT: .Lpcsection152: ; O1-NEXT: jne .LBB92_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -4373,19 +4545,23 @@ define void @atomic16_nand_seq_cst(ptr %a) { ; O2-LABEL: atomic16_nand_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection105: +; O2-NEXT: .Lpcsection146: ; O2-NEXT: movzwl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB92_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection147: ; O2-NEXT: notl %ecx +; O2-NEXT: .Lpcsection148: ; O2-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O2-NEXT: .Lpcsection149: ; O2-NEXT: # kill: def $ax killed $ax killed $eax +; O2-NEXT: .Lpcsection150: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) -; O2-NEXT: .Lpcsection106: +; O2-NEXT: .Lpcsection151: ; O2-NEXT: # kill: def $ax killed $ax def $eax -; O2-NEXT: .Lpcsection107: +; O2-NEXT: .Lpcsection152: ; O2-NEXT: jne .LBB92_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -4394,19 +4570,23 @@ define void @atomic16_nand_seq_cst(ptr %a) { ; O3-LABEL: atomic16_nand_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection105: +; O3-NEXT: .Lpcsection146: ; O3-NEXT: movzwl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB92_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection147: ; O3-NEXT: notl %ecx +; O3-NEXT: .Lpcsection148: ; O3-NEXT: orl $65493, %ecx # imm = 0xFFD5 +; O3-NEXT: .Lpcsection149: ; O3-NEXT: # kill: def $ax killed $ax killed $eax +; O3-NEXT: .Lpcsection150: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) -; O3-NEXT: .Lpcsection106: +; O3-NEXT: .Lpcsection151: ; O3-NEXT: # kill: def $ax killed $ax def $eax -; O3-NEXT: .Lpcsection107: +; O3-NEXT: .Lpcsection152: ; O3-NEXT: jne .LBB92_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -4425,14 +4605,17 @@ define void @atomic16_cas_monotonic(ptr %a) { ; O0-NEXT: movw $42, %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: movw $1, %cx +; O0-NEXT: .Lpcsection183: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection138: +; O0-NEXT: .Lpcsection184: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection185: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection139: +; O0-NEXT: .Lpcsection186: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection187: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4442,10 +4625,13 @@ define void @atomic16_cas_monotonic(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $1, %cx ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection153: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection154: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection155: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4455,10 +4641,13 @@ define void @atomic16_cas_monotonic(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $1, %cx ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection153: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection154: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection155: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4468,10 +4657,13 @@ define void @atomic16_cas_monotonic(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $1, %cx ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection153: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection154: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection155: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4491,14 +4683,17 @@ define void @atomic16_cas_acquire(ptr %a) { ; O0-NEXT: movw $42, %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: movw $1, %cx +; O0-NEXT: .Lpcsection188: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection140: +; O0-NEXT: .Lpcsection189: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection190: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection141: +; O0-NEXT: .Lpcsection191: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection192: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4508,10 +4703,13 @@ define void @atomic16_cas_acquire(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $1, %cx ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection156: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection157: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection158: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4521,10 +4719,13 @@ define void @atomic16_cas_acquire(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $1, %cx ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection156: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection157: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection158: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4534,10 +4735,13 @@ define void @atomic16_cas_acquire(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $1, %cx ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection156: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection157: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection158: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4557,14 +4761,17 @@ define void @atomic16_cas_release(ptr %a) { ; O0-NEXT: movw $42, %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: movw $1, %cx +; O0-NEXT: .Lpcsection193: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection142: +; O0-NEXT: .Lpcsection194: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection195: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection143: +; O0-NEXT: .Lpcsection196: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection197: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4574,10 +4781,13 @@ define void @atomic16_cas_release(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $1, %cx ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection159: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection160: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection161: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4587,10 +4797,13 @@ define void @atomic16_cas_release(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $1, %cx ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection159: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection160: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection161: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4600,10 +4813,13 @@ define void @atomic16_cas_release(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $1, %cx ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection159: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection160: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection161: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4623,14 +4839,17 @@ define void @atomic16_cas_acq_rel(ptr %a) { ; O0-NEXT: movw $42, %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: movw $1, %cx +; O0-NEXT: .Lpcsection198: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection144: +; O0-NEXT: .Lpcsection199: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection200: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection145: +; O0-NEXT: .Lpcsection201: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection202: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4640,10 +4859,13 @@ define void @atomic16_cas_acq_rel(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $1, %cx ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection162: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection163: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection164: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4653,10 +4875,13 @@ define void @atomic16_cas_acq_rel(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $1, %cx ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection162: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection163: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection164: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4666,10 +4891,13 @@ define void @atomic16_cas_acq_rel(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $1, %cx ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection162: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection163: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection164: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4689,14 +4917,17 @@ define void @atomic16_cas_seq_cst(ptr %a) { ; O0-NEXT: movw $42, %ax ; O0-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill ; O0-NEXT: movw $1, %cx +; O0-NEXT: .Lpcsection203: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection146: +; O0-NEXT: .Lpcsection204: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection205: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) -; O0-NEXT: .Lpcsection147: +; O0-NEXT: .Lpcsection206: ; O0-NEXT: # kill: def $dx killed $ax ; O0-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload +; O0-NEXT: .Lpcsection207: ; O0-NEXT: lock cmpxchgw %cx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4706,10 +4937,13 @@ define void @atomic16_cas_seq_cst(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movw $1, %cx ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection165: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection166: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movw $42, %ax +; O1-NEXT: .Lpcsection167: ; O1-NEXT: lock cmpxchgw %cx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4719,10 +4953,13 @@ define void @atomic16_cas_seq_cst(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movw $1, %cx ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection165: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection166: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movw $42, %ax +; O2-NEXT: .Lpcsection167: ; O2-NEXT: lock cmpxchgw %cx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4732,10 +4969,13 @@ define void @atomic16_cas_seq_cst(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movw $1, %cx ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection165: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection166: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movw $42, %ax +; O3-NEXT: .Lpcsection167: ; O3-NEXT: lock cmpxchgw %cx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4752,7 +4992,7 @@ define i32 @atomic32_load_unordered(ptr %a) { ; O0-LABEL: atomic32_load_unordered: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection148: +; O0-NEXT: .Lpcsection208: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4760,7 +5000,7 @@ define i32 @atomic32_load_unordered(ptr %a) { ; O1-LABEL: atomic32_load_unordered: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection108: +; O1-NEXT: .Lpcsection168: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4768,7 +5008,7 @@ define i32 @atomic32_load_unordered(ptr %a) { ; O2-LABEL: atomic32_load_unordered: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection108: +; O2-NEXT: .Lpcsection168: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4776,7 +5016,7 @@ define i32 @atomic32_load_unordered(ptr %a) { ; O3-LABEL: atomic32_load_unordered: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection108: +; O3-NEXT: .Lpcsection168: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4791,7 +5031,7 @@ define i32 @atomic32_load_monotonic(ptr %a) { ; O0-LABEL: atomic32_load_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection149: +; O0-NEXT: .Lpcsection209: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4799,7 +5039,7 @@ define i32 @atomic32_load_monotonic(ptr %a) { ; O1-LABEL: atomic32_load_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection109: +; O1-NEXT: .Lpcsection169: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4807,7 +5047,7 @@ define i32 @atomic32_load_monotonic(ptr %a) { ; O2-LABEL: atomic32_load_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection109: +; O2-NEXT: .Lpcsection169: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4815,7 +5055,7 @@ define i32 @atomic32_load_monotonic(ptr %a) { ; O3-LABEL: atomic32_load_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection109: +; O3-NEXT: .Lpcsection169: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4830,7 +5070,7 @@ define i32 @atomic32_load_acquire(ptr %a) { ; O0-LABEL: atomic32_load_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection150: +; O0-NEXT: .Lpcsection210: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4838,7 +5078,7 @@ define i32 @atomic32_load_acquire(ptr %a) { ; O1-LABEL: atomic32_load_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection110: +; O1-NEXT: .Lpcsection170: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4846,7 +5086,7 @@ define i32 @atomic32_load_acquire(ptr %a) { ; O2-LABEL: atomic32_load_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection110: +; O2-NEXT: .Lpcsection170: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4854,7 +5094,7 @@ define i32 @atomic32_load_acquire(ptr %a) { ; O3-LABEL: atomic32_load_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection110: +; O3-NEXT: .Lpcsection170: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4869,7 +5109,7 @@ define i32 @atomic32_load_seq_cst(ptr %a) { ; O0-LABEL: atomic32_load_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection151: +; O0-NEXT: .Lpcsection211: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4877,7 +5117,7 @@ define i32 @atomic32_load_seq_cst(ptr %a) { ; O1-LABEL: atomic32_load_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection111: +; O1-NEXT: .Lpcsection171: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4885,7 +5125,7 @@ define i32 @atomic32_load_seq_cst(ptr %a) { ; O2-LABEL: atomic32_load_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection111: +; O2-NEXT: .Lpcsection171: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4893,7 +5133,7 @@ define i32 @atomic32_load_seq_cst(ptr %a) { ; O3-LABEL: atomic32_load_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection111: +; O3-NEXT: .Lpcsection171: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4908,7 +5148,7 @@ define void @atomic32_store_unordered(ptr %a) { ; O0-LABEL: atomic32_store_unordered: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection152: +; O0-NEXT: .Lpcsection212: ; O0-NEXT: movl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4916,7 +5156,7 @@ define void @atomic32_store_unordered(ptr %a) { ; O1-LABEL: atomic32_store_unordered: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection112: +; O1-NEXT: .Lpcsection172: ; O1-NEXT: movl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4924,7 +5164,7 @@ define void @atomic32_store_unordered(ptr %a) { ; O2-LABEL: atomic32_store_unordered: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection112: +; O2-NEXT: .Lpcsection172: ; O2-NEXT: movl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4932,7 +5172,7 @@ define void @atomic32_store_unordered(ptr %a) { ; O3-LABEL: atomic32_store_unordered: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection112: +; O3-NEXT: .Lpcsection172: ; O3-NEXT: movl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4947,7 +5187,7 @@ define void @atomic32_store_monotonic(ptr %a) { ; O0-LABEL: atomic32_store_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection153: +; O0-NEXT: .Lpcsection213: ; O0-NEXT: movl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4955,7 +5195,7 @@ define void @atomic32_store_monotonic(ptr %a) { ; O1-LABEL: atomic32_store_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection113: +; O1-NEXT: .Lpcsection173: ; O1-NEXT: movl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -4963,7 +5203,7 @@ define void @atomic32_store_monotonic(ptr %a) { ; O2-LABEL: atomic32_store_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection113: +; O2-NEXT: .Lpcsection173: ; O2-NEXT: movl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -4971,7 +5211,7 @@ define void @atomic32_store_monotonic(ptr %a) { ; O3-LABEL: atomic32_store_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection113: +; O3-NEXT: .Lpcsection173: ; O3-NEXT: movl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -4986,7 +5226,7 @@ define void @atomic32_store_release(ptr %a) { ; O0-LABEL: atomic32_store_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection154: +; O0-NEXT: .Lpcsection214: ; O0-NEXT: movl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -4994,7 +5234,7 @@ define void @atomic32_store_release(ptr %a) { ; O1-LABEL: atomic32_store_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection114: +; O1-NEXT: .Lpcsection174: ; O1-NEXT: movl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5002,7 +5242,7 @@ define void @atomic32_store_release(ptr %a) { ; O2-LABEL: atomic32_store_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection114: +; O2-NEXT: .Lpcsection174: ; O2-NEXT: movl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5010,7 +5250,7 @@ define void @atomic32_store_release(ptr %a) { ; O3-LABEL: atomic32_store_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection114: +; O3-NEXT: .Lpcsection174: ; O3-NEXT: movl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5026,7 +5266,7 @@ define void @atomic32_store_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection155: +; O0-NEXT: .Lpcsection215: ; O0-NEXT: xchgl %eax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5035,7 +5275,7 @@ define void @atomic32_store_seq_cst(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection115: +; O1-NEXT: .Lpcsection175: ; O1-NEXT: xchgl %eax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5044,7 +5284,7 @@ define void @atomic32_store_seq_cst(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection115: +; O2-NEXT: .Lpcsection175: ; O2-NEXT: xchgl %eax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5053,7 +5293,7 @@ define void @atomic32_store_seq_cst(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection115: +; O3-NEXT: .Lpcsection175: ; O3-NEXT: xchgl %eax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5069,7 +5309,7 @@ define void @atomic32_xchg_monotonic(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection156: +; O0-NEXT: .Lpcsection216: ; O0-NEXT: xchgl %eax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5078,7 +5318,7 @@ define void @atomic32_xchg_monotonic(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection116: +; O1-NEXT: .Lpcsection176: ; O1-NEXT: xchgl %eax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5087,7 +5327,7 @@ define void @atomic32_xchg_monotonic(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection116: +; O2-NEXT: .Lpcsection176: ; O2-NEXT: xchgl %eax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5096,7 +5336,7 @@ define void @atomic32_xchg_monotonic(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection116: +; O3-NEXT: .Lpcsection176: ; O3-NEXT: xchgl %eax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5111,7 +5351,7 @@ define void @atomic32_add_monotonic(ptr %a) { ; O0-LABEL: atomic32_add_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection157: +; O0-NEXT: .Lpcsection217: ; O0-NEXT: lock addl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5119,7 +5359,7 @@ define void @atomic32_add_monotonic(ptr %a) { ; O1-LABEL: atomic32_add_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection117: +; O1-NEXT: .Lpcsection177: ; O1-NEXT: lock addl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5127,7 +5367,7 @@ define void @atomic32_add_monotonic(ptr %a) { ; O2-LABEL: atomic32_add_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection117: +; O2-NEXT: .Lpcsection177: ; O2-NEXT: lock addl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5135,7 +5375,7 @@ define void @atomic32_add_monotonic(ptr %a) { ; O3-LABEL: atomic32_add_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection117: +; O3-NEXT: .Lpcsection177: ; O3-NEXT: lock addl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5150,7 +5390,7 @@ define void @atomic32_sub_monotonic(ptr %a) { ; O0-LABEL: atomic32_sub_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection158: +; O0-NEXT: .Lpcsection218: ; O0-NEXT: lock subl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5158,7 +5398,7 @@ define void @atomic32_sub_monotonic(ptr %a) { ; O1-LABEL: atomic32_sub_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection118: +; O1-NEXT: .Lpcsection178: ; O1-NEXT: lock subl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5166,7 +5406,7 @@ define void @atomic32_sub_monotonic(ptr %a) { ; O2-LABEL: atomic32_sub_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection118: +; O2-NEXT: .Lpcsection178: ; O2-NEXT: lock subl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5174,7 +5414,7 @@ define void @atomic32_sub_monotonic(ptr %a) { ; O3-LABEL: atomic32_sub_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection118: +; O3-NEXT: .Lpcsection178: ; O3-NEXT: lock subl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5189,7 +5429,7 @@ define void @atomic32_and_monotonic(ptr %a) { ; O0-LABEL: atomic32_and_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection159: +; O0-NEXT: .Lpcsection219: ; O0-NEXT: lock andl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5197,7 +5437,7 @@ define void @atomic32_and_monotonic(ptr %a) { ; O1-LABEL: atomic32_and_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection119: +; O1-NEXT: .Lpcsection179: ; O1-NEXT: lock andl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5205,7 +5445,7 @@ define void @atomic32_and_monotonic(ptr %a) { ; O2-LABEL: atomic32_and_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection119: +; O2-NEXT: .Lpcsection179: ; O2-NEXT: lock andl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5213,7 +5453,7 @@ define void @atomic32_and_monotonic(ptr %a) { ; O3-LABEL: atomic32_and_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection119: +; O3-NEXT: .Lpcsection179: ; O3-NEXT: lock andl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5228,7 +5468,7 @@ define void @atomic32_or_monotonic(ptr %a) { ; O0-LABEL: atomic32_or_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection160: +; O0-NEXT: .Lpcsection220: ; O0-NEXT: lock orl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5236,7 +5476,7 @@ define void @atomic32_or_monotonic(ptr %a) { ; O1-LABEL: atomic32_or_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection120: +; O1-NEXT: .Lpcsection180: ; O1-NEXT: lock orl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5244,7 +5484,7 @@ define void @atomic32_or_monotonic(ptr %a) { ; O2-LABEL: atomic32_or_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection120: +; O2-NEXT: .Lpcsection180: ; O2-NEXT: lock orl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5252,7 +5492,7 @@ define void @atomic32_or_monotonic(ptr %a) { ; O3-LABEL: atomic32_or_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection120: +; O3-NEXT: .Lpcsection180: ; O3-NEXT: lock orl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5267,7 +5507,7 @@ define void @atomic32_xor_monotonic(ptr %a) { ; O0-LABEL: atomic32_xor_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection161: +; O0-NEXT: .Lpcsection221: ; O0-NEXT: lock xorl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5275,7 +5515,7 @@ define void @atomic32_xor_monotonic(ptr %a) { ; O1-LABEL: atomic32_xor_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection121: +; O1-NEXT: .Lpcsection181: ; O1-NEXT: lock xorl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5283,7 +5523,7 @@ define void @atomic32_xor_monotonic(ptr %a) { ; O2-LABEL: atomic32_xor_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection121: +; O2-NEXT: .Lpcsection181: ; O2-NEXT: lock xorl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5291,7 +5531,7 @@ define void @atomic32_xor_monotonic(ptr %a) { ; O3-LABEL: atomic32_xor_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection121: +; O3-NEXT: .Lpcsection181: ; O3-NEXT: lock xorl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5307,7 +5547,7 @@ define void @atomic32_nand_monotonic(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection162: +; O0-NEXT: .Lpcsection222: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: .LBB112_1: # %atomicrmw.start @@ -5315,16 +5555,18 @@ define void @atomic32_nand_monotonic(ptr %a) { ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %edx +; O0-NEXT: .Lpcsection223: ; O0-NEXT: notl %edx -; O0-NEXT: .Lpcsection163: +; O0-NEXT: .Lpcsection224: ; O0-NEXT: orl $-43, %edx +; O0-NEXT: .Lpcsection225: ; O0-NEXT: lock cmpxchgl %edx, (%rcx) -; O0-NEXT: .Lpcsection164: +; O0-NEXT: .Lpcsection226: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection165: +; O0-NEXT: .Lpcsection227: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill -; O0-NEXT: .Lpcsection166: +; O0-NEXT: .Lpcsection228: ; O0-NEXT: jne .LBB112_2 ; O0-NEXT: jmp .LBB112_1 ; O0-NEXT: .LBB112_2: # %atomicrmw.end @@ -5334,17 +5576,19 @@ define void @atomic32_nand_monotonic(ptr %a) { ; O1-LABEL: atomic32_nand_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection122: +; O1-NEXT: .Lpcsection182: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB112_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection183: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection123: +; O1-NEXT: .Lpcsection184: ; O1-NEXT: orl $-43, %ecx +; O1-NEXT: .Lpcsection185: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) -; O1-NEXT: .Lpcsection124: +; O1-NEXT: .Lpcsection186: ; O1-NEXT: jne .LBB112_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -5353,17 +5597,19 @@ define void @atomic32_nand_monotonic(ptr %a) { ; O2-LABEL: atomic32_nand_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection122: +; O2-NEXT: .Lpcsection182: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB112_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection183: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection123: +; O2-NEXT: .Lpcsection184: ; O2-NEXT: orl $-43, %ecx +; O2-NEXT: .Lpcsection185: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) -; O2-NEXT: .Lpcsection124: +; O2-NEXT: .Lpcsection186: ; O2-NEXT: jne .LBB112_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -5372,17 +5618,19 @@ define void @atomic32_nand_monotonic(ptr %a) { ; O3-LABEL: atomic32_nand_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection122: +; O3-NEXT: .Lpcsection182: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB112_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection183: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection123: +; O3-NEXT: .Lpcsection184: ; O3-NEXT: orl $-43, %ecx +; O3-NEXT: .Lpcsection185: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) -; O3-NEXT: .Lpcsection124: +; O3-NEXT: .Lpcsection186: ; O3-NEXT: jne .LBB112_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -5399,7 +5647,7 @@ define void @atomic32_xchg_acquire(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection167: +; O0-NEXT: .Lpcsection229: ; O0-NEXT: xchgl %eax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5408,7 +5656,7 @@ define void @atomic32_xchg_acquire(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection125: +; O1-NEXT: .Lpcsection187: ; O1-NEXT: xchgl %eax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5417,7 +5665,7 @@ define void @atomic32_xchg_acquire(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection125: +; O2-NEXT: .Lpcsection187: ; O2-NEXT: xchgl %eax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5426,7 +5674,7 @@ define void @atomic32_xchg_acquire(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection125: +; O3-NEXT: .Lpcsection187: ; O3-NEXT: xchgl %eax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5441,7 +5689,7 @@ define void @atomic32_add_acquire(ptr %a) { ; O0-LABEL: atomic32_add_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection168: +; O0-NEXT: .Lpcsection230: ; O0-NEXT: lock addl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5449,7 +5697,7 @@ define void @atomic32_add_acquire(ptr %a) { ; O1-LABEL: atomic32_add_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection126: +; O1-NEXT: .Lpcsection188: ; O1-NEXT: lock addl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5457,7 +5705,7 @@ define void @atomic32_add_acquire(ptr %a) { ; O2-LABEL: atomic32_add_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection126: +; O2-NEXT: .Lpcsection188: ; O2-NEXT: lock addl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5465,7 +5713,7 @@ define void @atomic32_add_acquire(ptr %a) { ; O3-LABEL: atomic32_add_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection126: +; O3-NEXT: .Lpcsection188: ; O3-NEXT: lock addl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5480,7 +5728,7 @@ define void @atomic32_sub_acquire(ptr %a) { ; O0-LABEL: atomic32_sub_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection169: +; O0-NEXT: .Lpcsection231: ; O0-NEXT: lock subl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5488,7 +5736,7 @@ define void @atomic32_sub_acquire(ptr %a) { ; O1-LABEL: atomic32_sub_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection127: +; O1-NEXT: .Lpcsection189: ; O1-NEXT: lock subl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5496,7 +5744,7 @@ define void @atomic32_sub_acquire(ptr %a) { ; O2-LABEL: atomic32_sub_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection127: +; O2-NEXT: .Lpcsection189: ; O2-NEXT: lock subl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5504,7 +5752,7 @@ define void @atomic32_sub_acquire(ptr %a) { ; O3-LABEL: atomic32_sub_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection127: +; O3-NEXT: .Lpcsection189: ; O3-NEXT: lock subl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5519,7 +5767,7 @@ define void @atomic32_and_acquire(ptr %a) { ; O0-LABEL: atomic32_and_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection170: +; O0-NEXT: .Lpcsection232: ; O0-NEXT: lock andl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5527,7 +5775,7 @@ define void @atomic32_and_acquire(ptr %a) { ; O1-LABEL: atomic32_and_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection128: +; O1-NEXT: .Lpcsection190: ; O1-NEXT: lock andl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5535,7 +5783,7 @@ define void @atomic32_and_acquire(ptr %a) { ; O2-LABEL: atomic32_and_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection128: +; O2-NEXT: .Lpcsection190: ; O2-NEXT: lock andl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5543,7 +5791,7 @@ define void @atomic32_and_acquire(ptr %a) { ; O3-LABEL: atomic32_and_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection128: +; O3-NEXT: .Lpcsection190: ; O3-NEXT: lock andl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5558,7 +5806,7 @@ define void @atomic32_or_acquire(ptr %a) { ; O0-LABEL: atomic32_or_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection171: +; O0-NEXT: .Lpcsection233: ; O0-NEXT: lock orl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5566,7 +5814,7 @@ define void @atomic32_or_acquire(ptr %a) { ; O1-LABEL: atomic32_or_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection129: +; O1-NEXT: .Lpcsection191: ; O1-NEXT: lock orl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5574,7 +5822,7 @@ define void @atomic32_or_acquire(ptr %a) { ; O2-LABEL: atomic32_or_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection129: +; O2-NEXT: .Lpcsection191: ; O2-NEXT: lock orl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5582,7 +5830,7 @@ define void @atomic32_or_acquire(ptr %a) { ; O3-LABEL: atomic32_or_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection129: +; O3-NEXT: .Lpcsection191: ; O3-NEXT: lock orl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5597,7 +5845,7 @@ define void @atomic32_xor_acquire(ptr %a) { ; O0-LABEL: atomic32_xor_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection172: +; O0-NEXT: .Lpcsection234: ; O0-NEXT: lock xorl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5605,7 +5853,7 @@ define void @atomic32_xor_acquire(ptr %a) { ; O1-LABEL: atomic32_xor_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection130: +; O1-NEXT: .Lpcsection192: ; O1-NEXT: lock xorl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5613,7 +5861,7 @@ define void @atomic32_xor_acquire(ptr %a) { ; O2-LABEL: atomic32_xor_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection130: +; O2-NEXT: .Lpcsection192: ; O2-NEXT: lock xorl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5621,7 +5869,7 @@ define void @atomic32_xor_acquire(ptr %a) { ; O3-LABEL: atomic32_xor_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection130: +; O3-NEXT: .Lpcsection192: ; O3-NEXT: lock xorl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5637,7 +5885,7 @@ define void @atomic32_nand_acquire(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection173: +; O0-NEXT: .Lpcsection235: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: .LBB119_1: # %atomicrmw.start @@ -5645,16 +5893,18 @@ define void @atomic32_nand_acquire(ptr %a) { ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %edx +; O0-NEXT: .Lpcsection236: ; O0-NEXT: notl %edx -; O0-NEXT: .Lpcsection174: +; O0-NEXT: .Lpcsection237: ; O0-NEXT: orl $-43, %edx +; O0-NEXT: .Lpcsection238: ; O0-NEXT: lock cmpxchgl %edx, (%rcx) -; O0-NEXT: .Lpcsection175: +; O0-NEXT: .Lpcsection239: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection176: +; O0-NEXT: .Lpcsection240: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill -; O0-NEXT: .Lpcsection177: +; O0-NEXT: .Lpcsection241: ; O0-NEXT: jne .LBB119_2 ; O0-NEXT: jmp .LBB119_1 ; O0-NEXT: .LBB119_2: # %atomicrmw.end @@ -5664,17 +5914,19 @@ define void @atomic32_nand_acquire(ptr %a) { ; O1-LABEL: atomic32_nand_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection131: +; O1-NEXT: .Lpcsection193: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB119_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection194: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection132: +; O1-NEXT: .Lpcsection195: ; O1-NEXT: orl $-43, %ecx +; O1-NEXT: .Lpcsection196: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) -; O1-NEXT: .Lpcsection133: +; O1-NEXT: .Lpcsection197: ; O1-NEXT: jne .LBB119_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -5683,17 +5935,19 @@ define void @atomic32_nand_acquire(ptr %a) { ; O2-LABEL: atomic32_nand_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection131: +; O2-NEXT: .Lpcsection193: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB119_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection194: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection132: +; O2-NEXT: .Lpcsection195: ; O2-NEXT: orl $-43, %ecx +; O2-NEXT: .Lpcsection196: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) -; O2-NEXT: .Lpcsection133: +; O2-NEXT: .Lpcsection197: ; O2-NEXT: jne .LBB119_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -5702,17 +5956,19 @@ define void @atomic32_nand_acquire(ptr %a) { ; O3-LABEL: atomic32_nand_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection131: +; O3-NEXT: .Lpcsection193: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB119_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection194: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection132: +; O3-NEXT: .Lpcsection195: ; O3-NEXT: orl $-43, %ecx +; O3-NEXT: .Lpcsection196: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) -; O3-NEXT: .Lpcsection133: +; O3-NEXT: .Lpcsection197: ; O3-NEXT: jne .LBB119_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -5729,7 +5985,7 @@ define void @atomic32_xchg_release(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection178: +; O0-NEXT: .Lpcsection242: ; O0-NEXT: xchgl %eax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5738,7 +5994,7 @@ define void @atomic32_xchg_release(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection134: +; O1-NEXT: .Lpcsection198: ; O1-NEXT: xchgl %eax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5747,7 +6003,7 @@ define void @atomic32_xchg_release(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection134: +; O2-NEXT: .Lpcsection198: ; O2-NEXT: xchgl %eax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5756,7 +6012,7 @@ define void @atomic32_xchg_release(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection134: +; O3-NEXT: .Lpcsection198: ; O3-NEXT: xchgl %eax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5771,7 +6027,7 @@ define void @atomic32_add_release(ptr %a) { ; O0-LABEL: atomic32_add_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection179: +; O0-NEXT: .Lpcsection243: ; O0-NEXT: lock addl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5779,7 +6035,7 @@ define void @atomic32_add_release(ptr %a) { ; O1-LABEL: atomic32_add_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection135: +; O1-NEXT: .Lpcsection199: ; O1-NEXT: lock addl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5787,7 +6043,7 @@ define void @atomic32_add_release(ptr %a) { ; O2-LABEL: atomic32_add_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection135: +; O2-NEXT: .Lpcsection199: ; O2-NEXT: lock addl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5795,7 +6051,7 @@ define void @atomic32_add_release(ptr %a) { ; O3-LABEL: atomic32_add_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection135: +; O3-NEXT: .Lpcsection199: ; O3-NEXT: lock addl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5810,7 +6066,7 @@ define void @atomic32_sub_release(ptr %a) { ; O0-LABEL: atomic32_sub_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection180: +; O0-NEXT: .Lpcsection244: ; O0-NEXT: lock subl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5818,7 +6074,7 @@ define void @atomic32_sub_release(ptr %a) { ; O1-LABEL: atomic32_sub_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection136: +; O1-NEXT: .Lpcsection200: ; O1-NEXT: lock subl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5826,7 +6082,7 @@ define void @atomic32_sub_release(ptr %a) { ; O2-LABEL: atomic32_sub_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection136: +; O2-NEXT: .Lpcsection200: ; O2-NEXT: lock subl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5834,7 +6090,7 @@ define void @atomic32_sub_release(ptr %a) { ; O3-LABEL: atomic32_sub_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection136: +; O3-NEXT: .Lpcsection200: ; O3-NEXT: lock subl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5849,7 +6105,7 @@ define void @atomic32_and_release(ptr %a) { ; O0-LABEL: atomic32_and_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection181: +; O0-NEXT: .Lpcsection245: ; O0-NEXT: lock andl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5857,7 +6113,7 @@ define void @atomic32_and_release(ptr %a) { ; O1-LABEL: atomic32_and_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection137: +; O1-NEXT: .Lpcsection201: ; O1-NEXT: lock andl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5865,7 +6121,7 @@ define void @atomic32_and_release(ptr %a) { ; O2-LABEL: atomic32_and_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection137: +; O2-NEXT: .Lpcsection201: ; O2-NEXT: lock andl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5873,7 +6129,7 @@ define void @atomic32_and_release(ptr %a) { ; O3-LABEL: atomic32_and_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection137: +; O3-NEXT: .Lpcsection201: ; O3-NEXT: lock andl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5888,7 +6144,7 @@ define void @atomic32_or_release(ptr %a) { ; O0-LABEL: atomic32_or_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection182: +; O0-NEXT: .Lpcsection246: ; O0-NEXT: lock orl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5896,7 +6152,7 @@ define void @atomic32_or_release(ptr %a) { ; O1-LABEL: atomic32_or_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection138: +; O1-NEXT: .Lpcsection202: ; O1-NEXT: lock orl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5904,7 +6160,7 @@ define void @atomic32_or_release(ptr %a) { ; O2-LABEL: atomic32_or_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection138: +; O2-NEXT: .Lpcsection202: ; O2-NEXT: lock orl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5912,7 +6168,7 @@ define void @atomic32_or_release(ptr %a) { ; O3-LABEL: atomic32_or_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection138: +; O3-NEXT: .Lpcsection202: ; O3-NEXT: lock orl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5927,7 +6183,7 @@ define void @atomic32_xor_release(ptr %a) { ; O0-LABEL: atomic32_xor_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection183: +; O0-NEXT: .Lpcsection247: ; O0-NEXT: lock xorl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -5935,7 +6191,7 @@ define void @atomic32_xor_release(ptr %a) { ; O1-LABEL: atomic32_xor_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection139: +; O1-NEXT: .Lpcsection203: ; O1-NEXT: lock xorl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -5943,7 +6199,7 @@ define void @atomic32_xor_release(ptr %a) { ; O2-LABEL: atomic32_xor_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection139: +; O2-NEXT: .Lpcsection203: ; O2-NEXT: lock xorl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -5951,7 +6207,7 @@ define void @atomic32_xor_release(ptr %a) { ; O3-LABEL: atomic32_xor_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection139: +; O3-NEXT: .Lpcsection203: ; O3-NEXT: lock xorl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -5967,7 +6223,7 @@ define void @atomic32_nand_release(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection184: +; O0-NEXT: .Lpcsection248: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: .LBB126_1: # %atomicrmw.start @@ -5975,16 +6231,18 @@ define void @atomic32_nand_release(ptr %a) { ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %edx +; O0-NEXT: .Lpcsection249: ; O0-NEXT: notl %edx -; O0-NEXT: .Lpcsection185: +; O0-NEXT: .Lpcsection250: ; O0-NEXT: orl $-43, %edx +; O0-NEXT: .Lpcsection251: ; O0-NEXT: lock cmpxchgl %edx, (%rcx) -; O0-NEXT: .Lpcsection186: +; O0-NEXT: .Lpcsection252: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection187: +; O0-NEXT: .Lpcsection253: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill -; O0-NEXT: .Lpcsection188: +; O0-NEXT: .Lpcsection254: ; O0-NEXT: jne .LBB126_2 ; O0-NEXT: jmp .LBB126_1 ; O0-NEXT: .LBB126_2: # %atomicrmw.end @@ -5994,17 +6252,19 @@ define void @atomic32_nand_release(ptr %a) { ; O1-LABEL: atomic32_nand_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection140: +; O1-NEXT: .Lpcsection204: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB126_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection205: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection141: +; O1-NEXT: .Lpcsection206: ; O1-NEXT: orl $-43, %ecx +; O1-NEXT: .Lpcsection207: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) -; O1-NEXT: .Lpcsection142: +; O1-NEXT: .Lpcsection208: ; O1-NEXT: jne .LBB126_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -6013,17 +6273,19 @@ define void @atomic32_nand_release(ptr %a) { ; O2-LABEL: atomic32_nand_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection140: +; O2-NEXT: .Lpcsection204: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB126_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection205: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection141: +; O2-NEXT: .Lpcsection206: ; O2-NEXT: orl $-43, %ecx +; O2-NEXT: .Lpcsection207: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) -; O2-NEXT: .Lpcsection142: +; O2-NEXT: .Lpcsection208: ; O2-NEXT: jne .LBB126_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -6032,17 +6294,19 @@ define void @atomic32_nand_release(ptr %a) { ; O3-LABEL: atomic32_nand_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection140: +; O3-NEXT: .Lpcsection204: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB126_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection205: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection141: +; O3-NEXT: .Lpcsection206: ; O3-NEXT: orl $-43, %ecx +; O3-NEXT: .Lpcsection207: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) -; O3-NEXT: .Lpcsection142: +; O3-NEXT: .Lpcsection208: ; O3-NEXT: jne .LBB126_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -6059,7 +6323,7 @@ define void @atomic32_xchg_acq_rel(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection189: +; O0-NEXT: .Lpcsection255: ; O0-NEXT: xchgl %eax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6068,7 +6332,7 @@ define void @atomic32_xchg_acq_rel(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection143: +; O1-NEXT: .Lpcsection209: ; O1-NEXT: xchgl %eax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6077,7 +6341,7 @@ define void @atomic32_xchg_acq_rel(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection143: +; O2-NEXT: .Lpcsection209: ; O2-NEXT: xchgl %eax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6086,7 +6350,7 @@ define void @atomic32_xchg_acq_rel(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection143: +; O3-NEXT: .Lpcsection209: ; O3-NEXT: xchgl %eax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6101,7 +6365,7 @@ define void @atomic32_add_acq_rel(ptr %a) { ; O0-LABEL: atomic32_add_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection190: +; O0-NEXT: .Lpcsection256: ; O0-NEXT: lock addl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6109,7 +6373,7 @@ define void @atomic32_add_acq_rel(ptr %a) { ; O1-LABEL: atomic32_add_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection144: +; O1-NEXT: .Lpcsection210: ; O1-NEXT: lock addl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6117,7 +6381,7 @@ define void @atomic32_add_acq_rel(ptr %a) { ; O2-LABEL: atomic32_add_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection144: +; O2-NEXT: .Lpcsection210: ; O2-NEXT: lock addl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6125,7 +6389,7 @@ define void @atomic32_add_acq_rel(ptr %a) { ; O3-LABEL: atomic32_add_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection144: +; O3-NEXT: .Lpcsection210: ; O3-NEXT: lock addl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6140,7 +6404,7 @@ define void @atomic32_sub_acq_rel(ptr %a) { ; O0-LABEL: atomic32_sub_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection191: +; O0-NEXT: .Lpcsection257: ; O0-NEXT: lock subl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6148,7 +6412,7 @@ define void @atomic32_sub_acq_rel(ptr %a) { ; O1-LABEL: atomic32_sub_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection145: +; O1-NEXT: .Lpcsection211: ; O1-NEXT: lock subl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6156,7 +6420,7 @@ define void @atomic32_sub_acq_rel(ptr %a) { ; O2-LABEL: atomic32_sub_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection145: +; O2-NEXT: .Lpcsection211: ; O2-NEXT: lock subl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6164,7 +6428,7 @@ define void @atomic32_sub_acq_rel(ptr %a) { ; O3-LABEL: atomic32_sub_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection145: +; O3-NEXT: .Lpcsection211: ; O3-NEXT: lock subl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6179,7 +6443,7 @@ define void @atomic32_and_acq_rel(ptr %a) { ; O0-LABEL: atomic32_and_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection192: +; O0-NEXT: .Lpcsection258: ; O0-NEXT: lock andl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6187,7 +6451,7 @@ define void @atomic32_and_acq_rel(ptr %a) { ; O1-LABEL: atomic32_and_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection146: +; O1-NEXT: .Lpcsection212: ; O1-NEXT: lock andl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6195,7 +6459,7 @@ define void @atomic32_and_acq_rel(ptr %a) { ; O2-LABEL: atomic32_and_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection146: +; O2-NEXT: .Lpcsection212: ; O2-NEXT: lock andl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6203,7 +6467,7 @@ define void @atomic32_and_acq_rel(ptr %a) { ; O3-LABEL: atomic32_and_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection146: +; O3-NEXT: .Lpcsection212: ; O3-NEXT: lock andl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6218,7 +6482,7 @@ define void @atomic32_or_acq_rel(ptr %a) { ; O0-LABEL: atomic32_or_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection193: +; O0-NEXT: .Lpcsection259: ; O0-NEXT: lock orl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6226,7 +6490,7 @@ define void @atomic32_or_acq_rel(ptr %a) { ; O1-LABEL: atomic32_or_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection147: +; O1-NEXT: .Lpcsection213: ; O1-NEXT: lock orl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6234,7 +6498,7 @@ define void @atomic32_or_acq_rel(ptr %a) { ; O2-LABEL: atomic32_or_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection147: +; O2-NEXT: .Lpcsection213: ; O2-NEXT: lock orl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6242,7 +6506,7 @@ define void @atomic32_or_acq_rel(ptr %a) { ; O3-LABEL: atomic32_or_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection147: +; O3-NEXT: .Lpcsection213: ; O3-NEXT: lock orl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6257,7 +6521,7 @@ define void @atomic32_xor_acq_rel(ptr %a) { ; O0-LABEL: atomic32_xor_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection194: +; O0-NEXT: .Lpcsection260: ; O0-NEXT: lock xorl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6265,7 +6529,7 @@ define void @atomic32_xor_acq_rel(ptr %a) { ; O1-LABEL: atomic32_xor_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection148: +; O1-NEXT: .Lpcsection214: ; O1-NEXT: lock xorl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6273,7 +6537,7 @@ define void @atomic32_xor_acq_rel(ptr %a) { ; O2-LABEL: atomic32_xor_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection148: +; O2-NEXT: .Lpcsection214: ; O2-NEXT: lock xorl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6281,7 +6545,7 @@ define void @atomic32_xor_acq_rel(ptr %a) { ; O3-LABEL: atomic32_xor_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection148: +; O3-NEXT: .Lpcsection214: ; O3-NEXT: lock xorl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6297,7 +6561,7 @@ define void @atomic32_nand_acq_rel(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection195: +; O0-NEXT: .Lpcsection261: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: .LBB133_1: # %atomicrmw.start @@ -6305,16 +6569,18 @@ define void @atomic32_nand_acq_rel(ptr %a) { ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %edx +; O0-NEXT: .Lpcsection262: ; O0-NEXT: notl %edx -; O0-NEXT: .Lpcsection196: +; O0-NEXT: .Lpcsection263: ; O0-NEXT: orl $-43, %edx +; O0-NEXT: .Lpcsection264: ; O0-NEXT: lock cmpxchgl %edx, (%rcx) -; O0-NEXT: .Lpcsection197: +; O0-NEXT: .Lpcsection265: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection198: +; O0-NEXT: .Lpcsection266: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill -; O0-NEXT: .Lpcsection199: +; O0-NEXT: .Lpcsection267: ; O0-NEXT: jne .LBB133_2 ; O0-NEXT: jmp .LBB133_1 ; O0-NEXT: .LBB133_2: # %atomicrmw.end @@ -6324,17 +6590,19 @@ define void @atomic32_nand_acq_rel(ptr %a) { ; O1-LABEL: atomic32_nand_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection149: +; O1-NEXT: .Lpcsection215: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB133_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection216: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection150: +; O1-NEXT: .Lpcsection217: ; O1-NEXT: orl $-43, %ecx +; O1-NEXT: .Lpcsection218: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) -; O1-NEXT: .Lpcsection151: +; O1-NEXT: .Lpcsection219: ; O1-NEXT: jne .LBB133_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -6343,17 +6611,19 @@ define void @atomic32_nand_acq_rel(ptr %a) { ; O2-LABEL: atomic32_nand_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection149: +; O2-NEXT: .Lpcsection215: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB133_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection216: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection150: +; O2-NEXT: .Lpcsection217: ; O2-NEXT: orl $-43, %ecx +; O2-NEXT: .Lpcsection218: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) -; O2-NEXT: .Lpcsection151: +; O2-NEXT: .Lpcsection219: ; O2-NEXT: jne .LBB133_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -6362,17 +6632,19 @@ define void @atomic32_nand_acq_rel(ptr %a) { ; O3-LABEL: atomic32_nand_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection149: +; O3-NEXT: .Lpcsection215: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB133_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection216: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection150: +; O3-NEXT: .Lpcsection217: ; O3-NEXT: orl $-43, %ecx +; O3-NEXT: .Lpcsection218: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) -; O3-NEXT: .Lpcsection151: +; O3-NEXT: .Lpcsection219: ; O3-NEXT: jne .LBB133_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -6389,7 +6661,7 @@ define void @atomic32_xchg_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection200: +; O0-NEXT: .Lpcsection268: ; O0-NEXT: xchgl %eax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6398,7 +6670,7 @@ define void @atomic32_xchg_seq_cst(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection152: +; O1-NEXT: .Lpcsection220: ; O1-NEXT: xchgl %eax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6407,7 +6679,7 @@ define void @atomic32_xchg_seq_cst(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection152: +; O2-NEXT: .Lpcsection220: ; O2-NEXT: xchgl %eax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6416,7 +6688,7 @@ define void @atomic32_xchg_seq_cst(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection152: +; O3-NEXT: .Lpcsection220: ; O3-NEXT: xchgl %eax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6431,7 +6703,7 @@ define void @atomic32_add_seq_cst(ptr %a) { ; O0-LABEL: atomic32_add_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection201: +; O0-NEXT: .Lpcsection269: ; O0-NEXT: lock addl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6439,7 +6711,7 @@ define void @atomic32_add_seq_cst(ptr %a) { ; O1-LABEL: atomic32_add_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection153: +; O1-NEXT: .Lpcsection221: ; O1-NEXT: lock addl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6447,7 +6719,7 @@ define void @atomic32_add_seq_cst(ptr %a) { ; O2-LABEL: atomic32_add_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection153: +; O2-NEXT: .Lpcsection221: ; O2-NEXT: lock addl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6455,7 +6727,7 @@ define void @atomic32_add_seq_cst(ptr %a) { ; O3-LABEL: atomic32_add_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection153: +; O3-NEXT: .Lpcsection221: ; O3-NEXT: lock addl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6470,7 +6742,7 @@ define void @atomic32_sub_seq_cst(ptr %a) { ; O0-LABEL: atomic32_sub_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection202: +; O0-NEXT: .Lpcsection270: ; O0-NEXT: lock subl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6478,7 +6750,7 @@ define void @atomic32_sub_seq_cst(ptr %a) { ; O1-LABEL: atomic32_sub_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection154: +; O1-NEXT: .Lpcsection222: ; O1-NEXT: lock subl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6486,7 +6758,7 @@ define void @atomic32_sub_seq_cst(ptr %a) { ; O2-LABEL: atomic32_sub_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection154: +; O2-NEXT: .Lpcsection222: ; O2-NEXT: lock subl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6494,7 +6766,7 @@ define void @atomic32_sub_seq_cst(ptr %a) { ; O3-LABEL: atomic32_sub_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection154: +; O3-NEXT: .Lpcsection222: ; O3-NEXT: lock subl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6509,7 +6781,7 @@ define void @atomic32_and_seq_cst(ptr %a) { ; O0-LABEL: atomic32_and_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection203: +; O0-NEXT: .Lpcsection271: ; O0-NEXT: lock andl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6517,7 +6789,7 @@ define void @atomic32_and_seq_cst(ptr %a) { ; O1-LABEL: atomic32_and_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection155: +; O1-NEXT: .Lpcsection223: ; O1-NEXT: lock andl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6525,7 +6797,7 @@ define void @atomic32_and_seq_cst(ptr %a) { ; O2-LABEL: atomic32_and_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection155: +; O2-NEXT: .Lpcsection223: ; O2-NEXT: lock andl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6533,7 +6805,7 @@ define void @atomic32_and_seq_cst(ptr %a) { ; O3-LABEL: atomic32_and_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection155: +; O3-NEXT: .Lpcsection223: ; O3-NEXT: lock andl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6548,7 +6820,7 @@ define void @atomic32_or_seq_cst(ptr %a) { ; O0-LABEL: atomic32_or_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection204: +; O0-NEXT: .Lpcsection272: ; O0-NEXT: lock orl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6556,7 +6828,7 @@ define void @atomic32_or_seq_cst(ptr %a) { ; O1-LABEL: atomic32_or_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection156: +; O1-NEXT: .Lpcsection224: ; O1-NEXT: lock orl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6564,7 +6836,7 @@ define void @atomic32_or_seq_cst(ptr %a) { ; O2-LABEL: atomic32_or_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection156: +; O2-NEXT: .Lpcsection224: ; O2-NEXT: lock orl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6572,7 +6844,7 @@ define void @atomic32_or_seq_cst(ptr %a) { ; O3-LABEL: atomic32_or_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection156: +; O3-NEXT: .Lpcsection224: ; O3-NEXT: lock orl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6587,7 +6859,7 @@ define void @atomic32_xor_seq_cst(ptr %a) { ; O0-LABEL: atomic32_xor_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection205: +; O0-NEXT: .Lpcsection273: ; O0-NEXT: lock xorl $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6595,7 +6867,7 @@ define void @atomic32_xor_seq_cst(ptr %a) { ; O1-LABEL: atomic32_xor_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection157: +; O1-NEXT: .Lpcsection225: ; O1-NEXT: lock xorl $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6603,7 +6875,7 @@ define void @atomic32_xor_seq_cst(ptr %a) { ; O2-LABEL: atomic32_xor_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection157: +; O2-NEXT: .Lpcsection225: ; O2-NEXT: lock xorl $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6611,7 +6883,7 @@ define void @atomic32_xor_seq_cst(ptr %a) { ; O3-LABEL: atomic32_xor_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection157: +; O3-NEXT: .Lpcsection225: ; O3-NEXT: lock xorl $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6627,7 +6899,7 @@ define void @atomic32_nand_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection206: +; O0-NEXT: .Lpcsection274: ; O0-NEXT: movl (%rdi), %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: .LBB140_1: # %atomicrmw.start @@ -6635,16 +6907,18 @@ define void @atomic32_nand_seq_cst(ptr %a) { ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %edx +; O0-NEXT: .Lpcsection275: ; O0-NEXT: notl %edx -; O0-NEXT: .Lpcsection207: +; O0-NEXT: .Lpcsection276: ; O0-NEXT: orl $-43, %edx +; O0-NEXT: .Lpcsection277: ; O0-NEXT: lock cmpxchgl %edx, (%rcx) -; O0-NEXT: .Lpcsection208: +; O0-NEXT: .Lpcsection278: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection209: +; O0-NEXT: .Lpcsection279: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill -; O0-NEXT: .Lpcsection210: +; O0-NEXT: .Lpcsection280: ; O0-NEXT: jne .LBB140_2 ; O0-NEXT: jmp .LBB140_1 ; O0-NEXT: .LBB140_2: # %atomicrmw.end @@ -6654,17 +6928,19 @@ define void @atomic32_nand_seq_cst(ptr %a) { ; O1-LABEL: atomic32_nand_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection158: +; O1-NEXT: .Lpcsection226: ; O1-NEXT: movl (%rdi), %eax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB140_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection227: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection159: +; O1-NEXT: .Lpcsection228: ; O1-NEXT: orl $-43, %ecx +; O1-NEXT: .Lpcsection229: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) -; O1-NEXT: .Lpcsection160: +; O1-NEXT: .Lpcsection230: ; O1-NEXT: jne .LBB140_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -6673,17 +6949,19 @@ define void @atomic32_nand_seq_cst(ptr %a) { ; O2-LABEL: atomic32_nand_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection158: +; O2-NEXT: .Lpcsection226: ; O2-NEXT: movl (%rdi), %eax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB140_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection227: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection159: +; O2-NEXT: .Lpcsection228: ; O2-NEXT: orl $-43, %ecx +; O2-NEXT: .Lpcsection229: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) -; O2-NEXT: .Lpcsection160: +; O2-NEXT: .Lpcsection230: ; O2-NEXT: jne .LBB140_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -6692,17 +6970,19 @@ define void @atomic32_nand_seq_cst(ptr %a) { ; O3-LABEL: atomic32_nand_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection158: +; O3-NEXT: .Lpcsection226: ; O3-NEXT: movl (%rdi), %eax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB140_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection227: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection159: +; O3-NEXT: .Lpcsection228: ; O3-NEXT: orl $-43, %ecx +; O3-NEXT: .Lpcsection229: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) -; O3-NEXT: .Lpcsection160: +; O3-NEXT: .Lpcsection230: ; O3-NEXT: jne .LBB140_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -6721,14 +7001,17 @@ define void @atomic32_cas_monotonic(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection281: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection211: +; O0-NEXT: .Lpcsection282: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection283: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection212: +; O0-NEXT: .Lpcsection284: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection285: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6738,10 +7021,13 @@ define void @atomic32_cas_monotonic(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection231: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection232: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection233: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6751,10 +7037,13 @@ define void @atomic32_cas_monotonic(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection231: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection232: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection233: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6764,10 +7053,13 @@ define void @atomic32_cas_monotonic(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection231: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection232: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection233: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6787,14 +7079,17 @@ define void @atomic32_cas_acquire(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection286: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection213: +; O0-NEXT: .Lpcsection287: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection288: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection214: +; O0-NEXT: .Lpcsection289: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection290: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6804,10 +7099,13 @@ define void @atomic32_cas_acquire(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection234: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection235: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection236: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6817,10 +7115,13 @@ define void @atomic32_cas_acquire(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection234: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection235: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection236: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6830,10 +7131,13 @@ define void @atomic32_cas_acquire(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection234: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection235: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection236: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6853,14 +7157,17 @@ define void @atomic32_cas_release(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection291: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection215: +; O0-NEXT: .Lpcsection292: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection293: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection216: +; O0-NEXT: .Lpcsection294: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection295: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6870,10 +7177,13 @@ define void @atomic32_cas_release(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection237: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection238: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection239: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6883,10 +7193,13 @@ define void @atomic32_cas_release(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection237: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection238: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection239: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6896,10 +7209,13 @@ define void @atomic32_cas_release(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection237: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection238: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection239: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6919,14 +7235,17 @@ define void @atomic32_cas_acq_rel(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection296: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection217: +; O0-NEXT: .Lpcsection297: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection298: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection218: +; O0-NEXT: .Lpcsection299: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection300: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -6936,10 +7255,13 @@ define void @atomic32_cas_acq_rel(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection240: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection241: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection242: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -6949,10 +7271,13 @@ define void @atomic32_cas_acq_rel(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection240: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection241: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection242: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -6962,10 +7287,13 @@ define void @atomic32_cas_acq_rel(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection240: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection241: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection242: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -6985,14 +7313,17 @@ define void @atomic32_cas_seq_cst(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection301: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection219: +; O0-NEXT: .Lpcsection302: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection303: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) -; O0-NEXT: .Lpcsection220: +; O0-NEXT: .Lpcsection304: ; O0-NEXT: # kill: def $edx killed $eax ; O0-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload +; O0-NEXT: .Lpcsection305: ; O0-NEXT: lock cmpxchgl %ecx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7002,10 +7333,13 @@ define void @atomic32_cas_seq_cst(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection243: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection244: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection245: ; O1-NEXT: lock cmpxchgl %ecx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7015,10 +7349,13 @@ define void @atomic32_cas_seq_cst(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection243: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection244: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection245: ; O2-NEXT: lock cmpxchgl %ecx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7028,10 +7365,13 @@ define void @atomic32_cas_seq_cst(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection243: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection244: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection245: ; O3-NEXT: lock cmpxchgl %ecx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7048,7 +7388,7 @@ define i64 @atomic64_load_unordered(ptr %a) { ; O0-LABEL: atomic64_load_unordered: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection221: +; O0-NEXT: .Lpcsection306: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7056,7 +7396,7 @@ define i64 @atomic64_load_unordered(ptr %a) { ; O1-LABEL: atomic64_load_unordered: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection161: +; O1-NEXT: .Lpcsection246: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7064,7 +7404,7 @@ define i64 @atomic64_load_unordered(ptr %a) { ; O2-LABEL: atomic64_load_unordered: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection161: +; O2-NEXT: .Lpcsection246: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7072,7 +7412,7 @@ define i64 @atomic64_load_unordered(ptr %a) { ; O3-LABEL: atomic64_load_unordered: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection161: +; O3-NEXT: .Lpcsection246: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7087,7 +7427,7 @@ define i64 @atomic64_load_monotonic(ptr %a) { ; O0-LABEL: atomic64_load_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection222: +; O0-NEXT: .Lpcsection307: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7095,7 +7435,7 @@ define i64 @atomic64_load_monotonic(ptr %a) { ; O1-LABEL: atomic64_load_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection162: +; O1-NEXT: .Lpcsection247: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7103,7 +7443,7 @@ define i64 @atomic64_load_monotonic(ptr %a) { ; O2-LABEL: atomic64_load_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection162: +; O2-NEXT: .Lpcsection247: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7111,7 +7451,7 @@ define i64 @atomic64_load_monotonic(ptr %a) { ; O3-LABEL: atomic64_load_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection162: +; O3-NEXT: .Lpcsection247: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7126,7 +7466,7 @@ define i64 @atomic64_load_acquire(ptr %a) { ; O0-LABEL: atomic64_load_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection223: +; O0-NEXT: .Lpcsection308: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7134,7 +7474,7 @@ define i64 @atomic64_load_acquire(ptr %a) { ; O1-LABEL: atomic64_load_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection163: +; O1-NEXT: .Lpcsection248: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7142,7 +7482,7 @@ define i64 @atomic64_load_acquire(ptr %a) { ; O2-LABEL: atomic64_load_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection163: +; O2-NEXT: .Lpcsection248: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7150,7 +7490,7 @@ define i64 @atomic64_load_acquire(ptr %a) { ; O3-LABEL: atomic64_load_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection163: +; O3-NEXT: .Lpcsection248: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7165,7 +7505,7 @@ define i64 @atomic64_load_seq_cst(ptr %a) { ; O0-LABEL: atomic64_load_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection224: +; O0-NEXT: .Lpcsection309: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7173,7 +7513,7 @@ define i64 @atomic64_load_seq_cst(ptr %a) { ; O1-LABEL: atomic64_load_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection164: +; O1-NEXT: .Lpcsection249: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7181,7 +7521,7 @@ define i64 @atomic64_load_seq_cst(ptr %a) { ; O2-LABEL: atomic64_load_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection164: +; O2-NEXT: .Lpcsection249: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7189,7 +7529,7 @@ define i64 @atomic64_load_seq_cst(ptr %a) { ; O3-LABEL: atomic64_load_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection164: +; O3-NEXT: .Lpcsection249: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7204,7 +7544,7 @@ define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) { ; O0-LABEL: atomic64_load_seq_cst_ptr_ty: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection225: +; O0-NEXT: .Lpcsection310: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7212,7 +7552,7 @@ define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) { ; O1-LABEL: atomic64_load_seq_cst_ptr_ty: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection165: +; O1-NEXT: .Lpcsection250: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7220,7 +7560,7 @@ define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) { ; O2-LABEL: atomic64_load_seq_cst_ptr_ty: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection165: +; O2-NEXT: .Lpcsection250: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7228,7 +7568,7 @@ define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) { ; O3-LABEL: atomic64_load_seq_cst_ptr_ty: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection165: +; O3-NEXT: .Lpcsection250: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7243,7 +7583,7 @@ define void @atomic64_store_unordered(ptr %a) { ; O0-LABEL: atomic64_store_unordered: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection226: +; O0-NEXT: .Lpcsection311: ; O0-NEXT: movq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7251,7 +7591,7 @@ define void @atomic64_store_unordered(ptr %a) { ; O1-LABEL: atomic64_store_unordered: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection166: +; O1-NEXT: .Lpcsection251: ; O1-NEXT: movq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7259,7 +7599,7 @@ define void @atomic64_store_unordered(ptr %a) { ; O2-LABEL: atomic64_store_unordered: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection166: +; O2-NEXT: .Lpcsection251: ; O2-NEXT: movq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7267,7 +7607,7 @@ define void @atomic64_store_unordered(ptr %a) { ; O3-LABEL: atomic64_store_unordered: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection166: +; O3-NEXT: .Lpcsection251: ; O3-NEXT: movq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7282,7 +7622,7 @@ define void @atomic64_store_monotonic(ptr %a) { ; O0-LABEL: atomic64_store_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection227: +; O0-NEXT: .Lpcsection312: ; O0-NEXT: movq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7290,7 +7630,7 @@ define void @atomic64_store_monotonic(ptr %a) { ; O1-LABEL: atomic64_store_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection167: +; O1-NEXT: .Lpcsection252: ; O1-NEXT: movq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7298,7 +7638,7 @@ define void @atomic64_store_monotonic(ptr %a) { ; O2-LABEL: atomic64_store_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection167: +; O2-NEXT: .Lpcsection252: ; O2-NEXT: movq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7306,7 +7646,7 @@ define void @atomic64_store_monotonic(ptr %a) { ; O3-LABEL: atomic64_store_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection167: +; O3-NEXT: .Lpcsection252: ; O3-NEXT: movq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7321,7 +7661,7 @@ define void @atomic64_store_release(ptr %a) { ; O0-LABEL: atomic64_store_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection228: +; O0-NEXT: .Lpcsection313: ; O0-NEXT: movq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7329,7 +7669,7 @@ define void @atomic64_store_release(ptr %a) { ; O1-LABEL: atomic64_store_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection168: +; O1-NEXT: .Lpcsection253: ; O1-NEXT: movq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7337,7 +7677,7 @@ define void @atomic64_store_release(ptr %a) { ; O2-LABEL: atomic64_store_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection168: +; O2-NEXT: .Lpcsection253: ; O2-NEXT: movq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7345,7 +7685,7 @@ define void @atomic64_store_release(ptr %a) { ; O3-LABEL: atomic64_store_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection168: +; O3-NEXT: .Lpcsection253: ; O3-NEXT: movq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7361,7 +7701,7 @@ define void @atomic64_store_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection229: +; O0-NEXT: .Lpcsection314: ; O0-NEXT: xchgq %rax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7370,7 +7710,7 @@ define void @atomic64_store_seq_cst(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection169: +; O1-NEXT: .Lpcsection254: ; O1-NEXT: xchgq %rax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7379,7 +7719,7 @@ define void @atomic64_store_seq_cst(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection169: +; O2-NEXT: .Lpcsection254: ; O2-NEXT: xchgq %rax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7388,7 +7728,7 @@ define void @atomic64_store_seq_cst(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection169: +; O3-NEXT: .Lpcsection254: ; O3-NEXT: xchgq %rax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7403,7 +7743,7 @@ define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) { ; O0-LABEL: atomic64_store_seq_cst_ptr_ty: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection230: +; O0-NEXT: .Lpcsection315: ; O0-NEXT: xchgq %rsi, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7411,7 +7751,7 @@ define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) { ; O1-LABEL: atomic64_store_seq_cst_ptr_ty: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection170: +; O1-NEXT: .Lpcsection255: ; O1-NEXT: xchgq %rsi, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7419,7 +7759,7 @@ define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) { ; O2-LABEL: atomic64_store_seq_cst_ptr_ty: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection170: +; O2-NEXT: .Lpcsection255: ; O2-NEXT: xchgq %rsi, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7427,7 +7767,7 @@ define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) { ; O3-LABEL: atomic64_store_seq_cst_ptr_ty: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection170: +; O3-NEXT: .Lpcsection255: ; O3-NEXT: xchgq %rsi, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7443,7 +7783,7 @@ define void @atomic64_xchg_monotonic(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection231: +; O0-NEXT: .Lpcsection316: ; O0-NEXT: xchgq %rax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7452,7 +7792,7 @@ define void @atomic64_xchg_monotonic(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection171: +; O1-NEXT: .Lpcsection256: ; O1-NEXT: xchgq %rax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7461,7 +7801,7 @@ define void @atomic64_xchg_monotonic(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection171: +; O2-NEXT: .Lpcsection256: ; O2-NEXT: xchgq %rax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7470,7 +7810,7 @@ define void @atomic64_xchg_monotonic(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection171: +; O3-NEXT: .Lpcsection256: ; O3-NEXT: xchgq %rax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7485,7 +7825,7 @@ define void @atomic64_add_monotonic(ptr %a) { ; O0-LABEL: atomic64_add_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection232: +; O0-NEXT: .Lpcsection317: ; O0-NEXT: lock addq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7493,7 +7833,7 @@ define void @atomic64_add_monotonic(ptr %a) { ; O1-LABEL: atomic64_add_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection172: +; O1-NEXT: .Lpcsection257: ; O1-NEXT: lock addq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7501,7 +7841,7 @@ define void @atomic64_add_monotonic(ptr %a) { ; O2-LABEL: atomic64_add_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection172: +; O2-NEXT: .Lpcsection257: ; O2-NEXT: lock addq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7509,7 +7849,7 @@ define void @atomic64_add_monotonic(ptr %a) { ; O3-LABEL: atomic64_add_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection172: +; O3-NEXT: .Lpcsection257: ; O3-NEXT: lock addq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7524,7 +7864,7 @@ define void @atomic64_sub_monotonic(ptr %a) { ; O0-LABEL: atomic64_sub_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection233: +; O0-NEXT: .Lpcsection318: ; O0-NEXT: lock subq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7532,7 +7872,7 @@ define void @atomic64_sub_monotonic(ptr %a) { ; O1-LABEL: atomic64_sub_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection173: +; O1-NEXT: .Lpcsection258: ; O1-NEXT: lock subq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7540,7 +7880,7 @@ define void @atomic64_sub_monotonic(ptr %a) { ; O2-LABEL: atomic64_sub_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection173: +; O2-NEXT: .Lpcsection258: ; O2-NEXT: lock subq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7548,7 +7888,7 @@ define void @atomic64_sub_monotonic(ptr %a) { ; O3-LABEL: atomic64_sub_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection173: +; O3-NEXT: .Lpcsection258: ; O3-NEXT: lock subq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7563,7 +7903,7 @@ define void @atomic64_and_monotonic(ptr %a) { ; O0-LABEL: atomic64_and_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection234: +; O0-NEXT: .Lpcsection319: ; O0-NEXT: lock andq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7571,7 +7911,7 @@ define void @atomic64_and_monotonic(ptr %a) { ; O1-LABEL: atomic64_and_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection174: +; O1-NEXT: .Lpcsection259: ; O1-NEXT: lock andq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7579,7 +7919,7 @@ define void @atomic64_and_monotonic(ptr %a) { ; O2-LABEL: atomic64_and_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection174: +; O2-NEXT: .Lpcsection259: ; O2-NEXT: lock andq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7587,7 +7927,7 @@ define void @atomic64_and_monotonic(ptr %a) { ; O3-LABEL: atomic64_and_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection174: +; O3-NEXT: .Lpcsection259: ; O3-NEXT: lock andq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7602,7 +7942,7 @@ define void @atomic64_or_monotonic(ptr %a) { ; O0-LABEL: atomic64_or_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection235: +; O0-NEXT: .Lpcsection320: ; O0-NEXT: lock orq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7610,7 +7950,7 @@ define void @atomic64_or_monotonic(ptr %a) { ; O1-LABEL: atomic64_or_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection175: +; O1-NEXT: .Lpcsection260: ; O1-NEXT: lock orq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7618,7 +7958,7 @@ define void @atomic64_or_monotonic(ptr %a) { ; O2-LABEL: atomic64_or_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection175: +; O2-NEXT: .Lpcsection260: ; O2-NEXT: lock orq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7626,7 +7966,7 @@ define void @atomic64_or_monotonic(ptr %a) { ; O3-LABEL: atomic64_or_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection175: +; O3-NEXT: .Lpcsection260: ; O3-NEXT: lock orq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7641,7 +7981,7 @@ define void @atomic64_xor_monotonic(ptr %a) { ; O0-LABEL: atomic64_xor_monotonic: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection236: +; O0-NEXT: .Lpcsection321: ; O0-NEXT: lock xorq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7649,7 +7989,7 @@ define void @atomic64_xor_monotonic(ptr %a) { ; O1-LABEL: atomic64_xor_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection176: +; O1-NEXT: .Lpcsection261: ; O1-NEXT: lock xorq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7657,7 +7997,7 @@ define void @atomic64_xor_monotonic(ptr %a) { ; O2-LABEL: atomic64_xor_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection176: +; O2-NEXT: .Lpcsection261: ; O2-NEXT: lock xorq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7665,7 +8005,7 @@ define void @atomic64_xor_monotonic(ptr %a) { ; O3-LABEL: atomic64_xor_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection176: +; O3-NEXT: .Lpcsection261: ; O3-NEXT: lock xorq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7681,7 +8021,7 @@ define void @atomic64_nand_monotonic(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection237: +; O0-NEXT: .Lpcsection322: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: .LBB162_1: # %atomicrmw.start @@ -7689,18 +8029,21 @@ define void @atomic64_nand_monotonic(ptr %a) { ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %esi +; O0-NEXT: .Lpcsection323: ; O0-NEXT: notl %esi +; O0-NEXT: .Lpcsection324: ; O0-NEXT: # implicit-def: $rdx ; O0-NEXT: movl %esi, %edx -; O0-NEXT: .Lpcsection238: +; O0-NEXT: .Lpcsection325: ; O0-NEXT: orq $-43, %rdx +; O0-NEXT: .Lpcsection326: ; O0-NEXT: lock cmpxchgq %rdx, (%rcx) -; O0-NEXT: .Lpcsection239: +; O0-NEXT: .Lpcsection327: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection240: +; O0-NEXT: .Lpcsection328: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill -; O0-NEXT: .Lpcsection241: +; O0-NEXT: .Lpcsection329: ; O0-NEXT: jne .LBB162_2 ; O0-NEXT: jmp .LBB162_1 ; O0-NEXT: .LBB162_2: # %atomicrmw.end @@ -7710,17 +8053,19 @@ define void @atomic64_nand_monotonic(ptr %a) { ; O1-LABEL: atomic64_nand_monotonic: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection177: +; O1-NEXT: .Lpcsection262: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB162_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection263: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection178: +; O1-NEXT: .Lpcsection264: ; O1-NEXT: orq $-43, %rcx +; O1-NEXT: .Lpcsection265: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) -; O1-NEXT: .Lpcsection179: +; O1-NEXT: .Lpcsection266: ; O1-NEXT: jne .LBB162_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -7729,17 +8074,19 @@ define void @atomic64_nand_monotonic(ptr %a) { ; O2-LABEL: atomic64_nand_monotonic: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection177: +; O2-NEXT: .Lpcsection262: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB162_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection263: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection178: +; O2-NEXT: .Lpcsection264: ; O2-NEXT: orq $-43, %rcx +; O2-NEXT: .Lpcsection265: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) -; O2-NEXT: .Lpcsection179: +; O2-NEXT: .Lpcsection266: ; O2-NEXT: jne .LBB162_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -7748,17 +8095,19 @@ define void @atomic64_nand_monotonic(ptr %a) { ; O3-LABEL: atomic64_nand_monotonic: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection177: +; O3-NEXT: .Lpcsection262: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB162_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection263: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection178: +; O3-NEXT: .Lpcsection264: ; O3-NEXT: orq $-43, %rcx +; O3-NEXT: .Lpcsection265: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) -; O3-NEXT: .Lpcsection179: +; O3-NEXT: .Lpcsection266: ; O3-NEXT: jne .LBB162_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -7775,7 +8124,7 @@ define void @atomic64_xchg_acquire(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection242: +; O0-NEXT: .Lpcsection330: ; O0-NEXT: xchgq %rax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7784,7 +8133,7 @@ define void @atomic64_xchg_acquire(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection180: +; O1-NEXT: .Lpcsection267: ; O1-NEXT: xchgq %rax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7793,7 +8142,7 @@ define void @atomic64_xchg_acquire(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection180: +; O2-NEXT: .Lpcsection267: ; O2-NEXT: xchgq %rax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7802,7 +8151,7 @@ define void @atomic64_xchg_acquire(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection180: +; O3-NEXT: .Lpcsection267: ; O3-NEXT: xchgq %rax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7817,7 +8166,7 @@ define void @atomic64_add_acquire(ptr %a) { ; O0-LABEL: atomic64_add_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection243: +; O0-NEXT: .Lpcsection331: ; O0-NEXT: lock addq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7825,7 +8174,7 @@ define void @atomic64_add_acquire(ptr %a) { ; O1-LABEL: atomic64_add_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection181: +; O1-NEXT: .Lpcsection268: ; O1-NEXT: lock addq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7833,7 +8182,7 @@ define void @atomic64_add_acquire(ptr %a) { ; O2-LABEL: atomic64_add_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection181: +; O2-NEXT: .Lpcsection268: ; O2-NEXT: lock addq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7841,7 +8190,7 @@ define void @atomic64_add_acquire(ptr %a) { ; O3-LABEL: atomic64_add_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection181: +; O3-NEXT: .Lpcsection268: ; O3-NEXT: lock addq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7856,7 +8205,7 @@ define void @atomic64_sub_acquire(ptr %a) { ; O0-LABEL: atomic64_sub_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection244: +; O0-NEXT: .Lpcsection332: ; O0-NEXT: lock subq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7864,7 +8213,7 @@ define void @atomic64_sub_acquire(ptr %a) { ; O1-LABEL: atomic64_sub_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection182: +; O1-NEXT: .Lpcsection269: ; O1-NEXT: lock subq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7872,7 +8221,7 @@ define void @atomic64_sub_acquire(ptr %a) { ; O2-LABEL: atomic64_sub_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection182: +; O2-NEXT: .Lpcsection269: ; O2-NEXT: lock subq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7880,7 +8229,7 @@ define void @atomic64_sub_acquire(ptr %a) { ; O3-LABEL: atomic64_sub_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection182: +; O3-NEXT: .Lpcsection269: ; O3-NEXT: lock subq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7895,7 +8244,7 @@ define void @atomic64_and_acquire(ptr %a) { ; O0-LABEL: atomic64_and_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection245: +; O0-NEXT: .Lpcsection333: ; O0-NEXT: lock andq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7903,7 +8252,7 @@ define void @atomic64_and_acquire(ptr %a) { ; O1-LABEL: atomic64_and_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection183: +; O1-NEXT: .Lpcsection270: ; O1-NEXT: lock andq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7911,7 +8260,7 @@ define void @atomic64_and_acquire(ptr %a) { ; O2-LABEL: atomic64_and_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection183: +; O2-NEXT: .Lpcsection270: ; O2-NEXT: lock andq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7919,7 +8268,7 @@ define void @atomic64_and_acquire(ptr %a) { ; O3-LABEL: atomic64_and_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection183: +; O3-NEXT: .Lpcsection270: ; O3-NEXT: lock andq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7934,7 +8283,7 @@ define void @atomic64_or_acquire(ptr %a) { ; O0-LABEL: atomic64_or_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection246: +; O0-NEXT: .Lpcsection334: ; O0-NEXT: lock orq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7942,7 +8291,7 @@ define void @atomic64_or_acquire(ptr %a) { ; O1-LABEL: atomic64_or_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection184: +; O1-NEXT: .Lpcsection271: ; O1-NEXT: lock orq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7950,7 +8299,7 @@ define void @atomic64_or_acquire(ptr %a) { ; O2-LABEL: atomic64_or_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection184: +; O2-NEXT: .Lpcsection271: ; O2-NEXT: lock orq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7958,7 +8307,7 @@ define void @atomic64_or_acquire(ptr %a) { ; O3-LABEL: atomic64_or_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection184: +; O3-NEXT: .Lpcsection271: ; O3-NEXT: lock orq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -7973,7 +8322,7 @@ define void @atomic64_xor_acquire(ptr %a) { ; O0-LABEL: atomic64_xor_acquire: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection247: +; O0-NEXT: .Lpcsection335: ; O0-NEXT: lock xorq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -7981,7 +8330,7 @@ define void @atomic64_xor_acquire(ptr %a) { ; O1-LABEL: atomic64_xor_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection185: +; O1-NEXT: .Lpcsection272: ; O1-NEXT: lock xorq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -7989,7 +8338,7 @@ define void @atomic64_xor_acquire(ptr %a) { ; O2-LABEL: atomic64_xor_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection185: +; O2-NEXT: .Lpcsection272: ; O2-NEXT: lock xorq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -7997,7 +8346,7 @@ define void @atomic64_xor_acquire(ptr %a) { ; O3-LABEL: atomic64_xor_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection185: +; O3-NEXT: .Lpcsection272: ; O3-NEXT: lock xorq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8013,7 +8362,7 @@ define void @atomic64_nand_acquire(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection248: +; O0-NEXT: .Lpcsection336: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: .LBB169_1: # %atomicrmw.start @@ -8021,18 +8370,21 @@ define void @atomic64_nand_acquire(ptr %a) { ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %esi +; O0-NEXT: .Lpcsection337: ; O0-NEXT: notl %esi +; O0-NEXT: .Lpcsection338: ; O0-NEXT: # implicit-def: $rdx ; O0-NEXT: movl %esi, %edx -; O0-NEXT: .Lpcsection249: +; O0-NEXT: .Lpcsection339: ; O0-NEXT: orq $-43, %rdx +; O0-NEXT: .Lpcsection340: ; O0-NEXT: lock cmpxchgq %rdx, (%rcx) -; O0-NEXT: .Lpcsection250: +; O0-NEXT: .Lpcsection341: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection251: +; O0-NEXT: .Lpcsection342: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill -; O0-NEXT: .Lpcsection252: +; O0-NEXT: .Lpcsection343: ; O0-NEXT: jne .LBB169_2 ; O0-NEXT: jmp .LBB169_1 ; O0-NEXT: .LBB169_2: # %atomicrmw.end @@ -8042,17 +8394,19 @@ define void @atomic64_nand_acquire(ptr %a) { ; O1-LABEL: atomic64_nand_acquire: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection186: +; O1-NEXT: .Lpcsection273: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB169_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection274: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection187: +; O1-NEXT: .Lpcsection275: ; O1-NEXT: orq $-43, %rcx +; O1-NEXT: .Lpcsection276: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) -; O1-NEXT: .Lpcsection188: +; O1-NEXT: .Lpcsection277: ; O1-NEXT: jne .LBB169_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -8061,17 +8415,19 @@ define void @atomic64_nand_acquire(ptr %a) { ; O2-LABEL: atomic64_nand_acquire: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection186: +; O2-NEXT: .Lpcsection273: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB169_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection274: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection187: +; O2-NEXT: .Lpcsection275: ; O2-NEXT: orq $-43, %rcx +; O2-NEXT: .Lpcsection276: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) -; O2-NEXT: .Lpcsection188: +; O2-NEXT: .Lpcsection277: ; O2-NEXT: jne .LBB169_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -8080,17 +8436,19 @@ define void @atomic64_nand_acquire(ptr %a) { ; O3-LABEL: atomic64_nand_acquire: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection186: +; O3-NEXT: .Lpcsection273: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB169_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection274: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection187: +; O3-NEXT: .Lpcsection275: ; O3-NEXT: orq $-43, %rcx +; O3-NEXT: .Lpcsection276: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) -; O3-NEXT: .Lpcsection188: +; O3-NEXT: .Lpcsection277: ; O3-NEXT: jne .LBB169_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -8107,7 +8465,7 @@ define void @atomic64_xchg_release(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection253: +; O0-NEXT: .Lpcsection344: ; O0-NEXT: xchgq %rax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8116,7 +8474,7 @@ define void @atomic64_xchg_release(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection189: +; O1-NEXT: .Lpcsection278: ; O1-NEXT: xchgq %rax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8125,7 +8483,7 @@ define void @atomic64_xchg_release(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection189: +; O2-NEXT: .Lpcsection278: ; O2-NEXT: xchgq %rax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8134,7 +8492,7 @@ define void @atomic64_xchg_release(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection189: +; O3-NEXT: .Lpcsection278: ; O3-NEXT: xchgq %rax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8149,7 +8507,7 @@ define void @atomic64_add_release(ptr %a) { ; O0-LABEL: atomic64_add_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection254: +; O0-NEXT: .Lpcsection345: ; O0-NEXT: lock addq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8157,7 +8515,7 @@ define void @atomic64_add_release(ptr %a) { ; O1-LABEL: atomic64_add_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection190: +; O1-NEXT: .Lpcsection279: ; O1-NEXT: lock addq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8165,7 +8523,7 @@ define void @atomic64_add_release(ptr %a) { ; O2-LABEL: atomic64_add_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection190: +; O2-NEXT: .Lpcsection279: ; O2-NEXT: lock addq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8173,7 +8531,7 @@ define void @atomic64_add_release(ptr %a) { ; O3-LABEL: atomic64_add_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection190: +; O3-NEXT: .Lpcsection279: ; O3-NEXT: lock addq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8188,7 +8546,7 @@ define void @atomic64_sub_release(ptr %a) { ; O0-LABEL: atomic64_sub_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection255: +; O0-NEXT: .Lpcsection346: ; O0-NEXT: lock subq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8196,7 +8554,7 @@ define void @atomic64_sub_release(ptr %a) { ; O1-LABEL: atomic64_sub_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection191: +; O1-NEXT: .Lpcsection280: ; O1-NEXT: lock subq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8204,7 +8562,7 @@ define void @atomic64_sub_release(ptr %a) { ; O2-LABEL: atomic64_sub_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection191: +; O2-NEXT: .Lpcsection280: ; O2-NEXT: lock subq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8212,7 +8570,7 @@ define void @atomic64_sub_release(ptr %a) { ; O3-LABEL: atomic64_sub_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection191: +; O3-NEXT: .Lpcsection280: ; O3-NEXT: lock subq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8227,7 +8585,7 @@ define void @atomic64_and_release(ptr %a) { ; O0-LABEL: atomic64_and_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection256: +; O0-NEXT: .Lpcsection347: ; O0-NEXT: lock andq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8235,7 +8593,7 @@ define void @atomic64_and_release(ptr %a) { ; O1-LABEL: atomic64_and_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection192: +; O1-NEXT: .Lpcsection281: ; O1-NEXT: lock andq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8243,7 +8601,7 @@ define void @atomic64_and_release(ptr %a) { ; O2-LABEL: atomic64_and_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection192: +; O2-NEXT: .Lpcsection281: ; O2-NEXT: lock andq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8251,7 +8609,7 @@ define void @atomic64_and_release(ptr %a) { ; O3-LABEL: atomic64_and_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection192: +; O3-NEXT: .Lpcsection281: ; O3-NEXT: lock andq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8266,7 +8624,7 @@ define void @atomic64_or_release(ptr %a) { ; O0-LABEL: atomic64_or_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection257: +; O0-NEXT: .Lpcsection348: ; O0-NEXT: lock orq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8274,7 +8632,7 @@ define void @atomic64_or_release(ptr %a) { ; O1-LABEL: atomic64_or_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection193: +; O1-NEXT: .Lpcsection282: ; O1-NEXT: lock orq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8282,7 +8640,7 @@ define void @atomic64_or_release(ptr %a) { ; O2-LABEL: atomic64_or_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection193: +; O2-NEXT: .Lpcsection282: ; O2-NEXT: lock orq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8290,7 +8648,7 @@ define void @atomic64_or_release(ptr %a) { ; O3-LABEL: atomic64_or_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection193: +; O3-NEXT: .Lpcsection282: ; O3-NEXT: lock orq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8305,7 +8663,7 @@ define void @atomic64_xor_release(ptr %a) { ; O0-LABEL: atomic64_xor_release: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection258: +; O0-NEXT: .Lpcsection349: ; O0-NEXT: lock xorq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8313,7 +8671,7 @@ define void @atomic64_xor_release(ptr %a) { ; O1-LABEL: atomic64_xor_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection194: +; O1-NEXT: .Lpcsection283: ; O1-NEXT: lock xorq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8321,7 +8679,7 @@ define void @atomic64_xor_release(ptr %a) { ; O2-LABEL: atomic64_xor_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection194: +; O2-NEXT: .Lpcsection283: ; O2-NEXT: lock xorq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8329,7 +8687,7 @@ define void @atomic64_xor_release(ptr %a) { ; O3-LABEL: atomic64_xor_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection194: +; O3-NEXT: .Lpcsection283: ; O3-NEXT: lock xorq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8345,7 +8703,7 @@ define void @atomic64_nand_release(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection259: +; O0-NEXT: .Lpcsection350: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: .LBB176_1: # %atomicrmw.start @@ -8353,18 +8711,21 @@ define void @atomic64_nand_release(ptr %a) { ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %esi +; O0-NEXT: .Lpcsection351: ; O0-NEXT: notl %esi +; O0-NEXT: .Lpcsection352: ; O0-NEXT: # implicit-def: $rdx ; O0-NEXT: movl %esi, %edx -; O0-NEXT: .Lpcsection260: +; O0-NEXT: .Lpcsection353: ; O0-NEXT: orq $-43, %rdx +; O0-NEXT: .Lpcsection354: ; O0-NEXT: lock cmpxchgq %rdx, (%rcx) -; O0-NEXT: .Lpcsection261: +; O0-NEXT: .Lpcsection355: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection262: +; O0-NEXT: .Lpcsection356: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill -; O0-NEXT: .Lpcsection263: +; O0-NEXT: .Lpcsection357: ; O0-NEXT: jne .LBB176_2 ; O0-NEXT: jmp .LBB176_1 ; O0-NEXT: .LBB176_2: # %atomicrmw.end @@ -8374,17 +8735,19 @@ define void @atomic64_nand_release(ptr %a) { ; O1-LABEL: atomic64_nand_release: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection195: +; O1-NEXT: .Lpcsection284: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB176_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection285: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection196: +; O1-NEXT: .Lpcsection286: ; O1-NEXT: orq $-43, %rcx +; O1-NEXT: .Lpcsection287: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) -; O1-NEXT: .Lpcsection197: +; O1-NEXT: .Lpcsection288: ; O1-NEXT: jne .LBB176_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -8393,17 +8756,19 @@ define void @atomic64_nand_release(ptr %a) { ; O2-LABEL: atomic64_nand_release: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection195: +; O2-NEXT: .Lpcsection284: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB176_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection285: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection196: +; O2-NEXT: .Lpcsection286: ; O2-NEXT: orq $-43, %rcx +; O2-NEXT: .Lpcsection287: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) -; O2-NEXT: .Lpcsection197: +; O2-NEXT: .Lpcsection288: ; O2-NEXT: jne .LBB176_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -8412,17 +8777,19 @@ define void @atomic64_nand_release(ptr %a) { ; O3-LABEL: atomic64_nand_release: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection195: +; O3-NEXT: .Lpcsection284: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB176_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection285: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection196: +; O3-NEXT: .Lpcsection286: ; O3-NEXT: orq $-43, %rcx +; O3-NEXT: .Lpcsection287: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) -; O3-NEXT: .Lpcsection197: +; O3-NEXT: .Lpcsection288: ; O3-NEXT: jne .LBB176_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -8439,7 +8806,7 @@ define void @atomic64_xchg_acq_rel(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection264: +; O0-NEXT: .Lpcsection358: ; O0-NEXT: xchgq %rax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8448,7 +8815,7 @@ define void @atomic64_xchg_acq_rel(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection198: +; O1-NEXT: .Lpcsection289: ; O1-NEXT: xchgq %rax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8457,7 +8824,7 @@ define void @atomic64_xchg_acq_rel(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection198: +; O2-NEXT: .Lpcsection289: ; O2-NEXT: xchgq %rax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8466,7 +8833,7 @@ define void @atomic64_xchg_acq_rel(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection198: +; O3-NEXT: .Lpcsection289: ; O3-NEXT: xchgq %rax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8481,7 +8848,7 @@ define void @atomic64_add_acq_rel(ptr %a) { ; O0-LABEL: atomic64_add_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection265: +; O0-NEXT: .Lpcsection359: ; O0-NEXT: lock addq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8489,7 +8856,7 @@ define void @atomic64_add_acq_rel(ptr %a) { ; O1-LABEL: atomic64_add_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection199: +; O1-NEXT: .Lpcsection290: ; O1-NEXT: lock addq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8497,7 +8864,7 @@ define void @atomic64_add_acq_rel(ptr %a) { ; O2-LABEL: atomic64_add_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection199: +; O2-NEXT: .Lpcsection290: ; O2-NEXT: lock addq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8505,7 +8872,7 @@ define void @atomic64_add_acq_rel(ptr %a) { ; O3-LABEL: atomic64_add_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection199: +; O3-NEXT: .Lpcsection290: ; O3-NEXT: lock addq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8520,7 +8887,7 @@ define void @atomic64_sub_acq_rel(ptr %a) { ; O0-LABEL: atomic64_sub_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection266: +; O0-NEXT: .Lpcsection360: ; O0-NEXT: lock subq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8528,7 +8895,7 @@ define void @atomic64_sub_acq_rel(ptr %a) { ; O1-LABEL: atomic64_sub_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection200: +; O1-NEXT: .Lpcsection291: ; O1-NEXT: lock subq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8536,7 +8903,7 @@ define void @atomic64_sub_acq_rel(ptr %a) { ; O2-LABEL: atomic64_sub_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection200: +; O2-NEXT: .Lpcsection291: ; O2-NEXT: lock subq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8544,7 +8911,7 @@ define void @atomic64_sub_acq_rel(ptr %a) { ; O3-LABEL: atomic64_sub_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection200: +; O3-NEXT: .Lpcsection291: ; O3-NEXT: lock subq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8559,7 +8926,7 @@ define void @atomic64_and_acq_rel(ptr %a) { ; O0-LABEL: atomic64_and_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection267: +; O0-NEXT: .Lpcsection361: ; O0-NEXT: lock andq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8567,7 +8934,7 @@ define void @atomic64_and_acq_rel(ptr %a) { ; O1-LABEL: atomic64_and_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection201: +; O1-NEXT: .Lpcsection292: ; O1-NEXT: lock andq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8575,7 +8942,7 @@ define void @atomic64_and_acq_rel(ptr %a) { ; O2-LABEL: atomic64_and_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection201: +; O2-NEXT: .Lpcsection292: ; O2-NEXT: lock andq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8583,7 +8950,7 @@ define void @atomic64_and_acq_rel(ptr %a) { ; O3-LABEL: atomic64_and_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection201: +; O3-NEXT: .Lpcsection292: ; O3-NEXT: lock andq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8598,7 +8965,7 @@ define void @atomic64_or_acq_rel(ptr %a) { ; O0-LABEL: atomic64_or_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection268: +; O0-NEXT: .Lpcsection362: ; O0-NEXT: lock orq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8606,7 +8973,7 @@ define void @atomic64_or_acq_rel(ptr %a) { ; O1-LABEL: atomic64_or_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection202: +; O1-NEXT: .Lpcsection293: ; O1-NEXT: lock orq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8614,7 +8981,7 @@ define void @atomic64_or_acq_rel(ptr %a) { ; O2-LABEL: atomic64_or_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection202: +; O2-NEXT: .Lpcsection293: ; O2-NEXT: lock orq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8622,7 +8989,7 @@ define void @atomic64_or_acq_rel(ptr %a) { ; O3-LABEL: atomic64_or_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection202: +; O3-NEXT: .Lpcsection293: ; O3-NEXT: lock orq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8637,7 +9004,7 @@ define void @atomic64_xor_acq_rel(ptr %a) { ; O0-LABEL: atomic64_xor_acq_rel: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection269: +; O0-NEXT: .Lpcsection363: ; O0-NEXT: lock xorq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8645,7 +9012,7 @@ define void @atomic64_xor_acq_rel(ptr %a) { ; O1-LABEL: atomic64_xor_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection203: +; O1-NEXT: .Lpcsection294: ; O1-NEXT: lock xorq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8653,7 +9020,7 @@ define void @atomic64_xor_acq_rel(ptr %a) { ; O2-LABEL: atomic64_xor_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection203: +; O2-NEXT: .Lpcsection294: ; O2-NEXT: lock xorq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8661,7 +9028,7 @@ define void @atomic64_xor_acq_rel(ptr %a) { ; O3-LABEL: atomic64_xor_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection203: +; O3-NEXT: .Lpcsection294: ; O3-NEXT: lock xorq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8677,7 +9044,7 @@ define void @atomic64_nand_acq_rel(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection270: +; O0-NEXT: .Lpcsection364: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: .LBB183_1: # %atomicrmw.start @@ -8685,18 +9052,21 @@ define void @atomic64_nand_acq_rel(ptr %a) { ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %esi +; O0-NEXT: .Lpcsection365: ; O0-NEXT: notl %esi +; O0-NEXT: .Lpcsection366: ; O0-NEXT: # implicit-def: $rdx ; O0-NEXT: movl %esi, %edx -; O0-NEXT: .Lpcsection271: +; O0-NEXT: .Lpcsection367: ; O0-NEXT: orq $-43, %rdx +; O0-NEXT: .Lpcsection368: ; O0-NEXT: lock cmpxchgq %rdx, (%rcx) -; O0-NEXT: .Lpcsection272: +; O0-NEXT: .Lpcsection369: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection273: +; O0-NEXT: .Lpcsection370: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill -; O0-NEXT: .Lpcsection274: +; O0-NEXT: .Lpcsection371: ; O0-NEXT: jne .LBB183_2 ; O0-NEXT: jmp .LBB183_1 ; O0-NEXT: .LBB183_2: # %atomicrmw.end @@ -8706,17 +9076,19 @@ define void @atomic64_nand_acq_rel(ptr %a) { ; O1-LABEL: atomic64_nand_acq_rel: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection204: +; O1-NEXT: .Lpcsection295: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB183_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection296: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection205: +; O1-NEXT: .Lpcsection297: ; O1-NEXT: orq $-43, %rcx +; O1-NEXT: .Lpcsection298: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) -; O1-NEXT: .Lpcsection206: +; O1-NEXT: .Lpcsection299: ; O1-NEXT: jne .LBB183_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -8725,17 +9097,19 @@ define void @atomic64_nand_acq_rel(ptr %a) { ; O2-LABEL: atomic64_nand_acq_rel: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection204: +; O2-NEXT: .Lpcsection295: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB183_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection296: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection205: +; O2-NEXT: .Lpcsection297: ; O2-NEXT: orq $-43, %rcx +; O2-NEXT: .Lpcsection298: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) -; O2-NEXT: .Lpcsection206: +; O2-NEXT: .Lpcsection299: ; O2-NEXT: jne .LBB183_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -8744,17 +9118,19 @@ define void @atomic64_nand_acq_rel(ptr %a) { ; O3-LABEL: atomic64_nand_acq_rel: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection204: +; O3-NEXT: .Lpcsection295: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB183_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection296: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection205: +; O3-NEXT: .Lpcsection297: ; O3-NEXT: orq $-43, %rcx +; O3-NEXT: .Lpcsection298: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) -; O3-NEXT: .Lpcsection206: +; O3-NEXT: .Lpcsection299: ; O3-NEXT: jne .LBB183_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -8771,7 +9147,7 @@ define void @atomic64_xchg_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax ; O0-NEXT: movl $42, %eax -; O0-NEXT: .Lpcsection275: +; O0-NEXT: .Lpcsection372: ; O0-NEXT: xchgq %rax, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8780,7 +9156,7 @@ define void @atomic64_xchg_seq_cst(ptr %a) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $42, %eax -; O1-NEXT: .Lpcsection207: +; O1-NEXT: .Lpcsection300: ; O1-NEXT: xchgq %rax, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8789,7 +9165,7 @@ define void @atomic64_xchg_seq_cst(ptr %a) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $42, %eax -; O2-NEXT: .Lpcsection207: +; O2-NEXT: .Lpcsection300: ; O2-NEXT: xchgq %rax, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8798,7 +9174,7 @@ define void @atomic64_xchg_seq_cst(ptr %a) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $42, %eax -; O3-NEXT: .Lpcsection207: +; O3-NEXT: .Lpcsection300: ; O3-NEXT: xchgq %rax, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8813,7 +9189,7 @@ define void @atomic64_add_seq_cst(ptr %a) { ; O0-LABEL: atomic64_add_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection276: +; O0-NEXT: .Lpcsection373: ; O0-NEXT: lock addq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8821,7 +9197,7 @@ define void @atomic64_add_seq_cst(ptr %a) { ; O1-LABEL: atomic64_add_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection208: +; O1-NEXT: .Lpcsection301: ; O1-NEXT: lock addq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8829,7 +9205,7 @@ define void @atomic64_add_seq_cst(ptr %a) { ; O2-LABEL: atomic64_add_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection208: +; O2-NEXT: .Lpcsection301: ; O2-NEXT: lock addq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8837,7 +9213,7 @@ define void @atomic64_add_seq_cst(ptr %a) { ; O3-LABEL: atomic64_add_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection208: +; O3-NEXT: .Lpcsection301: ; O3-NEXT: lock addq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8852,7 +9228,7 @@ define void @atomic64_sub_seq_cst(ptr %a) { ; O0-LABEL: atomic64_sub_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection277: +; O0-NEXT: .Lpcsection374: ; O0-NEXT: lock subq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8860,7 +9236,7 @@ define void @atomic64_sub_seq_cst(ptr %a) { ; O1-LABEL: atomic64_sub_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection209: +; O1-NEXT: .Lpcsection302: ; O1-NEXT: lock subq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8868,7 +9244,7 @@ define void @atomic64_sub_seq_cst(ptr %a) { ; O2-LABEL: atomic64_sub_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection209: +; O2-NEXT: .Lpcsection302: ; O2-NEXT: lock subq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8876,7 +9252,7 @@ define void @atomic64_sub_seq_cst(ptr %a) { ; O3-LABEL: atomic64_sub_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection209: +; O3-NEXT: .Lpcsection302: ; O3-NEXT: lock subq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8891,7 +9267,7 @@ define void @atomic64_and_seq_cst(ptr %a) { ; O0-LABEL: atomic64_and_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection278: +; O0-NEXT: .Lpcsection375: ; O0-NEXT: lock andq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8899,7 +9275,7 @@ define void @atomic64_and_seq_cst(ptr %a) { ; O1-LABEL: atomic64_and_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection210: +; O1-NEXT: .Lpcsection303: ; O1-NEXT: lock andq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8907,7 +9283,7 @@ define void @atomic64_and_seq_cst(ptr %a) { ; O2-LABEL: atomic64_and_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection210: +; O2-NEXT: .Lpcsection303: ; O2-NEXT: lock andq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8915,7 +9291,7 @@ define void @atomic64_and_seq_cst(ptr %a) { ; O3-LABEL: atomic64_and_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection210: +; O3-NEXT: .Lpcsection303: ; O3-NEXT: lock andq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8930,7 +9306,7 @@ define void @atomic64_or_seq_cst(ptr %a) { ; O0-LABEL: atomic64_or_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection279: +; O0-NEXT: .Lpcsection376: ; O0-NEXT: lock orq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8938,7 +9314,7 @@ define void @atomic64_or_seq_cst(ptr %a) { ; O1-LABEL: atomic64_or_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection211: +; O1-NEXT: .Lpcsection304: ; O1-NEXT: lock orq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8946,7 +9322,7 @@ define void @atomic64_or_seq_cst(ptr %a) { ; O2-LABEL: atomic64_or_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection211: +; O2-NEXT: .Lpcsection304: ; O2-NEXT: lock orq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8954,7 +9330,7 @@ define void @atomic64_or_seq_cst(ptr %a) { ; O3-LABEL: atomic64_or_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection211: +; O3-NEXT: .Lpcsection304: ; O3-NEXT: lock orq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -8969,7 +9345,7 @@ define void @atomic64_xor_seq_cst(ptr %a) { ; O0-LABEL: atomic64_xor_seq_cst: ; O0: # %bb.0: # %entry ; O0-NEXT: movq foo(%rip), %rax -; O0-NEXT: .Lpcsection280: +; O0-NEXT: .Lpcsection377: ; O0-NEXT: lock xorq $42, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -8977,7 +9353,7 @@ define void @atomic64_xor_seq_cst(ptr %a) { ; O1-LABEL: atomic64_xor_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection212: +; O1-NEXT: .Lpcsection305: ; O1-NEXT: lock xorq $42, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -8985,7 +9361,7 @@ define void @atomic64_xor_seq_cst(ptr %a) { ; O2-LABEL: atomic64_xor_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection212: +; O2-NEXT: .Lpcsection305: ; O2-NEXT: lock xorq $42, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -8993,7 +9369,7 @@ define void @atomic64_xor_seq_cst(ptr %a) { ; O3-LABEL: atomic64_xor_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection212: +; O3-NEXT: .Lpcsection305: ; O3-NEXT: lock xorq $42, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -9009,7 +9385,7 @@ define void @atomic64_nand_seq_cst(ptr %a) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movq foo, %rax -; O0-NEXT: .Lpcsection281: +; O0-NEXT: .Lpcsection378: ; O0-NEXT: movq (%rdi), %rax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: .LBB190_1: # %atomicrmw.start @@ -9017,18 +9393,21 @@ define void @atomic64_nand_seq_cst(ptr %a) { ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload ; O0-NEXT: movl %eax, %esi +; O0-NEXT: .Lpcsection379: ; O0-NEXT: notl %esi +; O0-NEXT: .Lpcsection380: ; O0-NEXT: # implicit-def: $rdx ; O0-NEXT: movl %esi, %edx -; O0-NEXT: .Lpcsection282: +; O0-NEXT: .Lpcsection381: ; O0-NEXT: orq $-43, %rdx +; O0-NEXT: .Lpcsection382: ; O0-NEXT: lock cmpxchgq %rdx, (%rcx) -; O0-NEXT: .Lpcsection283: +; O0-NEXT: .Lpcsection383: ; O0-NEXT: sete %cl -; O0-NEXT: .Lpcsection284: +; O0-NEXT: .Lpcsection384: ; O0-NEXT: testb $1, %cl ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill -; O0-NEXT: .Lpcsection285: +; O0-NEXT: .Lpcsection385: ; O0-NEXT: jne .LBB190_2 ; O0-NEXT: jmp .LBB190_1 ; O0-NEXT: .LBB190_2: # %atomicrmw.end @@ -9038,17 +9417,19 @@ define void @atomic64_nand_seq_cst(ptr %a) { ; O1-LABEL: atomic64_nand_seq_cst: ; O1: # %bb.0: # %entry ; O1-NEXT: movq foo(%rip), %rax -; O1-NEXT: .Lpcsection213: +; O1-NEXT: .Lpcsection306: ; O1-NEXT: movq (%rdi), %rax ; O1-NEXT: .p2align 4, 0x90 ; O1-NEXT: .LBB190_1: # %atomicrmw.start ; O1-NEXT: # =>This Inner Loop Header: Depth=1 ; O1-NEXT: movl %eax, %ecx +; O1-NEXT: .Lpcsection307: ; O1-NEXT: notl %ecx -; O1-NEXT: .Lpcsection214: +; O1-NEXT: .Lpcsection308: ; O1-NEXT: orq $-43, %rcx +; O1-NEXT: .Lpcsection309: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) -; O1-NEXT: .Lpcsection215: +; O1-NEXT: .Lpcsection310: ; O1-NEXT: jne .LBB190_1 ; O1-NEXT: # %bb.2: # %atomicrmw.end ; O1-NEXT: movq $1, foo(%rip) @@ -9057,17 +9438,19 @@ define void @atomic64_nand_seq_cst(ptr %a) { ; O2-LABEL: atomic64_nand_seq_cst: ; O2: # %bb.0: # %entry ; O2-NEXT: movq foo(%rip), %rax -; O2-NEXT: .Lpcsection213: +; O2-NEXT: .Lpcsection306: ; O2-NEXT: movq (%rdi), %rax ; O2-NEXT: .p2align 4, 0x90 ; O2-NEXT: .LBB190_1: # %atomicrmw.start ; O2-NEXT: # =>This Inner Loop Header: Depth=1 ; O2-NEXT: movl %eax, %ecx +; O2-NEXT: .Lpcsection307: ; O2-NEXT: notl %ecx -; O2-NEXT: .Lpcsection214: +; O2-NEXT: .Lpcsection308: ; O2-NEXT: orq $-43, %rcx +; O2-NEXT: .Lpcsection309: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) -; O2-NEXT: .Lpcsection215: +; O2-NEXT: .Lpcsection310: ; O2-NEXT: jne .LBB190_1 ; O2-NEXT: # %bb.2: # %atomicrmw.end ; O2-NEXT: movq $1, foo(%rip) @@ -9076,17 +9459,19 @@ define void @atomic64_nand_seq_cst(ptr %a) { ; O3-LABEL: atomic64_nand_seq_cst: ; O3: # %bb.0: # %entry ; O3-NEXT: movq foo(%rip), %rax -; O3-NEXT: .Lpcsection213: +; O3-NEXT: .Lpcsection306: ; O3-NEXT: movq (%rdi), %rax ; O3-NEXT: .p2align 4, 0x90 ; O3-NEXT: .LBB190_1: # %atomicrmw.start ; O3-NEXT: # =>This Inner Loop Header: Depth=1 ; O3-NEXT: movl %eax, %ecx +; O3-NEXT: .Lpcsection307: ; O3-NEXT: notl %ecx -; O3-NEXT: .Lpcsection214: +; O3-NEXT: .Lpcsection308: ; O3-NEXT: orq $-43, %rcx +; O3-NEXT: .Lpcsection309: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) -; O3-NEXT: .Lpcsection215: +; O3-NEXT: .Lpcsection310: ; O3-NEXT: jne .LBB190_1 ; O3-NEXT: # %bb.2: # %atomicrmw.end ; O3-NEXT: movq $1, foo(%rip) @@ -9105,14 +9490,17 @@ define void @atomic64_cas_monotonic(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection386: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection286: +; O0-NEXT: .Lpcsection387: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection388: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection287: +; O0-NEXT: .Lpcsection389: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection390: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -9122,10 +9510,13 @@ define void @atomic64_cas_monotonic(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection311: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection312: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection313: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -9135,10 +9526,13 @@ define void @atomic64_cas_monotonic(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection311: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection312: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection313: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -9148,10 +9542,13 @@ define void @atomic64_cas_monotonic(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection311: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection312: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection313: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -9171,14 +9568,17 @@ define void @atomic64_cas_acquire(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection391: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection288: +; O0-NEXT: .Lpcsection392: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection393: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection289: +; O0-NEXT: .Lpcsection394: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection395: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -9188,10 +9588,13 @@ define void @atomic64_cas_acquire(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection314: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection315: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection316: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -9201,10 +9604,13 @@ define void @atomic64_cas_acquire(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection314: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection315: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection316: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -9214,10 +9620,13 @@ define void @atomic64_cas_acquire(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection314: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection315: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection316: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -9237,14 +9646,17 @@ define void @atomic64_cas_release(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection396: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection290: +; O0-NEXT: .Lpcsection397: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection398: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection291: +; O0-NEXT: .Lpcsection399: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection400: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -9254,10 +9666,13 @@ define void @atomic64_cas_release(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection317: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection318: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection319: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -9267,10 +9682,13 @@ define void @atomic64_cas_release(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection317: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection318: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection319: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -9280,10 +9698,13 @@ define void @atomic64_cas_release(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection317: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection318: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection319: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -9303,14 +9724,17 @@ define void @atomic64_cas_acq_rel(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection401: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection292: +; O0-NEXT: .Lpcsection402: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection403: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection293: +; O0-NEXT: .Lpcsection404: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection405: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -9320,10 +9744,13 @@ define void @atomic64_cas_acq_rel(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection320: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection321: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection322: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -9333,10 +9760,13 @@ define void @atomic64_cas_acq_rel(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection320: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection321: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection322: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -9346,10 +9776,13 @@ define void @atomic64_cas_acq_rel(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection320: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection321: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection322: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq @@ -9369,14 +9802,17 @@ define void @atomic64_cas_seq_cst(ptr %a) { ; O0-NEXT: movl $42, %eax ; O0-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill ; O0-NEXT: movl $1, %ecx +; O0-NEXT: .Lpcsection406: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection294: +; O0-NEXT: .Lpcsection407: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection408: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) -; O0-NEXT: .Lpcsection295: +; O0-NEXT: .Lpcsection409: ; O0-NEXT: # kill: def $rdx killed $rax ; O0-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload +; O0-NEXT: .Lpcsection410: ; O0-NEXT: lock cmpxchgq %rcx, (%rdi) ; O0-NEXT: movq $3, foo ; O0-NEXT: retq @@ -9386,10 +9822,13 @@ define void @atomic64_cas_seq_cst(ptr %a) { ; O1-NEXT: movq foo(%rip), %rax ; O1-NEXT: movl $1, %ecx ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection323: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection324: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movl $42, %eax +; O1-NEXT: .Lpcsection325: ; O1-NEXT: lock cmpxchgq %rcx, (%rdi) ; O1-NEXT: movq $3, foo(%rip) ; O1-NEXT: retq @@ -9399,10 +9838,13 @@ define void @atomic64_cas_seq_cst(ptr %a) { ; O2-NEXT: movq foo(%rip), %rax ; O2-NEXT: movl $1, %ecx ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection323: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection324: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movl $42, %eax +; O2-NEXT: .Lpcsection325: ; O2-NEXT: lock cmpxchgq %rcx, (%rdi) ; O2-NEXT: movq $3, foo(%rip) ; O2-NEXT: retq @@ -9412,10 +9854,13 @@ define void @atomic64_cas_seq_cst(ptr %a) { ; O3-NEXT: movq foo(%rip), %rax ; O3-NEXT: movl $1, %ecx ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection323: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection324: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movl $42, %eax +; O3-NEXT: .Lpcsection325: ; O3-NEXT: lock cmpxchgq %rcx, (%rdi) ; O3-NEXT: movq $3, foo(%rip) ; O3-NEXT: retq @@ -9433,6 +9878,7 @@ define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) { ; O0: # %bb.0: # %entry ; O0-NEXT: movq %rsi, %rax ; O0-NEXT: movq foo(%rip), %rcx +; O0-NEXT: .Lpcsection411: ; O0-NEXT: lock cmpxchgq %rdx, (%rdi) ; O0-NEXT: movq $1, foo ; O0-NEXT: retq @@ -9441,6 +9887,7 @@ define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) { ; O1: # %bb.0: # %entry ; O1-NEXT: movq %rsi, %rax ; O1-NEXT: movq foo(%rip), %rcx +; O1-NEXT: .Lpcsection326: ; O1-NEXT: lock cmpxchgq %rdx, (%rdi) ; O1-NEXT: movq $1, foo(%rip) ; O1-NEXT: retq @@ -9449,6 +9896,7 @@ define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) { ; O2: # %bb.0: # %entry ; O2-NEXT: movq %rsi, %rax ; O2-NEXT: movq foo(%rip), %rcx +; O2-NEXT: .Lpcsection326: ; O2-NEXT: lock cmpxchgq %rdx, (%rdi) ; O2-NEXT: movq $1, foo(%rip) ; O2-NEXT: retq @@ -9457,6 +9905,7 @@ define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) { ; O3: # %bb.0: # %entry ; O3-NEXT: movq %rsi, %rax ; O3-NEXT: movq foo(%rip), %rcx +; O3-NEXT: .Lpcsection326: ; O3-NEXT: lock cmpxchgq %rdx, (%rdi) ; O3-NEXT: movq $1, foo(%rip) ; O3-NEXT: retq