void test_fetch_and_op(void) {
  signed char sc[2];
  unsigned char uc[2];
  signed short ss[2];
  unsigned short us[2];
  signed int si[2];
  unsigned int ui[2];
  signed long sl[2];
  unsigned long ul[2];
  signed long long sll[2];
  unsigned long long ull[2];
  sc[1] = __sync_fetch_and_add(&sc[1], -11);
  uc[1] = __sync_fetch_and_add(&uc[1], -11);
  ss[1] = __sync_fetch_and_add(&ss[1], -11);
  us[1] = __sync_fetch_and_add(&us[1], -11);
  si[1] = __sync_fetch_and_add(&si[1], -11);
  ui[1] = __sync_fetch_and_add(&ui[1], -11);
  sl[1] = __sync_fetch_and_add(&sl[1], -11);
  ul[1] = __sync_fetch_and_add(&ul[1], -11);
  sll[1] = __sync_fetch_and_add(&sll[1], -11);
  ull[1] = __sync_fetch_and_add(&ull[1], -11);
  sc[1] = __sync_fetch_and_sub(&sc[1], -11);
  uc[1] = __sync_fetch_and_sub(&uc[1], -11);
  ss[1] = __sync_fetch_and_sub(&ss[1], -11);
  us[1] = __sync_fetch_and_sub(&us[1], -11);
  si[1] = __sync_fetch_and_sub(&si[1], -11);
  ui[1] = __sync_fetch_and_sub(&ui[1], -11);
  sl[1] = __sync_fetch_and_sub(&sl[1], -11);
  ul[1] = __sync_fetch_and_sub(&ul[1], -11);
  sll[1] = __sync_fetch_and_sub(&sll[1], -11);
  ull[1] = __sync_fetch_and_sub(&ull[1], -11);
  sc[1] = __sync_fetch_and_or(&sc[1], -11);
  uc[1] = __sync_fetch_and_or(&uc[1], -11);
  ss[1] = __sync_fetch_and_or(&ss[1], -11);
  us[1] = __sync_fetch_and_or(&us[1], -11);
  si[1] = __sync_fetch_and_or(&si[1], -11);
  ui[1] = __sync_fetch_and_or(&ui[1], -11);
  sl[1] = __sync_fetch_and_or(&sl[1], -11);
  ul[1] = __sync_fetch_and_or(&ul[1], -11);
  sll[1] = __sync_fetch_and_or(&sll[1], -11);
  ull[1] = __sync_fetch_and_or(&ull[1], -11);
  sc[1] = __sync_fetch_and_xor(&sc[1], -11);
  uc[1] = __sync_fetch_and_xor(&uc[1], -11);
  ss[1] = __sync_fetch_and_xor(&ss[1], -11);
  us[1] = __sync_fetch_and_xor(&us[1], -11);
  si[1] = __sync_fetch_and_xor(&si[1], -11);
  ui[1] = __sync_fetch_and_xor(&ui[1], -11);
  sl[1] = __sync_fetch_and_xor(&sl[1], -11);
  ul[1] = __sync_fetch_and_xor(&ul[1], -11);
  sll[1] = __sync_fetch_and_xor(&sll[1], -11);
  ull[1] = __sync_fetch_and_xor(&ull[1], -11);
  sc[1] = __sync_fetch_and_and(&sc[1], -11);
  uc[1] = __sync_fetch_and_and(&uc[1], -11);
  ss[1] = __sync_fetch_and_and(&ss[1], -11);
  us[1] = __sync_fetch_and_and(&us[1], -11);
  si[1] = __sync_fetch_and_and(&si[1], -11);
  ui[1] = __sync_fetch_and_and(&ui[1], -11);
  sl[1] = __sync_fetch_and_and(&sl[1], -11);
  ul[1] = __sync_fetch_and_and(&ul[1], -11);
  sll[1] = __sync_fetch_and_and(&sll[1], -11);
  ull[1] = __sync_fetch_and_and(&ull[1], -11);
  sc[1] = __sync_fetch_and_nand(&sc[1], -11);
  uc[1] = __sync_fetch_and_nand(&uc[1], -11);
  ss[1] = __sync_fetch_and_nand(&ss[1], -11);
  us[1] = __sync_fetch_and_nand(&us[1], -11);
  si[1] = __sync_fetch_and_nand(&si[1], -11);
  ui[1] = __sync_fetch_and_nand(&ui[1], -11);
  sl[1] = __sync_fetch_and_nand(&sl[1], -11);
  ul[1] = __sync_fetch_and_nand(&ul[1], -11);
  sll[1] = __sync_fetch_and_nand(&sll[1], -11);
  ull[1] = __sync_fetch_and_nand(&ull[1], -11);
}


x86 assembly (clang, -O0):
<test_fetch_and_op>:
push   %rbp
mov    %rsp,%rbp
sub    $0x380,%rsp
mov    $0xf5,%al
mov    %al,%cl
lock xadd %cl,-0x1(%rbp)
mov    %cl,-0x1(%rbp)
lock xadd %al,-0x3(%rbp)
mov    %al,-0x3(%rbp)
mov    $0xfff5,%ax
mov    %ax,%cx
lock xadd %cx,-0x6(%rbp)
mov    %cx,-0x6(%rbp)
lock xadd %ax,-0xa(%rbp)
mov    %ax,-0xa(%rbp)
mov    $0xfffffff5,%eax
mov    %eax,%ecx
lock xadd %ecx,-0x10(%rbp)
mov    %ecx,-0x10(%rbp)
lock xadd %eax,-0x18(%rbp)
mov    %eax,-0x18(%rbp)
mov    $0xfffffffffffffff5,%rax
mov    %rax,%rcx
lock xadd %rcx,-0x28(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %rax,%rcx
lock xadd %rcx,-0x38(%rbp)
mov    %rcx,-0x38(%rbp)
mov    %rax,%rcx
lock xadd %rcx,-0x48(%rbp)
mov    %rcx,-0x48(%rbp)
lock xadd %rax,-0x58(%rbp)
mov    %rax,-0x58(%rbp)
mov    $0xb,%al
mov    %al,%cl
lock xadd %cl,-0x1(%rbp)
mov    %cl,-0x1(%rbp)
lock xadd %al,-0x3(%rbp)
mov    %al,-0x3(%rbp)
mov    $0xb,%ax
mov    %ax,%cx
lock xadd %cx,-0x6(%rbp)
mov    %cx,-0x6(%rbp)
lock xadd %ax,-0xa(%rbp)
mov    %ax,-0xa(%rbp)
mov    $0xb,%eax
mov    %eax,%ecx
lock xadd %ecx,-0x10(%rbp)
mov    %ecx,-0x10(%rbp)
lock xadd %eax,-0x18(%rbp)
mov    %eax,-0x18(%rbp)
mov    $0xb,%eax
mov    %rax,%rcx
lock xadd %rcx,-0x28(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %rax,%rcx
lock xadd %rcx,-0x38(%rbp)
mov    %rcx,-0x38(%rbp)
mov    %rax,%rcx
lock xadd %rcx,-0x48(%rbp)
mov    %rcx,-0x48(%rbp)
lock xadd %rax,-0x58(%rbp)
mov    %rax,-0x58(%rbp)
lea    -0x2(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x1(%rbp),%al
mov    %al,-0x61(%rbp)
mov    -0x61(%rbp),%al
mov    -0x70(%rbp),%rcx
mov    %al,%dl
or     $0xf5,%dl
lock cmpxchg %dl,(%rcx)
sete   %cl
mov    %al,-0x71(%rbp)
test   $0x1,%cl
mov    %al,-0x61(%rbp)
jne    123e <test_fetch_and_op+0x13e>
jmp    1217 <test_fetch_and_op+0x117>
mov    -0x71(%rbp),%al
mov    %al,-0x1(%rbp)
lea    -0x4(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x80(%rbp)
mov    -0x3(%rbp),%al
mov    %al,-0x72(%rbp)
mov    -0x72(%rbp),%al
mov    -0x80(%rbp),%rcx
mov    %al,%dl
or     $0xf5,%dl
lock cmpxchg %dl,(%rcx)
sete   %cl
mov    %al,-0x81(%rbp)
test   $0x1,%cl
mov    %al,-0x72(%rbp)
jne    1280 <test_fetch_and_op+0x180>
jmp    1256 <test_fetch_and_op+0x156>
mov    -0x81(%rbp),%al
mov    %al,-0x3(%rbp)
lea    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x90(%rbp)
mov    -0x6(%rbp),%ax
mov    %ax,-0x84(%rbp)
mov    -0x84(%rbp),%ax
mov    -0x90(%rbp),%rcx
mov    %ax,%dx
mov    %edx,-0x9c(%rbp)
or     $0xfff5,%edx
mov    %edx,-0x98(%rbp)
lock cmpxchg %dx,(%rcx)
sete   %cl
mov    %ax,-0x92(%rbp)
test   $0x1,%cl
mov    %ax,-0x84(%rbp)
jne    12ea <test_fetch_and_op+0x1ea>
jmp    12a3 <test_fetch_and_op+0x1a3>
mov    -0x92(%rbp),%ax
mov    %ax,-0x6(%rbp)
lea    -0xc(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa(%rbp),%ax
mov    %ax,-0x9e(%rbp)
mov    -0x9e(%rbp),%ax
mov    -0xa8(%rbp),%rcx
mov    %ax,%dx
mov    %edx,-0xb4(%rbp)
or     $0xfff5,%edx
mov    %edx,-0xb0(%rbp)
lock cmpxchg %dx,(%rcx)
sete   %cl
mov    %ax,-0xaa(%rbp)
test   $0x1,%cl
mov    %ax,-0x9e(%rbp)
jne    1356 <test_fetch_and_op+0x256>
jmp    130f <test_fetch_and_op+0x20f>
mov    -0xaa(%rbp),%ax
mov    %ax,-0xa(%rbp)
lea    -0x14(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xc0(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
mov    -0xc0(%rbp),%rcx
mov    %eax,%edx
or     $0xfffffff5,%edx
lock cmpxchg %edx,(%rcx)
sete   %cl
mov    %eax,-0xc4(%rbp)
test   $0x1,%cl
mov    %eax,-0xb8(%rbp)
jne    13ac <test_fetch_and_op+0x2ac>
jmp    1379 <test_fetch_and_op+0x279>
mov    -0xc4(%rbp),%eax
mov    %eax,-0x10(%rbp)
lea    -0x1c(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xd0(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
mov    -0xd0(%rbp),%rcx
mov    %eax,%edx
or     $0xfffffff5,%edx
lock cmpxchg %edx,(%rcx)
sete   %cl
mov    %eax,-0xd4(%rbp)
test   $0x1,%cl
mov    %eax,-0xc8(%rbp)
jne    1400 <test_fetch_and_op+0x300>
jmp    13cd <test_fetch_and_op+0x2cd>
mov    -0xd4(%rbp),%eax
mov    %eax,-0x18(%rbp)
lea    -0x30(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xe8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0xe0(%rbp),%rax
mov    -0xe8(%rbp),%rcx
mov    %rax,%rdx
or     $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0xf0(%rbp)
test   $0x1,%cl
mov    %rax,-0xe0(%rbp)
jne    145c <test_fetch_and_op+0x35c>
jmp    1423 <test_fetch_and_op+0x323>
mov    -0xf0(%rbp),%rax
mov    %rax,-0x28(%rbp)
lea    -0x40(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x100(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    -0x100(%rbp),%rcx
mov    %rax,%rdx
or     $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x108(%rbp)
test   $0x1,%cl
mov    %rax,-0xf8(%rbp)
jne    14ba <test_fetch_and_op+0x3ba>
jmp    1481 <test_fetch_and_op+0x381>
mov    -0x108(%rbp),%rax
mov    %rax,-0x38(%rbp)
lea    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x118(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
mov    -0x118(%rbp),%rcx
mov    %rax,%rdx
or     $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x120(%rbp)
test   $0x1,%cl
mov    %rax,-0x110(%rbp)
jne    1518 <test_fetch_and_op+0x418>
jmp    14df <test_fetch_and_op+0x3df>
mov    -0x120(%rbp),%rax
mov    %rax,-0x48(%rbp)
lea    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x130(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x128(%rbp)
mov    -0x128(%rbp),%rax
mov    -0x130(%rbp),%rcx
mov    %rax,%rdx
or     $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x138(%rbp)
test   $0x1,%cl
mov    %rax,-0x128(%rbp)
jne    1576 <test_fetch_and_op+0x476>
jmp    153d <test_fetch_and_op+0x43d>
mov    -0x138(%rbp),%rax
mov    %rax,-0x58(%rbp)
lea    -0x2(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x148(%rbp)
mov    -0x1(%rbp),%al
mov    %al,-0x139(%rbp)
mov    -0x139(%rbp),%al
mov    -0x148(%rbp),%rcx
mov    %al,%dl
xor    $0xf5,%dl
lock cmpxchg %dl,(%rcx)
sete   %cl
mov    %al,-0x149(%rbp)
test   $0x1,%cl
mov    %al,-0x139(%rbp)
jne    15cc <test_fetch_and_op+0x4cc>
jmp    1599 <test_fetch_and_op+0x499>
mov    -0x149(%rbp),%al
mov    %al,-0x1(%rbp)
lea    -0x4(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x158(%rbp)
mov    -0x3(%rbp),%al
mov    %al,-0x14a(%rbp)
mov    -0x14a(%rbp),%al
mov    -0x158(%rbp),%rcx
mov    %al,%dl
xor    $0xf5,%dl
lock cmpxchg %dl,(%rcx)
sete   %cl
mov    %al,-0x159(%rbp)
test   $0x1,%cl
mov    %al,-0x14a(%rbp)
jne    1620 <test_fetch_and_op+0x520>
jmp    15ed <test_fetch_and_op+0x4ed>
mov    -0x159(%rbp),%al
mov    %al,-0x3(%rbp)
lea    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x168(%rbp)
mov    -0x6(%rbp),%ax
mov    %ax,-0x15c(%rbp)
mov    -0x15c(%rbp),%ax
mov    -0x168(%rbp),%rcx
mov    %ax,%dx
mov    %edx,-0x174(%rbp)
xor    $0xfff5,%edx
mov    %edx,-0x170(%rbp)
lock cmpxchg %dx,(%rcx)
sete   %cl
mov    %ax,-0x16a(%rbp)
test   $0x1,%cl
mov    %ax,-0x15c(%rbp)
jne    168a <test_fetch_and_op+0x58a>
jmp    1643 <test_fetch_and_op+0x543>
mov    -0x16a(%rbp),%ax
mov    %ax,-0x6(%rbp)
lea    -0xc(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x180(%rbp)
mov    -0xa(%rbp),%ax
mov    %ax,-0x176(%rbp)
mov    -0x176(%rbp),%ax
mov    -0x180(%rbp),%rcx
mov    %ax,%dx
mov    %edx,-0x18c(%rbp)
xor    $0xfff5,%edx
mov    %edx,-0x188(%rbp)
lock cmpxchg %dx,(%rcx)
sete   %cl
mov    %ax,-0x182(%rbp)
test   $0x1,%cl
mov    %ax,-0x176(%rbp)
jne    16f6 <test_fetch_and_op+0x5f6>
jmp    16af <test_fetch_and_op+0x5af>
mov    -0x182(%rbp),%ax
mov    %ax,-0xa(%rbp)
lea    -0x14(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x198(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x190(%rbp)
mov    -0x190(%rbp),%eax
mov    -0x198(%rbp),%rcx
mov    %eax,%edx
xor    $0xfffffff5,%edx
lock cmpxchg %edx,(%rcx)
sete   %cl
mov    %eax,-0x19c(%rbp)
test   $0x1,%cl
mov    %eax,-0x190(%rbp)
jne    174c <test_fetch_and_op+0x64c>
jmp    1719 <test_fetch_and_op+0x619>
mov    -0x19c(%rbp),%eax
mov    %eax,-0x10(%rbp)
lea    -0x1c(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x1a8(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x1a0(%rbp)
mov    -0x1a0(%rbp),%eax
mov    -0x1a8(%rbp),%rcx
mov    %eax,%edx
xor    $0xfffffff5,%edx
lock cmpxchg %edx,(%rcx)
sete   %cl
mov    %eax,-0x1ac(%rbp)
test   $0x1,%cl
mov    %eax,-0x1a0(%rbp)
jne    17a0 <test_fetch_and_op+0x6a0>
jmp    176d <test_fetch_and_op+0x66d>
mov    -0x1ac(%rbp),%eax
mov    %eax,-0x18(%rbp)
lea    -0x30(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x1c0(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x1b8(%rbp)
mov    -0x1b8(%rbp),%rax
mov    -0x1c0(%rbp),%rcx
mov    %rax,%rdx
xor    $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x1c8(%rbp)
test   $0x1,%cl
mov    %rax,-0x1b8(%rbp)
jne    17fc <test_fetch_and_op+0x6fc>
jmp    17c3 <test_fetch_and_op+0x6c3>
mov    -0x1c8(%rbp),%rax
mov    %rax,-0x28(%rbp)
lea    -0x40(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x1d8(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x1d0(%rbp)
mov    -0x1d0(%rbp),%rax
mov    -0x1d8(%rbp),%rcx
mov    %rax,%rdx
xor    $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x1e0(%rbp)
test   $0x1,%cl
mov    %rax,-0x1d0(%rbp)
jne    185a <test_fetch_and_op+0x75a>
jmp    1821 <test_fetch_and_op+0x721>
mov    -0x1e0(%rbp),%rax
mov    %rax,-0x38(%rbp)
lea    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x1f0(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x1e8(%rbp)
mov    -0x1e8(%rbp),%rax
mov    -0x1f0(%rbp),%rcx
mov    %rax,%rdx
xor    $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x1f8(%rbp)
test   $0x1,%cl
mov    %rax,-0x1e8(%rbp)
jne    18b8 <test_fetch_and_op+0x7b8>
jmp    187f <test_fetch_and_op+0x77f>
mov    -0x1f8(%rbp),%rax
mov    %rax,-0x48(%rbp)
lea    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x208(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x200(%rbp)
mov    -0x200(%rbp),%rax
mov    -0x208(%rbp),%rcx
mov    %rax,%rdx
xor    $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x210(%rbp)
test   $0x1,%cl
mov    %rax,-0x200(%rbp)
jne    1916 <test_fetch_and_op+0x816>
jmp    18dd <test_fetch_and_op+0x7dd>
mov    -0x210(%rbp),%rax
mov    %rax,-0x58(%rbp)
lea    -0x2(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x220(%rbp)
mov    -0x1(%rbp),%al
mov    %al,-0x211(%rbp)
mov    -0x211(%rbp),%al
mov    -0x220(%rbp),%rcx
mov    %al,%dl
and    $0xf5,%dl
lock cmpxchg %dl,(%rcx)
sete   %cl
mov    %al,-0x221(%rbp)
test   $0x1,%cl
mov    %al,-0x211(%rbp)
jne    196c <test_fetch_and_op+0x86c>
jmp    1939 <test_fetch_and_op+0x839>
mov    -0x221(%rbp),%al
mov    %al,-0x1(%rbp)
lea    -0x4(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x230(%rbp)
mov    -0x3(%rbp),%al
mov    %al,-0x222(%rbp)
mov    -0x222(%rbp),%al
mov    -0x230(%rbp),%rcx
mov    %al,%dl
and    $0xf5,%dl
lock cmpxchg %dl,(%rcx)
sete   %cl
mov    %al,-0x231(%rbp)
test   $0x1,%cl
mov    %al,-0x222(%rbp)
jne    19c0 <test_fetch_and_op+0x8c0>
jmp    198d <test_fetch_and_op+0x88d>
mov    -0x231(%rbp),%al
mov    %al,-0x3(%rbp)
lea    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x240(%rbp)
mov    -0x6(%rbp),%ax
mov    %ax,-0x234(%rbp)
mov    -0x234(%rbp),%ax
mov    -0x240(%rbp),%rcx
mov    %ax,%dx
mov    %edx,-0x24c(%rbp)
and    $0xfff5,%edx
mov    %edx,-0x248(%rbp)
lock cmpxchg %dx,(%rcx)
sete   %cl
mov    %ax,-0x242(%rbp)
test   $0x1,%cl
mov    %ax,-0x234(%rbp)
jne    1a2a <test_fetch_and_op+0x92a>
jmp    19e3 <test_fetch_and_op+0x8e3>
mov    -0x242(%rbp),%ax
mov    %ax,-0x6(%rbp)
lea    -0xc(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x258(%rbp)
mov    -0xa(%rbp),%ax
mov    %ax,-0x24e(%rbp)
mov    -0x24e(%rbp),%ax
mov    -0x258(%rbp),%rcx
mov    %ax,%dx
mov    %edx,-0x264(%rbp)
and    $0xfff5,%edx
mov    %edx,-0x260(%rbp)
lock cmpxchg %dx,(%rcx)
sete   %cl
mov    %ax,-0x25a(%rbp)
test   $0x1,%cl
mov    %ax,-0x24e(%rbp)
jne    1a96 <test_fetch_and_op+0x996>
jmp    1a4f <test_fetch_and_op+0x94f>
mov    -0x25a(%rbp),%ax
mov    %ax,-0xa(%rbp)
lea    -0x14(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x270(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x268(%rbp)
mov    -0x268(%rbp),%eax
mov    -0x270(%rbp),%rcx
mov    %eax,%edx
and    $0xfffffff5,%edx
lock cmpxchg %edx,(%rcx)
sete   %cl
mov    %eax,-0x274(%rbp)
test   $0x1,%cl
mov    %eax,-0x268(%rbp)
jne    1aec <test_fetch_and_op+0x9ec>
jmp    1ab9 <test_fetch_and_op+0x9b9>
mov    -0x274(%rbp),%eax
mov    %eax,-0x10(%rbp)
lea    -0x1c(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x280(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x278(%rbp)
mov    -0x278(%rbp),%eax
mov    -0x280(%rbp),%rcx
mov    %eax,%edx
and    $0xfffffff5,%edx
lock cmpxchg %edx,(%rcx)
sete   %cl
mov    %eax,-0x284(%rbp)
test   $0x1,%cl
mov    %eax,-0x278(%rbp)
jne    1b40 <test_fetch_and_op+0xa40>
jmp    1b0d <test_fetch_and_op+0xa0d>
mov    -0x284(%rbp),%eax
mov    %eax,-0x18(%rbp)
lea    -0x30(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x298(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x290(%rbp)
mov    -0x290(%rbp),%rax
mov    -0x298(%rbp),%rcx
mov    %rax,%rdx
and    $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x2a0(%rbp)
test   $0x1,%cl
mov    %rax,-0x290(%rbp)
jne    1b9c <test_fetch_and_op+0xa9c>
jmp    1b63 <test_fetch_and_op+0xa63>
mov    -0x2a0(%rbp),%rax
mov    %rax,-0x28(%rbp)
lea    -0x40(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x2b0(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x2a8(%rbp)
mov    -0x2a8(%rbp),%rax
mov    -0x2b0(%rbp),%rcx
mov    %rax,%rdx
and    $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x2b8(%rbp)
test   $0x1,%cl
mov    %rax,-0x2a8(%rbp)
jne    1bfa <test_fetch_and_op+0xafa>
jmp    1bc1 <test_fetch_and_op+0xac1>
mov    -0x2b8(%rbp),%rax
mov    %rax,-0x38(%rbp)
lea    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x2c8(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x2c0(%rbp)
mov    -0x2c0(%rbp),%rax
mov    -0x2c8(%rbp),%rcx
mov    %rax,%rdx
and    $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x2d0(%rbp)
test   $0x1,%cl
mov    %rax,-0x2c0(%rbp)
jne    1c58 <test_fetch_and_op+0xb58>
jmp    1c1f <test_fetch_and_op+0xb1f>
mov    -0x2d0(%rbp),%rax
mov    %rax,-0x48(%rbp)
lea    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x2e0(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x2d8(%rbp)
mov    -0x2d8(%rbp),%rax
mov    -0x2e0(%rbp),%rcx
mov    %rax,%rdx
and    $0xfffffffffffffff5,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x2e8(%rbp)
test   $0x1,%cl
mov    %rax,-0x2d8(%rbp)
jne    1cb6 <test_fetch_and_op+0xbb6>
jmp    1c7d <test_fetch_and_op+0xb7d>
mov    -0x2e8(%rbp),%rax
mov    %rax,-0x58(%rbp)
lea    -0x2(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x2f8(%rbp)
mov    -0x1(%rbp),%al
mov    %al,-0x2e9(%rbp)
mov    -0x2e9(%rbp),%al
mov    -0x2f8(%rbp),%rcx
mov    %al,%dl
not    %dl
mov    %dl,-0x2fa(%rbp)
or     $0xa,%dl
lock cmpxchg %dl,(%rcx)
sete   %cl
mov    %al,-0x2f9(%rbp)
test   $0x1,%cl
mov    %al,-0x2e9(%rbp)
jne    1d14 <test_fetch_and_op+0xc14>
jmp    1cd9 <test_fetch_and_op+0xbd9>
mov    -0x2f9(%rbp),%al
mov    %al,-0x1(%rbp)
lea    -0x4(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x308(%rbp)
mov    -0x3(%rbp),%al
mov    %al,-0x2fb(%rbp)
mov    -0x2fb(%rbp),%al
mov    -0x308(%rbp),%rcx
mov    %al,%dl
not    %dl
mov    %dl,-0x30a(%rbp)
or     $0xa,%dl
lock cmpxchg %dl,(%rcx)
sete   %cl
mov    %al,-0x309(%rbp)
test   $0x1,%cl
mov    %al,-0x2fb(%rbp)
jne    1d70 <test_fetch_and_op+0xc70>
jmp    1d35 <test_fetch_and_op+0xc35>
mov    -0x309(%rbp),%al
mov    %al,-0x3(%rbp)
lea    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x318(%rbp)
mov    -0x6(%rbp),%ax
mov    %ax,-0x30c(%rbp)
mov    -0x30c(%rbp),%ax
mov    -0x318(%rbp),%rcx
mov    %ax,%dx
mov    %edx,-0x328(%rbp)
not    %edx
mov    %edx,-0x324(%rbp)
or     $0xa,%edx
mov    %edx,-0x320(%rbp)
lock cmpxchg %dx,(%rcx)
sete   %cl
mov    %ax,-0x31a(%rbp)
test   $0x1,%cl
mov    %ax,-0x30c(%rbp)
jne    1ddf <test_fetch_and_op+0xcdf>
jmp    1d93 <test_fetch_and_op+0xc93>
mov    -0x31a(%rbp),%ax
mov    %ax,-0x6(%rbp)
lea    -0xc(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x338(%rbp)
mov    -0xa(%rbp),%ax
mov    %ax,-0x32a(%rbp)
mov    -0x32a(%rbp),%ax
mov    -0x338(%rbp),%rcx
mov    %ax,%dx
mov    %edx,-0x348(%rbp)
not    %edx
mov    %edx,-0x344(%rbp)
or     $0xa,%edx
mov    %edx,-0x340(%rbp)
lock cmpxchg %dx,(%rcx)
sete   %cl
mov    %ax,-0x33a(%rbp)
test   $0x1,%cl
mov    %ax,-0x32a(%rbp)
jne    1e50 <test_fetch_and_op+0xd50>
jmp    1e04 <test_fetch_and_op+0xd04>
mov    -0x33a(%rbp),%ax
mov    %ax,-0xa(%rbp)
lea    -0x14(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x358(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x34c(%rbp)
mov    -0x34c(%rbp),%eax
mov    -0x358(%rbp),%rcx
mov    %eax,%edx
not    %edx
mov    %edx,-0x360(%rbp)
or     $0xa,%edx
lock cmpxchg %edx,(%rcx)
sete   %cl
mov    %eax,-0x35c(%rbp)
test   $0x1,%cl
mov    %eax,-0x34c(%rbp)
jne    1eae <test_fetch_and_op+0xdae>
jmp    1e73 <test_fetch_and_op+0xd73>
mov    -0x35c(%rbp),%eax
mov    %eax,-0x10(%rbp)
lea    -0x1c(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x370(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x364(%rbp)
mov    -0x364(%rbp),%eax
mov    -0x370(%rbp),%rcx
mov    %eax,%edx
not    %edx
mov    %edx,-0x378(%rbp)
or     $0xa,%edx
lock cmpxchg %edx,(%rcx)
sete   %cl
mov    %eax,-0x374(%rbp)
test   $0x1,%cl
mov    %eax,-0x364(%rbp)
jne    1f0a <test_fetch_and_op+0xe0a>
jmp    1ecf <test_fetch_and_op+0xdcf>
mov    -0x374(%rbp),%eax
mov    %eax,-0x18(%rbp)
lea    -0x30(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x388(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x380(%rbp)
mov    -0x380(%rbp),%rax
mov    -0x388(%rbp),%rcx
mov    %rax,%rdx
not    %rdx
mov    %rdx,-0x398(%rbp)
or     $0xa,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x390(%rbp)
test   $0x1,%cl
mov    %rax,-0x380(%rbp)
jne    1f70 <test_fetch_and_op+0xe70>
jmp    1f2d <test_fetch_and_op+0xe2d>
mov    -0x390(%rbp),%rax
mov    %rax,-0x28(%rbp)
lea    -0x40(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x3a8(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x3a0(%rbp)
mov    -0x3a0(%rbp),%rax
mov    -0x3a8(%rbp),%rcx
mov    %rax,%rdx
not    %rdx
mov    %rdx,-0x3b8(%rbp)
or     $0xa,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x3b0(%rbp)
test   $0x1,%cl
mov    %rax,-0x3a0(%rbp)
jne    1fd8 <test_fetch_and_op+0xed8>
jmp    1f95 <test_fetch_and_op+0xe95>
mov    -0x3b0(%rbp),%rax
mov    %rax,-0x38(%rbp)
lea    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x3c8(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x3c0(%rbp)
mov    -0x3c0(%rbp),%rax
mov    -0x3c8(%rbp),%rcx
mov    %rax,%rdx
not    %rdx
mov    %rdx,-0x3d8(%rbp)
or     $0xa,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x3d0(%rbp)
test   $0x1,%cl
mov    %rax,-0x3c0(%rbp)
jne    2040 <test_fetch_and_op+0xf40>
jmp    1ffd <test_fetch_and_op+0xefd>
mov    -0x3d0(%rbp),%rax
mov    %rax,-0x48(%rbp)
lea    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x3e8(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x3e0(%rbp)
mov    -0x3e0(%rbp),%rax
mov    -0x3e8(%rbp),%rcx
mov    %rax,%rdx
not    %rdx
mov    %rdx,-0x3f8(%rbp)
or     $0xa,%rdx
lock cmpxchg %rdx,(%rcx)
sete   %cl
mov    %rax,-0x3f0(%rbp)
test   $0x1,%cl
mov    %rax,-0x3e0(%rbp)
jne    20a8 <test_fetch_and_op+0xfa8>
jmp    2065 <test_fetch_and_op+0xf65>
mov    -0x3f0(%rbp),%rax
mov    %rax,-0x58(%rbp)
add    $0x380,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_fetch_and_op>:
mov    $0xf5,%al
mov    $0xf5,%cl
lock xadd %cl,-0x61(%rsp)
mov    %cl,-0x61(%rsp)
lock xadd %al,-0x63(%rsp)
mov    %al,-0x63(%rsp)
mov    $0xfff5,%ax
mov    $0xfff5,%cx
lock xadd %cx,-0x5a(%rsp)
mov    %cx,-0x5a(%rsp)
lock xadd %ax,-0x5e(%rsp)
mov    %ax,-0x5e(%rsp)
mov    $0xfffffff5,%eax
mov    $0xfffffff5,%ecx
lock xadd %ecx,-0x4c(%rsp)
mov    %ecx,-0x4c(%rsp)
lock xadd %eax,-0x54(%rsp)
mov    %eax,-0x54(%rsp)
mov    $0xfffffffffffffff5,%rax
lock xadd %rax,-0x20(%rsp)
mov    $0xfffffffffffffff5,%rcx
mov    %rax,-0x20(%rsp)
mov    $0xfffffffffffffff5,%rax
lock xadd %rax,-0x30(%rsp)
mov    %rax,-0x30(%rsp)
mov    $0xfffffffffffffff5,%rax
lock xadd %rax,-0x40(%rsp)
mov    %rax,-0x40(%rsp)
lock xadd %rcx,-0x10(%rsp)
mov    %rcx,-0x10(%rsp)
mov    $0xb,%al
mov    $0xb,%cl
lock xadd %cl,-0x61(%rsp)
mov    %cl,-0x61(%rsp)
lock xadd %al,-0x63(%rsp)
mov    %al,-0x63(%rsp)
mov    $0xb,%ax
mov    $0xb,%cx
lock xadd %cx,-0x5a(%rsp)
mov    %cx,-0x5a(%rsp)
lock xadd %ax,-0x5e(%rsp)
mov    %ax,-0x5e(%rsp)
mov    $0xb,%eax
mov    $0xb,%ecx
lock xadd %ecx,-0x4c(%rsp)
mov    %ecx,-0x4c(%rsp)
lock xadd %eax,-0x54(%rsp)
mov    %eax,-0x54(%rsp)
mov    $0xb,%eax
lock xadd %rax,-0x20(%rsp)
mov    $0xb,%ecx
mov    %rax,-0x20(%rsp)
mov    $0xb,%eax
lock xadd %rax,-0x30(%rsp)
mov    %rax,-0x30(%rsp)
mov    $0xb,%eax
lock xadd %rax,-0x40(%rsp)
mov    %rax,-0x40(%rsp)
lock xadd %rcx,-0x10(%rsp)
mov    %rcx,-0x10(%rsp)
mov    -0x61(%rsp),%al
mov    %eax,%ecx
or     $0xf5,%cl
lock cmpxchg %cl,-0x61(%rsp)
jne    1240 <test_fetch_and_op+0x140>
mov    %al,-0x61(%rsp)
mov    -0x63(%rsp),%al
cs nopw 0x0(%rax,%rax,1)
nop
mov    %eax,%ecx
or     $0xf5,%cl
lock cmpxchg %cl,-0x63(%rsp)
jne    1260 <test_fetch_and_op+0x160>
mov    %al,-0x63(%rsp)
movzwl -0x5a(%rsp),%eax
cs nopw 0x0(%rax,%rax,1)
mov    %eax,%ecx
or     $0xfff5,%ecx
lock cmpxchg %cx,-0x5a(%rsp)
jne    1280 <test_fetch_and_op+0x180>
mov    %ax,-0x5a(%rsp)
movzwl -0x5e(%rsp),%eax
nopl   0x0(%rax,%rax,1)
mov    %eax,%ecx
or     $0xfff5,%ecx
lock cmpxchg %cx,-0x5e(%rsp)
jne    12a0 <test_fetch_and_op+0x1a0>
mov    %ax,-0x5e(%rsp)
mov    -0x4c(%rsp),%eax
nopw   0x0(%rax,%rax,1)
mov    %eax,%ecx
or     $0xfffffff5,%ecx
lock cmpxchg %ecx,-0x4c(%rsp)
jne    12c0 <test_fetch_and_op+0x1c0>
mov    %eax,-0x4c(%rsp)
mov    -0x54(%rsp),%eax
cs nopw 0x0(%rax,%rax,1)
nop
mov    %eax,%ecx
or     $0xfffffff5,%ecx
lock cmpxchg %ecx,-0x54(%rsp)
jne    12e0 <test_fetch_and_op+0x1e0>
mov    %eax,-0x54(%rsp)
mov    -0x20(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
mov    %rax,%rcx
or     $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x20(%rsp)
jne    1300 <test_fetch_and_op+0x200>
mov    %rax,-0x20(%rsp)
mov    -0x30(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
or     $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x30(%rsp)
jne    1320 <test_fetch_and_op+0x220>
mov    %rax,-0x30(%rsp)
mov    -0x40(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
or     $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x40(%rsp)
jne    1340 <test_fetch_and_op+0x240>
mov    %rax,-0x40(%rsp)
mov    -0x10(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
or     $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x10(%rsp)
jne    1360 <test_fetch_and_op+0x260>
mov    %rax,-0x10(%rsp)
mov    -0x61(%rsp),%al
nopl   0x0(%rax)
mov    %eax,%ecx
xor    $0xf5,%cl
lock cmpxchg %cl,-0x61(%rsp)
jne    1380 <test_fetch_and_op+0x280>
mov    %al,-0x61(%rsp)
mov    -0x63(%rsp),%al
cs nopw 0x0(%rax,%rax,1)
nop
mov    %eax,%ecx
xor    $0xf5,%cl
lock cmpxchg %cl,-0x63(%rsp)
jne    13a0 <test_fetch_and_op+0x2a0>
mov    %al,-0x63(%rsp)
movzwl -0x5a(%rsp),%eax
cs nopw 0x0(%rax,%rax,1)
mov    %eax,%ecx
xor    $0xfff5,%ecx
lock cmpxchg %cx,-0x5a(%rsp)
jne    13c0 <test_fetch_and_op+0x2c0>
mov    %ax,-0x5a(%rsp)
movzwl -0x5e(%rsp),%eax
nopl   0x0(%rax,%rax,1)
mov    %eax,%ecx
xor    $0xfff5,%ecx
lock cmpxchg %cx,-0x5e(%rsp)
jne    13e0 <test_fetch_and_op+0x2e0>
mov    %ax,-0x5e(%rsp)
mov    -0x4c(%rsp),%eax
nopw   0x0(%rax,%rax,1)
mov    %eax,%ecx
xor    $0xfffffff5,%ecx
lock cmpxchg %ecx,-0x4c(%rsp)
jne    1400 <test_fetch_and_op+0x300>
mov    %eax,-0x4c(%rsp)
mov    -0x54(%rsp),%eax
cs nopw 0x0(%rax,%rax,1)
nop
mov    %eax,%ecx
xor    $0xfffffff5,%ecx
lock cmpxchg %ecx,-0x54(%rsp)
jne    1420 <test_fetch_and_op+0x320>
mov    %eax,-0x54(%rsp)
mov    -0x20(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
mov    %rax,%rcx
xor    $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x20(%rsp)
jne    1440 <test_fetch_and_op+0x340>
mov    %rax,-0x20(%rsp)
mov    -0x30(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
xor    $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x30(%rsp)
jne    1460 <test_fetch_and_op+0x360>
mov    %rax,-0x30(%rsp)
mov    -0x40(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
xor    $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x40(%rsp)
jne    1480 <test_fetch_and_op+0x380>
mov    %rax,-0x40(%rsp)
mov    -0x10(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
xor    $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x10(%rsp)
jne    14a0 <test_fetch_and_op+0x3a0>
mov    %rax,-0x10(%rsp)
mov    -0x61(%rsp),%al
nopl   0x0(%rax)
mov    %eax,%ecx
and    $0xf5,%cl
lock cmpxchg %cl,-0x61(%rsp)
jne    14c0 <test_fetch_and_op+0x3c0>
mov    %al,-0x61(%rsp)
mov    -0x63(%rsp),%al
cs nopw 0x0(%rax,%rax,1)
nop
mov    %eax,%ecx
and    $0xf5,%cl
lock cmpxchg %cl,-0x63(%rsp)
jne    14e0 <test_fetch_and_op+0x3e0>
mov    %al,-0x63(%rsp)
movzwl -0x5a(%rsp),%eax
cs nopw 0x0(%rax,%rax,1)
mov    %eax,%ecx
and    $0xfff5,%ecx
lock cmpxchg %cx,-0x5a(%rsp)
jne    1500 <test_fetch_and_op+0x400>
mov    %ax,-0x5a(%rsp)
movzwl -0x5e(%rsp),%eax
nopl   0x0(%rax,%rax,1)
mov    %eax,%ecx
and    $0xfff5,%ecx
lock cmpxchg %cx,-0x5e(%rsp)
jne    1520 <test_fetch_and_op+0x420>
mov    %ax,-0x5e(%rsp)
mov    -0x4c(%rsp),%eax
nopw   0x0(%rax,%rax,1)
mov    %eax,%ecx
and    $0xfffffff5,%ecx
lock cmpxchg %ecx,-0x4c(%rsp)
jne    1540 <test_fetch_and_op+0x440>
mov    %eax,-0x4c(%rsp)
mov    -0x54(%rsp),%eax
cs nopw 0x0(%rax,%rax,1)
nop
mov    %eax,%ecx
and    $0xfffffff5,%ecx
lock cmpxchg %ecx,-0x54(%rsp)
jne    1560 <test_fetch_and_op+0x460>
mov    %eax,-0x54(%rsp)
mov    -0x20(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
mov    %rax,%rcx
and    $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x20(%rsp)
jne    1580 <test_fetch_and_op+0x480>
mov    %rax,-0x20(%rsp)
mov    -0x30(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
and    $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x30(%rsp)
jne    15a0 <test_fetch_and_op+0x4a0>
mov    %rax,-0x30(%rsp)
mov    -0x40(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
and    $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x40(%rsp)
jne    15c0 <test_fetch_and_op+0x4c0>
mov    %rax,-0x40(%rsp)
mov    -0x10(%rsp),%rax
nopw   0x0(%rax,%rax,1)
mov    %rax,%rcx
and    $0xfffffffffffffff5,%rcx
lock cmpxchg %rcx,-0x10(%rsp)
jne    15e0 <test_fetch_and_op+0x4e0>
mov    %rax,-0x10(%rsp)
mov    -0x61(%rsp),%al
nopl   0x0(%rax)
mov    %eax,%ecx
not    %cl
or     $0xa,%cl
lock cmpxchg %cl,-0x61(%rsp)
jne    1600 <test_fetch_and_op+0x500>
mov    %al,-0x61(%rsp)
mov    -0x63(%rsp),%al
nopw   0x0(%rax,%rax,1)
mov    %eax,%ecx
not    %cl
or     $0xa,%cl
lock cmpxchg %cl,-0x63(%rsp)
jne    1620 <test_fetch_and_op+0x520>
mov    %al,-0x63(%rsp)
movzwl -0x5a(%rsp),%eax
nopl   0x0(%rax,%rax,1)
mov    %eax,%ecx
not    %ecx
or     $0xa,%ecx
lock cmpxchg %cx,-0x5a(%rsp)
jne    1640 <test_fetch_and_op+0x540>
mov    %ax,-0x5a(%rsp)
movzwl -0x5e(%rsp),%eax
nopw   0x0(%rax,%rax,1)
mov    %eax,%ecx
not    %ecx
or     $0xa,%ecx
lock cmpxchg %cx,-0x5e(%rsp)
jne    1660 <test_fetch_and_op+0x560>
mov    %ax,-0x5e(%rsp)
mov    -0x4c(%rsp),%eax
nopl   0x0(%rax)
mov    %eax,%ecx
not    %ecx
or     $0xa,%ecx
lock cmpxchg %ecx,-0x4c(%rsp)
jne    1680 <test_fetch_and_op+0x580>
mov    %eax,-0x4c(%rsp)
mov    -0x54(%rsp),%eax
nopw   0x0(%rax,%rax,1)
mov    %eax,%ecx
not    %ecx
or     $0xa,%ecx
lock cmpxchg %ecx,-0x54(%rsp)
jne    16a0 <test_fetch_and_op+0x5a0>
mov    %eax,-0x54(%rsp)
mov    -0x20(%rsp),%rax
nopl   0x0(%rax,%rax,1)
mov    %rax,%rcx
not    %rcx
or     $0xa,%rcx
lock cmpxchg %rcx,-0x20(%rsp)
jne    16c0 <test_fetch_and_op+0x5c0>
mov    %rax,-0x20(%rsp)
mov    -0x30(%rsp),%rax
nopl   (%rax)
mov    %rax,%rcx
not    %rcx
or     $0xa,%rcx
lock cmpxchg %rcx,-0x30(%rsp)
jne    16e0 <test_fetch_and_op+0x5e0>
mov    %rax,-0x30(%rsp)
mov    -0x40(%rsp),%rax
nopl   (%rax)
mov    %rax,%rcx
not    %rcx
or     $0xa,%rcx
lock cmpxchg %rcx,-0x40(%rsp)
jne    1700 <test_fetch_and_op+0x600>
mov    %rax,-0x40(%rsp)
mov    -0x10(%rsp),%rax
nopl   (%rax)
mov    %rax,%rcx
not    %rcx
or     $0xa,%rcx
lock cmpxchg %rcx,-0x10(%rsp)
jne    1720 <test_fetch_and_op+0x620>
ret

LLVM IR (-O0):
define void @test_fetch_and_op() {
%1 = alloca [2 x i8]
%2 = alloca [2 x i8]
%3 = alloca [2 x i16]
%4 = alloca [2 x i16]
%5 = alloca [2 x i32]
%6 = alloca [2 x i32]
%7 = alloca [2 x i64]
%8 = alloca [2 x i64]
%9 = alloca [2 x i64]
%10 = alloca [2 x i64]
%11 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
%12 = atomicrmw add i8* %11, i8 -11 seq_cst
%13 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
store i8 %12, i8* %13
%14 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
%15 = atomicrmw add i8* %14, i8 -11 seq_cst
%16 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
store i8 %15, i8* %16
%17 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
%18 = atomicrmw add i16* %17, i16 -11 seq_cst
%19 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
store i16 %18, i16* %19
%20 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
%21 = atomicrmw add i16* %20, i16 -11 seq_cst
%22 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
store i16 %21, i16* %22
%23 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
%24 = atomicrmw add i32* %23, i32 -11 seq_cst
%25 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
store i32 %24, i32* %25
%26 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
%27 = atomicrmw add i32* %26, i32 -11 seq_cst
%28 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
store i32 %27, i32* %28
%29 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
%30 = atomicrmw add i64* %29, i64 -11 seq_cst
%31 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
store i64 %30, i64* %31
%32 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
%33 = atomicrmw add i64* %32, i64 -11 seq_cst
%34 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
store i64 %33, i64* %34
%35 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
%36 = atomicrmw add i64* %35, i64 -11 seq_cst
%37 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
store i64 %36, i64* %37
%38 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
%39 = atomicrmw add i64* %38, i64 -11 seq_cst
%40 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
store i64 %39, i64* %40
%41 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
%42 = atomicrmw sub i8* %41, i8 -11 seq_cst
%43 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
store i8 %42, i8* %43
%44 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
%45 = atomicrmw sub i8* %44, i8 -11 seq_cst
%46 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
store i8 %45, i8* %46
%47 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
%48 = atomicrmw sub i16* %47, i16 -11 seq_cst
%49 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
store i16 %48, i16* %49
%50 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
%51 = atomicrmw sub i16* %50, i16 -11 seq_cst
%52 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
store i16 %51, i16* %52
%53 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
%54 = atomicrmw sub i32* %53, i32 -11 seq_cst
%55 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
store i32 %54, i32* %55
%56 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
%57 = atomicrmw sub i32* %56, i32 -11 seq_cst
%58 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
store i32 %57, i32* %58
%59 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
%60 = atomicrmw sub i64* %59, i64 -11 seq_cst
%61 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
store i64 %60, i64* %61
%62 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
%63 = atomicrmw sub i64* %62, i64 -11 seq_cst
%64 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
store i64 %63, i64* %64
%65 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
%66 = atomicrmw sub i64* %65, i64 -11 seq_cst
%67 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
store i64 %66, i64* %67
%68 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
%69 = atomicrmw sub i64* %68, i64 -11 seq_cst
%70 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
store i64 %69, i64* %70
%71 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
%72 = atomicrmw or i8* %71, i8 -11 seq_cst
%73 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
store i8 %72, i8* %73
%74 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
%75 = atomicrmw or i8* %74, i8 -11 seq_cst
%76 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
store i8 %75, i8* %76
%77 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
%78 = atomicrmw or i16* %77, i16 -11 seq_cst
%79 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
store i16 %78, i16* %79
%80 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
%81 = atomicrmw or i16* %80, i16 -11 seq_cst
%82 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
store i16 %81, i16* %82
%83 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
%84 = atomicrmw or i32* %83, i32 -11 seq_cst
%85 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
store i32 %84, i32* %85
%86 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
%87 = atomicrmw or i32* %86, i32 -11 seq_cst
%88 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
store i32 %87, i32* %88
%89 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
%90 = atomicrmw or i64* %89, i64 -11 seq_cst
%91 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
store i64 %90, i64* %91
%92 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
%93 = atomicrmw or i64* %92, i64 -11 seq_cst
%94 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
store i64 %93, i64* %94
%95 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
%96 = atomicrmw or i64* %95, i64 -11 seq_cst
%97 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
store i64 %96, i64* %97
%98 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
%99 = atomicrmw or i64* %98, i64 -11 seq_cst
%100 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
store i64 %99, i64* %100
%101 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
%102 = atomicrmw xor i8* %101, i8 -11 seq_cst
%103 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
store i8 %102, i8* %103
%104 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
%105 = atomicrmw xor i8* %104, i8 -11 seq_cst
%106 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
store i8 %105, i8* %106
%107 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
%108 = atomicrmw xor i16* %107, i16 -11 seq_cst
%109 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
store i16 %108, i16* %109
%110 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
%111 = atomicrmw xor i16* %110, i16 -11 seq_cst
%112 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
store i16 %111, i16* %112
%113 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
%114 = atomicrmw xor i32* %113, i32 -11 seq_cst
%115 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
store i32 %114, i32* %115
%116 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
%117 = atomicrmw xor i32* %116, i32 -11 seq_cst
%118 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
store i32 %117, i32* %118
%119 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
%120 = atomicrmw xor i64* %119, i64 -11 seq_cst
%121 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
store i64 %120, i64* %121
%122 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
%123 = atomicrmw xor i64* %122, i64 -11 seq_cst
%124 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
store i64 %123, i64* %124
%125 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
%126 = atomicrmw xor i64* %125, i64 -11 seq_cst
%127 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
store i64 %126, i64* %127
%128 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
%129 = atomicrmw xor i64* %128, i64 -11 seq_cst
%130 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
store i64 %129, i64* %130
%131 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
%132 = atomicrmw and i8* %131, i8 -11 seq_cst
%133 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
store i8 %132, i8* %133
%134 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
%135 = atomicrmw and i8* %134, i8 -11 seq_cst
%136 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
store i8 %135, i8* %136
%137 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
%138 = atomicrmw and i16* %137, i16 -11 seq_cst
%139 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
store i16 %138, i16* %139
%140 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
%141 = atomicrmw and i16* %140, i16 -11 seq_cst
%142 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
store i16 %141, i16* %142
%143 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
%144 = atomicrmw and i32* %143, i32 -11 seq_cst
%145 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
store i32 %144, i32* %145
%146 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
%147 = atomicrmw and i32* %146, i32 -11 seq_cst
%148 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
store i32 %147, i32* %148
%149 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
%150 = atomicrmw and i64* %149, i64 -11 seq_cst
%151 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
store i64 %150, i64* %151
%152 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
%153 = atomicrmw and i64* %152, i64 -11 seq_cst
%154 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
store i64 %153, i64* %154
%155 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
%156 = atomicrmw and i64* %155, i64 -11 seq_cst
%157 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
store i64 %156, i64* %157
%158 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
%159 = atomicrmw and i64* %158, i64 -11 seq_cst
%160 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
store i64 %159, i64* %160
%161 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
%162 = atomicrmw nand i8* %161, i8 -11 seq_cst
%163 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
store i8 %162, i8* %163
%164 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
%165 = atomicrmw nand i8* %164, i8 -11 seq_cst
%166 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
store i8 %165, i8* %166
%167 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
%168 = atomicrmw nand i16* %167, i16 -11 seq_cst
%169 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
store i16 %168, i16* %169
%170 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
%171 = atomicrmw nand i16* %170, i16 -11 seq_cst
%172 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
store i16 %171, i16* %172
%173 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
%174 = atomicrmw nand i32* %173, i32 -11 seq_cst
%175 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
store i32 %174, i32* %175
%176 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
%177 = atomicrmw nand i32* %176, i32 -11 seq_cst
%178 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
store i32 %177, i32* %178
%179 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
%180 = atomicrmw nand i64* %179, i64 -11 seq_cst
%181 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
store i64 %180, i64* %181
%182 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
%183 = atomicrmw nand i64* %182, i64 -11 seq_cst
%184 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
store i64 %183, i64* %184
%185 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
%186 = atomicrmw nand i64* %185, i64 -11 seq_cst
%187 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
store i64 %186, i64* %187
%188 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
%189 = atomicrmw nand i64* %188, i64 -11 seq_cst
%190 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
store i64 %189, i64* %190
ret void
}

LLVM IR (-O2):
define void @test_fetch_and_op() {
%1 = alloca [2 x i8]
%2 = alloca [2 x i8]
%3 = alloca [2 x i16]
%4 = alloca [2 x i16]
%5 = alloca [2 x i32]
%6 = alloca [2 x i32]
%7 = alloca [2 x i64]
%8 = alloca [2 x i64]
%9 = alloca [2 x i64]
%10 = alloca [2 x i64]
%11 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 0
%12 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 0
%13 = bitcast [2 x i16]* %3 to i8*
%14 = bitcast [2 x i16]* %4 to i8*
%15 = bitcast [2 x i32]* %5 to i8*
%16 = bitcast [2 x i32]* %6 to i8*
%17 = bitcast [2 x i64]* %7 to i8*
%18 = bitcast [2 x i64]* %8 to i8*
%19 = bitcast [2 x i64]* %9 to i8*
%20 = bitcast [2 x i64]* %10 to i8*
%21 = getelementptr inbounds [2 x i8], [2 x i8]* %1, i64 0, i64 1
%22 = atomicrmw add i8* %21, i8 -11 seq_cst
store i8 %22, i8* %21
%23 = getelementptr inbounds [2 x i8], [2 x i8]* %2, i64 0, i64 1
%24 = atomicrmw add i8* %23, i8 -11 seq_cst
store i8 %24, i8* %23
%25 = getelementptr inbounds [2 x i16], [2 x i16]* %3, i64 0, i64 1
%26 = atomicrmw add i16* %25, i16 -11 seq_cst
store i16 %26, i16* %25
%27 = getelementptr inbounds [2 x i16], [2 x i16]* %4, i64 0, i64 1
%28 = atomicrmw add i16* %27, i16 -11 seq_cst
store i16 %28, i16* %27
%29 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 1
%30 = atomicrmw add i32* %29, i32 -11 seq_cst
store i32 %30, i32* %29
%31 = getelementptr inbounds [2 x i32], [2 x i32]* %6, i64 0, i64 1
%32 = atomicrmw add i32* %31, i32 -11 seq_cst
store i32 %32, i32* %31
%33 = getelementptr inbounds [2 x i64], [2 x i64]* %7, i64 0, i64 1
%34 = atomicrmw add i64* %33, i64 -11 seq_cst
store i64 %34, i64* %33
%35 = getelementptr inbounds [2 x i64], [2 x i64]* %8, i64 0, i64 1
%36 = atomicrmw add i64* %35, i64 -11 seq_cst
store i64 %36, i64* %35
%37 = getelementptr inbounds [2 x i64], [2 x i64]* %9, i64 0, i64 1
%38 = atomicrmw add i64* %37, i64 -11 seq_cst
store i64 %38, i64* %37
%39 = getelementptr inbounds [2 x i64], [2 x i64]* %10, i64 0, i64 1
%40 = atomicrmw add i64* %39, i64 -11 seq_cst
store i64 %40, i64* %39
%41 = atomicrmw sub i8* %21, i8 -11 seq_cst
store i8 %41, i8* %21
%42 = atomicrmw sub i8* %23, i8 -11 seq_cst
store i8 %42, i8* %23
%43 = atomicrmw sub i16* %25, i16 -11 seq_cst
store i16 %43, i16* %25
%44 = atomicrmw sub i16* %27, i16 -11 seq_cst
store i16 %44, i16* %27
%45 = atomicrmw sub i32* %29, i32 -11 seq_cst
store i32 %45, i32* %29
%46 = atomicrmw sub i32* %31, i32 -11 seq_cst
store i32 %46, i32* %31
%47 = atomicrmw sub i64* %33, i64 -11 seq_cst
store i64 %47, i64* %33
%48 = atomicrmw sub i64* %35, i64 -11 seq_cst
store i64 %48, i64* %35
%49 = atomicrmw sub i64* %37, i64 -11 seq_cst
store i64 %49, i64* %37
%50 = atomicrmw sub i64* %39, i64 -11 seq_cst
store i64 %50, i64* %39
%51 = atomicrmw or i8* %21, i8 -11 seq_cst
store i8 %51, i8* %21
%52 = atomicrmw or i8* %23, i8 -11 seq_cst
store i8 %52, i8* %23
%53 = atomicrmw or i16* %25, i16 -11 seq_cst
store i16 %53, i16* %25
%54 = atomicrmw or i16* %27, i16 -11 seq_cst
store i16 %54, i16* %27
%55 = atomicrmw or i32* %29, i32 -11 seq_cst
store i32 %55, i32* %29
%56 = atomicrmw or i32* %31, i32 -11 seq_cst
store i32 %56, i32* %31
%57 = atomicrmw or i64* %33, i64 -11 seq_cst
store i64 %57, i64* %33
%58 = atomicrmw or i64* %35, i64 -11 seq_cst
store i64 %58, i64* %35
%59 = atomicrmw or i64* %37, i64 -11 seq_cst
store i64 %59, i64* %37
%60 = atomicrmw or i64* %39, i64 -11 seq_cst
store i64 %60, i64* %39
%61 = atomicrmw xor i8* %21, i8 -11 seq_cst
store i8 %61, i8* %21
%62 = atomicrmw xor i8* %23, i8 -11 seq_cst
store i8 %62, i8* %23
%63 = atomicrmw xor i16* %25, i16 -11 seq_cst
store i16 %63, i16* %25
%64 = atomicrmw xor i16* %27, i16 -11 seq_cst
store i16 %64, i16* %27
%65 = atomicrmw xor i32* %29, i32 -11 seq_cst
store i32 %65, i32* %29
%66 = atomicrmw xor i32* %31, i32 -11 seq_cst
store i32 %66, i32* %31
%67 = atomicrmw xor i64* %33, i64 -11 seq_cst
store i64 %67, i64* %33
%68 = atomicrmw xor i64* %35, i64 -11 seq_cst
store i64 %68, i64* %35
%69 = atomicrmw xor i64* %37, i64 -11 seq_cst
store i64 %69, i64* %37
%70 = atomicrmw xor i64* %39, i64 -11 seq_cst
store i64 %70, i64* %39
%71 = atomicrmw and i8* %21, i8 -11 seq_cst
store i8 %71, i8* %21
%72 = atomicrmw and i8* %23, i8 -11 seq_cst
store i8 %72, i8* %23
%73 = atomicrmw and i16* %25, i16 -11 seq_cst
store i16 %73, i16* %25
%74 = atomicrmw and i16* %27, i16 -11 seq_cst
store i16 %74, i16* %27
%75 = atomicrmw and i32* %29, i32 -11 seq_cst
store i32 %75, i32* %29
%76 = atomicrmw and i32* %31, i32 -11 seq_cst
store i32 %76, i32* %31
%77 = atomicrmw and i64* %33, i64 -11 seq_cst
store i64 %77, i64* %33
%78 = atomicrmw and i64* %35, i64 -11 seq_cst
store i64 %78, i64* %35
%79 = atomicrmw and i64* %37, i64 -11 seq_cst
store i64 %79, i64* %37
%80 = atomicrmw and i64* %39, i64 -11 seq_cst
store i64 %80, i64* %39
%81 = atomicrmw nand i8* %21, i8 -11 seq_cst
store i8 %81, i8* %21
%82 = atomicrmw nand i8* %23, i8 -11 seq_cst
store i8 %82, i8* %23
%83 = atomicrmw nand i16* %25, i16 -11 seq_cst
store i16 %83, i16* %25
%84 = atomicrmw nand i16* %27, i16 -11 seq_cst
store i16 %84, i16* %27
%85 = atomicrmw nand i32* %29, i32 -11 seq_cst
store i32 %85, i32* %29
%86 = atomicrmw nand i32* %31, i32 -11 seq_cst
store i32 %86, i32* %31
%87 = atomicrmw nand i64* %33, i64 -11 seq_cst
store i64 %87, i64* %33
%88 = atomicrmw nand i64* %35, i64 -11 seq_cst
store i64 %88, i64* %35
%89 = atomicrmw nand i64* %37, i64 -11 seq_cst
store i64 %89, i64* %37
%90 = atomicrmw nand i64* %39, i64 -11 seq_cst
ret void
}