diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -12199,10 +12199,37 @@ 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 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp @@ -851,6 +851,12 @@ 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 --- a/llvm/test/CodeGen/X86/pcsections-atomics.ll +++ b/llvm/test/CodeGen/X86/pcsections-atomics.ll @@ -682,16 +682,18 @@ ; 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 @@ -707,11 +709,13 @@ ; 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) @@ -726,11 +730,13 @@ ; 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) @@ -745,11 +751,13 @@ ; 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) @@ -766,7 +774,7 @@ ; 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 @@ -775,7 +783,7 @@ ; 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 @@ -784,7 +792,7 @@ ; 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 @@ -793,7 +801,7 @@ ; 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 @@ -808,7 +816,7 @@ ; 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 @@ -816,7 +824,7 @@ ; 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 @@ -824,7 +832,7 @@ ; 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 @@ -832,7 +840,7 @@ ; 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 @@ -847,7 +855,7 @@ ; 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 @@ -855,7 +863,7 @@ ; 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 @@ -863,7 +871,7 @@ ; 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 @@ -871,7 +879,7 @@ ; 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 @@ -886,7 +894,7 @@ ; 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 @@ -894,7 +902,7 @@ ; 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 @@ -902,7 +910,7 @@ ; 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 @@ -910,7 +918,7 @@ ; 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 @@ -925,7 +933,7 @@ ; 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 @@ -933,7 +941,7 @@ ; 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 @@ -941,7 +949,7 @@ ; 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 @@ -949,7 +957,7 @@ ; 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 @@ -964,7 +972,7 @@ ; 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 @@ -972,7 +980,7 @@ ; 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 @@ -980,7 +988,7 @@ ; 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 @@ -988,7 +996,7 @@ ; 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 @@ -1004,7 +1012,7 @@ ; 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 @@ -1012,16 +1020,18 @@ ; 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 @@ -1031,17 +1041,19 @@ ; 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) @@ -1050,17 +1062,19 @@ ; 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) @@ -1069,17 +1083,19 @@ ; 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) @@ -1096,7 +1112,7 @@ ; 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 @@ -1105,7 +1121,7 @@ ; 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 @@ -1114,7 +1130,7 @@ ; 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 @@ -1123,7 +1139,7 @@ ; 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 @@ -1138,7 +1154,7 @@ ; 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 @@ -1146,7 +1162,7 @@ ; 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 @@ -1154,7 +1170,7 @@ ; 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 @@ -1162,7 +1178,7 @@ ; 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 @@ -1177,7 +1193,7 @@ ; 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 @@ -1185,7 +1201,7 @@ ; 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 @@ -1193,7 +1209,7 @@ ; 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 @@ -1201,7 +1217,7 @@ ; 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 @@ -1216,7 +1232,7 @@ ; 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 @@ -1224,7 +1240,7 @@ ; 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 @@ -1232,7 +1248,7 @@ ; 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 @@ -1240,7 +1256,7 @@ ; 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 @@ -1255,7 +1271,7 @@ ; 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 @@ -1263,7 +1279,7 @@ ; 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 @@ -1271,7 +1287,7 @@ ; 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 @@ -1279,7 +1295,7 @@ ; 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 @@ -1294,7 +1310,7 @@ ; 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 @@ -1302,7 +1318,7 @@ ; 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 @@ -1310,7 +1326,7 @@ ; 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 @@ -1318,7 +1334,7 @@ ; 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 @@ -1334,7 +1350,7 @@ ; 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 @@ -1342,16 +1358,18 @@ ; 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 @@ -1361,17 +1379,19 @@ ; 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) @@ -1380,17 +1400,19 @@ ; 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) @@ -1399,17 +1421,19 @@ ; 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) @@ -1426,7 +1450,7 @@ ; 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 @@ -1435,7 +1459,7 @@ ; 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 @@ -1444,7 +1468,7 @@ ; 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 @@ -1453,7 +1477,7 @@ ; 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 @@ -1468,7 +1492,7 @@ ; 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 @@ -1476,7 +1500,7 @@ ; 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 @@ -1484,7 +1508,7 @@ ; 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 @@ -1492,7 +1516,7 @@ ; 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 @@ -1507,7 +1531,7 @@ ; 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 @@ -1515,7 +1539,7 @@ ; 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 @@ -1523,7 +1547,7 @@ ; 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 @@ -1531,7 +1555,7 @@ ; 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 @@ -1546,7 +1570,7 @@ ; 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 @@ -1554,7 +1578,7 @@ ; 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 @@ -1562,7 +1586,7 @@ ; 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 @@ -1570,7 +1594,7 @@ ; 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 @@ -1585,7 +1609,7 @@ ; 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 @@ -1593,7 +1617,7 @@ ; 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 @@ -1601,7 +1625,7 @@ ; 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 @@ -1609,7 +1633,7 @@ ; 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 @@ -1624,7 +1648,7 @@ ; 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 @@ -1632,7 +1656,7 @@ ; 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 @@ -1640,7 +1664,7 @@ ; 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 @@ -1648,7 +1672,7 @@ ; 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 @@ -1664,7 +1688,7 @@ ; 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 @@ -1672,16 +1696,18 @@ ; 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 @@ -1691,17 +1717,19 @@ ; 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) @@ -1710,17 +1738,19 @@ ; 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) @@ -1729,17 +1759,19 @@ ; 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) @@ -1756,7 +1788,7 @@ ; 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 @@ -1765,7 +1797,7 @@ ; 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 @@ -1774,7 +1806,7 @@ ; 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 @@ -1783,7 +1815,7 @@ ; 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 @@ -1798,7 +1830,7 @@ ; 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 @@ -1806,7 +1838,7 @@ ; 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 @@ -1814,7 +1846,7 @@ ; 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 @@ -1822,7 +1854,7 @@ ; 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 @@ -1837,7 +1869,7 @@ ; 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 @@ -1845,7 +1877,7 @@ ; 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 @@ -1853,7 +1885,7 @@ ; 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 @@ -1861,7 +1893,7 @@ ; 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 @@ -1876,7 +1908,7 @@ ; 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 @@ -1884,7 +1916,7 @@ ; 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 @@ -1892,7 +1924,7 @@ ; 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 @@ -1900,7 +1932,7 @@ ; 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 @@ -1915,7 +1947,7 @@ ; 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 @@ -1923,7 +1955,7 @@ ; 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 @@ -1931,7 +1963,7 @@ ; 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 @@ -1939,7 +1971,7 @@ ; 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 @@ -1954,7 +1986,7 @@ ; 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 @@ -1962,7 +1994,7 @@ ; 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 @@ -1970,7 +2002,7 @@ ; 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 @@ -1978,7 +2010,7 @@ ; 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 @@ -1994,7 +2026,7 @@ ; 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 @@ -2002,16 +2034,18 @@ ; 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 @@ -2021,17 +2055,19 @@ ; 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) @@ -2040,17 +2076,19 @@ ; 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) @@ -2059,17 +2097,19 @@ ; 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) @@ -2088,14 +2128,17 @@ ; 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 @@ -2105,10 +2148,13 @@ ; 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 @@ -2118,10 +2164,13 @@ ; 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 @@ -2131,10 +2180,13 @@ ; 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 @@ -2154,14 +2206,17 @@ ; 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 @@ -2171,10 +2226,13 @@ ; 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 @@ -2184,10 +2242,13 @@ ; 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 @@ -2197,10 +2258,13 @@ ; 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 @@ -2220,14 +2284,17 @@ ; 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 @@ -2237,10 +2304,13 @@ ; 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 @@ -2250,10 +2320,13 @@ ; 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 @@ -2263,10 +2336,13 @@ ; 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 @@ -2286,14 +2362,17 @@ ; 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 @@ -2303,10 +2382,13 @@ ; 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 @@ -2316,10 +2398,13 @@ ; 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 @@ -2329,10 +2414,13 @@ ; 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 @@ -2352,14 +2440,17 @@ ; 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 @@ -2369,10 +2460,13 @@ ; 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 @@ -2382,10 +2476,13 @@ ; 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 @@ -2395,10 +2492,13 @@ ; 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 @@ -2415,7 +2515,7 @@ ; 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 @@ -2423,7 +2523,7 @@ ; 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 @@ -2431,7 +2531,7 @@ ; 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 @@ -2439,7 +2539,7 @@ ; 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 @@ -2454,7 +2554,7 @@ ; 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 @@ -2462,7 +2562,7 @@ ; 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 @@ -2470,7 +2570,7 @@ ; 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 @@ -2478,7 +2578,7 @@ ; 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 @@ -2493,7 +2593,7 @@ ; 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 @@ -2501,7 +2601,7 @@ ; 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 @@ -2509,7 +2609,7 @@ ; 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 @@ -2517,7 +2617,7 @@ ; 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 @@ -2532,7 +2632,7 @@ ; 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 @@ -2540,7 +2640,7 @@ ; 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 @@ -2548,7 +2648,7 @@ ; 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 @@ -2556,7 +2656,7 @@ ; 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 @@ -2571,7 +2671,7 @@ ; 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 @@ -2579,7 +2679,7 @@ ; 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 @@ -2587,7 +2687,7 @@ ; 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 @@ -2595,7 +2695,7 @@ ; 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 @@ -2610,7 +2710,7 @@ ; 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 @@ -2618,7 +2718,7 @@ ; 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 @@ -2626,7 +2726,7 @@ ; 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 @@ -2634,7 +2734,7 @@ ; 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 @@ -2649,7 +2749,7 @@ ; 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 @@ -2657,7 +2757,7 @@ ; 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 @@ -2665,7 +2765,7 @@ ; 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 @@ -2673,7 +2773,7 @@ ; 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 @@ -2689,7 +2789,7 @@ ; 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 @@ -2698,7 +2798,7 @@ ; 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 @@ -2707,7 +2807,7 @@ ; 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 @@ -2716,7 +2816,7 @@ ; 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 @@ -2732,7 +2832,7 @@ ; 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 @@ -2741,7 +2841,7 @@ ; 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 @@ -2750,7 +2850,7 @@ ; 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 @@ -2759,7 +2859,7 @@ ; 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 @@ -2774,7 +2874,7 @@ ; 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 @@ -2782,7 +2882,7 @@ ; 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 @@ -2790,7 +2890,7 @@ ; 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 @@ -2798,7 +2898,7 @@ ; 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 @@ -2813,7 +2913,7 @@ ; 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 @@ -2821,7 +2921,7 @@ ; 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 @@ -2829,7 +2929,7 @@ ; 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 @@ -2837,7 +2937,7 @@ ; 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 @@ -2852,7 +2952,7 @@ ; 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 @@ -2860,7 +2960,7 @@ ; 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 @@ -2868,7 +2968,7 @@ ; 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 @@ -2876,7 +2976,7 @@ ; 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 @@ -2891,7 +2991,7 @@ ; 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 @@ -2899,7 +2999,7 @@ ; 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 @@ -2907,7 +3007,7 @@ ; 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 @@ -2915,7 +3015,7 @@ ; 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 @@ -2930,7 +3030,7 @@ ; 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 @@ -2938,7 +3038,7 @@ ; 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 @@ -2946,7 +3046,7 @@ ; 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 @@ -2954,7 +3054,7 @@ ; 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 @@ -2970,26 +3070,30 @@ ; 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 @@ -2999,19 +3103,23 @@ ; 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) @@ -3020,19 +3128,23 @@ ; 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) @@ -3041,19 +3153,23 @@ ; 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) @@ -3070,7 +3186,7 @@ ; 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 @@ -3079,7 +3195,7 @@ ; 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 @@ -3088,7 +3204,7 @@ ; 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 @@ -3097,7 +3213,7 @@ ; 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 @@ -3112,7 +3228,7 @@ ; 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 @@ -3120,7 +3236,7 @@ ; 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 @@ -3128,7 +3244,7 @@ ; 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 @@ -3136,7 +3252,7 @@ ; 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 @@ -3151,7 +3267,7 @@ ; 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 @@ -3159,7 +3275,7 @@ ; 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 @@ -3167,7 +3283,7 @@ ; 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 @@ -3175,7 +3291,7 @@ ; 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 @@ -3190,7 +3306,7 @@ ; 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 @@ -3198,7 +3314,7 @@ ; 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 @@ -3206,7 +3322,7 @@ ; 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 @@ -3214,7 +3330,7 @@ ; 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 @@ -3229,7 +3345,7 @@ ; 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 @@ -3237,7 +3353,7 @@ ; 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 @@ -3245,7 +3361,7 @@ ; 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 @@ -3253,7 +3369,7 @@ ; 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 @@ -3268,7 +3384,7 @@ ; 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 @@ -3276,7 +3392,7 @@ ; 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 @@ -3284,7 +3400,7 @@ ; 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 @@ -3292,7 +3408,7 @@ ; 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 @@ -3308,26 +3424,30 @@ ; 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 @@ -3337,19 +3457,23 @@ ; 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) @@ -3358,19 +3482,23 @@ ; 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) @@ -3379,19 +3507,23 @@ ; 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) @@ -3408,7 +3540,7 @@ ; 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 @@ -3417,7 +3549,7 @@ ; 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 @@ -3426,7 +3558,7 @@ ; 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 @@ -3435,7 +3567,7 @@ ; 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 @@ -3450,7 +3582,7 @@ ; 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 @@ -3458,7 +3590,7 @@ ; 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 @@ -3466,7 +3598,7 @@ ; 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 @@ -3474,7 +3606,7 @@ ; 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 @@ -3489,7 +3621,7 @@ ; 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 @@ -3497,7 +3629,7 @@ ; 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 @@ -3505,7 +3637,7 @@ ; 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 @@ -3513,7 +3645,7 @@ ; 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 @@ -3528,7 +3660,7 @@ ; 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 @@ -3536,7 +3668,7 @@ ; 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 @@ -3544,7 +3676,7 @@ ; 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 @@ -3552,7 +3684,7 @@ ; 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 @@ -3567,7 +3699,7 @@ ; 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 @@ -3575,7 +3707,7 @@ ; 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 @@ -3583,7 +3715,7 @@ ; 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 @@ -3591,7 +3723,7 @@ ; 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 @@ -3606,7 +3738,7 @@ ; 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 @@ -3614,7 +3746,7 @@ ; 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 @@ -3622,7 +3754,7 @@ ; 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 @@ -3630,7 +3762,7 @@ ; 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 @@ -3646,26 +3778,30 @@ ; 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 @@ -3675,19 +3811,23 @@ ; 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) @@ -3696,19 +3836,23 @@ ; 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) @@ -3717,19 +3861,23 @@ ; 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) @@ -3746,7 +3894,7 @@ ; 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 @@ -3755,7 +3903,7 @@ ; 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 @@ -3764,7 +3912,7 @@ ; 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 @@ -3773,7 +3921,7 @@ ; 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 @@ -3788,7 +3936,7 @@ ; 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 @@ -3796,7 +3944,7 @@ ; 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 @@ -3804,7 +3952,7 @@ ; 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 @@ -3812,7 +3960,7 @@ ; 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 @@ -3827,7 +3975,7 @@ ; 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 @@ -3835,7 +3983,7 @@ ; 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 @@ -3843,7 +3991,7 @@ ; 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 @@ -3851,7 +3999,7 @@ ; 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 @@ -3866,7 +4014,7 @@ ; 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 @@ -3874,7 +4022,7 @@ ; 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 @@ -3882,7 +4030,7 @@ ; 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 @@ -3890,7 +4038,7 @@ ; 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 @@ -3905,7 +4053,7 @@ ; 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 @@ -3913,7 +4061,7 @@ ; 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 @@ -3921,7 +4069,7 @@ ; 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 @@ -3929,7 +4077,7 @@ ; 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 @@ -3944,7 +4092,7 @@ ; 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 @@ -3952,7 +4100,7 @@ ; 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 @@ -3960,7 +4108,7 @@ ; 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 @@ -3968,7 +4116,7 @@ ; 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 @@ -3984,26 +4132,30 @@ ; 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 @@ -4013,19 +4165,23 @@ ; 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) @@ -4034,19 +4190,23 @@ ; 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) @@ -4055,19 +4215,23 @@ ; 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) @@ -4084,7 +4248,7 @@ ; 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 @@ -4093,7 +4257,7 @@ ; 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 @@ -4102,7 +4266,7 @@ ; 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 @@ -4111,7 +4275,7 @@ ; 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 @@ -4126,7 +4290,7 @@ ; 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 @@ -4134,7 +4298,7 @@ ; 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 @@ -4142,7 +4306,7 @@ ; 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 @@ -4150,7 +4314,7 @@ ; 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 @@ -4165,7 +4329,7 @@ ; 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 @@ -4173,7 +4337,7 @@ ; 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 @@ -4181,7 +4345,7 @@ ; 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 @@ -4189,7 +4353,7 @@ ; 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 @@ -4204,7 +4368,7 @@ ; 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 @@ -4212,7 +4376,7 @@ ; 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 @@ -4220,7 +4384,7 @@ ; 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 @@ -4228,7 +4392,7 @@ ; 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 @@ -4243,7 +4407,7 @@ ; 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 @@ -4251,7 +4415,7 @@ ; 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 @@ -4259,7 +4423,7 @@ ; 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 @@ -4267,7 +4431,7 @@ ; 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 @@ -4282,7 +4446,7 @@ ; 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 @@ -4290,7 +4454,7 @@ ; 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 @@ -4298,7 +4462,7 @@ ; 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 @@ -4306,7 +4470,7 @@ ; 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 @@ -4322,26 +4486,30 @@ ; 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 @@ -4351,19 +4519,23 @@ ; 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) @@ -4372,19 +4544,23 @@ ; 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) @@ -4393,19 +4569,23 @@ ; 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) @@ -4424,14 +4604,17 @@ ; 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 @@ -4441,10 +4624,13 @@ ; 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 @@ -4454,10 +4640,13 @@ ; 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 @@ -4467,10 +4656,13 @@ ; 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 @@ -4490,14 +4682,17 @@ ; 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 @@ -4507,10 +4702,13 @@ ; 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 @@ -4520,10 +4718,13 @@ ; 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 @@ -4533,10 +4734,13 @@ ; 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 @@ -4556,14 +4760,17 @@ ; 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 @@ -4573,10 +4780,13 @@ ; 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 @@ -4586,10 +4796,13 @@ ; 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 @@ -4599,10 +4812,13 @@ ; 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 @@ -4622,14 +4838,17 @@ ; 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 @@ -4639,10 +4858,13 @@ ; 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 @@ -4652,10 +4874,13 @@ ; 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 @@ -4665,10 +4890,13 @@ ; 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 @@ -4688,14 +4916,17 @@ ; 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 @@ -4705,10 +4936,13 @@ ; 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 @@ -4718,10 +4952,13 @@ ; 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 @@ -4731,10 +4968,13 @@ ; 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 @@ -4751,7 +4991,7 @@ ; 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 @@ -4759,7 +4999,7 @@ ; 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 @@ -4767,7 +5007,7 @@ ; 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 @@ -4775,7 +5015,7 @@ ; 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 @@ -4790,7 +5030,7 @@ ; 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 @@ -4798,7 +5038,7 @@ ; 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 @@ -4806,7 +5046,7 @@ ; 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 @@ -4814,7 +5054,7 @@ ; 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 @@ -4829,7 +5069,7 @@ ; 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 @@ -4837,7 +5077,7 @@ ; 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 @@ -4845,7 +5085,7 @@ ; 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 @@ -4853,7 +5093,7 @@ ; 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 @@ -4868,7 +5108,7 @@ ; 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 @@ -4876,7 +5116,7 @@ ; 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 @@ -4884,7 +5124,7 @@ ; 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 @@ -4892,7 +5132,7 @@ ; 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 @@ -4907,7 +5147,7 @@ ; 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 @@ -4915,7 +5155,7 @@ ; 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 @@ -4923,7 +5163,7 @@ ; 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 @@ -4931,7 +5171,7 @@ ; 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 @@ -4946,7 +5186,7 @@ ; 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 @@ -4954,7 +5194,7 @@ ; 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 @@ -4962,7 +5202,7 @@ ; 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 @@ -4970,7 +5210,7 @@ ; 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 @@ -4985,7 +5225,7 @@ ; 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 @@ -4993,7 +5233,7 @@ ; 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 @@ -5001,7 +5241,7 @@ ; 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 @@ -5009,7 +5249,7 @@ ; 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 @@ -5025,7 +5265,7 @@ ; 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 @@ -5034,7 +5274,7 @@ ; 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 @@ -5043,7 +5283,7 @@ ; 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 @@ -5052,7 +5292,7 @@ ; 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 @@ -5068,7 +5308,7 @@ ; 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 @@ -5077,7 +5317,7 @@ ; 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 @@ -5086,7 +5326,7 @@ ; 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 @@ -5095,7 +5335,7 @@ ; 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 @@ -5110,7 +5350,7 @@ ; 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 @@ -5118,7 +5358,7 @@ ; 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 @@ -5126,7 +5366,7 @@ ; 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 @@ -5134,7 +5374,7 @@ ; 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 @@ -5149,7 +5389,7 @@ ; 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 @@ -5157,7 +5397,7 @@ ; 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 @@ -5165,7 +5405,7 @@ ; 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 @@ -5173,7 +5413,7 @@ ; 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 @@ -5188,7 +5428,7 @@ ; 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 @@ -5196,7 +5436,7 @@ ; 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 @@ -5204,7 +5444,7 @@ ; 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 @@ -5212,7 +5452,7 @@ ; 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 @@ -5227,7 +5467,7 @@ ; 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 @@ -5235,7 +5475,7 @@ ; 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 @@ -5243,7 +5483,7 @@ ; 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 @@ -5251,7 +5491,7 @@ ; 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 @@ -5266,7 +5506,7 @@ ; 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 @@ -5274,7 +5514,7 @@ ; 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 @@ -5282,7 +5522,7 @@ ; 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 @@ -5290,7 +5530,7 @@ ; 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 @@ -5306,7 +5546,7 @@ ; 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 @@ -5314,16 +5554,18 @@ ; 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 @@ -5333,17 +5575,19 @@ ; 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) @@ -5352,17 +5596,19 @@ ; 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) @@ -5371,17 +5617,19 @@ ; 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) @@ -5398,7 +5646,7 @@ ; 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 @@ -5407,7 +5655,7 @@ ; 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 @@ -5416,7 +5664,7 @@ ; 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 @@ -5425,7 +5673,7 @@ ; 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 @@ -5440,7 +5688,7 @@ ; 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 @@ -5448,7 +5696,7 @@ ; 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 @@ -5456,7 +5704,7 @@ ; 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 @@ -5464,7 +5712,7 @@ ; 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 @@ -5479,7 +5727,7 @@ ; 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 @@ -5487,7 +5735,7 @@ ; 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 @@ -5495,7 +5743,7 @@ ; 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 @@ -5503,7 +5751,7 @@ ; 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 @@ -5518,7 +5766,7 @@ ; 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 @@ -5526,7 +5774,7 @@ ; 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 @@ -5534,7 +5782,7 @@ ; 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 @@ -5542,7 +5790,7 @@ ; 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 @@ -5557,7 +5805,7 @@ ; 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 @@ -5565,7 +5813,7 @@ ; 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 @@ -5573,7 +5821,7 @@ ; 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 @@ -5581,7 +5829,7 @@ ; 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 @@ -5596,7 +5844,7 @@ ; 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 @@ -5604,7 +5852,7 @@ ; 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 @@ -5612,7 +5860,7 @@ ; 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 @@ -5620,7 +5868,7 @@ ; 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 @@ -5636,7 +5884,7 @@ ; 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 @@ -5644,16 +5892,18 @@ ; 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 @@ -5663,17 +5913,19 @@ ; 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) @@ -5682,17 +5934,19 @@ ; 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) @@ -5701,17 +5955,19 @@ ; 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) @@ -5728,7 +5984,7 @@ ; 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 @@ -5737,7 +5993,7 @@ ; 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 @@ -5746,7 +6002,7 @@ ; 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 @@ -5755,7 +6011,7 @@ ; 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 @@ -5770,7 +6026,7 @@ ; 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 @@ -5778,7 +6034,7 @@ ; 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 @@ -5786,7 +6042,7 @@ ; 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 @@ -5794,7 +6050,7 @@ ; 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 @@ -5809,7 +6065,7 @@ ; 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 @@ -5817,7 +6073,7 @@ ; 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 @@ -5825,7 +6081,7 @@ ; 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 @@ -5833,7 +6089,7 @@ ; 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 @@ -5848,7 +6104,7 @@ ; 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 @@ -5856,7 +6112,7 @@ ; 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 @@ -5864,7 +6120,7 @@ ; 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 @@ -5872,7 +6128,7 @@ ; 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 @@ -5887,7 +6143,7 @@ ; 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 @@ -5895,7 +6151,7 @@ ; 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 @@ -5903,7 +6159,7 @@ ; 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 @@ -5911,7 +6167,7 @@ ; 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 @@ -5926,7 +6182,7 @@ ; 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 @@ -5934,7 +6190,7 @@ ; 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 @@ -5942,7 +6198,7 @@ ; 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 @@ -5950,7 +6206,7 @@ ; 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 @@ -5966,7 +6222,7 @@ ; 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 @@ -5974,16 +6230,18 @@ ; 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 @@ -5993,17 +6251,19 @@ ; 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) @@ -6012,17 +6272,19 @@ ; 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) @@ -6031,17 +6293,19 @@ ; 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) @@ -6058,7 +6322,7 @@ ; 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 @@ -6067,7 +6331,7 @@ ; 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 @@ -6076,7 +6340,7 @@ ; 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 @@ -6085,7 +6349,7 @@ ; 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 @@ -6100,7 +6364,7 @@ ; 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 @@ -6108,7 +6372,7 @@ ; 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 @@ -6116,7 +6380,7 @@ ; 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 @@ -6124,7 +6388,7 @@ ; 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 @@ -6139,7 +6403,7 @@ ; 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 @@ -6147,7 +6411,7 @@ ; 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 @@ -6155,7 +6419,7 @@ ; 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 @@ -6163,7 +6427,7 @@ ; 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 @@ -6178,7 +6442,7 @@ ; 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 @@ -6186,7 +6450,7 @@ ; 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 @@ -6194,7 +6458,7 @@ ; 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 @@ -6202,7 +6466,7 @@ ; 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 @@ -6217,7 +6481,7 @@ ; 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 @@ -6225,7 +6489,7 @@ ; 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 @@ -6233,7 +6497,7 @@ ; 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 @@ -6241,7 +6505,7 @@ ; 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 @@ -6256,7 +6520,7 @@ ; 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 @@ -6264,7 +6528,7 @@ ; 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 @@ -6272,7 +6536,7 @@ ; 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 @@ -6280,7 +6544,7 @@ ; 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 @@ -6296,7 +6560,7 @@ ; 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 @@ -6304,16 +6568,18 @@ ; 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 @@ -6323,17 +6589,19 @@ ; 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) @@ -6342,17 +6610,19 @@ ; 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) @@ -6361,17 +6631,19 @@ ; 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) @@ -6388,7 +6660,7 @@ ; 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 @@ -6397,7 +6669,7 @@ ; 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 @@ -6406,7 +6678,7 @@ ; 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 @@ -6415,7 +6687,7 @@ ; 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 @@ -6430,7 +6702,7 @@ ; 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 @@ -6438,7 +6710,7 @@ ; 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 @@ -6446,7 +6718,7 @@ ; 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 @@ -6454,7 +6726,7 @@ ; 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 @@ -6469,7 +6741,7 @@ ; 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 @@ -6477,7 +6749,7 @@ ; 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 @@ -6485,7 +6757,7 @@ ; 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 @@ -6493,7 +6765,7 @@ ; 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 @@ -6508,7 +6780,7 @@ ; 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 @@ -6516,7 +6788,7 @@ ; 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 @@ -6524,7 +6796,7 @@ ; 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 @@ -6532,7 +6804,7 @@ ; 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 @@ -6547,7 +6819,7 @@ ; 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 @@ -6555,7 +6827,7 @@ ; 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 @@ -6563,7 +6835,7 @@ ; 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 @@ -6571,7 +6843,7 @@ ; 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 @@ -6586,7 +6858,7 @@ ; 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 @@ -6594,7 +6866,7 @@ ; 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 @@ -6602,7 +6874,7 @@ ; 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 @@ -6610,7 +6882,7 @@ ; 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 @@ -6626,7 +6898,7 @@ ; 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 @@ -6634,16 +6906,18 @@ ; 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 @@ -6653,17 +6927,19 @@ ; 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) @@ -6672,17 +6948,19 @@ ; 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) @@ -6691,17 +6969,19 @@ ; 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) @@ -6720,14 +7000,17 @@ ; 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 @@ -6737,10 +7020,13 @@ ; 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 @@ -6750,10 +7036,13 @@ ; 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 @@ -6763,10 +7052,13 @@ ; 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 @@ -6786,14 +7078,17 @@ ; 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 @@ -6803,10 +7098,13 @@ ; 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 @@ -6816,10 +7114,13 @@ ; 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 @@ -6829,10 +7130,13 @@ ; 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 @@ -6852,14 +7156,17 @@ ; 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 @@ -6869,10 +7176,13 @@ ; 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 @@ -6882,10 +7192,13 @@ ; 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 @@ -6895,10 +7208,13 @@ ; 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 @@ -6918,14 +7234,17 @@ ; 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 @@ -6935,10 +7254,13 @@ ; 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 @@ -6948,10 +7270,13 @@ ; 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 @@ -6961,10 +7286,13 @@ ; 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 @@ -6984,14 +7312,17 @@ ; 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 @@ -7001,10 +7332,13 @@ ; 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 @@ -7014,10 +7348,13 @@ ; 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 @@ -7027,10 +7364,13 @@ ; 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 @@ -7047,7 +7387,7 @@ ; 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 @@ -7055,7 +7395,7 @@ ; 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 @@ -7063,7 +7403,7 @@ ; 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 @@ -7071,7 +7411,7 @@ ; 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 @@ -7086,7 +7426,7 @@ ; 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 @@ -7094,7 +7434,7 @@ ; 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 @@ -7102,7 +7442,7 @@ ; 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 @@ -7110,7 +7450,7 @@ ; 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 @@ -7125,7 +7465,7 @@ ; 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 @@ -7133,7 +7473,7 @@ ; 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 @@ -7141,7 +7481,7 @@ ; 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 @@ -7149,7 +7489,7 @@ ; 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 @@ -7164,7 +7504,7 @@ ; 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 @@ -7172,7 +7512,7 @@ ; 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 @@ -7180,7 +7520,7 @@ ; 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 @@ -7188,7 +7528,7 @@ ; 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 @@ -7203,7 +7543,7 @@ ; 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 @@ -7211,7 +7551,7 @@ ; 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 @@ -7219,7 +7559,7 @@ ; 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 @@ -7227,7 +7567,7 @@ ; 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 @@ -7242,7 +7582,7 @@ ; 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 @@ -7250,7 +7590,7 @@ ; 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 @@ -7258,7 +7598,7 @@ ; 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 @@ -7266,7 +7606,7 @@ ; 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 @@ -7281,7 +7621,7 @@ ; 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 @@ -7289,7 +7629,7 @@ ; 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 @@ -7297,7 +7637,7 @@ ; 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 @@ -7305,7 +7645,7 @@ ; 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 @@ -7320,7 +7660,7 @@ ; 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 @@ -7328,7 +7668,7 @@ ; 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 @@ -7336,7 +7676,7 @@ ; 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 @@ -7344,7 +7684,7 @@ ; 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 @@ -7360,7 +7700,7 @@ ; 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 @@ -7369,7 +7709,7 @@ ; 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 @@ -7378,7 +7718,7 @@ ; 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 @@ -7387,7 +7727,7 @@ ; 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 @@ -7402,7 +7742,7 @@ ; 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 @@ -7410,7 +7750,7 @@ ; 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 @@ -7418,7 +7758,7 @@ ; 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 @@ -7426,7 +7766,7 @@ ; 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 @@ -7442,7 +7782,7 @@ ; 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 @@ -7451,7 +7791,7 @@ ; 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 @@ -7460,7 +7800,7 @@ ; 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 @@ -7469,7 +7809,7 @@ ; 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 @@ -7484,7 +7824,7 @@ ; 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 @@ -7492,7 +7832,7 @@ ; 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 @@ -7500,7 +7840,7 @@ ; 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 @@ -7508,7 +7848,7 @@ ; 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 @@ -7523,7 +7863,7 @@ ; 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 @@ -7531,7 +7871,7 @@ ; 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 @@ -7539,7 +7879,7 @@ ; 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 @@ -7547,7 +7887,7 @@ ; 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 @@ -7562,7 +7902,7 @@ ; 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 @@ -7570,7 +7910,7 @@ ; 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 @@ -7578,7 +7918,7 @@ ; 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 @@ -7586,7 +7926,7 @@ ; 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 @@ -7601,7 +7941,7 @@ ; 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 @@ -7609,7 +7949,7 @@ ; 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 @@ -7617,7 +7957,7 @@ ; 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 @@ -7625,7 +7965,7 @@ ; 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 @@ -7640,7 +7980,7 @@ ; 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 @@ -7648,7 +7988,7 @@ ; 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 @@ -7656,7 +7996,7 @@ ; 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 @@ -7664,7 +8004,7 @@ ; 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 @@ -7680,7 +8020,7 @@ ; 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 @@ -7688,18 +8028,21 @@ ; 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 @@ -7709,17 +8052,19 @@ ; 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) @@ -7728,17 +8073,19 @@ ; 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) @@ -7747,17 +8094,19 @@ ; 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) @@ -7774,7 +8123,7 @@ ; 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 @@ -7783,7 +8132,7 @@ ; 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 @@ -7792,7 +8141,7 @@ ; 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 @@ -7801,7 +8150,7 @@ ; 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 @@ -7816,7 +8165,7 @@ ; 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 @@ -7824,7 +8173,7 @@ ; 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 @@ -7832,7 +8181,7 @@ ; 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 @@ -7840,7 +8189,7 @@ ; 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 @@ -7855,7 +8204,7 @@ ; 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 @@ -7863,7 +8212,7 @@ ; 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 @@ -7871,7 +8220,7 @@ ; 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 @@ -7879,7 +8228,7 @@ ; 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 @@ -7894,7 +8243,7 @@ ; 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 @@ -7902,7 +8251,7 @@ ; 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 @@ -7910,7 +8259,7 @@ ; 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 @@ -7918,7 +8267,7 @@ ; 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 @@ -7933,7 +8282,7 @@ ; 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 @@ -7941,7 +8290,7 @@ ; 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 @@ -7949,7 +8298,7 @@ ; 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 @@ -7957,7 +8306,7 @@ ; 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 @@ -7972,7 +8321,7 @@ ; 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 @@ -7980,7 +8329,7 @@ ; 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 @@ -7988,7 +8337,7 @@ ; 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 @@ -7996,7 +8345,7 @@ ; 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 @@ -8012,7 +8361,7 @@ ; 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 @@ -8020,18 +8369,21 @@ ; 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 @@ -8041,17 +8393,19 @@ ; 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) @@ -8060,17 +8414,19 @@ ; 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) @@ -8079,17 +8435,19 @@ ; 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) @@ -8106,7 +8464,7 @@ ; 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 @@ -8115,7 +8473,7 @@ ; 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 @@ -8124,7 +8482,7 @@ ; 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 @@ -8133,7 +8491,7 @@ ; 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 @@ -8148,7 +8506,7 @@ ; 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 @@ -8156,7 +8514,7 @@ ; 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 @@ -8164,7 +8522,7 @@ ; 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 @@ -8172,7 +8530,7 @@ ; 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 @@ -8187,7 +8545,7 @@ ; 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 @@ -8195,7 +8553,7 @@ ; 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 @@ -8203,7 +8561,7 @@ ; 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 @@ -8211,7 +8569,7 @@ ; 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 @@ -8226,7 +8584,7 @@ ; 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 @@ -8234,7 +8592,7 @@ ; 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 @@ -8242,7 +8600,7 @@ ; 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 @@ -8250,7 +8608,7 @@ ; 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 @@ -8265,7 +8623,7 @@ ; 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 @@ -8273,7 +8631,7 @@ ; 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 @@ -8281,7 +8639,7 @@ ; 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 @@ -8289,7 +8647,7 @@ ; 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 @@ -8304,7 +8662,7 @@ ; 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 @@ -8312,7 +8670,7 @@ ; 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 @@ -8320,7 +8678,7 @@ ; 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 @@ -8328,7 +8686,7 @@ ; 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 @@ -8344,7 +8702,7 @@ ; 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 @@ -8352,18 +8710,21 @@ ; 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 @@ -8373,17 +8734,19 @@ ; 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) @@ -8392,17 +8755,19 @@ ; 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) @@ -8411,17 +8776,19 @@ ; 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) @@ -8438,7 +8805,7 @@ ; 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 @@ -8447,7 +8814,7 @@ ; 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 @@ -8456,7 +8823,7 @@ ; 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 @@ -8465,7 +8832,7 @@ ; 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 @@ -8480,7 +8847,7 @@ ; 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 @@ -8488,7 +8855,7 @@ ; 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 @@ -8496,7 +8863,7 @@ ; 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 @@ -8504,7 +8871,7 @@ ; 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 @@ -8519,7 +8886,7 @@ ; 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 @@ -8527,7 +8894,7 @@ ; 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 @@ -8535,7 +8902,7 @@ ; 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 @@ -8543,7 +8910,7 @@ ; 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 @@ -8558,7 +8925,7 @@ ; 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 @@ -8566,7 +8933,7 @@ ; 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 @@ -8574,7 +8941,7 @@ ; 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 @@ -8582,7 +8949,7 @@ ; 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 @@ -8597,7 +8964,7 @@ ; 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 @@ -8605,7 +8972,7 @@ ; 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 @@ -8613,7 +8980,7 @@ ; 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 @@ -8621,7 +8988,7 @@ ; 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 @@ -8636,7 +9003,7 @@ ; 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 @@ -8644,7 +9011,7 @@ ; 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 @@ -8652,7 +9019,7 @@ ; 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 @@ -8660,7 +9027,7 @@ ; 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 @@ -8676,7 +9043,7 @@ ; 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 @@ -8684,18 +9051,21 @@ ; 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 @@ -8705,17 +9075,19 @@ ; 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) @@ -8724,17 +9096,19 @@ ; 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) @@ -8743,17 +9117,19 @@ ; 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) @@ -8770,7 +9146,7 @@ ; 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 @@ -8779,7 +9155,7 @@ ; 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 @@ -8788,7 +9164,7 @@ ; 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 @@ -8797,7 +9173,7 @@ ; 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 @@ -8812,7 +9188,7 @@ ; 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 @@ -8820,7 +9196,7 @@ ; 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 @@ -8828,7 +9204,7 @@ ; 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 @@ -8836,7 +9212,7 @@ ; 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 @@ -8851,7 +9227,7 @@ ; 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 @@ -8859,7 +9235,7 @@ ; 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 @@ -8867,7 +9243,7 @@ ; 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 @@ -8875,7 +9251,7 @@ ; 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 @@ -8890,7 +9266,7 @@ ; 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 @@ -8898,7 +9274,7 @@ ; 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 @@ -8906,7 +9282,7 @@ ; 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 @@ -8914,7 +9290,7 @@ ; 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 @@ -8929,7 +9305,7 @@ ; 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 @@ -8937,7 +9313,7 @@ ; 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 @@ -8945,7 +9321,7 @@ ; 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 @@ -8953,7 +9329,7 @@ ; 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 @@ -8968,7 +9344,7 @@ ; 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 @@ -8976,7 +9352,7 @@ ; 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 @@ -8984,7 +9360,7 @@ ; 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 @@ -8992,7 +9368,7 @@ ; 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 @@ -9008,7 +9384,7 @@ ; 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 @@ -9016,18 +9392,21 @@ ; 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 @@ -9037,17 +9416,19 @@ ; 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) @@ -9056,17 +9437,19 @@ ; 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) @@ -9075,17 +9458,19 @@ ; 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) @@ -9104,14 +9489,17 @@ ; 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 @@ -9121,10 +9509,13 @@ ; 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 @@ -9134,10 +9525,13 @@ ; 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 @@ -9147,10 +9541,13 @@ ; 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 @@ -9170,14 +9567,17 @@ ; 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 @@ -9187,10 +9587,13 @@ ; 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 @@ -9200,10 +9603,13 @@ ; 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 @@ -9213,10 +9619,13 @@ ; 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 @@ -9236,14 +9645,17 @@ ; 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 @@ -9253,10 +9665,13 @@ ; 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 @@ -9266,10 +9681,13 @@ ; 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 @@ -9279,10 +9697,13 @@ ; 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 @@ -9302,14 +9723,17 @@ ; 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 @@ -9319,10 +9743,13 @@ ; 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 @@ -9332,10 +9759,13 @@ ; 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 @@ -9345,10 +9775,13 @@ ; 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 @@ -9368,14 +9801,17 @@ ; 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 @@ -9385,10 +9821,13 @@ ; 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 @@ -9398,10 +9837,13 @@ ; 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 @@ -9411,10 +9853,13 @@ ; 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 @@ -9432,6 +9877,7 @@ ; 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 @@ -9440,6 +9886,7 @@ ; 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 @@ -9448,6 +9895,7 @@ ; 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 @@ -9456,6 +9904,7 @@ ; 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