1# Check 64bit instructions with optimized encoding
2
3	.allow_index_reg
4	.text
5_start:
6	testq	$0x7f, %rax
7	testl	$0x7f, %eax
8	testw	$0x7f, %ax
9	testb	$0x7f, %al
10	test	$0x7f, %rbx
11	test	$0x7f, %ebx
12	test	$0x7f, %bx
13	test	$0x7f, %bl
14	test	$0x7f, %rdi
15	test	$0x7f, %edi
16	test	$0x7f, %di
17	test	$0x7f, %dil
18	test	$0x7f, %r9
19	test	$0x7f, %r9d
20	test	$0x7f, %r9w
21	test	$0x7f, %r9b
22	test	$0x7f, %r12
23	test	$0x7f, %r12d
24	test	$0x7f, %r12w
25	test	$0x7f, %r12b
26
27	and	%cl, %cl
28	and	%dx, %dx
29	and	%ebx, %ebx
30	and	%rsp, %rsp
31
32	or	%bpl, %bpl
33	or	%si, %si
34	or	%edi, %edi
35	or	%r8, %r8
36
37	vandnpd	%zmm1, %zmm1, %zmm5
38
39	vmovdqa32	%xmm1, %xmm2
40	vmovdqa64	%xmm1, %xmm2
41	vmovdqu8	%xmm1, %xmm2
42	vmovdqu16	%xmm1, %xmm2
43	vmovdqu32	%xmm1, %xmm2
44	vmovdqu64	%xmm1, %xmm2
45
46	vmovdqa32	%xmm11, %xmm12
47	vmovdqa64	%xmm11, %xmm12
48	vmovdqu8	%xmm11, %xmm12
49	vmovdqu16	%xmm11, %xmm12
50	vmovdqu32	%xmm11, %xmm12
51	vmovdqu64	%xmm11, %xmm12
52
53	vmovdqa32	127(%rax), %xmm2
54	vmovdqa64	127(%rax), %xmm2
55	vmovdqu8	127(%rax), %xmm2
56	vmovdqu16	127(%rax), %xmm2
57	vmovdqu32	127(%rax), %xmm2
58	vmovdqu64	127(%rax), %xmm2
59
60	vmovdqa32	%xmm1, 128(%rax)
61	vmovdqa64	%xmm1, 128(%rax)
62	vmovdqu8	%xmm1, 128(%rax)
63	vmovdqu16	%xmm1, 128(%rax)
64	vmovdqu32	%xmm1, 128(%rax)
65	vmovdqu64	%xmm1, 128(%rax)
66
67	vmovdqa32	%ymm1, %ymm2
68	vmovdqa64	%ymm1, %ymm2
69	vmovdqu8	%ymm1, %ymm2
70	vmovdqu16	%ymm1, %ymm2
71	vmovdqu32	%ymm1, %ymm2
72	vmovdqu64	%ymm1, %ymm2
73
74	vmovdqa32	%ymm11, %ymm12
75	vmovdqa64	%ymm11, %ymm12
76	vmovdqu8	%ymm11, %ymm12
77	vmovdqu16	%ymm11, %ymm12
78	vmovdqu32	%ymm11, %ymm12
79	vmovdqu64	%ymm11, %ymm12
80
81	vmovdqa32	127(%rax), %ymm2
82	vmovdqa64	127(%rax), %ymm2
83	vmovdqu8	127(%rax), %ymm2
84	vmovdqu16	127(%rax), %ymm2
85	vmovdqu32	127(%rax), %ymm2
86	vmovdqu64	127(%rax), %ymm2
87
88	vmovdqa32	%ymm1, 128(%rax)
89	vmovdqa64	%ymm1, 128(%rax)
90	vmovdqu8	%ymm1, 128(%rax)
91	vmovdqu16	%ymm1, 128(%rax)
92	vmovdqu32	%ymm1, 128(%rax)
93	vmovdqu64	%ymm1, 128(%rax)
94
95	vmovdqa32	%xmm21, %xmm2
96	vmovdqa64	%xmm21, %xmm2
97	vmovdqu8	%xmm21, %xmm2
98	vmovdqu16	%xmm21, %xmm2
99	vmovdqu32	%xmm21, %xmm2
100	vmovdqu64	%xmm21, %xmm2
101
102	vmovdqa32	%zmm1, %zmm2
103	vmovdqa64	%zmm1, %zmm2
104	vmovdqu8	%zmm1, %zmm2
105	vmovdqu16	%zmm1, %zmm2
106	vmovdqu32	%zmm1, %zmm2
107	vmovdqu64	%zmm1, %zmm2
108
109	{evex} vmovdqa32	%ymm1, %ymm2
110	{evex} vmovdqa64	%ymm1, %ymm2
111	{evex} vmovdqu8		%xmm1, %xmm2
112	{evex} vmovdqu16	%xmm1, %xmm2
113	{evex} vmovdqu32	%xmm1, %xmm2
114	{evex} vmovdqu64	%xmm1, %xmm2
115
116	vmovdqa32	%ymm1, %ymm2{%k1}
117	vmovdqa64	%ymm1, %ymm2{%k1}
118	vmovdqu8	%xmm1, %xmm2{%k1}
119	vmovdqu16	%xmm1, %xmm2{%k1}
120	vmovdqu32	%xmm1, %xmm2{%k1}
121	vmovdqu64	%xmm1, %xmm2{%k1}
122
123	vmovdqa32	(%rax), %ymm2{%k1}
124	vmovdqa64	(%rax), %ymm2{%k1}
125	vmovdqu8	(%rax), %xmm2{%k1}
126	vmovdqu16	(%rax), %xmm2{%k1}
127	vmovdqu32	(%rax), %xmm2{%k1}
128	vmovdqu64	(%rax), %xmm2{%k1}
129
130	vmovdqa32	%ymm1, (%rax){%k1}
131	vmovdqa64	%ymm1, (%rax){%k1}
132	vmovdqu8	%xmm1, (%rax){%k1}
133	vmovdqu16	%xmm1, (%rax){%k1}
134	vmovdqu32	%xmm1, (%rax){%k1}
135	vmovdqu64	%xmm1, (%rax){%k1}
136
137	vmovdqa32	%xmm1, %xmm2{%k1}{z}
138	vmovdqa64	%xmm1, %xmm2{%k1}{z}
139	vmovdqu8	%xmm1, %xmm2{%k1}{z}
140	vmovdqu16	%xmm1, %xmm2{%k1}{z}
141	vmovdqu32	%xmm1, %xmm2{%k1}{z}
142	vmovdqu64	%xmm1, %xmm2{%k1}{z}
143
144	vpandd		%xmm2, %xmm3, %xmm4
145	vpandq		%xmm12, %xmm3, %xmm4
146	vpandnd		%xmm2, %xmm13, %xmm4
147	vpandnq		%xmm2, %xmm3, %xmm14
148	vpord		%xmm2, %xmm3, %xmm4
149	vporq		%xmm12, %xmm3, %xmm4
150	vpxord		%xmm2, %xmm13, %xmm4
151	vpxorq		%xmm2, %xmm3, %xmm14
152
153	vpandd		%ymm2, %ymm3, %ymm4
154	vpandq		%ymm12, %ymm3, %ymm4
155	vpandnd		%ymm2, %ymm13, %ymm4
156	vpandnq		%ymm2, %ymm3, %ymm14
157	vpord		%ymm2, %ymm3, %ymm4
158	vporq		%ymm12, %ymm3, %ymm4
159	vpxord		%ymm2, %ymm13, %ymm4
160	vpxorq		%ymm2, %ymm3, %ymm14
161
162	vpandd		112(%rax), %xmm2, %xmm3
163	vpandq		112(%rax), %xmm2, %xmm3
164	vpandnd		112(%rax), %xmm2, %xmm3
165	vpandnq		112(%rax), %xmm2, %xmm3
166	vpord		112(%rax), %xmm2, %xmm3
167	vporq		112(%rax), %xmm2, %xmm3
168	vpxord		112(%rax), %xmm2, %xmm3
169	vpxorq		112(%rax), %xmm2, %xmm3
170
171	vpandd		128(%rax), %xmm2, %xmm3
172	vpandq		128(%rax), %xmm2, %xmm3
173	vpandnd		128(%rax), %xmm2, %xmm3
174	vpandnq		128(%rax), %xmm2, %xmm3
175	vpord		128(%rax), %xmm2, %xmm3
176	vporq		128(%rax), %xmm2, %xmm3
177	vpxord		128(%rax), %xmm2, %xmm3
178	vpxorq		128(%rax), %xmm2, %xmm3
179
180	vpandd		96(%rax), %ymm2, %ymm3
181	vpandq		96(%rax), %ymm2, %ymm3
182	vpandnd		96(%rax), %ymm2, %ymm3
183	vpandnq		96(%rax), %ymm2, %ymm3
184	vpord		96(%rax), %ymm2, %ymm3
185	vporq		96(%rax), %ymm2, %ymm3
186	vpxord		96(%rax), %ymm2, %ymm3
187	vpxorq		96(%rax), %ymm2, %ymm3
188
189	vpandd		128(%rax), %ymm2, %ymm3
190	vpandq		128(%rax), %ymm2, %ymm3
191	vpandnd		128(%rax), %ymm2, %ymm3
192	vpandnq		128(%rax), %ymm2, %ymm3
193	vpord		128(%rax), %ymm2, %ymm3
194	vporq		128(%rax), %ymm2, %ymm3
195	vpxord		128(%rax), %ymm2, %ymm3
196	vpxorq		128(%rax), %ymm2, %ymm3
197
198	vpandd		%xmm22, %xmm23, %xmm24
199	vpandq		%ymm22, %ymm3, %ymm4
200	vpandnd		%ymm2, %ymm23, %ymm4
201	vpandnq		%xmm2, %xmm3, %xmm24
202	vpord		%xmm22, %xmm23, %xmm24
203	vporq		%ymm22, %ymm3, %ymm4
204	vpxord		%ymm2, %ymm23, %ymm4
205	vpxorq		%xmm2, %xmm3, %xmm24
206
207	vpandd		%xmm2, %xmm3, %xmm4{%k5}
208	vpandq		%ymm12, %ymm3, %ymm4{%k5}
209	vpandnd		%ymm2, %ymm13, %ymm4{%k5}
210	vpandnq		%xmm2, %xmm3, %xmm14{%k5}
211	vpord		%xmm2, %xmm3, %xmm4{%k5}
212	vporq		%ymm12, %ymm3, %ymm4{%k5}
213	vpxord		%ymm2, %ymm13, %ymm4{%k5}
214	vpxorq		%xmm2, %xmm3, %xmm14{%k5}
215
216	vpandd		(%rax){1to8}, %ymm2, %ymm3
217	vpandq		(%rax){1to2}, %xmm2, %xmm3
218	vpandnd		(%rax){1to4}, %xmm2, %xmm3
219	vpandnq		(%rax){1to4}, %ymm2, %ymm3
220	vpord		(%rax){1to8}, %ymm2, %ymm3
221	vporq		(%rax){1to2}, %xmm2, %xmm3
222	vpxord		(%rax){1to4}, %xmm2, %xmm3
223	vpxorq		(%rax){1to4}, %ymm2, %ymm3
224