# Check 64bit HLE instructions .allow_index_reg .text _start: # Tests for op imm32 rax # Tests for op imm8 regb/m8 xacquire lock adcb $100,(%rcx) lock xacquire adcb $100,(%rcx) xrelease lock adcb $100,(%rcx) lock xrelease adcb $100,(%rcx) .byte 0xf0; .byte 0xf2; adcb $100,(%rcx) .byte 0xf0; .byte 0xf3; adcb $100,(%rcx) xacquire lock addb $100,(%rcx) lock xacquire addb $100,(%rcx) xrelease lock addb $100,(%rcx) lock xrelease addb $100,(%rcx) .byte 0xf0; .byte 0xf2; addb $100,(%rcx) .byte 0xf0; .byte 0xf3; addb $100,(%rcx) xacquire lock andb $100,(%rcx) lock xacquire andb $100,(%rcx) xrelease lock andb $100,(%rcx) lock xrelease andb $100,(%rcx) .byte 0xf0; .byte 0xf2; andb $100,(%rcx) .byte 0xf0; .byte 0xf3; andb $100,(%rcx) xrelease movb $100,(%rcx) xacquire lock orb $100,(%rcx) lock xacquire orb $100,(%rcx) xrelease lock orb $100,(%rcx) lock xrelease orb $100,(%rcx) .byte 0xf0; .byte 0xf2; orb $100,(%rcx) .byte 0xf0; .byte 0xf3; orb $100,(%rcx) xacquire lock sbbb $100,(%rcx) lock xacquire sbbb $100,(%rcx) xrelease lock sbbb $100,(%rcx) lock xrelease sbbb $100,(%rcx) .byte 0xf0; .byte 0xf2; sbbb $100,(%rcx) .byte 0xf0; .byte 0xf3; sbbb $100,(%rcx) xacquire lock subb $100,(%rcx) lock xacquire subb $100,(%rcx) xrelease lock subb $100,(%rcx) lock xrelease subb $100,(%rcx) .byte 0xf0; .byte 0xf2; subb $100,(%rcx) .byte 0xf0; .byte 0xf3; subb $100,(%rcx) xacquire lock xorb $100,(%rcx) lock xacquire xorb $100,(%rcx) xrelease lock xorb $100,(%rcx) lock xrelease xorb $100,(%rcx) .byte 0xf0; .byte 0xf2; xorb $100,(%rcx) .byte 0xf0; .byte 0xf3; xorb $100,(%rcx) # Tests for op imm16 regs/m16 xacquire lock adcw $1000,(%rcx) lock xacquire adcw $1000,(%rcx) xrelease lock adcw $1000,(%rcx) lock xrelease adcw $1000,(%rcx) .byte 0xf0; .byte 0xf2; adcw $1000,(%rcx) .byte 0xf0; .byte 0xf3; adcw $1000,(%rcx) xacquire lock addw $1000,(%rcx) lock xacquire addw $1000,(%rcx) xrelease lock addw $1000,(%rcx) lock xrelease addw $1000,(%rcx) .byte 0xf0; .byte 0xf2; addw $1000,(%rcx) .byte 0xf0; .byte 0xf3; addw $1000,(%rcx) xacquire lock andw $1000,(%rcx) lock xacquire andw $1000,(%rcx) xrelease lock andw $1000,(%rcx) lock xrelease andw $1000,(%rcx) .byte 0xf0; .byte 0xf2; andw $1000,(%rcx) .byte 0xf0; .byte 0xf3; andw $1000,(%rcx) xrelease movw $1000,(%rcx) xacquire lock orw $1000,(%rcx) lock xacquire orw $1000,(%rcx) xrelease lock orw $1000,(%rcx) lock xrelease orw $1000,(%rcx) .byte 0xf0; .byte 0xf2; orw $1000,(%rcx) .byte 0xf0; .byte 0xf3; orw $1000,(%rcx) xacquire lock sbbw $1000,(%rcx) lock xacquire sbbw $1000,(%rcx) xrelease lock sbbw $1000,(%rcx) lock xrelease sbbw $1000,(%rcx) .byte 0xf0; .byte 0xf2; sbbw $1000,(%rcx) .byte 0xf0; .byte 0xf3; sbbw $1000,(%rcx) xacquire lock subw $1000,(%rcx) lock xacquire subw $1000,(%rcx) xrelease lock subw $1000,(%rcx) lock xrelease subw $1000,(%rcx) .byte 0xf0; .byte 0xf2; subw $1000,(%rcx) .byte 0xf0; .byte 0xf3; subw $1000,(%rcx) xacquire lock xorw $1000,(%rcx) lock xacquire xorw $1000,(%rcx) xrelease lock xorw $1000,(%rcx) lock xrelease xorw $1000,(%rcx) .byte 0xf0; .byte 0xf2; xorw $1000,(%rcx) .byte 0xf0; .byte 0xf3; xorw $1000,(%rcx) # Tests for op imm32 regl/m32 xacquire lock adcl $10000000,(%rcx) lock xacquire adcl $10000000,(%rcx) xrelease lock adcl $10000000,(%rcx) lock xrelease adcl $10000000,(%rcx) .byte 0xf0; .byte 0xf2; adcl $10000000,(%rcx) .byte 0xf0; .byte 0xf3; adcl $10000000,(%rcx) xacquire lock addl $10000000,(%rcx) lock xacquire addl $10000000,(%rcx) xrelease lock addl $10000000,(%rcx) lock xrelease addl $10000000,(%rcx) .byte 0xf0; .byte 0xf2; addl $10000000,(%rcx) .byte 0xf0; .byte 0xf3; addl $10000000,(%rcx) xacquire lock andl $10000000,(%rcx) lock xacquire andl $10000000,(%rcx) xrelease lock andl $10000000,(%rcx) lock xrelease andl $10000000,(%rcx) .byte 0xf0; .byte 0xf2; andl $10000000,(%rcx) .byte 0xf0; .byte 0xf3; andl $10000000,(%rcx) xrelease movl $10000000,(%rcx) xacquire lock orl $10000000,(%rcx) lock xacquire orl $10000000,(%rcx) xrelease lock orl $10000000,(%rcx) lock xrelease orl $10000000,(%rcx) .byte 0xf0; .byte 0xf2; orl $10000000,(%rcx) .byte 0xf0; .byte 0xf3; orl $10000000,(%rcx) xacquire lock sbbl $10000000,(%rcx) lock xacquire sbbl $10000000,(%rcx) xrelease lock sbbl $10000000,(%rcx) lock xrelease sbbl $10000000,(%rcx) .byte 0xf0; .byte 0xf2; sbbl $10000000,(%rcx) .byte 0xf0; .byte 0xf3; sbbl $10000000,(%rcx) xacquire lock subl $10000000,(%rcx) lock xacquire subl $10000000,(%rcx) xrelease lock subl $10000000,(%rcx) lock xrelease subl $10000000,(%rcx) .byte 0xf0; .byte 0xf2; subl $10000000,(%rcx) .byte 0xf0; .byte 0xf3; subl $10000000,(%rcx) xacquire lock xorl $10000000,(%rcx) lock xacquire xorl $10000000,(%rcx) xrelease lock xorl $10000000,(%rcx) lock xrelease xorl $10000000,(%rcx) .byte 0xf0; .byte 0xf2; xorl $10000000,(%rcx) .byte 0xf0; .byte 0xf3; xorl $10000000,(%rcx) # Tests for op imm32 regq/m64 xacquire lock adcq $10000000,(%rcx) lock xacquire adcq $10000000,(%rcx) xrelease lock adcq $10000000,(%rcx) lock xrelease adcq $10000000,(%rcx) .byte 0xf0; .byte 0xf2; adcq $10000000,(%rcx) .byte 0xf0; .byte 0xf3; adcq $10000000,(%rcx) xacquire lock addq $10000000,(%rcx) lock xacquire addq $10000000,(%rcx) xrelease lock addq $10000000,(%rcx) lock xrelease addq $10000000,(%rcx) .byte 0xf0; .byte 0xf2; addq $10000000,(%rcx) .byte 0xf0; .byte 0xf3; addq $10000000,(%rcx) xacquire lock andq $10000000,(%rcx) lock xacquire andq $10000000,(%rcx) xrelease lock andq $10000000,(%rcx) lock xrelease andq $10000000,(%rcx) .byte 0xf0; .byte 0xf2; andq $10000000,(%rcx) .byte 0xf0; .byte 0xf3; andq $10000000,(%rcx) xrelease movq $10000000,(%rcx) xacquire lock orq $10000000,(%rcx) lock xacquire orq $10000000,(%rcx) xrelease lock orq $10000000,(%rcx) lock xrelease orq $10000000,(%rcx) .byte 0xf0; .byte 0xf2; orq $10000000,(%rcx) .byte 0xf0; .byte 0xf3; orq $10000000,(%rcx) xacquire lock sbbq $10000000,(%rcx) lock xacquire sbbq $10000000,(%rcx) xrelease lock sbbq $10000000,(%rcx) lock xrelease sbbq $10000000,(%rcx) .byte 0xf0; .byte 0xf2; sbbq $10000000,(%rcx) .byte 0xf0; .byte 0xf3; sbbq $10000000,(%rcx) xacquire lock subq $10000000,(%rcx) lock xacquire subq $10000000,(%rcx) xrelease lock subq $10000000,(%rcx) lock xrelease subq $10000000,(%rcx) .byte 0xf0; .byte 0xf2; subq $10000000,(%rcx) .byte 0xf0; .byte 0xf3; subq $10000000,(%rcx) xacquire lock xorq $10000000,(%rcx) lock xacquire xorq $10000000,(%rcx) xrelease lock xorq $10000000,(%rcx) lock xrelease xorq $10000000,(%rcx) .byte 0xf0; .byte 0xf2; xorq $10000000,(%rcx) .byte 0xf0; .byte 0xf3; xorq $10000000,(%rcx) # Tests for op imm8 regs/m16 xacquire lock adcw $100,(%rcx) lock xacquire adcw $100,(%rcx) xrelease lock adcw $100,(%rcx) lock xrelease adcw $100,(%rcx) .byte 0xf0; .byte 0xf2; adcw $100,(%rcx) .byte 0xf0; .byte 0xf3; adcw $100,(%rcx) xacquire lock addw $100,(%rcx) lock xacquire addw $100,(%rcx) xrelease lock addw $100,(%rcx) lock xrelease addw $100,(%rcx) .byte 0xf0; .byte 0xf2; addw $100,(%rcx) .byte 0xf0; .byte 0xf3; addw $100,(%rcx) xacquire lock andw $100,(%rcx) lock xacquire andw $100,(%rcx) xrelease lock andw $100,(%rcx) lock xrelease andw $100,(%rcx) .byte 0xf0; .byte 0xf2; andw $100,(%rcx) .byte 0xf0; .byte 0xf3; andw $100,(%rcx) xacquire lock btcw $100,(%rcx) lock xacquire btcw $100,(%rcx) xrelease lock btcw $100,(%rcx) lock xrelease btcw $100,(%rcx) .byte 0xf0; .byte 0xf2; btcw $100,(%rcx) .byte 0xf0; .byte 0xf3; btcw $100,(%rcx) xacquire lock btrw $100,(%rcx) lock xacquire btrw $100,(%rcx) xrelease lock btrw $100,(%rcx) lock xrelease btrw $100,(%rcx) .byte 0xf0; .byte 0xf2; btrw $100,(%rcx) .byte 0xf0; .byte 0xf3; btrw $100,(%rcx) xacquire lock btsw $100,(%rcx) lock xacquire btsw $100,(%rcx) xrelease lock btsw $100,(%rcx) lock xrelease btsw $100,(%rcx) .byte 0xf0; .byte 0xf2; btsw $100,(%rcx) .byte 0xf0; .byte 0xf3; btsw $100,(%rcx) xrelease movw $100,(%rcx) xacquire lock orw $100,(%rcx) lock xacquire orw $100,(%rcx) xrelease lock orw $100,(%rcx) lock xrelease orw $100,(%rcx) .byte 0xf0; .byte 0xf2; orw $100,(%rcx) .byte 0xf0; .byte 0xf3; orw $100,(%rcx) xacquire lock sbbw $100,(%rcx) lock xacquire sbbw $100,(%rcx) xrelease lock sbbw $100,(%rcx) lock xrelease sbbw $100,(%rcx) .byte 0xf0; .byte 0xf2; sbbw $100,(%rcx) .byte 0xf0; .byte 0xf3; sbbw $100,(%rcx) xacquire lock subw $100,(%rcx) lock xacquire subw $100,(%rcx) xrelease lock subw $100,(%rcx) lock xrelease subw $100,(%rcx) .byte 0xf0; .byte 0xf2; subw $100,(%rcx) .byte 0xf0; .byte 0xf3; subw $100,(%rcx) xacquire lock xorw $100,(%rcx) lock xacquire xorw $100,(%rcx) xrelease lock xorw $100,(%rcx) lock xrelease xorw $100,(%rcx) .byte 0xf0; .byte 0xf2; xorw $100,(%rcx) .byte 0xf0; .byte 0xf3; xorw $100,(%rcx) # Tests for op imm8 regl/m32 xacquire lock adcl $100,(%rcx) lock xacquire adcl $100,(%rcx) xrelease lock adcl $100,(%rcx) lock xrelease adcl $100,(%rcx) .byte 0xf0; .byte 0xf2; adcl $100,(%rcx) .byte 0xf0; .byte 0xf3; adcl $100,(%rcx) xacquire lock addl $100,(%rcx) lock xacquire addl $100,(%rcx) xrelease lock addl $100,(%rcx) lock xrelease addl $100,(%rcx) .byte 0xf0; .byte 0xf2; addl $100,(%rcx) .byte 0xf0; .byte 0xf3; addl $100,(%rcx) xacquire lock andl $100,(%rcx) lock xacquire andl $100,(%rcx) xrelease lock andl $100,(%rcx) lock xrelease andl $100,(%rcx) .byte 0xf0; .byte 0xf2; andl $100,(%rcx) .byte 0xf0; .byte 0xf3; andl $100,(%rcx) xacquire lock btcl $100,(%rcx) lock xacquire btcl $100,(%rcx) xrelease lock btcl $100,(%rcx) lock xrelease btcl $100,(%rcx) .byte 0xf0; .byte 0xf2; btcl $100,(%rcx) .byte 0xf0; .byte 0xf3; btcl $100,(%rcx) xacquire lock btrl $100,(%rcx) lock xacquire btrl $100,(%rcx) xrelease lock btrl $100,(%rcx) lock xrelease btrl $100,(%rcx) .byte 0xf0; .byte 0xf2; btrl $100,(%rcx) .byte 0xf0; .byte 0xf3; btrl $100,(%rcx) xacquire lock btsl $100,(%rcx) lock xacquire btsl $100,(%rcx) xrelease lock btsl $100,(%rcx) lock xrelease btsl $100,(%rcx) .byte 0xf0; .byte 0xf2; btsl $100,(%rcx) .byte 0xf0; .byte 0xf3; btsl $100,(%rcx) xrelease movl $100,(%rcx) xacquire lock orl $100,(%rcx) lock xacquire orl $100,(%rcx) xrelease lock orl $100,(%rcx) lock xrelease orl $100,(%rcx) .byte 0xf0; .byte 0xf2; orl $100,(%rcx) .byte 0xf0; .byte 0xf3; orl $100,(%rcx) xacquire lock sbbl $100,(%rcx) lock xacquire sbbl $100,(%rcx) xrelease lock sbbl $100,(%rcx) lock xrelease sbbl $100,(%rcx) .byte 0xf0; .byte 0xf2; sbbl $100,(%rcx) .byte 0xf0; .byte 0xf3; sbbl $100,(%rcx) xacquire lock subl $100,(%rcx) lock xacquire subl $100,(%rcx) xrelease lock subl $100,(%rcx) lock xrelease subl $100,(%rcx) .byte 0xf0; .byte 0xf2; subl $100,(%rcx) .byte 0xf0; .byte 0xf3; subl $100,(%rcx) xacquire lock xorl $100,(%rcx) lock xacquire xorl $100,(%rcx) xrelease lock xorl $100,(%rcx) lock xrelease xorl $100,(%rcx) .byte 0xf0; .byte 0xf2; xorl $100,(%rcx) .byte 0xf0; .byte 0xf3; xorl $100,(%rcx) # Tests for op imm8 regq/m64 xacquire lock adcq $100,(%rcx) lock xacquire adcq $100,(%rcx) xrelease lock adcq $100,(%rcx) lock xrelease adcq $100,(%rcx) .byte 0xf0; .byte 0xf2; adcq $100,(%rcx) .byte 0xf0; .byte 0xf3; adcq $100,(%rcx) xacquire lock addq $100,(%rcx) lock xacquire addq $100,(%rcx) xrelease lock addq $100,(%rcx) lock xrelease addq $100,(%rcx) .byte 0xf0; .byte 0xf2; addq $100,(%rcx) .byte 0xf0; .byte 0xf3; addq $100,(%rcx) xacquire lock andq $100,(%rcx) lock xacquire andq $100,(%rcx) xrelease lock andq $100,(%rcx) lock xrelease andq $100,(%rcx) .byte 0xf0; .byte 0xf2; andq $100,(%rcx) .byte 0xf0; .byte 0xf3; andq $100,(%rcx) xacquire lock btcq $100,(%rcx) lock xacquire btcq $100,(%rcx) xrelease lock btcq $100,(%rcx) lock xrelease btcq $100,(%rcx) .byte 0xf0; .byte 0xf2; btcq $100,(%rcx) .byte 0xf0; .byte 0xf3; btcq $100,(%rcx) xacquire lock btrq $100,(%rcx) lock xacquire btrq $100,(%rcx) xrelease lock btrq $100,(%rcx) lock xrelease btrq $100,(%rcx) .byte 0xf0; .byte 0xf2; btrq $100,(%rcx) .byte 0xf0; .byte 0xf3; btrq $100,(%rcx) xacquire lock btsq $100,(%rcx) lock xacquire btsq $100,(%rcx) xrelease lock btsq $100,(%rcx) lock xrelease btsq $100,(%rcx) .byte 0xf0; .byte 0xf2; btsq $100,(%rcx) .byte 0xf0; .byte 0xf3; btsq $100,(%rcx) xrelease movq $100,(%rcx) xacquire lock orq $100,(%rcx) lock xacquire orq $100,(%rcx) xrelease lock orq $100,(%rcx) lock xrelease orq $100,(%rcx) .byte 0xf0; .byte 0xf2; orq $100,(%rcx) .byte 0xf0; .byte 0xf3; orq $100,(%rcx) xacquire lock sbbq $100,(%rcx) lock xacquire sbbq $100,(%rcx) xrelease lock sbbq $100,(%rcx) lock xrelease sbbq $100,(%rcx) .byte 0xf0; .byte 0xf2; sbbq $100,(%rcx) .byte 0xf0; .byte 0xf3; sbbq $100,(%rcx) xacquire lock subq $100,(%rcx) lock xacquire subq $100,(%rcx) xrelease lock subq $100,(%rcx) lock xrelease subq $100,(%rcx) .byte 0xf0; .byte 0xf2; subq $100,(%rcx) .byte 0xf0; .byte 0xf3; subq $100,(%rcx) xacquire lock xorq $100,(%rcx) lock xacquire xorq $100,(%rcx) xrelease lock xorq $100,(%rcx) lock xrelease xorq $100,(%rcx) .byte 0xf0; .byte 0xf2; xorq $100,(%rcx) .byte 0xf0; .byte 0xf3; xorq $100,(%rcx) # Tests for op imm8 regb/m8 xacquire lock adcb $100,(%rcx) lock xacquire adcb $100,(%rcx) xrelease lock adcb $100,(%rcx) lock xrelease adcb $100,(%rcx) .byte 0xf0; .byte 0xf2; adcb $100,(%rcx) .byte 0xf0; .byte 0xf3; adcb $100,(%rcx) xacquire lock addb $100,(%rcx) lock xacquire addb $100,(%rcx) xrelease lock addb $100,(%rcx) lock xrelease addb $100,(%rcx) .byte 0xf0; .byte 0xf2; addb $100,(%rcx) .byte 0xf0; .byte 0xf3; addb $100,(%rcx) xacquire lock andb $100,(%rcx) lock xacquire andb $100,(%rcx) xrelease lock andb $100,(%rcx) lock xrelease andb $100,(%rcx) .byte 0xf0; .byte 0xf2; andb $100,(%rcx) .byte 0xf0; .byte 0xf3; andb $100,(%rcx) xrelease movb $100,(%rcx) xacquire lock orb $100,(%rcx) lock xacquire orb $100,(%rcx) xrelease lock orb $100,(%rcx) lock xrelease orb $100,(%rcx) .byte 0xf0; .byte 0xf2; orb $100,(%rcx) .byte 0xf0; .byte 0xf3; orb $100,(%rcx) xacquire lock sbbb $100,(%rcx) lock xacquire sbbb $100,(%rcx) xrelease lock sbbb $100,(%rcx) lock xrelease sbbb $100,(%rcx) .byte 0xf0; .byte 0xf2; sbbb $100,(%rcx) .byte 0xf0; .byte 0xf3; sbbb $100,(%rcx) xacquire lock subb $100,(%rcx) lock xacquire subb $100,(%rcx) xrelease lock subb $100,(%rcx) lock xrelease subb $100,(%rcx) .byte 0xf0; .byte 0xf2; subb $100,(%rcx) .byte 0xf0; .byte 0xf3; subb $100,(%rcx) xacquire lock xorb $100,(%rcx) lock xacquire xorb $100,(%rcx) xrelease lock xorb $100,(%rcx) lock xrelease xorb $100,(%rcx) .byte 0xf0; .byte 0xf2; xorb $100,(%rcx) .byte 0xf0; .byte 0xf3; xorb $100,(%rcx) # Tests for op regb regb/m8 # Tests for op regb/m8 regb xacquire lock adcb %al,(%rcx) lock xacquire adcb %al,(%rcx) xrelease lock adcb %al,(%rcx) lock xrelease adcb %al,(%rcx) .byte 0xf0; .byte 0xf2; adcb %al,(%rcx) .byte 0xf0; .byte 0xf3; adcb %al,(%rcx) xacquire lock addb %al,(%rcx) lock xacquire addb %al,(%rcx) xrelease lock addb %al,(%rcx) lock xrelease addb %al,(%rcx) .byte 0xf0; .byte 0xf2; addb %al,(%rcx) .byte 0xf0; .byte 0xf3; addb %al,(%rcx) xacquire lock andb %al,(%rcx) lock xacquire andb %al,(%rcx) xrelease lock andb %al,(%rcx) lock xrelease andb %al,(%rcx) .byte 0xf0; .byte 0xf2; andb %al,(%rcx) .byte 0xf0; .byte 0xf3; andb %al,(%rcx) xrelease movb %al,(%rcx) xacquire lock orb %al,(%rcx) lock xacquire orb %al,(%rcx) xrelease lock orb %al,(%rcx) lock xrelease orb %al,(%rcx) .byte 0xf0; .byte 0xf2; orb %al,(%rcx) .byte 0xf0; .byte 0xf3; orb %al,(%rcx) xacquire lock sbbb %al,(%rcx) lock xacquire sbbb %al,(%rcx) xrelease lock sbbb %al,(%rcx) lock xrelease sbbb %al,(%rcx) .byte 0xf0; .byte 0xf2; sbbb %al,(%rcx) .byte 0xf0; .byte 0xf3; sbbb %al,(%rcx) xacquire lock subb %al,(%rcx) lock xacquire subb %al,(%rcx) xrelease lock subb %al,(%rcx) lock xrelease subb %al,(%rcx) .byte 0xf0; .byte 0xf2; subb %al,(%rcx) .byte 0xf0; .byte 0xf3; subb %al,(%rcx) xacquire lock xchgb %al,(%rcx) lock xacquire xchgb %al,(%rcx) xacquire xchgb %al,(%rcx) xrelease lock xchgb %al,(%rcx) lock xrelease xchgb %al,(%rcx) xrelease xchgb %al,(%rcx) .byte 0xf0; .byte 0xf2; xchgb %al,(%rcx) .byte 0xf0; .byte 0xf3; xchgb %al,(%rcx) xacquire lock xorb %al,(%rcx) lock xacquire xorb %al,(%rcx) xrelease lock xorb %al,(%rcx) lock xrelease xorb %al,(%rcx) .byte 0xf0; .byte 0xf2; xorb %al,(%rcx) .byte 0xf0; .byte 0xf3; xorb %al,(%rcx) # Tests for op regs regs/m16 # Tests for op regs/m16 regs xacquire lock adcw %ax,(%rcx) lock xacquire adcw %ax,(%rcx) xrelease lock adcw %ax,(%rcx) lock xrelease adcw %ax,(%rcx) .byte 0xf0; .byte 0xf2; adcw %ax,(%rcx) .byte 0xf0; .byte 0xf3; adcw %ax,(%rcx) xacquire lock addw %ax,(%rcx) lock xacquire addw %ax,(%rcx) xrelease lock addw %ax,(%rcx) lock xrelease addw %ax,(%rcx) .byte 0xf0; .byte 0xf2; addw %ax,(%rcx) .byte 0xf0; .byte 0xf3; addw %ax,(%rcx) xacquire lock andw %ax,(%rcx) lock xacquire andw %ax,(%rcx) xrelease lock andw %ax,(%rcx) lock xrelease andw %ax,(%rcx) .byte 0xf0; .byte 0xf2; andw %ax,(%rcx) .byte 0xf0; .byte 0xf3; andw %ax,(%rcx) xrelease movw %ax,(%rcx) xacquire lock orw %ax,(%rcx) lock xacquire orw %ax,(%rcx) xrelease lock orw %ax,(%rcx) lock xrelease orw %ax,(%rcx) .byte 0xf0; .byte 0xf2; orw %ax,(%rcx) .byte 0xf0; .byte 0xf3; orw %ax,(%rcx) xacquire lock sbbw %ax,(%rcx) lock xacquire sbbw %ax,(%rcx) xrelease lock sbbw %ax,(%rcx) lock xrelease sbbw %ax,(%rcx) .byte 0xf0; .byte 0xf2; sbbw %ax,(%rcx) .byte 0xf0; .byte 0xf3; sbbw %ax,(%rcx) xacquire lock subw %ax,(%rcx) lock xacquire subw %ax,(%rcx) xrelease lock subw %ax,(%rcx) lock xrelease subw %ax,(%rcx) .byte 0xf0; .byte 0xf2; subw %ax,(%rcx) .byte 0xf0; .byte 0xf3; subw %ax,(%rcx) xacquire lock xchgw %ax,(%rcx) lock xacquire xchgw %ax,(%rcx) xacquire xchgw %ax,(%rcx) xrelease lock xchgw %ax,(%rcx) lock xrelease xchgw %ax,(%rcx) xrelease xchgw %ax,(%rcx) .byte 0xf0; .byte 0xf2; xchgw %ax,(%rcx) .byte 0xf0; .byte 0xf3; xchgw %ax,(%rcx) xacquire lock xorw %ax,(%rcx) lock xacquire xorw %ax,(%rcx) xrelease lock xorw %ax,(%rcx) lock xrelease xorw %ax,(%rcx) .byte 0xf0; .byte 0xf2; xorw %ax,(%rcx) .byte 0xf0; .byte 0xf3; xorw %ax,(%rcx) # Tests for op regl regl/m32 # Tests for op regl/m32 regl xacquire lock adcl %eax,(%rcx) lock xacquire adcl %eax,(%rcx) xrelease lock adcl %eax,(%rcx) lock xrelease adcl %eax,(%rcx) .byte 0xf0; .byte 0xf2; adcl %eax,(%rcx) .byte 0xf0; .byte 0xf3; adcl %eax,(%rcx) xacquire lock addl %eax,(%rcx) lock xacquire addl %eax,(%rcx) xrelease lock addl %eax,(%rcx) lock xrelease addl %eax,(%rcx) .byte 0xf0; .byte 0xf2; addl %eax,(%rcx) .byte 0xf0; .byte 0xf3; addl %eax,(%rcx) xacquire lock andl %eax,(%rcx) lock xacquire andl %eax,(%rcx) xrelease lock andl %eax,(%rcx) lock xrelease andl %eax,(%rcx) .byte 0xf0; .byte 0xf2; andl %eax,(%rcx) .byte 0xf0; .byte 0xf3; andl %eax,(%rcx) xrelease movl %eax,(%rcx) xacquire lock orl %eax,(%rcx) lock xacquire orl %eax,(%rcx) xrelease lock orl %eax,(%rcx) lock xrelease orl %eax,(%rcx) .byte 0xf0; .byte 0xf2; orl %eax,(%rcx) .byte 0xf0; .byte 0xf3; orl %eax,(%rcx) xacquire lock sbbl %eax,(%rcx) lock xacquire sbbl %eax,(%rcx) xrelease lock sbbl %eax,(%rcx) lock xrelease sbbl %eax,(%rcx) .byte 0xf0; .byte 0xf2; sbbl %eax,(%rcx) .byte 0xf0; .byte 0xf3; sbbl %eax,(%rcx) xacquire lock subl %eax,(%rcx) lock xacquire subl %eax,(%rcx) xrelease lock subl %eax,(%rcx) lock xrelease subl %eax,(%rcx) .byte 0xf0; .byte 0xf2; subl %eax,(%rcx) .byte 0xf0; .byte 0xf3; subl %eax,(%rcx) xacquire lock xchgl %eax,(%rcx) lock xacquire xchgl %eax,(%rcx) xacquire xchgl %eax,(%rcx) xrelease lock xchgl %eax,(%rcx) lock xrelease xchgl %eax,(%rcx) xrelease xchgl %eax,(%rcx) .byte 0xf0; .byte 0xf2; xchgl %eax,(%rcx) .byte 0xf0; .byte 0xf3; xchgl %eax,(%rcx) xacquire lock xorl %eax,(%rcx) lock xacquire xorl %eax,(%rcx) xrelease lock xorl %eax,(%rcx) lock xrelease xorl %eax,(%rcx) .byte 0xf0; .byte 0xf2; xorl %eax,(%rcx) .byte 0xf0; .byte 0xf3; xorl %eax,(%rcx) # Tests for op regq regq/m64 # Tests for op regq/m64 regq xacquire lock adcq %rax,(%rcx) lock xacquire adcq %rax,(%rcx) xrelease lock adcq %rax,(%rcx) lock xrelease adcq %rax,(%rcx) .byte 0xf0; .byte 0xf2; adcq %rax,(%rcx) .byte 0xf0; .byte 0xf3; adcq %rax,(%rcx) xacquire lock addq %rax,(%rcx) lock xacquire addq %rax,(%rcx) xrelease lock addq %rax,(%rcx) lock xrelease addq %rax,(%rcx) .byte 0xf0; .byte 0xf2; addq %rax,(%rcx) .byte 0xf0; .byte 0xf3; addq %rax,(%rcx) xacquire lock andq %rax,(%rcx) lock xacquire andq %rax,(%rcx) xrelease lock andq %rax,(%rcx) lock xrelease andq %rax,(%rcx) .byte 0xf0; .byte 0xf2; andq %rax,(%rcx) .byte 0xf0; .byte 0xf3; andq %rax,(%rcx) xrelease movq %rax,(%rcx) xacquire lock orq %rax,(%rcx) lock xacquire orq %rax,(%rcx) xrelease lock orq %rax,(%rcx) lock xrelease orq %rax,(%rcx) .byte 0xf0; .byte 0xf2; orq %rax,(%rcx) .byte 0xf0; .byte 0xf3; orq %rax,(%rcx) xacquire lock sbbq %rax,(%rcx) lock xacquire sbbq %rax,(%rcx) xrelease lock sbbq %rax,(%rcx) lock xrelease sbbq %rax,(%rcx) .byte 0xf0; .byte 0xf2; sbbq %rax,(%rcx) .byte 0xf0; .byte 0xf3; sbbq %rax,(%rcx) xacquire lock subq %rax,(%rcx) lock xacquire subq %rax,(%rcx) xrelease lock subq %rax,(%rcx) lock xrelease subq %rax,(%rcx) .byte 0xf0; .byte 0xf2; subq %rax,(%rcx) .byte 0xf0; .byte 0xf3; subq %rax,(%rcx) xacquire lock xchgq %rax,(%rcx) lock xacquire xchgq %rax,(%rcx) xacquire xchgq %rax,(%rcx) xrelease lock xchgq %rax,(%rcx) lock xrelease xchgq %rax,(%rcx) xrelease xchgq %rax,(%rcx) .byte 0xf0; .byte 0xf2; xchgq %rax,(%rcx) .byte 0xf0; .byte 0xf3; xchgq %rax,(%rcx) xacquire lock xorq %rax,(%rcx) lock xacquire xorq %rax,(%rcx) xrelease lock xorq %rax,(%rcx) lock xrelease xorq %rax,(%rcx) .byte 0xf0; .byte 0xf2; xorq %rax,(%rcx) .byte 0xf0; .byte 0xf3; xorq %rax,(%rcx) # Tests for op regs, regs/m16 xacquire lock btcw %ax,(%rcx) lock xacquire btcw %ax,(%rcx) xrelease lock btcw %ax,(%rcx) lock xrelease btcw %ax,(%rcx) .byte 0xf0; .byte 0xf2; btcw %ax,(%rcx) .byte 0xf0; .byte 0xf3; btcw %ax,(%rcx) xacquire lock btrw %ax,(%rcx) lock xacquire btrw %ax,(%rcx) xrelease lock btrw %ax,(%rcx) lock xrelease btrw %ax,(%rcx) .byte 0xf0; .byte 0xf2; btrw %ax,(%rcx) .byte 0xf0; .byte 0xf3; btrw %ax,(%rcx) xacquire lock btsw %ax,(%rcx) lock xacquire btsw %ax,(%rcx) xrelease lock btsw %ax,(%rcx) lock xrelease btsw %ax,(%rcx) .byte 0xf0; .byte 0xf2; btsw %ax,(%rcx) .byte 0xf0; .byte 0xf3; btsw %ax,(%rcx) xacquire lock cmpxchgw %ax,(%rcx) lock xacquire cmpxchgw %ax,(%rcx) xrelease lock cmpxchgw %ax,(%rcx) lock xrelease cmpxchgw %ax,(%rcx) .byte 0xf0; .byte 0xf2; cmpxchgw %ax,(%rcx) .byte 0xf0; .byte 0xf3; cmpxchgw %ax,(%rcx) xacquire lock xaddw %ax,(%rcx) lock xacquire xaddw %ax,(%rcx) xrelease lock xaddw %ax,(%rcx) lock xrelease xaddw %ax,(%rcx) .byte 0xf0; .byte 0xf2; xaddw %ax,(%rcx) .byte 0xf0; .byte 0xf3; xaddw %ax,(%rcx) # Tests for op regl regl/m32 xacquire lock btcl %eax,(%rcx) lock xacquire btcl %eax,(%rcx) xrelease lock btcl %eax,(%rcx) lock xrelease btcl %eax,(%rcx) .byte 0xf0; .byte 0xf2; btcl %eax,(%rcx) .byte 0xf0; .byte 0xf3; btcl %eax,(%rcx) xacquire lock btrl %eax,(%rcx) lock xacquire btrl %eax,(%rcx) xrelease lock btrl %eax,(%rcx) lock xrelease btrl %eax,(%rcx) .byte 0xf0; .byte 0xf2; btrl %eax,(%rcx) .byte 0xf0; .byte 0xf3; btrl %eax,(%rcx) xacquire lock btsl %eax,(%rcx) lock xacquire btsl %eax,(%rcx) xrelease lock btsl %eax,(%rcx) lock xrelease btsl %eax,(%rcx) .byte 0xf0; .byte 0xf2; btsl %eax,(%rcx) .byte 0xf0; .byte 0xf3; btsl %eax,(%rcx) xacquire lock cmpxchgl %eax,(%rcx) lock xacquire cmpxchgl %eax,(%rcx) xrelease lock cmpxchgl %eax,(%rcx) lock xrelease cmpxchgl %eax,(%rcx) .byte 0xf0; .byte 0xf2; cmpxchgl %eax,(%rcx) .byte 0xf0; .byte 0xf3; cmpxchgl %eax,(%rcx) xacquire lock xaddl %eax,(%rcx) lock xacquire xaddl %eax,(%rcx) xrelease lock xaddl %eax,(%rcx) lock xrelease xaddl %eax,(%rcx) .byte 0xf0; .byte 0xf2; xaddl %eax,(%rcx) .byte 0xf0; .byte 0xf3; xaddl %eax,(%rcx) # Tests for op regq regq/m64 xacquire lock btcq %rax,(%rcx) lock xacquire btcq %rax,(%rcx) xrelease lock btcq %rax,(%rcx) lock xrelease btcq %rax,(%rcx) .byte 0xf0; .byte 0xf2; btcq %rax,(%rcx) .byte 0xf0; .byte 0xf3; btcq %rax,(%rcx) xacquire lock btrq %rax,(%rcx) lock xacquire btrq %rax,(%rcx) xrelease lock btrq %rax,(%rcx) lock xrelease btrq %rax,(%rcx) .byte 0xf0; .byte 0xf2; btrq %rax,(%rcx) .byte 0xf0; .byte 0xf3; btrq %rax,(%rcx) xacquire lock btsq %rax,(%rcx) lock xacquire btsq %rax,(%rcx) xrelease lock btsq %rax,(%rcx) lock xrelease btsq %rax,(%rcx) .byte 0xf0; .byte 0xf2; btsq %rax,(%rcx) .byte 0xf0; .byte 0xf3; btsq %rax,(%rcx) xacquire lock cmpxchgq %rax,(%rcx) lock xacquire cmpxchgq %rax,(%rcx) xrelease lock cmpxchgq %rax,(%rcx) lock xrelease cmpxchgq %rax,(%rcx) .byte 0xf0; .byte 0xf2; cmpxchgq %rax,(%rcx) .byte 0xf0; .byte 0xf3; cmpxchgq %rax,(%rcx) xacquire lock xaddq %rax,(%rcx) lock xacquire xaddq %rax,(%rcx) xrelease lock xaddq %rax,(%rcx) lock xrelease xaddq %rax,(%rcx) .byte 0xf0; .byte 0xf2; xaddq %rax,(%rcx) .byte 0xf0; .byte 0xf3; xaddq %rax,(%rcx) # Tests for op regb/m8 xacquire lock decb (%rcx) lock xacquire decb (%rcx) xrelease lock decb (%rcx) lock xrelease decb (%rcx) .byte 0xf0; .byte 0xf2; decb (%rcx) .byte 0xf0; .byte 0xf3; decb (%rcx) xacquire lock incb (%rcx) lock xacquire incb (%rcx) xrelease lock incb (%rcx) lock xrelease incb (%rcx) .byte 0xf0; .byte 0xf2; incb (%rcx) .byte 0xf0; .byte 0xf3; incb (%rcx) xacquire lock negb (%rcx) lock xacquire negb (%rcx) xrelease lock negb (%rcx) lock xrelease negb (%rcx) .byte 0xf0; .byte 0xf2; negb (%rcx) .byte 0xf0; .byte 0xf3; negb (%rcx) xacquire lock notb (%rcx) lock xacquire notb (%rcx) xrelease lock notb (%rcx) lock xrelease notb (%rcx) .byte 0xf0; .byte 0xf2; notb (%rcx) .byte 0xf0; .byte 0xf3; notb (%rcx) # Tests for op regs/m16 xacquire lock decw (%rcx) lock xacquire decw (%rcx) xrelease lock decw (%rcx) lock xrelease decw (%rcx) .byte 0xf0; .byte 0xf2; decw (%rcx) .byte 0xf0; .byte 0xf3; decw (%rcx) xacquire lock incw (%rcx) lock xacquire incw (%rcx) xrelease lock incw (%rcx) lock xrelease incw (%rcx) .byte 0xf0; .byte 0xf2; incw (%rcx) .byte 0xf0; .byte 0xf3; incw (%rcx) xacquire lock negw (%rcx) lock xacquire negw (%rcx) xrelease lock negw (%rcx) lock xrelease negw (%rcx) .byte 0xf0; .byte 0xf2; negw (%rcx) .byte 0xf0; .byte 0xf3; negw (%rcx) xacquire lock notw (%rcx) lock xacquire notw (%rcx) xrelease lock notw (%rcx) lock xrelease notw (%rcx) .byte 0xf0; .byte 0xf2; notw (%rcx) .byte 0xf0; .byte 0xf3; notw (%rcx) # Tests for op regl/m32 xacquire lock decl (%rcx) lock xacquire decl (%rcx) xrelease lock decl (%rcx) lock xrelease decl (%rcx) .byte 0xf0; .byte 0xf2; decl (%rcx) .byte 0xf0; .byte 0xf3; decl (%rcx) xacquire lock incl (%rcx) lock xacquire incl (%rcx) xrelease lock incl (%rcx) lock xrelease incl (%rcx) .byte 0xf0; .byte 0xf2; incl (%rcx) .byte 0xf0; .byte 0xf3; incl (%rcx) xacquire lock negl (%rcx) lock xacquire negl (%rcx) xrelease lock negl (%rcx) lock xrelease negl (%rcx) .byte 0xf0; .byte 0xf2; negl (%rcx) .byte 0xf0; .byte 0xf3; negl (%rcx) xacquire lock notl (%rcx) lock xacquire notl (%rcx) xrelease lock notl (%rcx) lock xrelease notl (%rcx) .byte 0xf0; .byte 0xf2; notl (%rcx) .byte 0xf0; .byte 0xf3; notl (%rcx) # Tests for op regq/m64 xacquire lock decq (%rcx) lock xacquire decq (%rcx) xrelease lock decq (%rcx) lock xrelease decq (%rcx) .byte 0xf0; .byte 0xf2; decq (%rcx) .byte 0xf0; .byte 0xf3; decq (%rcx) xacquire lock incq (%rcx) lock xacquire incq (%rcx) xrelease lock incq (%rcx) lock xrelease incq (%rcx) .byte 0xf0; .byte 0xf2; incq (%rcx) .byte 0xf0; .byte 0xf3; incq (%rcx) xacquire lock negq (%rcx) lock xacquire negq (%rcx) xrelease lock negq (%rcx) lock xrelease negq (%rcx) .byte 0xf0; .byte 0xf2; negq (%rcx) .byte 0xf0; .byte 0xf3; negq (%rcx) xacquire lock notq (%rcx) lock xacquire notq (%rcx) xrelease lock notq (%rcx) lock xrelease notq (%rcx) .byte 0xf0; .byte 0xf2; notq (%rcx) .byte 0xf0; .byte 0xf3; notq (%rcx) # Tests for op m64 xacquire lock cmpxchg8bq (%rcx) lock xacquire cmpxchg8bq (%rcx) xrelease lock cmpxchg8bq (%rcx) lock xrelease cmpxchg8bq (%rcx) .byte 0xf0; .byte 0xf2; cmpxchg8bq (%rcx) .byte 0xf0; .byte 0xf3; cmpxchg8bq (%rcx) # Tests for op regb, regb/m8 xacquire lock cmpxchgb %cl,(%rcx) lock xacquire cmpxchgb %cl,(%rcx) xrelease lock cmpxchgb %cl,(%rcx) lock xrelease cmpxchgb %cl,(%rcx) .byte 0xf0; .byte 0xf2; cmpxchgb %cl,(%rcx) .byte 0xf0; .byte 0xf3; cmpxchgb %cl,(%rcx) xacquire lock xaddb %cl,(%rcx) lock xacquire xaddb %cl,(%rcx) xrelease lock xaddb %cl,(%rcx) lock xrelease xaddb %cl,(%rcx) .byte 0xf0; .byte 0xf2; xaddb %cl,(%rcx) .byte 0xf0; .byte 0xf3; xaddb %cl,(%rcx) .intel_syntax noprefix # Tests for op imm32 rax # Tests for op imm8 regb/m8 xacquire lock adc BYTE PTR [rcx],100 lock xacquire adc BYTE PTR [rcx],100 xrelease lock adc BYTE PTR [rcx],100 lock xrelease adc BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; adc BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; adc BYTE PTR [rcx],100 xacquire lock add BYTE PTR [rcx],100 lock xacquire add BYTE PTR [rcx],100 xrelease lock add BYTE PTR [rcx],100 lock xrelease add BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; add BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; add BYTE PTR [rcx],100 xacquire lock and BYTE PTR [rcx],100 lock xacquire and BYTE PTR [rcx],100 xrelease lock and BYTE PTR [rcx],100 lock xrelease and BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; and BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; and BYTE PTR [rcx],100 xrelease mov BYTE PTR [rcx],100 xacquire lock or BYTE PTR [rcx],100 lock xacquire or BYTE PTR [rcx],100 xrelease lock or BYTE PTR [rcx],100 lock xrelease or BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; or BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; or BYTE PTR [rcx],100 xacquire lock sbb BYTE PTR [rcx],100 lock xacquire sbb BYTE PTR [rcx],100 xrelease lock sbb BYTE PTR [rcx],100 lock xrelease sbb BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; sbb BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; sbb BYTE PTR [rcx],100 xacquire lock sub BYTE PTR [rcx],100 lock xacquire sub BYTE PTR [rcx],100 xrelease lock sub BYTE PTR [rcx],100 lock xrelease sub BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; sub BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; sub BYTE PTR [rcx],100 xacquire lock xor BYTE PTR [rcx],100 lock xacquire xor BYTE PTR [rcx],100 xrelease lock xor BYTE PTR [rcx],100 lock xrelease xor BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; xor BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; xor BYTE PTR [rcx],100 # Tests for op imm16 regs/m16 xacquire lock adc WORD PTR [rcx],1000 lock xacquire adc WORD PTR [rcx],1000 xrelease lock adc WORD PTR [rcx],1000 lock xrelease adc WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf2; adc WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf3; adc WORD PTR [rcx],1000 xacquire lock add WORD PTR [rcx],1000 lock xacquire add WORD PTR [rcx],1000 xrelease lock add WORD PTR [rcx],1000 lock xrelease add WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf2; add WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf3; add WORD PTR [rcx],1000 xacquire lock and WORD PTR [rcx],1000 lock xacquire and WORD PTR [rcx],1000 xrelease lock and WORD PTR [rcx],1000 lock xrelease and WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf2; and WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf3; and WORD PTR [rcx],1000 xrelease mov WORD PTR [rcx],1000 xacquire lock or WORD PTR [rcx],1000 lock xacquire or WORD PTR [rcx],1000 xrelease lock or WORD PTR [rcx],1000 lock xrelease or WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf2; or WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf3; or WORD PTR [rcx],1000 xacquire lock sbb WORD PTR [rcx],1000 lock xacquire sbb WORD PTR [rcx],1000 xrelease lock sbb WORD PTR [rcx],1000 lock xrelease sbb WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf2; sbb WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf3; sbb WORD PTR [rcx],1000 xacquire lock sub WORD PTR [rcx],1000 lock xacquire sub WORD PTR [rcx],1000 xrelease lock sub WORD PTR [rcx],1000 lock xrelease sub WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf2; sub WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf3; sub WORD PTR [rcx],1000 xacquire lock xor WORD PTR [rcx],1000 lock xacquire xor WORD PTR [rcx],1000 xrelease lock xor WORD PTR [rcx],1000 lock xrelease xor WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf2; xor WORD PTR [rcx],1000 .byte 0xf0; .byte 0xf3; xor WORD PTR [rcx],1000 # Tests for op imm32 regl/m32 xacquire lock adc DWORD PTR [rcx],10000000 lock xacquire adc DWORD PTR [rcx],10000000 xrelease lock adc DWORD PTR [rcx],10000000 lock xrelease adc DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; adc DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; adc DWORD PTR [rcx],10000000 xacquire lock add DWORD PTR [rcx],10000000 lock xacquire add DWORD PTR [rcx],10000000 xrelease lock add DWORD PTR [rcx],10000000 lock xrelease add DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; add DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; add DWORD PTR [rcx],10000000 xacquire lock and DWORD PTR [rcx],10000000 lock xacquire and DWORD PTR [rcx],10000000 xrelease lock and DWORD PTR [rcx],10000000 lock xrelease and DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; and DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; and DWORD PTR [rcx],10000000 xrelease mov DWORD PTR [rcx],10000000 xacquire lock or DWORD PTR [rcx],10000000 lock xacquire or DWORD PTR [rcx],10000000 xrelease lock or DWORD PTR [rcx],10000000 lock xrelease or DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; or DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; or DWORD PTR [rcx],10000000 xacquire lock sbb DWORD PTR [rcx],10000000 lock xacquire sbb DWORD PTR [rcx],10000000 xrelease lock sbb DWORD PTR [rcx],10000000 lock xrelease sbb DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; sbb DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; sbb DWORD PTR [rcx],10000000 xacquire lock sub DWORD PTR [rcx],10000000 lock xacquire sub DWORD PTR [rcx],10000000 xrelease lock sub DWORD PTR [rcx],10000000 lock xrelease sub DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; sub DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; sub DWORD PTR [rcx],10000000 xacquire lock xor DWORD PTR [rcx],10000000 lock xacquire xor DWORD PTR [rcx],10000000 xrelease lock xor DWORD PTR [rcx],10000000 lock xrelease xor DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; xor DWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; xor DWORD PTR [rcx],10000000 # Tests for op imm32 regq/m64 xacquire lock adc QWORD PTR [rcx],10000000 lock xacquire adc QWORD PTR [rcx],10000000 xrelease lock adc QWORD PTR [rcx],10000000 lock xrelease adc QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; adc QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; adc QWORD PTR [rcx],10000000 xacquire lock add QWORD PTR [rcx],10000000 lock xacquire add QWORD PTR [rcx],10000000 xrelease lock add QWORD PTR [rcx],10000000 lock xrelease add QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; add QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; add QWORD PTR [rcx],10000000 xacquire lock and QWORD PTR [rcx],10000000 lock xacquire and QWORD PTR [rcx],10000000 xrelease lock and QWORD PTR [rcx],10000000 lock xrelease and QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; and QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; and QWORD PTR [rcx],10000000 xrelease mov QWORD PTR [rcx],10000000 xacquire lock or QWORD PTR [rcx],10000000 lock xacquire or QWORD PTR [rcx],10000000 xrelease lock or QWORD PTR [rcx],10000000 lock xrelease or QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; or QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; or QWORD PTR [rcx],10000000 xacquire lock sbb QWORD PTR [rcx],10000000 lock xacquire sbb QWORD PTR [rcx],10000000 xrelease lock sbb QWORD PTR [rcx],10000000 lock xrelease sbb QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; sbb QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; sbb QWORD PTR [rcx],10000000 xacquire lock sub QWORD PTR [rcx],10000000 lock xacquire sub QWORD PTR [rcx],10000000 xrelease lock sub QWORD PTR [rcx],10000000 lock xrelease sub QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; sub QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; sub QWORD PTR [rcx],10000000 xacquire lock xor QWORD PTR [rcx],10000000 lock xacquire xor QWORD PTR [rcx],10000000 xrelease lock xor QWORD PTR [rcx],10000000 lock xrelease xor QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf2; xor QWORD PTR [rcx],10000000 .byte 0xf0; .byte 0xf3; xor QWORD PTR [rcx],10000000 # Tests for op imm8 regs/m16 xacquire lock adc WORD PTR [rcx],100 lock xacquire adc WORD PTR [rcx],100 xrelease lock adc WORD PTR [rcx],100 lock xrelease adc WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; adc WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; adc WORD PTR [rcx],100 xacquire lock add WORD PTR [rcx],100 lock xacquire add WORD PTR [rcx],100 xrelease lock add WORD PTR [rcx],100 lock xrelease add WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; add WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; add WORD PTR [rcx],100 xacquire lock and WORD PTR [rcx],100 lock xacquire and WORD PTR [rcx],100 xrelease lock and WORD PTR [rcx],100 lock xrelease and WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; and WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; and WORD PTR [rcx],100 xacquire lock btc WORD PTR [rcx],100 lock xacquire btc WORD PTR [rcx],100 xrelease lock btc WORD PTR [rcx],100 lock xrelease btc WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; btc WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; btc WORD PTR [rcx],100 xacquire lock btr WORD PTR [rcx],100 lock xacquire btr WORD PTR [rcx],100 xrelease lock btr WORD PTR [rcx],100 lock xrelease btr WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; btr WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; btr WORD PTR [rcx],100 xacquire lock bts WORD PTR [rcx],100 lock xacquire bts WORD PTR [rcx],100 xrelease lock bts WORD PTR [rcx],100 lock xrelease bts WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; bts WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; bts WORD PTR [rcx],100 xrelease mov WORD PTR [rcx],100 xacquire lock or WORD PTR [rcx],100 lock xacquire or WORD PTR [rcx],100 xrelease lock or WORD PTR [rcx],100 lock xrelease or WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; or WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; or WORD PTR [rcx],100 xacquire lock sbb WORD PTR [rcx],100 lock xacquire sbb WORD PTR [rcx],100 xrelease lock sbb WORD PTR [rcx],100 lock xrelease sbb WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; sbb WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; sbb WORD PTR [rcx],100 xacquire lock sub WORD PTR [rcx],100 lock xacquire sub WORD PTR [rcx],100 xrelease lock sub WORD PTR [rcx],100 lock xrelease sub WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; sub WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; sub WORD PTR [rcx],100 xacquire lock xor WORD PTR [rcx],100 lock xacquire xor WORD PTR [rcx],100 xrelease lock xor WORD PTR [rcx],100 lock xrelease xor WORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; xor WORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; xor WORD PTR [rcx],100 # Tests for op imm8 regl/m32 xacquire lock adc DWORD PTR [rcx],100 lock xacquire adc DWORD PTR [rcx],100 xrelease lock adc DWORD PTR [rcx],100 lock xrelease adc DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; adc DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; adc DWORD PTR [rcx],100 xacquire lock add DWORD PTR [rcx],100 lock xacquire add DWORD PTR [rcx],100 xrelease lock add DWORD PTR [rcx],100 lock xrelease add DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; add DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; add DWORD PTR [rcx],100 xacquire lock and DWORD PTR [rcx],100 lock xacquire and DWORD PTR [rcx],100 xrelease lock and DWORD PTR [rcx],100 lock xrelease and DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; and DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; and DWORD PTR [rcx],100 xacquire lock btc DWORD PTR [rcx],100 lock xacquire btc DWORD PTR [rcx],100 xrelease lock btc DWORD PTR [rcx],100 lock xrelease btc DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; btc DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; btc DWORD PTR [rcx],100 xacquire lock btr DWORD PTR [rcx],100 lock xacquire btr DWORD PTR [rcx],100 xrelease lock btr DWORD PTR [rcx],100 lock xrelease btr DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; btr DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; btr DWORD PTR [rcx],100 xacquire lock bts DWORD PTR [rcx],100 lock xacquire bts DWORD PTR [rcx],100 xrelease lock bts DWORD PTR [rcx],100 lock xrelease bts DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; bts DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; bts DWORD PTR [rcx],100 xrelease mov DWORD PTR [rcx],100 xacquire lock or DWORD PTR [rcx],100 lock xacquire or DWORD PTR [rcx],100 xrelease lock or DWORD PTR [rcx],100 lock xrelease or DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; or DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; or DWORD PTR [rcx],100 xacquire lock sbb DWORD PTR [rcx],100 lock xacquire sbb DWORD PTR [rcx],100 xrelease lock sbb DWORD PTR [rcx],100 lock xrelease sbb DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; sbb DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; sbb DWORD PTR [rcx],100 xacquire lock sub DWORD PTR [rcx],100 lock xacquire sub DWORD PTR [rcx],100 xrelease lock sub DWORD PTR [rcx],100 lock xrelease sub DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; sub DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; sub DWORD PTR [rcx],100 xacquire lock xor DWORD PTR [rcx],100 lock xacquire xor DWORD PTR [rcx],100 xrelease lock xor DWORD PTR [rcx],100 lock xrelease xor DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; xor DWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; xor DWORD PTR [rcx],100 # Tests for op imm8 regq/m64 xacquire lock adc QWORD PTR [rcx],100 lock xacquire adc QWORD PTR [rcx],100 xrelease lock adc QWORD PTR [rcx],100 lock xrelease adc QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; adc QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; adc QWORD PTR [rcx],100 xacquire lock add QWORD PTR [rcx],100 lock xacquire add QWORD PTR [rcx],100 xrelease lock add QWORD PTR [rcx],100 lock xrelease add QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; add QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; add QWORD PTR [rcx],100 xacquire lock and QWORD PTR [rcx],100 lock xacquire and QWORD PTR [rcx],100 xrelease lock and QWORD PTR [rcx],100 lock xrelease and QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; and QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; and QWORD PTR [rcx],100 xacquire lock btc QWORD PTR [rcx],100 lock xacquire btc QWORD PTR [rcx],100 xrelease lock btc QWORD PTR [rcx],100 lock xrelease btc QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; btc QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; btc QWORD PTR [rcx],100 xacquire lock btr QWORD PTR [rcx],100 lock xacquire btr QWORD PTR [rcx],100 xrelease lock btr QWORD PTR [rcx],100 lock xrelease btr QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; btr QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; btr QWORD PTR [rcx],100 xacquire lock bts QWORD PTR [rcx],100 lock xacquire bts QWORD PTR [rcx],100 xrelease lock bts QWORD PTR [rcx],100 lock xrelease bts QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; bts QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; bts QWORD PTR [rcx],100 xrelease mov QWORD PTR [rcx],100 xacquire lock or QWORD PTR [rcx],100 lock xacquire or QWORD PTR [rcx],100 xrelease lock or QWORD PTR [rcx],100 lock xrelease or QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; or QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; or QWORD PTR [rcx],100 xacquire lock sbb QWORD PTR [rcx],100 lock xacquire sbb QWORD PTR [rcx],100 xrelease lock sbb QWORD PTR [rcx],100 lock xrelease sbb QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; sbb QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; sbb QWORD PTR [rcx],100 xacquire lock sub QWORD PTR [rcx],100 lock xacquire sub QWORD PTR [rcx],100 xrelease lock sub QWORD PTR [rcx],100 lock xrelease sub QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; sub QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; sub QWORD PTR [rcx],100 xacquire lock xor QWORD PTR [rcx],100 lock xacquire xor QWORD PTR [rcx],100 xrelease lock xor QWORD PTR [rcx],100 lock xrelease xor QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf2; xor QWORD PTR [rcx],100 .byte 0xf0; .byte 0xf3; xor QWORD PTR [rcx],100 # Tests for op imm8 regb/m8 xacquire lock adc BYTE PTR [rcx],100 lock xacquire adc BYTE PTR [rcx],100 xrelease lock adc BYTE PTR [rcx],100 lock xrelease adc BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; adc BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; adc BYTE PTR [rcx],100 xacquire lock add BYTE PTR [rcx],100 lock xacquire add BYTE PTR [rcx],100 xrelease lock add BYTE PTR [rcx],100 lock xrelease add BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; add BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; add BYTE PTR [rcx],100 xacquire lock and BYTE PTR [rcx],100 lock xacquire and BYTE PTR [rcx],100 xrelease lock and BYTE PTR [rcx],100 lock xrelease and BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; and BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; and BYTE PTR [rcx],100 xrelease mov BYTE PTR [rcx],100 xacquire lock or BYTE PTR [rcx],100 lock xacquire or BYTE PTR [rcx],100 xrelease lock or BYTE PTR [rcx],100 lock xrelease or BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; or BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; or BYTE PTR [rcx],100 xacquire lock sbb BYTE PTR [rcx],100 lock xacquire sbb BYTE PTR [rcx],100 xrelease lock sbb BYTE PTR [rcx],100 lock xrelease sbb BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; sbb BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; sbb BYTE PTR [rcx],100 xacquire lock sub BYTE PTR [rcx],100 lock xacquire sub BYTE PTR [rcx],100 xrelease lock sub BYTE PTR [rcx],100 lock xrelease sub BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; sub BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; sub BYTE PTR [rcx],100 xacquire lock xor BYTE PTR [rcx],100 lock xacquire xor BYTE PTR [rcx],100 xrelease lock xor BYTE PTR [rcx],100 lock xrelease xor BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf2; xor BYTE PTR [rcx],100 .byte 0xf0; .byte 0xf3; xor BYTE PTR [rcx],100 # Tests for op regb regb/m8 # Tests for op regb/m8 regb xacquire lock adc BYTE PTR [rcx],al lock xacquire adc BYTE PTR [rcx],al xrelease lock adc BYTE PTR [rcx],al lock xrelease adc BYTE PTR [rcx],al .byte 0xf0; .byte 0xf2; adc BYTE PTR [rcx],al .byte 0xf0; .byte 0xf3; adc BYTE PTR [rcx],al xacquire lock add BYTE PTR [rcx],al lock xacquire add BYTE PTR [rcx],al xrelease lock add BYTE PTR [rcx],al lock xrelease add BYTE PTR [rcx],al .byte 0xf0; .byte 0xf2; add BYTE PTR [rcx],al .byte 0xf0; .byte 0xf3; add BYTE PTR [rcx],al xacquire lock and BYTE PTR [rcx],al lock xacquire and BYTE PTR [rcx],al xrelease lock and BYTE PTR [rcx],al lock xrelease and BYTE PTR [rcx],al .byte 0xf0; .byte 0xf2; and BYTE PTR [rcx],al .byte 0xf0; .byte 0xf3; and BYTE PTR [rcx],al xrelease mov BYTE PTR [rcx],al xacquire lock or BYTE PTR [rcx],al lock xacquire or BYTE PTR [rcx],al xrelease lock or BYTE PTR [rcx],al lock xrelease or BYTE PTR [rcx],al .byte 0xf0; .byte 0xf2; or BYTE PTR [rcx],al .byte 0xf0; .byte 0xf3; or BYTE PTR [rcx],al xacquire lock sbb BYTE PTR [rcx],al lock xacquire sbb BYTE PTR [rcx],al xrelease lock sbb BYTE PTR [rcx],al lock xrelease sbb BYTE PTR [rcx],al .byte 0xf0; .byte 0xf2; sbb BYTE PTR [rcx],al .byte 0xf0; .byte 0xf3; sbb BYTE PTR [rcx],al xacquire lock sub BYTE PTR [rcx],al lock xacquire sub BYTE PTR [rcx],al xrelease lock sub BYTE PTR [rcx],al lock xrelease sub BYTE PTR [rcx],al .byte 0xf0; .byte 0xf2; sub BYTE PTR [rcx],al .byte 0xf0; .byte 0xf3; sub BYTE PTR [rcx],al xacquire lock xchg BYTE PTR [rcx],al lock xacquire xchg BYTE PTR [rcx],al xacquire xchg BYTE PTR [rcx],al xrelease lock xchg BYTE PTR [rcx],al lock xrelease xchg BYTE PTR [rcx],al xrelease xchg BYTE PTR [rcx],al .byte 0xf0; .byte 0xf2; xchg BYTE PTR [rcx],al .byte 0xf0; .byte 0xf3; xchg BYTE PTR [rcx],al xacquire lock xor BYTE PTR [rcx],al lock xacquire xor BYTE PTR [rcx],al xrelease lock xor BYTE PTR [rcx],al lock xrelease xor BYTE PTR [rcx],al .byte 0xf0; .byte 0xf2; xor BYTE PTR [rcx],al .byte 0xf0; .byte 0xf3; xor BYTE PTR [rcx],al # Tests for op regs regs/m16 # Tests for op regs/m16 regs xacquire lock adc WORD PTR [rcx],ax lock xacquire adc WORD PTR [rcx],ax xrelease lock adc WORD PTR [rcx],ax lock xrelease adc WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; adc WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; adc WORD PTR [rcx],ax xacquire lock add WORD PTR [rcx],ax lock xacquire add WORD PTR [rcx],ax xrelease lock add WORD PTR [rcx],ax lock xrelease add WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; add WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; add WORD PTR [rcx],ax xacquire lock and WORD PTR [rcx],ax lock xacquire and WORD PTR [rcx],ax xrelease lock and WORD PTR [rcx],ax lock xrelease and WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; and WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; and WORD PTR [rcx],ax xrelease mov WORD PTR [rcx],ax xacquire lock or WORD PTR [rcx],ax lock xacquire or WORD PTR [rcx],ax xrelease lock or WORD PTR [rcx],ax lock xrelease or WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; or WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; or WORD PTR [rcx],ax xacquire lock sbb WORD PTR [rcx],ax lock xacquire sbb WORD PTR [rcx],ax xrelease lock sbb WORD PTR [rcx],ax lock xrelease sbb WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; sbb WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; sbb WORD PTR [rcx],ax xacquire lock sub WORD PTR [rcx],ax lock xacquire sub WORD PTR [rcx],ax xrelease lock sub WORD PTR [rcx],ax lock xrelease sub WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; sub WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; sub WORD PTR [rcx],ax xacquire lock xchg WORD PTR [rcx],ax lock xacquire xchg WORD PTR [rcx],ax xacquire xchg WORD PTR [rcx],ax xrelease lock xchg WORD PTR [rcx],ax lock xrelease xchg WORD PTR [rcx],ax xrelease xchg WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; xchg WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; xchg WORD PTR [rcx],ax xacquire lock xor WORD PTR [rcx],ax lock xacquire xor WORD PTR [rcx],ax xrelease lock xor WORD PTR [rcx],ax lock xrelease xor WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; xor WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; xor WORD PTR [rcx],ax # Tests for op regl regl/m32 # Tests for op regl/m32 regl xacquire lock adc DWORD PTR [rcx],eax lock xacquire adc DWORD PTR [rcx],eax xrelease lock adc DWORD PTR [rcx],eax lock xrelease adc DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; adc DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; adc DWORD PTR [rcx],eax xacquire lock add DWORD PTR [rcx],eax lock xacquire add DWORD PTR [rcx],eax xrelease lock add DWORD PTR [rcx],eax lock xrelease add DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; add DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; add DWORD PTR [rcx],eax xacquire lock and DWORD PTR [rcx],eax lock xacquire and DWORD PTR [rcx],eax xrelease lock and DWORD PTR [rcx],eax lock xrelease and DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; and DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; and DWORD PTR [rcx],eax xrelease mov DWORD PTR [rcx],eax xacquire lock or DWORD PTR [rcx],eax lock xacquire or DWORD PTR [rcx],eax xrelease lock or DWORD PTR [rcx],eax lock xrelease or DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; or DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; or DWORD PTR [rcx],eax xacquire lock sbb DWORD PTR [rcx],eax lock xacquire sbb DWORD PTR [rcx],eax xrelease lock sbb DWORD PTR [rcx],eax lock xrelease sbb DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; sbb DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; sbb DWORD PTR [rcx],eax xacquire lock sub DWORD PTR [rcx],eax lock xacquire sub DWORD PTR [rcx],eax xrelease lock sub DWORD PTR [rcx],eax lock xrelease sub DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; sub DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; sub DWORD PTR [rcx],eax xacquire lock xchg DWORD PTR [rcx],eax lock xacquire xchg DWORD PTR [rcx],eax xacquire xchg DWORD PTR [rcx],eax xrelease lock xchg DWORD PTR [rcx],eax lock xrelease xchg DWORD PTR [rcx],eax xrelease xchg DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; xchg DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; xchg DWORD PTR [rcx],eax xacquire lock xor DWORD PTR [rcx],eax lock xacquire xor DWORD PTR [rcx],eax xrelease lock xor DWORD PTR [rcx],eax lock xrelease xor DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; xor DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; xor DWORD PTR [rcx],eax # Tests for op regq regq/m64 # Tests for op regq/m64 regq xacquire lock adc QWORD PTR [rcx],rax lock xacquire adc QWORD PTR [rcx],rax xrelease lock adc QWORD PTR [rcx],rax lock xrelease adc QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; adc QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; adc QWORD PTR [rcx],rax xacquire lock add QWORD PTR [rcx],rax lock xacquire add QWORD PTR [rcx],rax xrelease lock add QWORD PTR [rcx],rax lock xrelease add QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; add QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; add QWORD PTR [rcx],rax xacquire lock and QWORD PTR [rcx],rax lock xacquire and QWORD PTR [rcx],rax xrelease lock and QWORD PTR [rcx],rax lock xrelease and QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; and QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; and QWORD PTR [rcx],rax xrelease mov QWORD PTR [rcx],rax xacquire lock or QWORD PTR [rcx],rax lock xacquire or QWORD PTR [rcx],rax xrelease lock or QWORD PTR [rcx],rax lock xrelease or QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; or QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; or QWORD PTR [rcx],rax xacquire lock sbb QWORD PTR [rcx],rax lock xacquire sbb QWORD PTR [rcx],rax xrelease lock sbb QWORD PTR [rcx],rax lock xrelease sbb QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; sbb QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; sbb QWORD PTR [rcx],rax xacquire lock sub QWORD PTR [rcx],rax lock xacquire sub QWORD PTR [rcx],rax xrelease lock sub QWORD PTR [rcx],rax lock xrelease sub QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; sub QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; sub QWORD PTR [rcx],rax xacquire lock xchg QWORD PTR [rcx],rax lock xacquire xchg QWORD PTR [rcx],rax xacquire xchg QWORD PTR [rcx],rax xrelease lock xchg QWORD PTR [rcx],rax lock xrelease xchg QWORD PTR [rcx],rax xrelease xchg QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; xchg QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; xchg QWORD PTR [rcx],rax xacquire lock xor QWORD PTR [rcx],rax lock xacquire xor QWORD PTR [rcx],rax xrelease lock xor QWORD PTR [rcx],rax lock xrelease xor QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; xor QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; xor QWORD PTR [rcx],rax # Tests for op regs, regs/m16 xacquire lock btc WORD PTR [rcx],ax lock xacquire btc WORD PTR [rcx],ax xrelease lock btc WORD PTR [rcx],ax lock xrelease btc WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; btc WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; btc WORD PTR [rcx],ax xacquire lock btr WORD PTR [rcx],ax lock xacquire btr WORD PTR [rcx],ax xrelease lock btr WORD PTR [rcx],ax lock xrelease btr WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; btr WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; btr WORD PTR [rcx],ax xacquire lock bts WORD PTR [rcx],ax lock xacquire bts WORD PTR [rcx],ax xrelease lock bts WORD PTR [rcx],ax lock xrelease bts WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; bts WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; bts WORD PTR [rcx],ax xacquire lock cmpxchg WORD PTR [rcx],ax lock xacquire cmpxchg WORD PTR [rcx],ax xrelease lock cmpxchg WORD PTR [rcx],ax lock xrelease cmpxchg WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; cmpxchg WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; cmpxchg WORD PTR [rcx],ax xacquire lock xadd WORD PTR [rcx],ax lock xacquire xadd WORD PTR [rcx],ax xrelease lock xadd WORD PTR [rcx],ax lock xrelease xadd WORD PTR [rcx],ax .byte 0xf0; .byte 0xf2; xadd WORD PTR [rcx],ax .byte 0xf0; .byte 0xf3; xadd WORD PTR [rcx],ax # Tests for op regl regl/m32 xacquire lock btc DWORD PTR [rcx],eax lock xacquire btc DWORD PTR [rcx],eax xrelease lock btc DWORD PTR [rcx],eax lock xrelease btc DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; btc DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; btc DWORD PTR [rcx],eax xacquire lock btr DWORD PTR [rcx],eax lock xacquire btr DWORD PTR [rcx],eax xrelease lock btr DWORD PTR [rcx],eax lock xrelease btr DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; btr DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; btr DWORD PTR [rcx],eax xacquire lock bts DWORD PTR [rcx],eax lock xacquire bts DWORD PTR [rcx],eax xrelease lock bts DWORD PTR [rcx],eax lock xrelease bts DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; bts DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; bts DWORD PTR [rcx],eax xacquire lock cmpxchg DWORD PTR [rcx],eax lock xacquire cmpxchg DWORD PTR [rcx],eax xrelease lock cmpxchg DWORD PTR [rcx],eax lock xrelease cmpxchg DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; cmpxchg DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; cmpxchg DWORD PTR [rcx],eax xacquire lock xadd DWORD PTR [rcx],eax lock xacquire xadd DWORD PTR [rcx],eax xrelease lock xadd DWORD PTR [rcx],eax lock xrelease xadd DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf2; xadd DWORD PTR [rcx],eax .byte 0xf0; .byte 0xf3; xadd DWORD PTR [rcx],eax # Tests for op regq regq/m64 xacquire lock btc QWORD PTR [rcx],rax lock xacquire btc QWORD PTR [rcx],rax xrelease lock btc QWORD PTR [rcx],rax lock xrelease btc QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; btc QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; btc QWORD PTR [rcx],rax xacquire lock btr QWORD PTR [rcx],rax lock xacquire btr QWORD PTR [rcx],rax xrelease lock btr QWORD PTR [rcx],rax lock xrelease btr QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; btr QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; btr QWORD PTR [rcx],rax xacquire lock bts QWORD PTR [rcx],rax lock xacquire bts QWORD PTR [rcx],rax xrelease lock bts QWORD PTR [rcx],rax lock xrelease bts QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; bts QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; bts QWORD PTR [rcx],rax xacquire lock cmpxchg QWORD PTR [rcx],rax lock xacquire cmpxchg QWORD PTR [rcx],rax xrelease lock cmpxchg QWORD PTR [rcx],rax lock xrelease cmpxchg QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; cmpxchg QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; cmpxchg QWORD PTR [rcx],rax xacquire lock xadd QWORD PTR [rcx],rax lock xacquire xadd QWORD PTR [rcx],rax xrelease lock xadd QWORD PTR [rcx],rax lock xrelease xadd QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf2; xadd QWORD PTR [rcx],rax .byte 0xf0; .byte 0xf3; xadd QWORD PTR [rcx],rax # Tests for op regb/m8 xacquire lock dec BYTE PTR [rcx] lock xacquire dec BYTE PTR [rcx] xrelease lock dec BYTE PTR [rcx] lock xrelease dec BYTE PTR [rcx] .byte 0xf0; .byte 0xf2; dec BYTE PTR [rcx] .byte 0xf0; .byte 0xf3; dec BYTE PTR [rcx] xacquire lock inc BYTE PTR [rcx] lock xacquire inc BYTE PTR [rcx] xrelease lock inc BYTE PTR [rcx] lock xrelease inc BYTE PTR [rcx] .byte 0xf0; .byte 0xf2; inc BYTE PTR [rcx] .byte 0xf0; .byte 0xf3; inc BYTE PTR [rcx] xacquire lock neg BYTE PTR [rcx] lock xacquire neg BYTE PTR [rcx] xrelease lock neg BYTE PTR [rcx] lock xrelease neg BYTE PTR [rcx] .byte 0xf0; .byte 0xf2; neg BYTE PTR [rcx] .byte 0xf0; .byte 0xf3; neg BYTE PTR [rcx] xacquire lock not BYTE PTR [rcx] lock xacquire not BYTE PTR [rcx] xrelease lock not BYTE PTR [rcx] lock xrelease not BYTE PTR [rcx] .byte 0xf0; .byte 0xf2; not BYTE PTR [rcx] .byte 0xf0; .byte 0xf3; not BYTE PTR [rcx] # Tests for op regs/m16 xacquire lock dec WORD PTR [rcx] lock xacquire dec WORD PTR [rcx] xrelease lock dec WORD PTR [rcx] lock xrelease dec WORD PTR [rcx] .byte 0xf0; .byte 0xf2; dec WORD PTR [rcx] .byte 0xf0; .byte 0xf3; dec WORD PTR [rcx] xacquire lock inc WORD PTR [rcx] lock xacquire inc WORD PTR [rcx] xrelease lock inc WORD PTR [rcx] lock xrelease inc WORD PTR [rcx] .byte 0xf0; .byte 0xf2; inc WORD PTR [rcx] .byte 0xf0; .byte 0xf3; inc WORD PTR [rcx] xacquire lock neg WORD PTR [rcx] lock xacquire neg WORD PTR [rcx] xrelease lock neg WORD PTR [rcx] lock xrelease neg WORD PTR [rcx] .byte 0xf0; .byte 0xf2; neg WORD PTR [rcx] .byte 0xf0; .byte 0xf3; neg WORD PTR [rcx] xacquire lock not WORD PTR [rcx] lock xacquire not WORD PTR [rcx] xrelease lock not WORD PTR [rcx] lock xrelease not WORD PTR [rcx] .byte 0xf0; .byte 0xf2; not WORD PTR [rcx] .byte 0xf0; .byte 0xf3; not WORD PTR [rcx] # Tests for op regl/m32 xacquire lock dec DWORD PTR [rcx] lock xacquire dec DWORD PTR [rcx] xrelease lock dec DWORD PTR [rcx] lock xrelease dec DWORD PTR [rcx] .byte 0xf0; .byte 0xf2; dec DWORD PTR [rcx] .byte 0xf0; .byte 0xf3; dec DWORD PTR [rcx] xacquire lock inc DWORD PTR [rcx] lock xacquire inc DWORD PTR [rcx] xrelease lock inc DWORD PTR [rcx] lock xrelease inc DWORD PTR [rcx] .byte 0xf0; .byte 0xf2; inc DWORD PTR [rcx] .byte 0xf0; .byte 0xf3; inc DWORD PTR [rcx] xacquire lock neg DWORD PTR [rcx] lock xacquire neg DWORD PTR [rcx] xrelease lock neg DWORD PTR [rcx] lock xrelease neg DWORD PTR [rcx] .byte 0xf0; .byte 0xf2; neg DWORD PTR [rcx] .byte 0xf0; .byte 0xf3; neg DWORD PTR [rcx] xacquire lock not DWORD PTR [rcx] lock xacquire not DWORD PTR [rcx] xrelease lock not DWORD PTR [rcx] lock xrelease not DWORD PTR [rcx] .byte 0xf0; .byte 0xf2; not DWORD PTR [rcx] .byte 0xf0; .byte 0xf3; not DWORD PTR [rcx] # Tests for op regq/m64 xacquire lock dec QWORD PTR [rcx] lock xacquire dec QWORD PTR [rcx] xrelease lock dec QWORD PTR [rcx] lock xrelease dec QWORD PTR [rcx] .byte 0xf0; .byte 0xf2; dec QWORD PTR [rcx] .byte 0xf0; .byte 0xf3; dec QWORD PTR [rcx] xacquire lock inc QWORD PTR [rcx] lock xacquire inc QWORD PTR [rcx] xrelease lock inc QWORD PTR [rcx] lock xrelease inc QWORD PTR [rcx] .byte 0xf0; .byte 0xf2; inc QWORD PTR [rcx] .byte 0xf0; .byte 0xf3; inc QWORD PTR [rcx] xacquire lock neg QWORD PTR [rcx] lock xacquire neg QWORD PTR [rcx] xrelease lock neg QWORD PTR [rcx] lock xrelease neg QWORD PTR [rcx] .byte 0xf0; .byte 0xf2; neg QWORD PTR [rcx] .byte 0xf0; .byte 0xf3; neg QWORD PTR [rcx] xacquire lock not QWORD PTR [rcx] lock xacquire not QWORD PTR [rcx] xrelease lock not QWORD PTR [rcx] lock xrelease not QWORD PTR [rcx] .byte 0xf0; .byte 0xf2; not QWORD PTR [rcx] .byte 0xf0; .byte 0xf3; not QWORD PTR [rcx] # Tests for op m64 xacquire lock cmpxchg8b QWORD PTR [rcx] lock xacquire cmpxchg8b QWORD PTR [rcx] xrelease lock cmpxchg8b QWORD PTR [rcx] lock xrelease cmpxchg8b QWORD PTR [rcx] .byte 0xf0; .byte 0xf2; cmpxchg8b QWORD PTR [rcx] .byte 0xf0; .byte 0xf3; cmpxchg8b QWORD PTR [rcx] # Tests for op regb, regb/m8 xacquire lock cmpxchg BYTE PTR [rcx],cl lock xacquire cmpxchg BYTE PTR [rcx],cl xrelease lock cmpxchg BYTE PTR [rcx],cl lock xrelease cmpxchg BYTE PTR [rcx],cl .byte 0xf0; .byte 0xf2; cmpxchg BYTE PTR [rcx],cl .byte 0xf0; .byte 0xf3; cmpxchg BYTE PTR [rcx],cl xacquire lock xadd BYTE PTR [rcx],cl lock xacquire xadd BYTE PTR [rcx],cl xrelease lock xadd BYTE PTR [rcx],cl lock xrelease xadd BYTE PTR [rcx],cl .byte 0xf0; .byte 0xf2; xadd BYTE PTR [rcx],cl .byte 0xf0; .byte 0xf3; xadd BYTE PTR [rcx],cl