1	.text
2	.allow_index_reg
3# All the following should be illegal for x86-64
4        aaa		# illegal
5        aad		# illegal
6        aam		# illegal
7        aas		# illegal
8        arpl %ax,%ax	# illegal
9        bound %eax,(%rax) # illegal
10	calll *%eax	# 32-bit data size not allowed
11        calll *(%ax)	# 32-bit data size not allowed
12        calll *(%eax)	# 32-bit data size not allowed
13        calll *(%r8)	# 32-bit data size not allowed
14        calll *(%rax)	# 32-bit data size not allowed
15	callq *(%ax)	# no 16-bit addressing
16        daa		# illegal
17        das		# illegal
18        enterl $0,$0	# can't have 32-bit stack operands
19        into		# illegal
20foo:	jcxz foo	# No prefix exists to select CX as a counter
21	jmpl *%eax	# 32-bit data size not allowed
22	jmpl *(%ax)	# 32-bit data size not allowed
23	jmpl *(%eax)	# 32-bit data size not allowed
24	jmpl *(%r8)	# 32-bit data size not allowed
25	jmpl *(%rax)	# 32-bit data size not allowed
26	jmpq *(%ax)	# no 16-bit addressing
27        lcalll $0,$0	# illegal
28        lcallq $0,$0	# illegal
29        ldsl %eax,(%rax) # illegal
30        ldsq %rax,(%rax) # illegal
31        lesl %eax,(%rax) # illegal
32        lesq %rax,(%rax) # illegal
33        ljmpl $0,$0	# illegal
34        ljmpq $0,$0	# illegal
35        ljmpq *(%rax)	# 64-bit data size not allowed
36	loopw foo	# No prefix exists to select CX as a counter
37	loopew foo	# No prefix exists to select CX as a counter
38	loopnew foo	# No prefix exists to select CX as a counter
39	loopnzw foo	# No prefix exists to select CX as a counter
40	loopzw foo	# No prefix exists to select CX as a counter
41        leavel		# can't have 32-bit stack operands
42        pop %ds		# illegal
43        pop %es		# illegal
44        pop %ss		# illegal
45        popa		# illegal
46        popl %eax	# can't have 32-bit stack operands
47        push %cs	# illegal
48        push %ds	# illegal
49        push %es	# illegal
50        push %ss	# illegal
51        pusha		# illegal
52        pushl %eax	# can't have 32-bit stack operands
53        pushfl		# can't have 32-bit stack operands
54	popfl		# can't have 32-bit stack operands
55	retl		# can't have 32-bit stack operands
56	insertq $4,$2,%xmm2,%ebx # The last operand must be XMM register.
57	fnstsw %eax
58	fnstsw %al
59	fstsw %eax
60	fstsw %al
61	in $8,%rax
62	out %rax,$8
63movzxl (%rax),%rax
64movnti %ax, (%rax)
65movntiw %ax, (%rax)
66
67mov 0x80000000(%rax),%ebx
68mov 0x80000000,%ebx
69
70	add (%rip,%rsi), %eax
71	add (%rsi,%rip), %eax
72	add (,%rip), %eax
73	add (%eip,%esi), %eax
74	add (%esi,%eip), %eax
75	add (,%eip), %eax
76	add (%rsi,%esi), %eax
77	add (%esi,%rsi), %eax
78	add (%eiz), %eax
79	add (%riz), %eax
80	add (%rax), %riz
81	add (%rax), %eiz
82
83	.intel_syntax noprefix
84	cmpxchg16b dword ptr [rax] # Must be oword
85	movq xmm1, XMMWORD PTR [rsp]
86	movq xmm1, DWORD PTR [rsp]
87	movq xmm1, WORD PTR [rsp]
88	movq xmm1, BYTE PTR [rsp]
89	movq XMMWORD PTR [rsp],xmm1
90	movq DWORD PTR [rsp],xmm1
91	movq WORD PTR [rsp],xmm1
92	movq BYTE PTR [rsp],xmm1
93	fnstsw eax
94	fnstsw al
95	fstsw eax
96	fstsw al
97	in rax,8
98	out 8,rax
99movsx ax, [rax]
100movsx eax, [rax]
101movsx rax, [rax]
102movzx ax, [rax]
103movzx eax, [rax]
104movzx rax, [rax]
105movnti word ptr [rax], ax
106	calld eax	# 32-bit data size not allowed
107	calld [ax]	# 32-bit data size not allowed
108	calld [eax]	# 32-bit data size not allowed
109	calld [r8]	# 32-bit data size not allowed
110	calld [rax]	# 32-bit data size not allowed
111	callq [ax]	# no 16-bit addressing
112	jmpd eax	# 32-bit data size not allowed
113	jmpd [ax]	# 32-bit data size not allowed
114	jmpd [eax]	# 32-bit data size not allowed
115	jmpd [r8]	# 32-bit data size not allowed
116	jmpd [rax]	# 32-bit data size not allowed
117	jmpq [ax]	# no 16-bit addressing
118