blob: 139fe9372a393fbc14476d239c4d0110d44e46f8 [file] [log] [blame]
# Check 32bit 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 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,(%ecx)
xrelease adcb $100,(%ecx)
# 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,(%ecx)
xrelease adcw $1000,(%ecx)
# 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,(%ecx)
xrelease adcl $10000000,(%ecx)
# 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,(%ecx)
xrelease adcw $100,(%ecx)
# 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,(%ecx)
xrelease adcl $100,(%ecx)
# 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,(%ecx)
xrelease adcb $100,(%ecx)
# 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,(%ecx)
xrelease adcb %al,(%ecx)
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 (%ecx),%al
xacquire lock adcb (%ecx),%al
lock xacquire adcb (%ecx),%al
xrelease adcb (%ecx),%al
xrelease lock adcb (%ecx),%al
lock xrelease adcb (%ecx),%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,(%ecx)
xrelease adcw %ax,(%ecx)
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 (%ecx),%ax
xacquire lock adcw (%ecx),%ax
lock xacquire adcw (%ecx),%ax
xrelease adcw (%ecx),%ax
xrelease lock adcw (%ecx),%ax
lock xrelease adcw (%ecx),%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,(%ecx)
xrelease adcl %eax,(%ecx)
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 (%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
# 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,(%ecx)
xrelease btcw %ax,(%ecx)
# 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,(%ecx)
xrelease btcl %eax,(%ecx)
# 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 (%ecx)
xrelease decb (%ecx)
# 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 (%ecx)
xrelease decw (%ecx)
# 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 (%ecx)
xrelease decl (%ecx)
# Tests for op m64
xacquire cmpxchg8bq (%ecx)
xrelease cmpxchg8bq (%ecx)
# 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,(%ecx)
xrelease cmpxchgb %cl,(%ecx)
.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 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 [ecx],100
xrelease adc BYTE PTR [ecx],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 [ecx],1000
xrelease adc WORD PTR [ecx],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 [ecx],10000000
xrelease adc DWORD PTR [ecx],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 [ecx],100
xrelease adc WORD PTR [ecx],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 [ecx],100
xrelease adc DWORD PTR [ecx],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 [ecx],100
xrelease adc BYTE PTR [ecx],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 [ecx],al
xrelease adc BYTE PTR [ecx],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 [ecx]
xacquire lock adc al,BYTE PTR [ecx]
lock xacquire adc al,BYTE PTR [ecx]
xrelease adc al,BYTE PTR [ecx]
xrelease lock adc al,BYTE PTR [ecx]
lock xrelease adc al,BYTE PTR [ecx]
# 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 [ecx],ax
xrelease adc WORD PTR [ecx],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 [ecx]
xacquire lock adc ax,WORD PTR [ecx]
lock xacquire adc ax,WORD PTR [ecx]
xrelease adc ax,WORD PTR [ecx]
xrelease lock adc ax,WORD PTR [ecx]
lock xrelease adc ax,WORD PTR [ecx]
# 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 [ecx],eax
xrelease adc DWORD PTR [ecx],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 [ecx]
xacquire lock adc eax,DWORD PTR [ecx]
lock xacquire adc eax,DWORD PTR [ecx]
xrelease adc eax,DWORD PTR [ecx]
xrelease lock adc eax,DWORD PTR [ecx]
lock xrelease adc eax,DWORD PTR [ecx]
# 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 [ecx],ax
xrelease btc WORD PTR [ecx],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 [ecx],eax
xrelease btc DWORD PTR [ecx],eax
# 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 [ecx]
xrelease dec BYTE PTR [ecx]
# 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 [ecx]
xrelease dec WORD PTR [ecx]
# 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 [ecx]
xrelease dec DWORD PTR [ecx]
# Tests for op m64
xacquire cmpxchg8b QWORD PTR [ecx]
xrelease cmpxchg8b QWORD PTR [ecx]
# 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 [ecx],cl
xrelease cmpxchg BYTE PTR [ecx],cl