i386: Check for reserved VEX.vvvv and EVEX.vvvv
[external/binutils.git] / gas / testsuite / gas / i386 / x86-64-avx512vbmi_vl.s
1 # Check 64bit AVX512{VBMI,VL} instructions
2
3         .allow_index_reg
4         .text
5 _start:
6         vpermb  %xmm28, %xmm29, %xmm30   # AVX512{VBMI,VL}
7         vpermb  %xmm28, %xmm29, %xmm30{%k7}      # AVX512{VBMI,VL}
8         vpermb  %xmm28, %xmm29, %xmm30{%k7}{z}   # AVX512{VBMI,VL}
9         vpermb  (%rcx), %xmm29, %xmm30   # AVX512{VBMI,VL}
10         vpermb  0x123(%rax,%r14,8), %xmm29, %xmm30       # AVX512{VBMI,VL}
11         vpermb  2032(%rdx), %xmm29, %xmm30       # AVX512{VBMI,VL} Disp8
12         vpermb  2048(%rdx), %xmm29, %xmm30       # AVX512{VBMI,VL}
13         vpermb  -2048(%rdx), %xmm29, %xmm30      # AVX512{VBMI,VL} Disp8
14         vpermb  -2064(%rdx), %xmm29, %xmm30      # AVX512{VBMI,VL}
15         vpermb  %ymm28, %ymm29, %ymm30   # AVX512{VBMI,VL}
16         vpermb  %ymm28, %ymm29, %ymm30{%k7}      # AVX512{VBMI,VL}
17         vpermb  %ymm28, %ymm29, %ymm30{%k7}{z}   # AVX512{VBMI,VL}
18         vpermb  (%rcx), %ymm29, %ymm30   # AVX512{VBMI,VL}
19         vpermb  0x123(%rax,%r14,8), %ymm29, %ymm30       # AVX512{VBMI,VL}
20         vpermb  4064(%rdx), %ymm29, %ymm30       # AVX512{VBMI,VL} Disp8
21         vpermb  4096(%rdx), %ymm29, %ymm30       # AVX512{VBMI,VL}
22         vpermb  -4096(%rdx), %ymm29, %ymm30      # AVX512{VBMI,VL} Disp8
23         vpermb  -4128(%rdx), %ymm29, %ymm30      # AVX512{VBMI,VL}
24         vpermi2b        %xmm28, %xmm29, %xmm30   # AVX512{VBMI,VL}
25         vpermi2b        %xmm28, %xmm29, %xmm30{%k7}      # AVX512{VBMI,VL}
26         vpermi2b        %xmm28, %xmm29, %xmm30{%k7}{z}   # AVX512{VBMI,VL}
27         vpermi2b        (%rcx), %xmm29, %xmm30   # AVX512{VBMI,VL}
28         vpermi2b        0x123(%rax,%r14,8), %xmm29, %xmm30       # AVX512{VBMI,VL}
29         vpermi2b        2032(%rdx), %xmm29, %xmm30       # AVX512{VBMI,VL} Disp8
30         vpermi2b        2048(%rdx), %xmm29, %xmm30       # AVX512{VBMI,VL}
31         vpermi2b        -2048(%rdx), %xmm29, %xmm30      # AVX512{VBMI,VL} Disp8
32         vpermi2b        -2064(%rdx), %xmm29, %xmm30      # AVX512{VBMI,VL}
33         vpermi2b        %ymm28, %ymm29, %ymm30   # AVX512{VBMI,VL}
34         vpermi2b        %ymm28, %ymm29, %ymm30{%k7}      # AVX512{VBMI,VL}
35         vpermi2b        %ymm28, %ymm29, %ymm30{%k7}{z}   # AVX512{VBMI,VL}
36         vpermi2b        (%rcx), %ymm29, %ymm30   # AVX512{VBMI,VL}
37         vpermi2b        0x123(%rax,%r14,8), %ymm29, %ymm30       # AVX512{VBMI,VL}
38         vpermi2b        4064(%rdx), %ymm29, %ymm30       # AVX512{VBMI,VL} Disp8
39         vpermi2b        4096(%rdx), %ymm29, %ymm30       # AVX512{VBMI,VL}
40         vpermi2b        -4096(%rdx), %ymm29, %ymm30      # AVX512{VBMI,VL} Disp8
41         vpermi2b        -4128(%rdx), %ymm29, %ymm30      # AVX512{VBMI,VL}
42         vpermt2b        %xmm28, %xmm29, %xmm30   # AVX512{VBMI,VL}
43         vpermt2b        %xmm28, %xmm29, %xmm30{%k7}      # AVX512{VBMI,VL}
44         vpermt2b        %xmm28, %xmm29, %xmm30{%k7}{z}   # AVX512{VBMI,VL}
45         vpermt2b        (%rcx), %xmm29, %xmm30   # AVX512{VBMI,VL}
46         vpermt2b        0x123(%rax,%r14,8), %xmm29, %xmm30       # AVX512{VBMI,VL}
47         vpermt2b        2032(%rdx), %xmm29, %xmm30       # AVX512{VBMI,VL} Disp8
48         vpermt2b        2048(%rdx), %xmm29, %xmm30       # AVX512{VBMI,VL}
49         vpermt2b        -2048(%rdx), %xmm29, %xmm30      # AVX512{VBMI,VL} Disp8
50         vpermt2b        -2064(%rdx), %xmm29, %xmm30      # AVX512{VBMI,VL}
51         vpermt2b        %ymm28, %ymm29, %ymm30   # AVX512{VBMI,VL}
52         vpermt2b        %ymm28, %ymm29, %ymm30{%k7}      # AVX512{VBMI,VL}
53         vpermt2b        %ymm28, %ymm29, %ymm30{%k7}{z}   # AVX512{VBMI,VL}
54         vpermt2b        (%rcx), %ymm29, %ymm30   # AVX512{VBMI,VL}
55         vpermt2b        0x123(%rax,%r14,8), %ymm29, %ymm30       # AVX512{VBMI,VL}
56         vpermt2b        4064(%rdx), %ymm29, %ymm30       # AVX512{VBMI,VL} Disp8
57         vpermt2b        4096(%rdx), %ymm29, %ymm30       # AVX512{VBMI,VL}
58         vpermt2b        -4096(%rdx), %ymm29, %ymm30      # AVX512{VBMI,VL} Disp8
59         vpermt2b        -4128(%rdx), %ymm29, %ymm30      # AVX512{VBMI,VL}
60         vpmultishiftqb  %xmm28, %xmm29, %xmm30   # AVX512{VBMI,VL}
61         vpmultishiftqb  %xmm28, %xmm29, %xmm30{%k7}      # AVX512{VBMI,VL}
62         vpmultishiftqb  %xmm28, %xmm29, %xmm30{%k7}{z}   # AVX512{VBMI,VL}
63         vpmultishiftqb  (%rcx), %xmm29, %xmm30   # AVX512{VBMI,VL}
64         vpmultishiftqb  0x123(%rax,%r14,8), %xmm29, %xmm30       # AVX512{VBMI,VL}
65         vpmultishiftqb  (%rcx){1to2}, %xmm29, %xmm30     # AVX512{VBMI,VL}
66         vpmultishiftqb  2032(%rdx), %xmm29, %xmm30       # AVX512{VBMI,VL} Disp8
67         vpmultishiftqb  2048(%rdx), %xmm29, %xmm30       # AVX512{VBMI,VL}
68         vpmultishiftqb  -2048(%rdx), %xmm29, %xmm30      # AVX512{VBMI,VL} Disp8
69         vpmultishiftqb  -2064(%rdx), %xmm29, %xmm30      # AVX512{VBMI,VL}
70         vpmultishiftqb  1016(%rdx){1to2}, %xmm29, %xmm30         # AVX512{VBMI,VL} Disp8
71         vpmultishiftqb  1024(%rdx){1to2}, %xmm29, %xmm30         # AVX512{VBMI,VL}
72         vpmultishiftqb  -1024(%rdx){1to2}, %xmm29, %xmm30        # AVX512{VBMI,VL} Disp8
73         vpmultishiftqb  -1032(%rdx){1to2}, %xmm29, %xmm30        # AVX512{VBMI,VL}
74         vpmultishiftqb  %ymm28, %ymm29, %ymm30   # AVX512{VBMI,VL}
75         vpmultishiftqb  %ymm28, %ymm29, %ymm30{%k7}      # AVX512{VBMI,VL}
76         vpmultishiftqb  %ymm28, %ymm29, %ymm30{%k7}{z}   # AVX512{VBMI,VL}
77         vpmultishiftqb  (%rcx), %ymm29, %ymm30   # AVX512{VBMI,VL}
78         vpmultishiftqb  0x123(%rax,%r14,8), %ymm29, %ymm30       # AVX512{VBMI,VL}
79         vpmultishiftqb  (%rcx){1to4}, %ymm29, %ymm30     # AVX512{VBMI,VL}
80         vpmultishiftqb  4064(%rdx), %ymm29, %ymm30       # AVX512{VBMI,VL} Disp8
81         vpmultishiftqb  4096(%rdx), %ymm29, %ymm30       # AVX512{VBMI,VL}
82         vpmultishiftqb  -4096(%rdx), %ymm29, %ymm30      # AVX512{VBMI,VL} Disp8
83         vpmultishiftqb  -4128(%rdx), %ymm29, %ymm30      # AVX512{VBMI,VL}
84         vpmultishiftqb  1016(%rdx){1to4}, %ymm29, %ymm30         # AVX512{VBMI,VL} Disp8
85         vpmultishiftqb  1024(%rdx){1to4}, %ymm29, %ymm30         # AVX512{VBMI,VL}
86         vpmultishiftqb  -1024(%rdx){1to4}, %ymm29, %ymm30        # AVX512{VBMI,VL} Disp8
87         vpmultishiftqb  -1032(%rdx){1to4}, %ymm29, %ymm30        # AVX512{VBMI,VL}
88
89         .intel_syntax noprefix
90         vpermb  xmm30, xmm29, xmm28      # AVX512{VBMI,VL}
91         vpermb  xmm30{k7}, xmm29, xmm28  # AVX512{VBMI,VL}
92         vpermb  xmm30{k7}{z}, xmm29, xmm28       # AVX512{VBMI,VL}
93         vpermb  xmm30, xmm29, XMMWORD PTR [rcx]  # AVX512{VBMI,VL}
94         vpermb  xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]     # AVX512{VBMI,VL}
95         vpermb  xmm30, xmm29, XMMWORD PTR [rdx+2032]     # AVX512{VBMI,VL} Disp8
96         vpermb  xmm30, xmm29, XMMWORD PTR [rdx+2048]     # AVX512{VBMI,VL}
97         vpermb  xmm30, xmm29, XMMWORD PTR [rdx-2048]     # AVX512{VBMI,VL} Disp8
98         vpermb  xmm30, xmm29, XMMWORD PTR [rdx-2064]     # AVX512{VBMI,VL}
99         vpermb  ymm30, ymm29, ymm28      # AVX512{VBMI,VL}
100         vpermb  ymm30{k7}, ymm29, ymm28  # AVX512{VBMI,VL}
101         vpermb  ymm30{k7}{z}, ymm29, ymm28       # AVX512{VBMI,VL}
102         vpermb  ymm30, ymm29, YMMWORD PTR [rcx]  # AVX512{VBMI,VL}
103         vpermb  ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234]     # AVX512{VBMI,VL}
104         vpermb  ymm30, ymm29, YMMWORD PTR [rdx+4064]     # AVX512{VBMI,VL} Disp8
105         vpermb  ymm30, ymm29, YMMWORD PTR [rdx+4096]     # AVX512{VBMI,VL}
106         vpermb  ymm30, ymm29, YMMWORD PTR [rdx-4096]     # AVX512{VBMI,VL} Disp8
107         vpermb  ymm30, ymm29, YMMWORD PTR [rdx-4128]     # AVX512{VBMI,VL}
108         vpermi2b        xmm30, xmm29, xmm28      # AVX512{VBMI,VL}
109         vpermi2b        xmm30{k7}, xmm29, xmm28  # AVX512{VBMI,VL}
110         vpermi2b        xmm30{k7}{z}, xmm29, xmm28       # AVX512{VBMI,VL}
111         vpermi2b        xmm30, xmm29, XMMWORD PTR [rcx]  # AVX512{VBMI,VL}
112         vpermi2b        xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]     # AVX512{VBMI,VL}
113         vpermi2b        xmm30, xmm29, XMMWORD PTR [rdx+2032]     # AVX512{VBMI,VL} Disp8
114         vpermi2b        xmm30, xmm29, XMMWORD PTR [rdx+2048]     # AVX512{VBMI,VL}
115         vpermi2b        xmm30, xmm29, XMMWORD PTR [rdx-2048]     # AVX512{VBMI,VL} Disp8
116         vpermi2b        xmm30, xmm29, XMMWORD PTR [rdx-2064]     # AVX512{VBMI,VL}
117         vpermi2b        ymm30, ymm29, ymm28      # AVX512{VBMI,VL}
118         vpermi2b        ymm30{k7}, ymm29, ymm28  # AVX512{VBMI,VL}
119         vpermi2b        ymm30{k7}{z}, ymm29, ymm28       # AVX512{VBMI,VL}
120         vpermi2b        ymm30, ymm29, YMMWORD PTR [rcx]  # AVX512{VBMI,VL}
121         vpermi2b        ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234]     # AVX512{VBMI,VL}
122         vpermi2b        ymm30, ymm29, YMMWORD PTR [rdx+4064]     # AVX512{VBMI,VL} Disp8
123         vpermi2b        ymm30, ymm29, YMMWORD PTR [rdx+4096]     # AVX512{VBMI,VL}
124         vpermi2b        ymm30, ymm29, YMMWORD PTR [rdx-4096]     # AVX512{VBMI,VL} Disp8
125         vpermi2b        ymm30, ymm29, YMMWORD PTR [rdx-4128]     # AVX512{VBMI,VL}
126         vpermt2b        xmm30, xmm29, xmm28      # AVX512{VBMI,VL}
127         vpermt2b        xmm30{k7}, xmm29, xmm28  # AVX512{VBMI,VL}
128         vpermt2b        xmm30{k7}{z}, xmm29, xmm28       # AVX512{VBMI,VL}
129         vpermt2b        xmm30, xmm29, XMMWORD PTR [rcx]  # AVX512{VBMI,VL}
130         vpermt2b        xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]     # AVX512{VBMI,VL}
131         vpermt2b        xmm30, xmm29, XMMWORD PTR [rdx+2032]     # AVX512{VBMI,VL} Disp8
132         vpermt2b        xmm30, xmm29, XMMWORD PTR [rdx+2048]     # AVX512{VBMI,VL}
133         vpermt2b        xmm30, xmm29, XMMWORD PTR [rdx-2048]     # AVX512{VBMI,VL} Disp8
134         vpermt2b        xmm30, xmm29, XMMWORD PTR [rdx-2064]     # AVX512{VBMI,VL}
135         vpermt2b        ymm30, ymm29, ymm28      # AVX512{VBMI,VL}
136         vpermt2b        ymm30{k7}, ymm29, ymm28  # AVX512{VBMI,VL}
137         vpermt2b        ymm30{k7}{z}, ymm29, ymm28       # AVX512{VBMI,VL}
138         vpermt2b        ymm30, ymm29, YMMWORD PTR [rcx]  # AVX512{VBMI,VL}
139         vpermt2b        ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234]     # AVX512{VBMI,VL}
140         vpermt2b        ymm30, ymm29, YMMWORD PTR [rdx+4064]     # AVX512{VBMI,VL} Disp8
141         vpermt2b        ymm30, ymm29, YMMWORD PTR [rdx+4096]     # AVX512{VBMI,VL}
142         vpermt2b        ymm30, ymm29, YMMWORD PTR [rdx-4096]     # AVX512{VBMI,VL} Disp8
143         vpermt2b        ymm30, ymm29, YMMWORD PTR [rdx-4128]     # AVX512{VBMI,VL}
144         vpmultishiftqb  xmm30, xmm29, xmm28      # AVX512{VBMI,VL}
145         vpmultishiftqb  xmm30{k7}, xmm29, xmm28  # AVX512{VBMI,VL}
146         vpmultishiftqb  xmm30{k7}{z}, xmm29, xmm28       # AVX512{VBMI,VL}
147         vpmultishiftqb  xmm30, xmm29, XMMWORD PTR [rcx]  # AVX512{VBMI,VL}
148         vpmultishiftqb  xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]     # AVX512{VBMI,VL}
149         vpmultishiftqb  xmm30, xmm29, [rcx]{1to2}        # AVX512{VBMI,VL}
150         vpmultishiftqb  xmm30, xmm29, XMMWORD PTR [rdx+2032]     # AVX512{VBMI,VL} Disp8
151         vpmultishiftqb  xmm30, xmm29, XMMWORD PTR [rdx+2048]     # AVX512{VBMI,VL}
152         vpmultishiftqb  xmm30, xmm29, XMMWORD PTR [rdx-2048]     # AVX512{VBMI,VL} Disp8
153         vpmultishiftqb  xmm30, xmm29, XMMWORD PTR [rdx-2064]     # AVX512{VBMI,VL}
154         vpmultishiftqb  xmm30, xmm29, [rdx+1016]{1to2}   # AVX512{VBMI,VL} Disp8
155         vpmultishiftqb  xmm30, xmm29, [rdx+1024]{1to2}   # AVX512{VBMI,VL}
156         vpmultishiftqb  xmm30, xmm29, [rdx-1024]{1to2}   # AVX512{VBMI,VL} Disp8
157         vpmultishiftqb  xmm30, xmm29, [rdx-1032]{1to2}   # AVX512{VBMI,VL}
158         vpmultishiftqb  ymm30, ymm29, ymm28      # AVX512{VBMI,VL}
159         vpmultishiftqb  ymm30{k7}, ymm29, ymm28  # AVX512{VBMI,VL}
160         vpmultishiftqb  ymm30{k7}{z}, ymm29, ymm28       # AVX512{VBMI,VL}
161         vpmultishiftqb  ymm30, ymm29, YMMWORD PTR [rcx]  # AVX512{VBMI,VL}
162         vpmultishiftqb  ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234]     # AVX512{VBMI,VL}
163         vpmultishiftqb  ymm30, ymm29, [rcx]{1to4}        # AVX512{VBMI,VL}
164         vpmultishiftqb  ymm30, ymm29, YMMWORD PTR [rdx+4064]     # AVX512{VBMI,VL} Disp8
165         vpmultishiftqb  ymm30, ymm29, YMMWORD PTR [rdx+4096]     # AVX512{VBMI,VL}
166         vpmultishiftqb  ymm30, ymm29, YMMWORD PTR [rdx-4096]     # AVX512{VBMI,VL} Disp8
167         vpmultishiftqb  ymm30, ymm29, YMMWORD PTR [rdx-4128]     # AVX512{VBMI,VL}
168         vpmultishiftqb  ymm30, ymm29, [rdx+1016]{1to4}   # AVX512{VBMI,VL} Disp8
169         vpmultishiftqb  ymm30, ymm29, [rdx+1024]{1to4}   # AVX512{VBMI,VL}
170         vpmultishiftqb  ymm30, ymm29, [rdx-1024]{1to4}   # AVX512{VBMI,VL} Disp8
171         vpmultishiftqb  ymm30, ymm29, [rdx-1032]{1to4}   # AVX512{VBMI,VL}