blob: f79633cc3e3e122c734b4e30912bee3b1b831304 [file] [log] [blame]
# Check 64bit unsupported HLE instructions
.allow_index_reg
.text
_start:
# Tests for op imm8 al
xacquire adc $100,%al
xacquire lock adc $100,%al
lock xacquire adc $100,%al
xrelease adc $100,%al
xrelease lock adc $100,%al
lock xrelease adc $100,%al
# Tests for op imm16 ax
xacquire adc $1000,%ax
xacquire lock adc $1000,%ax
lock xacquire adc $1000,%ax
xrelease adc $1000,%ax
xrelease lock adc $1000,%ax
lock xrelease adc $1000,%ax
# Tests for op imm32 eax
xacquire adc $10000000,%eax
xacquire lock adc $10000000,%eax
lock xacquire adc $10000000,%eax
xrelease adc $10000000,%eax
xrelease lock adc $10000000,%eax
lock xrelease adc $10000000,%eax
# Tests for op imm32 rax
xacquire adc $10000000,%rax
xacquire lock adc $10000000,%rax
lock xacquire adc $10000000,%rax
xrelease adc $10000000,%rax
xrelease lock adc $10000000,%rax
lock xrelease adc $10000000,%rax
# Tests for op imm8 regb/m8
xacquire adcb $100,%cl
xacquire lock adcb $100,%cl
lock xacquire adcb $100,%cl
xrelease adcb $100,%cl
xrelease lock adcb $100,%cl
lock xrelease adcb $100,%cl
xacquire adcb $100,(%rcx)
xrelease adcb $100,(%rcx)
# Tests for op imm16 regs/m16
xacquire adcw $1000,%cx
xacquire lock adcw $1000,%cx
lock xacquire adcw $1000,%cx
xrelease adcw $1000,%cx
xrelease lock adcw $1000,%cx
lock xrelease adcw $1000,%cx
xacquire adcw $1000,(%rcx)
xrelease adcw $1000,(%rcx)
# Tests for op imm32 regl/m32
xacquire adcl $10000000,%ecx
xacquire lock adcl $10000000,%ecx
lock xacquire adcl $10000000,%ecx
xrelease adcl $10000000,%ecx
xrelease lock adcl $10000000,%ecx
lock xrelease adcl $10000000,%ecx
xacquire adcl $10000000,(%rcx)
xrelease adcl $10000000,(%rcx)
# Tests for op imm32 regq/m64
xacquire adcq $10000000,%rcx
xacquire lock adcq $10000000,%rcx
lock xacquire adcq $10000000,%rcx
xrelease adcq $10000000,%rcx
xrelease lock adcq $10000000,%rcx
lock xrelease adcq $10000000,%rcx
xacquire adcq $10000000,(%rcx)
xrelease adcq $10000000,(%rcx)
# Tests for op imm8 regs/m16
xacquire adcw $100,%cx
xacquire lock adcw $100,%cx
lock xacquire adcw $100,%cx
xrelease adcw $100,%cx
xrelease lock adcw $100,%cx
lock xrelease adcw $100,%cx
xacquire adcw $100,(%rcx)
xrelease adcw $100,(%rcx)
# Tests for op imm8 regl/m32
xacquire adcl $100,%ecx
xacquire lock adcl $100,%ecx
lock xacquire adcl $100,%ecx
xrelease adcl $100,%ecx
xrelease lock adcl $100,%ecx
lock xrelease adcl $100,%ecx
xacquire adcl $100,(%rcx)
xrelease adcl $100,(%rcx)
# Tests for op imm8 regq/m64
xacquire adcq $100,%rcx
xacquire lock adcq $100,%rcx
lock xacquire adcq $100,%rcx
xrelease adcq $100,%rcx
xrelease lock adcq $100,%rcx
lock xrelease adcq $100,%rcx
xacquire adcq $100,(%rcx)
xrelease adcq $100,(%rcx)
# Tests for op imm8 regb/m8
xacquire adcb $100,%cl
xacquire lock adcb $100,%cl
lock xacquire adcb $100,%cl
xrelease adcb $100,%cl
xrelease lock adcb $100,%cl
lock xrelease adcb $100,%cl
xacquire adcb $100,(%rcx)
xrelease adcb $100,(%rcx)
# Tests for op regb regb/m8
# Tests for op regb/m8 regb
xacquire adcb %al,%cl
xacquire lock adcb %al,%cl
lock xacquire adcb %al,%cl
xrelease adcb %al,%cl
xrelease lock adcb %al,%cl
lock xrelease adcb %al,%cl
xacquire adcb %al,(%rcx)
xrelease adcb %al,(%rcx)
xacquire adcb %cl,%al
xacquire lock adcb %cl,%al
lock xacquire adcb %cl,%al
xrelease adcb %cl,%al
xrelease lock adcb %cl,%al
lock xrelease adcb %cl,%al
xacquire adcb (%rcx),%al
xacquire lock adcb (%rcx),%al
lock xacquire adcb (%rcx),%al
xrelease adcb (%rcx),%al
xrelease lock adcb (%rcx),%al
lock xrelease adcb (%rcx),%al
# Tests for op regs regs/m16
# Tests for op regs/m16 regs
xacquire adcw %ax,%cx
xacquire lock adcw %ax,%cx
lock xacquire adcw %ax,%cx
xrelease adcw %ax,%cx
xrelease lock adcw %ax,%cx
lock xrelease adcw %ax,%cx
xacquire adcw %ax,(%rcx)
xrelease adcw %ax,(%rcx)
xacquire adcw %cx,%ax
xacquire lock adcw %cx,%ax
lock xacquire adcw %cx,%ax
xrelease adcw %cx,%ax
xrelease lock adcw %cx,%ax
lock xrelease adcw %cx,%ax
xacquire adcw (%rcx),%ax
xacquire lock adcw (%rcx),%ax
lock xacquire adcw (%rcx),%ax
xrelease adcw (%rcx),%ax
xrelease lock adcw (%rcx),%ax
lock xrelease adcw (%rcx),%ax
# Tests for op regl regl/m32
# Tests for op regl/m32 regl
xacquire adcl %eax,%ecx
xacquire lock adcl %eax,%ecx
lock xacquire adcl %eax,%ecx
xrelease adcl %eax,%ecx
xrelease lock adcl %eax,%ecx
lock xrelease adcl %eax,%ecx
xacquire adcl %eax,(%rcx)
xrelease adcl %eax,(%rcx)
xacquire adcl %ecx,%eax
xacquire lock adcl %ecx,%eax
lock xacquire adcl %ecx,%eax
xrelease adcl %ecx,%eax
xrelease lock adcl %ecx,%eax
lock xrelease adcl %ecx,%eax
xacquire adcl (%rcx),%eax
xacquire lock adcl (%rcx),%eax
lock xacquire adcl (%rcx),%eax
xrelease adcl (%rcx),%eax
xrelease lock adcl (%rcx),%eax
lock xrelease adcl (%rcx),%eax
# Tests for op regq regq/m64
# Tests for op regq/m64 regq
xacquire adcq %rax,%rcx
xacquire lock adcq %rax,%rcx
lock xacquire adcq %rax,%rcx
xrelease adcq %rax,%rcx
xrelease lock adcq %rax,%rcx
lock xrelease adcq %rax,%rcx
xacquire adcq %rax,(%rcx)
xrelease adcq %rax,(%rcx)
xacquire adcq %rcx,%rax
xacquire lock adcq %rcx,%rax
lock xacquire adcq %rcx,%rax
xrelease adcq %rcx,%rax
xrelease lock adcq %rcx,%rax
lock xrelease adcq %rcx,%rax
xacquire adcq (%rcx),%rax
xacquire lock adcq (%rcx),%rax
lock xacquire adcq (%rcx),%rax
xrelease adcq (%rcx),%rax
xrelease lock adcq (%rcx),%rax
lock xrelease adcq (%rcx),%rax
# Tests for op regs, regs/m16
xacquire btcw %ax,%cx
xacquire lock btcw %ax,%cx
lock xacquire btcw %ax,%cx
xrelease btcw %ax,%cx
xrelease lock btcw %ax,%cx
lock xrelease btcw %ax,%cx
xacquire btcw %ax,(%rcx)
xrelease btcw %ax,(%rcx)
# Tests for op regl regl/m32
xacquire btcl %eax,%ecx
xacquire lock btcl %eax,%ecx
lock xacquire btcl %eax,%ecx
xrelease btcl %eax,%ecx
xrelease lock btcl %eax,%ecx
lock xrelease btcl %eax,%ecx
xacquire btcl %eax,(%rcx)
xrelease btcl %eax,(%rcx)
# Tests for op regq regq/m64
xacquire btcq %rax,%rcx
xacquire lock btcq %rax,%rcx
lock xacquire btcq %rax,%rcx
xrelease btcq %rax,%rcx
xrelease lock btcq %rax,%rcx
lock xrelease btcq %rax,%rcx
xacquire btcq %rax,(%rcx)
xrelease btcq %rax,(%rcx)
# Tests for op regb/m8
xacquire decb %cl
xacquire lock decb %cl
lock xacquire decb %cl
xrelease decb %cl
xrelease lock decb %cl
lock xrelease decb %cl
xacquire decb (%rcx)
xrelease decb (%rcx)
# Tests for op regs/m16
xacquire decw %cx
xacquire lock decw %cx
lock xacquire decw %cx
xrelease decw %cx
xrelease lock decw %cx
lock xrelease decw %cx
xacquire decw (%rcx)
xrelease decw (%rcx)
# Tests for op regl/m32
xacquire decl %ecx
xacquire lock decl %ecx
lock xacquire decl %ecx
xrelease decl %ecx
xrelease lock decl %ecx
lock xrelease decl %ecx
xacquire decl (%rcx)
xrelease decl (%rcx)
# Tests for op regq/m64
xacquire decq %rcx
xacquire lock decq %rcx
lock xacquire decq %rcx
xrelease decq %rcx
xrelease lock decq %rcx
lock xrelease decq %rcx
xacquire decq (%rcx)
xrelease decq (%rcx)
# Tests for op m64
xacquire cmpxchg8bq (%rcx)
xrelease cmpxchg8bq (%rcx)
# Tests for op regb, regb/m8
xacquire cmpxchgb %cl,%al
xacquire lock cmpxchgb %cl,%al
lock xacquire cmpxchgb %cl,%al
xrelease cmpxchgb %cl,%al
xrelease lock cmpxchgb %cl,%al
lock xrelease cmpxchgb %cl,%al
xacquire cmpxchgb %cl,(%rcx)
xrelease cmpxchgb %cl,(%rcx)
.intel_syntax noprefix
# Tests for op imm8 al
xacquire adc al,100
xacquire lock adc al,100
lock xacquire adc al,100
xrelease adc al,100
xrelease lock adc al,100
lock xrelease adc al,100
# Tests for op imm16 ax
xacquire adc ax,1000
xacquire lock adc ax,1000
lock xacquire adc ax,1000
xrelease adc ax,1000
xrelease lock adc ax,1000
lock xrelease adc ax,1000
# Tests for op imm32 eax
xacquire adc eax,10000000
xacquire lock adc eax,10000000
lock xacquire adc eax,10000000
xrelease adc eax,10000000
xrelease lock adc eax,10000000
lock xrelease adc eax,10000000
# Tests for op imm32 rax
xacquire adc rax,10000000
xacquire lock adc rax,10000000
lock xacquire adc rax,10000000
xrelease adc rax,10000000
xrelease lock adc rax,10000000
lock xrelease adc rax,10000000
# Tests for op imm8 regb/m8
xacquire adc cl,100
xacquire lock adc cl,100
lock xacquire adc cl,100
xrelease adc cl,100
xrelease lock adc cl,100
lock xrelease adc cl,100
xacquire adc BYTE PTR [rcx],100
xrelease adc BYTE PTR [rcx],100
# Tests for op imm16 regs/m16
xacquire adc cx,1000
xacquire lock adc cx,1000
lock xacquire adc cx,1000
xrelease adc cx,1000
xrelease lock adc cx,1000
lock xrelease adc cx,1000
xacquire adc WORD PTR [rcx],1000
xrelease adc WORD PTR [rcx],1000
# Tests for op imm32 regl/m32
xacquire adc ecx,10000000
xacquire lock adc ecx,10000000
lock xacquire adc ecx,10000000
xrelease adc ecx,10000000
xrelease lock adc ecx,10000000
lock xrelease adc ecx,10000000
xacquire adc DWORD PTR [rcx],10000000
xrelease adc DWORD PTR [rcx],10000000
# Tests for op imm32 regq/m64
xacquire adc rcx,10000000
xacquire lock adc rcx,10000000
lock xacquire adc rcx,10000000
xrelease adc rcx,10000000
xrelease lock adc rcx,10000000
lock xrelease adc rcx,10000000
xacquire adc QWORD PTR [rcx],10000000
xrelease adc QWORD PTR [rcx],10000000
# Tests for op imm8 regs/m16
xacquire adc cx,100
xacquire lock adc cx,100
lock xacquire adc cx,100
xrelease adc cx,100
xrelease lock adc cx,100
lock xrelease adc cx,100
xacquire adc WORD PTR [rcx],100
xrelease adc WORD PTR [rcx],100
# Tests for op imm8 regl/m32
xacquire adc ecx,100
xacquire lock adc ecx,100
lock xacquire adc ecx,100
xrelease adc ecx,100
xrelease lock adc ecx,100
lock xrelease adc ecx,100
xacquire adc DWORD PTR [rcx],100
xrelease adc DWORD PTR [rcx],100
# Tests for op imm8 regq/m64
xacquire adc rcx,100
xacquire lock adc rcx,100
lock xacquire adc rcx,100
xrelease adc rcx,100
xrelease lock adc rcx,100
lock xrelease adc rcx,100
xacquire adc QWORD PTR [rcx],100
xrelease adc QWORD PTR [rcx],100
# Tests for op imm8 regb/m8
xacquire adc cl,100
xacquire lock adc cl,100
lock xacquire adc cl,100
xrelease adc cl,100
xrelease lock adc cl,100
lock xrelease adc cl,100
xacquire adc BYTE PTR [rcx],100
xrelease adc BYTE PTR [rcx],100
# Tests for op regb regb/m8
# Tests for op regb/m8 regb
xacquire adc cl,al
xacquire lock adc cl,al
lock xacquire adc cl,al
xrelease adc cl,al
xrelease lock adc cl,al
lock xrelease adc cl,al
xacquire adc BYTE PTR [rcx],al
xrelease adc BYTE PTR [rcx],al
xacquire adc al,cl
xacquire lock adc al,cl
lock xacquire adc al,cl
xrelease adc al,cl
xrelease lock adc al,cl
lock xrelease adc al,cl
xacquire adc al,BYTE PTR [rcx]
xacquire lock adc al,BYTE PTR [rcx]
lock xacquire adc al,BYTE PTR [rcx]
xrelease adc al,BYTE PTR [rcx]
xrelease lock adc al,BYTE PTR [rcx]
lock xrelease adc al,BYTE PTR [rcx]
# Tests for op regs regs/m16
# Tests for op regs/m16 regs
xacquire adc cx,ax
xacquire lock adc cx,ax
lock xacquire adc cx,ax
xrelease adc cx,ax
xrelease lock adc cx,ax
lock xrelease adc cx,ax
xacquire adc WORD PTR [rcx],ax
xrelease adc WORD PTR [rcx],ax
xacquire adc ax,cx
xacquire lock adc ax,cx
lock xacquire adc ax,cx
xrelease adc ax,cx
xrelease lock adc ax,cx
lock xrelease adc ax,cx
xacquire adc ax,WORD PTR [rcx]
xacquire lock adc ax,WORD PTR [rcx]
lock xacquire adc ax,WORD PTR [rcx]
xrelease adc ax,WORD PTR [rcx]
xrelease lock adc ax,WORD PTR [rcx]
lock xrelease adc ax,WORD PTR [rcx]
# Tests for op regl regl/m32
# Tests for op regl/m32 regl
xacquire adc ecx,eax
xacquire lock adc ecx,eax
lock xacquire adc ecx,eax
xrelease adc ecx,eax
xrelease lock adc ecx,eax
lock xrelease adc ecx,eax
xacquire adc DWORD PTR [rcx],eax
xrelease adc DWORD PTR [rcx],eax
xacquire adc eax,ecx
xacquire lock adc eax,ecx
lock xacquire adc eax,ecx
xrelease adc eax,ecx
xrelease lock adc eax,ecx
lock xrelease adc eax,ecx
xacquire adc eax,DWORD PTR [rcx]
xacquire lock adc eax,DWORD PTR [rcx]
lock xacquire adc eax,DWORD PTR [rcx]
xrelease adc eax,DWORD PTR [rcx]
xrelease lock adc eax,DWORD PTR [rcx]
lock xrelease adc eax,DWORD PTR [rcx]
# Tests for op regq regq/m64
# Tests for op regq/m64 regq
xacquire adc rcx,rax
xacquire lock adc rcx,rax
lock xacquire adc rcx,rax
xrelease adc rcx,rax
xrelease lock adc rcx,rax
lock xrelease adc rcx,rax
xacquire adc QWORD PTR [rcx],rax
xrelease adc QWORD PTR [rcx],rax
xacquire adc rax,rcx
xacquire lock adc rax,rcx
lock xacquire adc rax,rcx
xrelease adc rax,rcx
xrelease lock adc rax,rcx
lock xrelease adc rax,rcx
xacquire adc rax,QWORD PTR [rcx]
xacquire lock adc rax,QWORD PTR [rcx]
lock xacquire adc rax,QWORD PTR [rcx]
xrelease adc rax,QWORD PTR [rcx]
xrelease lock adc rax,QWORD PTR [rcx]
lock xrelease adc rax,QWORD PTR [rcx]
# Tests for op regs, regs/m16
xacquire btc cx,ax
xacquire lock btc cx,ax
lock xacquire btc cx,ax
xrelease btc cx,ax
xrelease lock btc cx,ax
lock xrelease btc cx,ax
xacquire btc WORD PTR [rcx],ax
xrelease btc WORD PTR [rcx],ax
# Tests for op regl regl/m32
xacquire btc ecx,eax
xacquire lock btc ecx,eax
lock xacquire btc ecx,eax
xrelease btc ecx,eax
xrelease lock btc ecx,eax
lock xrelease btc ecx,eax
xacquire btc DWORD PTR [rcx],eax
xrelease btc DWORD PTR [rcx],eax
# Tests for op regq regq/m64
xacquire btc rcx,rax
xacquire lock btc rcx,rax
lock xacquire btc rcx,rax
xrelease btc rcx,rax
xrelease lock btc rcx,rax
lock xrelease btc rcx,rax
xacquire btc QWORD PTR [rcx],rax
xrelease btc QWORD PTR [rcx],rax
# Tests for op regb/m8
xacquire dec cl
xacquire lock dec cl
lock xacquire dec cl
xrelease dec cl
xrelease lock dec cl
lock xrelease dec cl
xacquire dec BYTE PTR [rcx]
xrelease dec BYTE PTR [rcx]
# Tests for op regs/m16
xacquire dec cx
xacquire lock dec cx
lock xacquire dec cx
xrelease dec cx
xrelease lock dec cx
lock xrelease dec cx
xacquire dec WORD PTR [rcx]
xrelease dec WORD PTR [rcx]
# Tests for op regl/m32
xacquire dec ecx
xacquire lock dec ecx
lock xacquire dec ecx
xrelease dec ecx
xrelease lock dec ecx
lock xrelease dec ecx
xacquire dec DWORD PTR [rcx]
xrelease dec DWORD PTR [rcx]
# Tests for op regq/m64
xacquire dec rcx
xacquire lock dec rcx
lock xacquire dec rcx
xrelease dec rcx
xrelease lock dec rcx
lock xrelease dec rcx
xacquire dec QWORD PTR [rcx]
xrelease dec QWORD PTR [rcx]
# Tests for op m64
xacquire cmpxchg8b QWORD PTR [rcx]
xrelease cmpxchg8b QWORD PTR [rcx]
# Tests for op regb, regb/m8
xacquire cmpxchg al,cl
xacquire lock cmpxchg al,cl
lock xacquire cmpxchg al,cl
xrelease cmpxchg al,cl
xrelease lock cmpxchg al,cl
lock xrelease cmpxchg al,cl
xacquire cmpxchg BYTE PTR [rcx],cl
xrelease cmpxchg BYTE PTR [rcx],cl