	.text
	.allow_index_reg
# All the following should be illegal for x86-64
        aaa		# illegal
        aad		# illegal
        aam		# illegal
        aas		# illegal
        arpl %ax,%ax	# illegal
        bound %eax,(%rax) # illegal
	calll *%eax	# 32-bit data size not allowed
        calll *(%ax)	# 32-bit data size not allowed
        calll *(%eax)	# 32-bit data size not allowed
        calll *(%r8)	# 32-bit data size not allowed
        calll *(%rax)	# 32-bit data size not allowed
	callq *(%ax)	# no 16-bit addressing
        daa		# illegal
        das		# illegal
        enterl $0,$0	# can't have 32-bit stack operands
        into		# illegal
foo:	jcxz foo	# No prefix exists to select CX as a counter
	jmpl *%eax	# 32-bit data size not allowed
	jmpl *(%ax)	# 32-bit data size not allowed
	jmpl *(%eax)	# 32-bit data size not allowed
	jmpl *(%r8)	# 32-bit data size not allowed
	jmpl *(%rax)	# 32-bit data size not allowed
	jmpq *(%ax)	# no 16-bit addressing
        lcalll $0,$0	# illegal
        lcallq $0,$0	# illegal
        ldsl %eax,(%rax) # illegal
        ldsq %rax,(%rax) # illegal
        lesl %eax,(%rax) # illegal
        lesq %rax,(%rax) # illegal
        ljmpl $0,$0	# illegal
        ljmpq $0,$0	# illegal
        ljmpq *(%rax)	# 64-bit data size not allowed
	loopw foo	# No prefix exists to select CX as a counter
	loopew foo	# No prefix exists to select CX as a counter
	loopnew foo	# No prefix exists to select CX as a counter
	loopnzw foo	# No prefix exists to select CX as a counter
	loopzw foo	# No prefix exists to select CX as a counter
        leavel		# can't have 32-bit stack operands
        pop %ds		# illegal
        pop %es		# illegal
        pop %ss		# illegal
        popa		# illegal
        popl %eax	# can't have 32-bit stack operands
        push %cs	# illegal
        push %ds	# illegal
        push %es	# illegal
        push %ss	# illegal
        pusha		# illegal
        pushl %eax	# can't have 32-bit stack operands
        pushfl		# can't have 32-bit stack operands
	popfl		# can't have 32-bit stack operands
	retl		# can't have 32-bit stack operands
	insertq $4,$2,%xmm2,%ebx # The last operand must be XMM register.
	fnstsw %eax
	fnstsw %al
	fstsw %eax
	fstsw %al
	in $8,%rax
	out %rax,$8
movzxl (%rax),%rax
movnti %ax, (%rax)
movntiw %ax, (%rax)

mov 0x80000000(%rax),%ebx
mov 0x80000000,%ebx

	add (%rip,%rsi), %eax
	add (%rsi,%rip), %eax
	add (,%rip), %eax
	add (%eip,%esi), %eax
	add (%esi,%eip), %eax
	add (,%eip), %eax
	add (%rsi,%esi), %eax
	add (%esi,%rsi), %eax
	add (%eiz), %eax
	add (%riz), %eax
	add (%rax), %riz
	add (%rax), %eiz

	.intel_syntax noprefix
	cmpxchg16b dword ptr [rax] # Must be oword
	movq xmm1, XMMWORD PTR [rsp]
	movq xmm1, DWORD PTR [rsp]
	movq xmm1, WORD PTR [rsp]
	movq xmm1, BYTE PTR [rsp]
	movq XMMWORD PTR [rsp],xmm1
	movq DWORD PTR [rsp],xmm1
	movq WORD PTR [rsp],xmm1
	movq BYTE PTR [rsp],xmm1
	fnstsw eax
	fnstsw al
	fstsw eax
	fstsw al
	in rax,8
	out 8,rax
movsx ax, [rax]
movsx eax, [rax]
movsx rax, [rax]
movzx ax, [rax]
movzx eax, [rax]
movzx rax, [rax]
movnti word ptr [rax], ax
	calld eax	# 32-bit data size not allowed
	calld [ax]	# 32-bit data size not allowed
	calld [eax]	# 32-bit data size not allowed
	calld [r8]	# 32-bit data size not allowed
	calld [rax]	# 32-bit data size not allowed
	callq [ax]	# no 16-bit addressing
	jmpd eax	# 32-bit data size not allowed
	jmpd [ax]	# 32-bit data size not allowed
	jmpd [eax]	# 32-bit data size not allowed
	jmpd [r8]	# 32-bit data size not allowed
	jmpd [rax]	# 32-bit data size not allowed
	jmpq [ax]	# no 16-bit addressing
	mov eax,[rax+0x876543210] # out of range displacement

	.att_syntax prefix
	movsd (%rsi), %ss:(%rdi), %ss:(%rax)
