1# Check EVEX WIG instructions
2
3	.allow_index_reg
4	.text
5_start:
6
7	vextractps	$0xab, %xmm29, %rax	 # AVX512
8	vextractps	$123, %xmm29, %rax	 # AVX512
9	vextractps	$123, %xmm29, %r8	 # AVX512
10	vextractps	$123, %xmm29, (%rcx)	 # AVX512
11	vextractps	$123, %xmm29, 0x123(%rax,%r14,8)	 # AVX512
12	vextractps	$123, %xmm29, 508(%rdx)	 # AVX512 Disp8
13	vextractps	$123, %xmm29, 512(%rdx)	 # AVX512
14	vextractps	$123, %xmm29, -512(%rdx)	 # AVX512 Disp8
15	vextractps	$123, %xmm29, -516(%rdx)	 # AVX512
16
17	{evex} vpextrb $0, %xmm0, %eax
18	{evex} vpextrb $0, %xmm0, (%rax)
19
20	{evex} vpextrw $0, %xmm0, %eax
21	{evex} {store} vpextrw $0, %xmm0, %eax
22	{evex} vpextrw $0, %xmm0, (%rax)
23
24	{evex} vpinsrb $0, %eax, %xmm0, %xmm0
25	{evex} vpinsrb $0, (%rax), %xmm0, %xmm0
26
27	{evex} vpinsrw $0, %eax, %xmm0, %xmm0
28	{evex} vpinsrw $0, (%rax), %xmm0, %xmm0
29
30	vpmovsxbd	%xmm29, %zmm30{%k7}	 # AVX512
31	vpmovsxbd	%xmm29, %zmm30{%k7}{z}	 # AVX512
32	vpmovsxbd	(%rcx), %zmm30{%k7}	 # AVX512
33	vpmovsxbd	0x123(%rax,%r14,8), %zmm30{%k7}	 # AVX512
34	vpmovsxbd	2032(%rdx), %zmm30{%k7}	 # AVX512 Disp8
35	vpmovsxbd	2048(%rdx), %zmm30{%k7}	 # AVX512
36	vpmovsxbd	-2048(%rdx), %zmm30{%k7}	 # AVX512 Disp8
37	vpmovsxbd	-2064(%rdx), %zmm30{%k7}	 # AVX512
38
39	vpmovsxbq	%xmm29, %zmm30{%k7}	 # AVX512
40	vpmovsxbq	%xmm29, %zmm30{%k7}{z}	 # AVX512
41	vpmovsxbq	(%rcx), %zmm30{%k7}	 # AVX512
42	vpmovsxbq	0x123(%rax,%r14,8), %zmm30{%k7}	 # AVX512
43	vpmovsxbq	1016(%rdx), %zmm30{%k7}	 # AVX512 Disp8
44	vpmovsxbq	1024(%rdx), %zmm30{%k7}	 # AVX512
45	vpmovsxbq	-1024(%rdx), %zmm30{%k7}	 # AVX512 Disp8
46	vpmovsxbq	-1032(%rdx), %zmm30{%k7}	 # AVX512
47
48	vpmovsxwd	%ymm29, %zmm30{%k7}	 # AVX512
49	vpmovsxwd	%ymm29, %zmm30{%k7}{z}	 # AVX512
50	vpmovsxwd	(%rcx), %zmm30{%k7}	 # AVX512
51	vpmovsxwd	0x123(%rax,%r14,8), %zmm30{%k7}	 # AVX512
52	vpmovsxwd	4064(%rdx), %zmm30{%k7}	 # AVX512 Disp8
53	vpmovsxwd	4096(%rdx), %zmm30{%k7}	 # AVX512
54	vpmovsxwd	-4096(%rdx), %zmm30{%k7}	 # AVX512 Disp8
55	vpmovsxwd	-4128(%rdx), %zmm30{%k7}	 # AVX512
56
57	vpmovsxwq	%xmm29, %zmm30{%k7}	 # AVX512
58	vpmovsxwq	%xmm29, %zmm30{%k7}{z}	 # AVX512
59	vpmovsxwq	(%rcx), %zmm30{%k7}	 # AVX512
60	vpmovsxwq	0x123(%rax,%r14,8), %zmm30{%k7}	 # AVX512
61	vpmovsxwq	2032(%rdx), %zmm30{%k7}	 # AVX512 Disp8
62	vpmovsxwq	2048(%rdx), %zmm30{%k7}	 # AVX512
63	vpmovsxwq	-2048(%rdx), %zmm30{%k7}	 # AVX512 Disp8
64	vpmovsxwq	-2064(%rdx), %zmm30{%k7}	 # AVX512
65
66	vpmovzxbd	%xmm29, %zmm30{%k7}	 # AVX512
67	vpmovzxbd	%xmm29, %zmm30{%k7}{z}	 # AVX512
68	vpmovzxbd	(%rcx), %zmm30{%k7}	 # AVX512
69	vpmovzxbd	0x123(%rax,%r14,8), %zmm30{%k7}	 # AVX512
70	vpmovzxbd	2032(%rdx), %zmm30{%k7}	 # AVX512 Disp8
71	vpmovzxbd	2048(%rdx), %zmm30{%k7}	 # AVX512
72	vpmovzxbd	-2048(%rdx), %zmm30{%k7}	 # AVX512 Disp8
73	vpmovzxbd	-2064(%rdx), %zmm30{%k7}	 # AVX512
74
75	vpmovzxbq	%xmm29, %zmm30{%k7}	 # AVX512
76	vpmovzxbq	%xmm29, %zmm30{%k7}{z}	 # AVX512
77	vpmovzxbq	(%rcx), %zmm30{%k7}	 # AVX512
78	vpmovzxbq	0x123(%rax,%r14,8), %zmm30{%k7}	 # AVX512
79	vpmovzxbq	1016(%rdx), %zmm30{%k7}	 # AVX512 Disp8
80	vpmovzxbq	1024(%rdx), %zmm30{%k7}	 # AVX512
81	vpmovzxbq	-1024(%rdx), %zmm30{%k7}	 # AVX512 Disp8
82	vpmovzxbq	-1032(%rdx), %zmm30{%k7}	 # AVX512
83
84	vpmovzxwd	%ymm29, %zmm30{%k7}	 # AVX512
85	vpmovzxwd	%ymm29, %zmm30{%k7}{z}	 # AVX512
86	vpmovzxwd	(%rcx), %zmm30{%k7}	 # AVX512
87	vpmovzxwd	0x123(%rax,%r14,8), %zmm30{%k7}	 # AVX512
88	vpmovzxwd	4064(%rdx), %zmm30{%k7}	 # AVX512 Disp8
89	vpmovzxwd	4096(%rdx), %zmm30{%k7}	 # AVX512
90	vpmovzxwd	-4096(%rdx), %zmm30{%k7}	 # AVX512 Disp8
91	vpmovzxwd	-4128(%rdx), %zmm30{%k7}	 # AVX512
92
93	vpmovzxwq	%xmm29, %zmm30{%k7}	 # AVX512
94	vpmovzxwq	%xmm29, %zmm30{%k7}{z}	 # AVX512
95	vpmovzxwq	(%rcx), %zmm30{%k7}	 # AVX512
96	vpmovzxwq	0x123(%rax,%r14,8), %zmm30{%k7}	 # AVX512
97	vpmovzxwq	2032(%rdx), %zmm30{%k7}	 # AVX512 Disp8
98	vpmovzxwq	2048(%rdx), %zmm30{%k7}	 # AVX512
99	vpmovzxwq	-2048(%rdx), %zmm30{%k7}	 # AVX512 Disp8
100	vpmovzxwq	-2064(%rdx), %zmm30{%k7}	 # AVX512
101
102	.intel_syntax noprefix
103	vextractps	rax, xmm29, 0xab	 # AVX512
104	vextractps	rax, xmm29, 123	 # AVX512
105	vextractps	r8, xmm29, 123	 # AVX512
106	vextractps	DWORD PTR [rcx], xmm29, 123	 # AVX512
107	vextractps	DWORD PTR [rax+r14*8+0x1234], xmm29, 123	 # AVX512
108	vextractps	DWORD PTR [rdx+508], xmm29, 123	 # AVX512 Disp8
109	vextractps	DWORD PTR [rdx+512], xmm29, 123	 # AVX512
110	vextractps	DWORD PTR [rdx-512], xmm29, 123	 # AVX512 Disp8
111	vextractps	DWORD PTR [rdx-516], xmm29, 123	 # AVX512
112
113	vpmovsxbd	zmm30{k7}, xmm29	 # AVX512
114	vpmovsxbd	zmm30{k7}{z}, xmm29	 # AVX512
115	vpmovsxbd	zmm30{k7}, XMMWORD PTR [rcx]	 # AVX512
116	vpmovsxbd	zmm30{k7}, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512
117	vpmovsxbd	zmm30{k7}, XMMWORD PTR [rdx+2032]	 # AVX512 Disp8
118	vpmovsxbd	zmm30{k7}, XMMWORD PTR [rdx+2048]	 # AVX512
119	vpmovsxbd	zmm30{k7}, XMMWORD PTR [rdx-2048]	 # AVX512 Disp8
120	vpmovsxbd	zmm30{k7}, XMMWORD PTR [rdx-2064]	 # AVX512
121
122	vpmovsxbq	zmm30{k7}, xmm29	 # AVX512
123	vpmovsxbq	zmm30{k7}{z}, xmm29	 # AVX512
124	vpmovsxbq	zmm30{k7}, QWORD PTR [rcx]	 # AVX512
125	vpmovsxbq	zmm30{k7}, QWORD PTR [rax+r14*8+0x1234]	 # AVX512
126	vpmovsxbq	zmm30{k7}, QWORD PTR [rdx+1016]	 # AVX512 Disp8
127	vpmovsxbq	zmm30{k7}, QWORD PTR [rdx+1024]	 # AVX512
128	vpmovsxbq	zmm30{k7}, QWORD PTR [rdx-1024]	 # AVX512 Disp8
129	vpmovsxbq	zmm30{k7}, QWORD PTR [rdx-1032]	 # AVX512
130
131	vpmovsxwd	zmm30{k7}, ymm29	 # AVX512
132	vpmovsxwd	zmm30{k7}{z}, ymm29	 # AVX512
133	vpmovsxwd	zmm30{k7}, YMMWORD PTR [rcx]	 # AVX512
134	vpmovsxwd	zmm30{k7}, YMMWORD PTR [rax+r14*8+0x1234]	 # AVX512
135	vpmovsxwd	zmm30{k7}, YMMWORD PTR [rdx+4064]	 # AVX512 Disp8
136	vpmovsxwd	zmm30{k7}, YMMWORD PTR [rdx+4096]	 # AVX512
137	vpmovsxwd	zmm30{k7}, YMMWORD PTR [rdx-4096]	 # AVX512 Disp8
138	vpmovsxwd	zmm30{k7}, YMMWORD PTR [rdx-4128]	 # AVX512
139
140	vpmovsxwq	zmm30{k7}, xmm29	 # AVX512
141	vpmovsxwq	zmm30{k7}{z}, xmm29	 # AVX512
142	vpmovsxwq	zmm30{k7}, XMMWORD PTR [rcx]	 # AVX512
143	vpmovsxwq	zmm30{k7}, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512
144	vpmovsxwq	zmm30{k7}, XMMWORD PTR [rdx+2032]	 # AVX512 Disp8
145	vpmovsxwq	zmm30{k7}, XMMWORD PTR [rdx+2048]	 # AVX512
146	vpmovsxwq	zmm30{k7}, XMMWORD PTR [rdx-2048]	 # AVX512 Disp8
147	vpmovsxwq	zmm30{k7}, XMMWORD PTR [rdx-2064]	 # AVX512
148
149	vpmovzxbd	zmm30{k7}, xmm29	 # AVX512
150	vpmovzxbd	zmm30{k7}{z}, xmm29	 # AVX512
151	vpmovzxbd	zmm30{k7}, XMMWORD PTR [rcx]	 # AVX512
152	vpmovzxbd	zmm30{k7}, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512
153	vpmovzxbd	zmm30{k7}, XMMWORD PTR [rdx+2032]	 # AVX512 Disp8
154	vpmovzxbd	zmm30{k7}, XMMWORD PTR [rdx+2048]	 # AVX512
155	vpmovzxbd	zmm30{k7}, XMMWORD PTR [rdx-2048]	 # AVX512 Disp8
156	vpmovzxbd	zmm30{k7}, XMMWORD PTR [rdx-2064]	 # AVX512
157
158	vpmovzxbq	zmm30{k7}, xmm29	 # AVX512
159	vpmovzxbq	zmm30{k7}{z}, xmm29	 # AVX512
160	vpmovzxbq	zmm30{k7}, QWORD PTR [rcx]	 # AVX512
161	vpmovzxbq	zmm30{k7}, QWORD PTR [rax+r14*8+0x1234]	 # AVX512
162	vpmovzxbq	zmm30{k7}, QWORD PTR [rdx+1016]	 # AVX512 Disp8
163	vpmovzxbq	zmm30{k7}, QWORD PTR [rdx+1024]	 # AVX512
164	vpmovzxbq	zmm30{k7}, QWORD PTR [rdx-1024]	 # AVX512 Disp8
165	vpmovzxbq	zmm30{k7}, QWORD PTR [rdx-1032]	 # AVX512
166
167	vpmovzxwd	zmm30{k7}, ymm29	 # AVX512
168	vpmovzxwd	zmm30{k7}{z}, ymm29	 # AVX512
169	vpmovzxwd	zmm30{k7}, YMMWORD PTR [rcx]	 # AVX512
170	vpmovzxwd	zmm30{k7}, YMMWORD PTR [rax+r14*8+0x1234]	 # AVX512
171	vpmovzxwd	zmm30{k7}, YMMWORD PTR [rdx+4064]	 # AVX512 Disp8
172	vpmovzxwd	zmm30{k7}, YMMWORD PTR [rdx+4096]	 # AVX512
173	vpmovzxwd	zmm30{k7}, YMMWORD PTR [rdx-4096]	 # AVX512 Disp8
174	vpmovzxwd	zmm30{k7}, YMMWORD PTR [rdx-4128]	 # AVX512
175
176	vpmovzxwq	zmm30{k7}, xmm29	 # AVX512
177	vpmovzxwq	zmm30{k7}{z}, xmm29	 # AVX512
178	vpmovzxwq	zmm30{k7}, XMMWORD PTR [rcx]	 # AVX512
179	vpmovzxwq	zmm30{k7}, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512
180	vpmovzxwq	zmm30{k7}, XMMWORD PTR [rdx+2032]	 # AVX512 Disp8
181	vpmovzxwq	zmm30{k7}, XMMWORD PTR [rdx+2048]	 # AVX512
182	vpmovzxwq	zmm30{k7}, XMMWORD PTR [rdx-2048]	 # AVX512 Disp8
183	vpmovzxwq	zmm30{k7}, XMMWORD PTR [rdx-2064]	 # AVX512
184
185