# 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