1 // Copyright 2017 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // This input extends auto-generated amd64enc.s test suite
6 // with manually added tests.
7
8 #include "../../../../../runtime/textflag.h"
9
10 TEXT asmtest(SB),DUPOK|NOSPLIT,$0
11 // AVX2GATHER: basic combinations.
12 VPGATHERDQ Y2, (BP)(X7*2), Y1 // c4e2ed904c7d00
13 VPGATHERDQ X12, (R13)(X14*2), X11 // c40299905c7500
14 VPGATHERDQ Y12, (R13)(X14*2), Y11 // c4029d905c7500
15 VPGATHERDQ Y0, 8(X4*1), Y6 // c4e2fd90342508000000
16 VPGATHERDQ Y0, -8(X4*1), Y6 // c4e2fd903425f8ffffff
17 VPGATHERDQ Y0, 0(X4*1), Y6 // c4e2fd90342500000000
18 VPGATHERDQ Y0, 664(X4*1), Y6 // c4e2fd90342598020000
19 VPGATHERDQ Y0, 8(X4*8), Y6 // c4e2fd9034e508000000
20 VPGATHERDQ Y0, -8(X4*8), Y6 // c4e2fd9034e5f8ffffff
21 VPGATHERDQ Y0, 0(X4*8), Y6 // c4e2fd9034e500000000
22 VPGATHERDQ Y0, 664(X4*8), Y6 // c4e2fd9034e598020000
23 VPGATHERDQ Y0, 8(X14*1), Y6 // c4a2fd90343508000000
24 VPGATHERDQ Y0, -8(X14*1), Y6 // c4a2fd903435f8ffffff
25 VPGATHERDQ Y0, 0(X14*1), Y6 // c4a2fd90343500000000
26 VPGATHERDQ Y0, 664(X14*1), Y6 // c4a2fd90343598020000
27 VPGATHERDQ Y0, 8(X14*8), Y6 // c4a2fd9034f508000000
28 VPGATHERDQ Y0, -8(X14*8), Y6 // c4a2fd9034f5f8ffffff
29 VPGATHERDQ Y0, 0(X14*8), Y6 // c4a2fd9034f500000000
30 VPGATHERDQ Y0, 664(X14*8), Y6 // c4a2fd9034f598020000
31 VPGATHERDQ X2, (BP)(X7*2), X1 // c4e2e9904c7d00
32 VPGATHERDQ Y2, (BP)(X7*2), Y1 // c4e2ed904c7d00
33 VPGATHERDQ X12, (R13)(X14*2), X11 // c40299905c7500
34 VPGATHERDQ Y12, (R13)(X14*2), Y11 // c4029d905c7500
35 VPGATHERDQ Y0, 8(X4*1), Y6 // c4e2fd90342508000000
36 VPGATHERDQ Y0, -8(X4*1), Y6 // c4e2fd903425f8ffffff
37 VPGATHERDQ Y0, 0(X4*1), Y6 // c4e2fd90342500000000
38 VPGATHERDQ Y0, 664(X4*1), Y6 // c4e2fd90342598020000
39 VPGATHERDQ Y0, 8(X4*8), Y6 // c4e2fd9034e508000000
40 VPGATHERDQ Y0, -8(X4*8), Y6 // c4e2fd9034e5f8ffffff
41 VPGATHERDQ Y0, 0(X4*8), Y6 // c4e2fd9034e500000000
42 VPGATHERDQ Y0, 664(X4*8), Y6 // c4e2fd9034e598020000
43 VPGATHERDQ Y0, 8(X14*1), Y6 // c4a2fd90343508000000
44 VPGATHERDQ Y0, -8(X14*1), Y6 // c4a2fd903435f8ffffff
45 VPGATHERDQ Y0, 0(X14*1), Y6 // c4a2fd90343500000000
46 VPGATHERDQ Y0, 664(X14*1), Y6 // c4a2fd90343598020000
47 VPGATHERDQ Y0, 8(X14*8), Y6 // c4a2fd9034f508000000
48 VPGATHERDQ Y0, -8(X14*8), Y6 // c4a2fd9034f5f8ffffff
49 VPGATHERDQ Y0, 0(X14*8), Y6 // c4a2fd9034f500000000
50 VPGATHERDQ Y0, 664(X14*8), Y6 // c4a2fd9034f598020000
51 VPGATHERQQ X2, (BP)(X7*2), X1 // c4e2e9914c7d00
52 VPGATHERQQ Y2, (BP)(Y7*2), Y1 // c4e2ed914c7d00
53 VPGATHERQQ X12, (R13)(X14*2), X11 // c40299915c7500
54 VPGATHERQQ Y12, (R13)(Y14*2), Y11 // c4029d915c7500
55 VPGATHERQQ X2, (BP)(X7*2), X1 // c4e2e9914c7d00
56 VPGATHERQQ Y2, (BP)(Y7*2), Y1 // c4e2ed914c7d00
57 VPGATHERQQ X12, (R13)(X14*2), X11 // c40299915c7500
58 VPGATHERQQ Y12, (R13)(Y14*2), Y11 // c4029d915c7500
59 VGATHERDPD X2, (BP)(X7*2), X1 // c4e2e9924c7d00
60 VGATHERDPD Y2, (BP)(X7*2), Y1 // c4e2ed924c7d00
61 VGATHERDPD X12, (R13)(X14*2), X11 // c40299925c7500
62 VGATHERDPD Y12, (R13)(X14*2), Y11 // c4029d925c7500
63 VGATHERDPD Y0, 8(X4*1), Y6 // c4e2fd92342508000000
64 VGATHERDPD Y0, -8(X4*1), Y6 // c4e2fd923425f8ffffff
65 VGATHERDPD Y0, 0(X4*1), Y6 // c4e2fd92342500000000
66 VGATHERDPD Y0, 664(X4*1), Y6 // c4e2fd92342598020000
67 VGATHERDPD Y0, 8(X4*8), Y6 // c4e2fd9234e508000000
68 VGATHERDPD Y0, -8(X4*8), Y6 // c4e2fd9234e5f8ffffff
69 VGATHERDPD Y0, 0(X4*8), Y6 // c4e2fd9234e500000000
70 VGATHERDPD Y0, 664(X4*8), Y6 // c4e2fd9234e598020000
71 VGATHERDPD Y0, 8(X14*1), Y6 // c4a2fd92343508000000
72 VGATHERDPD Y0, -8(X14*1), Y6 // c4a2fd923435f8ffffff
73 VGATHERDPD Y0, 0(X14*1), Y6 // c4a2fd92343500000000
74 VGATHERDPD Y0, 664(X14*1), Y6 // c4a2fd92343598020000
75 VGATHERDPD Y0, 8(X14*8), Y6 // c4a2fd9234f508000000
76 VGATHERDPD Y0, -8(X14*8), Y6 // c4a2fd9234f5f8ffffff
77 VGATHERDPD Y0, 0(X14*8), Y6 // c4a2fd9234f500000000
78 VGATHERDPD Y0, 664(X14*8), Y6 // c4a2fd9234f598020000
79 VGATHERDPD X2, (BP)(X7*2), X1 // c4e2e9924c7d00
80 VGATHERDPD Y2, (BP)(X7*2), Y1 // c4e2ed924c7d00
81 VGATHERDPD X12, (R13)(X14*2), X11 // c40299925c7500
82 VGATHERDPD Y12, (R13)(X14*2), Y11 // c4029d925c7500
83 VGATHERDPD Y0, 8(X4*1), Y6 // c4e2fd92342508000000
84 VGATHERDPD Y0, -8(X4*1), Y6 // c4e2fd923425f8ffffff
85 VGATHERDPD Y0, 0(X4*1), Y6 // c4e2fd92342500000000
86 VGATHERDPD Y0, 664(X4*1), Y6 // c4e2fd92342598020000
87 VGATHERDPD Y0, 8(X4*8), Y6 // c4e2fd9234e508000000
88 VGATHERDPD Y0, -8(X4*8), Y6 // c4e2fd9234e5f8ffffff
89 VGATHERDPD Y0, 0(X4*8), Y6 // c4e2fd9234e500000000
90 VGATHERDPD Y0, 664(X4*8), Y6 // c4e2fd9234e598020000
91 VGATHERDPD Y0, 8(X14*1), Y6 // c4a2fd92343508000000
92 VGATHERDPD Y0, -8(X14*1), Y6 // c4a2fd923435f8ffffff
93 VGATHERDPD Y0, 0(X14*1), Y6 // c4a2fd92343500000000
94 VGATHERDPD Y0, 664(X14*1), Y6 // c4a2fd92343598020000
95 VGATHERDPD Y0, 8(X14*8), Y6 // c4a2fd9234f508000000
96 VGATHERDPD Y0, -8(X14*8), Y6 // c4a2fd9234f5f8ffffff
97 VGATHERDPD Y0, 0(X14*8), Y6 // c4a2fd9234f500000000
98 VGATHERDPD Y0, 664(X14*8), Y6 // c4a2fd9234f598020000
99 VGATHERQPD X2, (BP)(X7*2), X1 // c4e2e9934c7d00
100 VGATHERQPD Y2, (BP)(Y7*2), Y1 // c4e2ed934c7d00
101 VGATHERQPD X12, (R13)(X14*2), X11 // c40299935c7500
102 VGATHERQPD Y12, (R13)(Y14*2), Y11 // c4029d935c7500
103 VGATHERQPD X2, (BP)(X7*2), X1 // c4e2e9934c7d00
104 VGATHERQPD Y2, (BP)(Y7*2), Y1 // c4e2ed934c7d00
105 VGATHERQPD X12, (R13)(X14*2), X11 // c40299935c7500
106 VGATHERQPD Y12, (R13)(Y14*2), Y11 // c4029d935c7500
107 VGATHERDPS X2, (BP)(X7*2), X1 // c4e269924c7d00
108 VGATHERDPS Y2, (BP)(Y7*2), Y1 // c4e26d924c7d00
109 VGATHERDPS X12, (R13)(X14*2), X11 // c40219925c7500
110 VGATHERDPS Y12, (R13)(Y14*2), Y11 // c4021d925c7500
111 VGATHERDPS X3, 8(X4*1), X6 // c4e26192342508000000
112 VGATHERDPS X3, -8(X4*1), X6 // c4e261923425f8ffffff
113 VGATHERDPS X3, 0(X4*1), X6 // c4e26192342500000000
114 VGATHERDPS X3, 664(X4*1), X6 // c4e26192342598020000
115 VGATHERDPS X3, 8(X4*8), X6 // c4e2619234e508000000
116 VGATHERDPS X3, -8(X4*8), X6 // c4e2619234e5f8ffffff
117 VGATHERDPS X3, 0(X4*8), X6 // c4e2619234e500000000
118 VGATHERDPS X3, 664(X4*8), X6 // c4e2619234e598020000
119 VGATHERDPS X3, 8(X14*1), X6 // c4a26192343508000000
120 VGATHERDPS X3, -8(X14*1), X6 // c4a261923435f8ffffff
121 VGATHERDPS X3, 0(X14*1), X6 // c4a26192343500000000
122 VGATHERDPS X3, 664(X14*1), X6 // c4a26192343598020000
123 VGATHERDPS X3, 8(X14*8), X6 // c4a2619234f508000000
124 VGATHERDPS X3, -8(X14*8), X6 // c4a2619234f5f8ffffff
125 VGATHERDPS X3, 0(X14*8), X6 // c4a2619234f500000000
126 VGATHERDPS X3, 664(X14*8), X6 // c4a2619234f598020000
127 VGATHERDPS X2, (BP)(X7*2), X1 // c4e269924c7d00
128 VGATHERDPS Y2, (BP)(Y7*2), Y1 // c4e26d924c7d00
129 VGATHERDPS X12, (R13)(X14*2), X11 // c40219925c7500
130 VGATHERDPS Y12, (R13)(Y14*2), Y11 // c4021d925c7500
131 VGATHERDPS X5, 8(X4*1), X6 // c4e25192342508000000
132 VGATHERDPS X3, -8(X4*1), X6 // c4e261923425f8ffffff
133 VGATHERDPS X3, 0(X4*1), X6 // c4e26192342500000000
134 VGATHERDPS X3, 664(X4*1), X6 // c4e26192342598020000
135 VGATHERDPS X3, 8(X4*8), X6 // c4e2619234e508000000
136 VGATHERDPS X3, -8(X4*8), X6 // c4e2619234e5f8ffffff
137 VGATHERDPS X3, 0(X4*8), X6 // c4e2619234e500000000
138 VGATHERDPS X3, 664(X4*8), X6 // c4e2619234e598020000
139 VGATHERDPS X3, 8(X14*1), X6 // c4a26192343508000000
140 VGATHERDPS X3, -8(X14*1), X6 // c4a261923435f8ffffff
141 VGATHERDPS X3, 0(X14*1), X6 // c4a26192343500000000
142 VGATHERDPS X3, 664(X14*1), X6 // c4a26192343598020000
143 VGATHERDPS X3, 8(X14*8), X6 // c4a2619234f508000000
144 VGATHERDPS X3, -8(X14*8), X6 // c4a2619234f5f8ffffff
145 VGATHERDPS X3, 0(X14*8), X6 // c4a2619234f500000000
146 VGATHERDPS X3, 664(X14*8), X6 // c4a2619234f598020000
147 VGATHERQPS X2, (BP)(X7*2), X1 // c4e269934c7d00
148 VGATHERQPS X2, (BP)(Y7*2), X1 // c4e26d934c7d00
149 VGATHERQPS X12, (R13)(X14*2), X11 // c40219935c7500
150 VGATHERQPS X12, (R13)(Y14*2), X11 // c4021d935c7500
151 VGATHERQPS X2, (BP)(X7*2), X1 // c4e269934c7d00
152 VGATHERQPS X2, (BP)(Y7*2), X1 // c4e26d934c7d00
153 VGATHERQPS X12, (R13)(X14*2), X11 // c40219935c7500
154 VGATHERQPS X12, (R13)(Y14*2), X11 // c4021d935c7500
155 VPGATHERDD X2, (BP)(X7*2), X1 // c4e269904c7d00
156 VPGATHERDD Y2, (BP)(Y7*2), Y1 // c4e26d904c7d00
157 VPGATHERDD X12, (R13)(X14*2), X11 // c40219905c7500
158 VPGATHERDD Y12, (R13)(Y14*2), Y11 // c4021d905c7500
159 VPGATHERDD X3, 8(X4*1), X6 // c4e26190342508000000
160 VPGATHERDD X3, -8(X4*1), X6 // c4e261903425f8ffffff
161 VPGATHERDD X3, 0(X4*1), X6 // c4e26190342500000000
162 VPGATHERDD X3, 664(X4*1), X6 // c4e26190342598020000
163 VPGATHERDD X3, 8(X4*8), X6 // c4e2619034e508000000
164 VPGATHERDD X3, -8(X4*8), X6 // c4e2619034e5f8ffffff
165 VPGATHERDD X3, 0(X4*8), X6 // c4e2619034e500000000
166 VPGATHERDD X3, 664(X4*8), X6 // c4e2619034e598020000
167 VPGATHERDD X3, 8(X14*1), X6 // c4a26190343508000000
168 VPGATHERDD X3, -8(X14*1), X6 // c4a261903435f8ffffff
169 VPGATHERDD X3, 0(X14*1), X6 // c4a26190343500000000
170 VPGATHERDD X3, 664(X14*1), X6 // c4a26190343598020000
171 VPGATHERDD X3, 8(X14*8), X6 // c4a2619034f508000000
172 VPGATHERDD X3, -8(X14*8), X6 // c4a2619034f5f8ffffff
173 VPGATHERDD X3, 0(X14*8), X6 // c4a2619034f500000000
174 VPGATHERDD X3, 664(X14*8), X6 // c4a2619034f598020000
175 VPGATHERDD X2, (BP)(X7*2), X1 // c4e269904c7d00
176 VPGATHERDD Y2, (BP)(Y7*2), Y1 // c4e26d904c7d00
177 VPGATHERDD X12, (R13)(X14*2), X11 // c40219905c7500
178 VPGATHERDD Y12, (R13)(Y14*2), Y11 // c4021d905c7500
179 VPGATHERDD X3, 8(X4*1), X6 // c4e26190342508000000
180 VPGATHERDD X3, -8(X4*1), X6 // c4e261903425f8ffffff
181 VPGATHERDD X3, 0(X4*1), X6 // c4e26190342500000000
182 VPGATHERDD X3, 664(X4*1), X6 // c4e26190342598020000
183 VPGATHERDD X3, 8(X4*8), X6 // c4e2619034e508000000
184 VPGATHERDD X3, -8(X4*8), X6 // c4e2619034e5f8ffffff
185 VPGATHERDD X3, 0(X4*8), X6 // c4e2619034e500000000
186 VPGATHERDD X3, 664(X4*8), X6 // c4e2619034e598020000
187 VPGATHERDD X3, 8(X14*1), X6 // c4a26190343508000000
188 VPGATHERDD X3, -8(X14*1), X6 // c4a261903435f8ffffff
189 VPGATHERDD X3, 0(X14*1), X6 // c4a26190343500000000
190 VPGATHERDD X3, 664(X14*1), X6 // c4a26190343598020000
191 VPGATHERDD X3, 8(X14*8), X6 // c4a2619034f508000000
192 VPGATHERDD X3, -8(X14*8), X6 // c4a2619034f5f8ffffff
193 VPGATHERDD X3, 0(X14*8), X6 // c4a2619034f500000000
194 VPGATHERDD X3, 664(X14*8), X6 // c4a2619034f598020000
195 VPGATHERQD X2, (BP)(X7*2), X1 // c4e269914c7d00
196 VPGATHERQD X2, (BP)(Y7*2), X1 // c4e26d914c7d00
197 VPGATHERQD X12, (R13)(X14*2), X11 // c40219915c7500
198 VPGATHERQD X12, (R13)(Y14*2), X11 // c4021d915c7500
199 VPGATHERQD X2, (BP)(X7*2), X1 // c4e269914c7d00
200 VPGATHERQD X2, (BP)(Y7*2), X1 // c4e26d914c7d00
201 VPGATHERQD X12, (R13)(X14*2), X11 // c40219915c7500
202 VPGATHERQD X12, (R13)(Y14*2), X11 // c4021d915c7500
203 VPGATHERQQ X0, 0(X1*1), X2 // c4e2f991140d00000000
204 VPGATHERQQ Y0, 0(Y1*1), Y2 // c4e2fd91140d00000000
205 VPGATHERQQ X8, 0(X9*1), X10 // c422b991140d00000000
206 VPGATHERQQ Y8, 0(Y9*1), Y10 // c422bd91140d00000000
207 VPGATHERQQ X0, 0(X1*4), X2 // c4e2f991148d00000000
208 VPGATHERQQ Y0, 0(Y1*4), Y2 // c4e2fd91148d00000000
209 VPGATHERQQ X8, 0(X9*4), X10 // c422b991148d00000000
210 VPGATHERQQ Y8, 0(Y9*4), Y10 // c422bd91148d00000000
211 // AVX2GATHER: test SP/BP base with different displacements.
212 VPGATHERQQ X0, (SP)(X1*1), X2 // c4e2f991140c
213 VPGATHERQQ X0, 16(SP)(X1*1), X2 // c4e2f991540c10
214 VPGATHERQQ X0, 512(SP)(X1*1), X2 // c4e2f991940c00020000
215 VPGATHERQQ X0, (R12)(X1*1), X2 // c4c2f991140c
216 VPGATHERQQ X0, 16(R12)(X1*1), X2 // c4c2f991540c10
217 VPGATHERQQ X0, 512(R12)(X1*1), X2 // c4c2f991940c00020000
218 VPGATHERQQ X0, (BP)(X1*1), X2 // c4e2f991540d00
219 VPGATHERQQ X0, 16(BP)(X1*1), X2 // c4e2f991540d10
220 VPGATHERQQ X0, 512(BP)(X1*1), X2 // c4e2f991940d00020000
221 VPGATHERQQ X0, (R13)(X1*1), X2 // c4c2f991540d00
222 VPGATHERQQ X0, 16(R13)(X1*1), X2 // c4c2f991540d10
223 VPGATHERQQ X0, 512(R13)(X1*1), X2 // c4c2f991940d00020000
224 VPGATHERQQ Y0, (SP)(Y1*1), Y2 // c4e2fd91140c
225 VPGATHERQQ Y0, 16(SP)(Y1*1), Y2 // c4e2fd91540c10
226 VPGATHERQQ Y0, 512(SP)(Y1*1), Y2 // c4e2fd91940c00020000
227 VPGATHERQQ Y0, (R12)(Y1*1), Y2 // c4c2fd91140c
228 VPGATHERQQ Y0, 16(R12)(Y1*1), Y2 // c4c2fd91540c10
229 VPGATHERQQ Y0, 512(R12)(Y1*1), Y2 // c4c2fd91940c00020000
230 VPGATHERQQ Y0, (BP)(Y1*1), Y2 // c4e2fd91540d00
231 VPGATHERQQ Y0, 16(BP)(Y1*1), Y2 // c4e2fd91540d10
232 VPGATHERQQ Y0, 512(BP)(Y1*1), Y2 // c4e2fd91940d00020000
233 VPGATHERQQ Y0, (R13)(Y1*1), Y2 // c4c2fd91540d00
234 VPGATHERQQ Y0, 16(R13)(Y1*1), Y2 // c4c2fd91540d10
235 VPGATHERQQ Y0, 512(R13)(Y1*1), Y2 // c4c2fd91940d00020000
236 // Test low-8 register for /is4 "hr" operand.
237 VPBLENDVB X0, (BX), X1, X2 // c4e3714c1300
238 // <XMM0>/Yxr0 tests.
239 SHA256RNDS2 X0, (BX), X2 // 0f38cb13
240 SHA256RNDS2 X0, (R11), X2 // 410f38cb13
241 SHA256RNDS2 X0, X2, X2 // 0f38cbd2
242 SHA256RNDS2 X0, X11, X2 // 410f38cbd3
243 SHA256RNDS2 X0, (BX), X11 // 440f38cb1b
244 SHA256RNDS2 X0, (R11), X11 // 450f38cb1b
245 SHA256RNDS2 X0, X2, X11 // 440f38cbda
246 SHA256RNDS2 X0, X11, X11 // 450f38cbdb
247 // Rest SHA instructions tests.
248 SHA1MSG1 (BX), X2 // 0f38c913
249 SHA1MSG1 (R11), X2 // 410f38c913
250 SHA1MSG1 X2, X2 // 0f38c9d2
251 SHA1MSG1 X11, X2 // 410f38c9d3
252 SHA1MSG1 (BX), X11 // 440f38c91b
253 SHA1MSG1 (R11), X11 // 450f38c91b
254 SHA1MSG1 X2, X11 // 440f38c9da
255 SHA1MSG1 X11, X11 // 450f38c9db
256 SHA1MSG2 (BX), X2 // 0f38ca13
257 SHA1MSG2 (R11), X2 // 410f38ca13
258 SHA1MSG2 X2, X2 // 0f38cad2
259 SHA1MSG2 X11, X2 // 410f38cad3
260 SHA1MSG2 (BX), X11 // 440f38ca1b
261 SHA1MSG2 (R11), X11 // 450f38ca1b
262 SHA1MSG2 X2, X11 // 440f38cada
263 SHA1MSG2 X11, X11 // 450f38cadb
264 SHA1NEXTE (BX), X2 // 0f38c813
265 SHA1NEXTE (R11), X2 // 410f38c813
266 SHA1NEXTE X2, X2 // 0f38c8d2
267 SHA1NEXTE X11, X2 // 410f38c8d3
268 SHA1NEXTE (BX), X11 // 440f38c81b
269 SHA1NEXTE (R11), X11 // 450f38c81b
270 SHA1NEXTE X2, X11 // 440f38c8da
271 SHA1NEXTE X11, X11 // 450f38c8db
272 SHA1RNDS4 $0, (BX), X2 // 0f3acc1300
273 SHA1RNDS4 $0, (R11), X2 // 410f3acc1300
274 SHA1RNDS4 $1, X2, X2 // 0f3accd201
275 SHA1RNDS4 $1, X11, X2 // 410f3accd301
276 SHA1RNDS4 $2, (BX), X11 // 440f3acc1b02
277 SHA1RNDS4 $2, (R11), X11 // 450f3acc1b02
278 SHA1RNDS4 $3, X2, X11 // 440f3accda03
279 SHA1RNDS4 $3, X11, X11 // 450f3accdb03
280 SHA256MSG1 (BX), X2 // 0f38cc13
281 SHA256MSG1 (R11), X2 // 410f38cc13
282 SHA256MSG1 X2, X2 // 0f38ccd2
283 SHA256MSG1 X11, X2 // 410f38ccd3
284 SHA256MSG1 (BX), X11 // 440f38cc1b
285 SHA256MSG1 (R11), X11 // 450f38cc1b
286 SHA256MSG1 X2, X11 // 440f38ccda
287 SHA256MSG1 X11, X11 // 450f38ccdb
288 SHA256MSG2 (BX), X2 // 0f38cd13
289 SHA256MSG2 (R11), X2 // 410f38cd13
290 SHA256MSG2 X2, X2 // 0f38cdd2
291 SHA256MSG2 X11, X2 // 410f38cdd3
292 SHA256MSG2 (BX), X11 // 440f38cd1b
293 SHA256MSG2 (R11), X11 // 450f38cd1b
294 SHA256MSG2 X2, X11 // 440f38cdda
295 SHA256MSG2 X11, X11 // 450f38cddb
296 // Test VPERMQ with both uint8 and int8 immediate args
297 VPERMQ $-40, Y8, Y8 // c443fd00c0d8
298 VPERMQ $216, Y8, Y8 // c443fd00c0d8
299 // Test that VPERMPD that shares ytab list with VPERMQ continues to work too.
300 VPERMPD $-40, Y7, Y7 // c4e3fd01ffd8
301 VPERMPD $216, Y7, Y7 // c4e3fd01ffd8
302 // Check that LEAL is permitted to use overflowing offset.
303 LEAL 2400959708(BP)(R10*1), BP // 428dac15dcbc1b8f
304 LEAL 3395469782(AX)(R10*1), AX // 428d8410d6c162ca
305 // Make sure MOV CR/DR continues to work after changing its movtabs.
306 MOVQ CR0, AX // 0f20c0
307 MOVQ CR0, DX // 0f20c2
308 MOVQ CR4, DI // 0f20e7
309 MOVQ AX, CR0 // 0f22c0
310 MOVQ DX, CR0 // 0f22c2
311 MOVQ DI, CR4 // 0f22e7
312 MOVQ DR0, AX // 0f21c0
313 MOVQ DR6, DX // 0f21f2
314 MOVQ DR7, SI // 0f21fe
315 // Test other movtab entries.
316 PUSHQ GS // 0fa8
317 PUSHQ FS // 0fa0
318 POPQ FS // 0fa1
319 POPQ GS // 0fa9
320 // All instructions below semantically have unsigned operands,
321 // but previous assembler permitted negative arguments.
322 // This behavior is preserved for compatibility reasons.
323 VPSHUFD $-79, X7, X7 // c5f970ffb1
324 RORXL $-1, (AX), DX // c4e37bf010ff
325 RORXQ $-1, (AX), DX // c4e3fbf010ff
326 VPSHUFD $-1, X1, X2 // c5f970d1ff
327 VPSHUFD $-1, Y1, Y2 // c5fd70d1ff
328 VPSHUFHW $-1, X1, X2 // c5fa70d1ff
329 VPSHUFHW $-1, Y1, Y2 // c5fe70d1ff
330 VPSHUFLW $-1, X1, X2 // c5fb70d1ff
331 VPSHUFLW $-1, Y1, Y2 // c5ff70d1ff
332 VROUNDPD $-1, X1, X2 // c4e37909d1ff
333 VROUNDPS $-1, Y1, Y2 // c4e37d08d1ff
334 VPSLLD $-1, X1, X2 // c5e972f1ff
335 VPSLLD $-1, Y1, Y2 // c5ed72f1ff
336 VPSLLDQ $-1, X1, X2 // c5e973f9ff
337 VPSLLDQ $-1, Y1, Y2 // c5ed73f9ff
338 VPSLLQ $-1, X1, X2 // c5e973f1ff
339 VPSLLQ $-1, Y1, Y2 // c5ed73f1ff
340 VPSRLD $-1, X1, X2 // c5e972d1ff
341 VPSRLD $-1, Y1, Y2 // c5ed72d1ff
342 VPSRLDQ $-1, X1, X2 // c5e973d9ff
343 VPSRLDQ $-1, Y1, Y2 // c5ed73d9ff
344 VPSRLQ $-1, X1, X2 // c5e973d1ff
345 VPSRLQ $-1, Y1, Y2 // c5ed73d1ff
346 VPEXTRW $-1, X1, (AX) // c4e3791508ff
347 VPEXTRW $-1, X1, AX // c4e37915c8ff
348 VEXTRACTF128 $-1, Y1, X2 // c4e37d19caff
349 VEXTRACTI128 $-1, Y1, X2 // c4e37d39caff
350 VAESKEYGENASSIST $-1, X1, X2 // c4e379dfd1ff
351 VPCMPESTRI $-1, X1, X2 // c4e37961d1ff
352 VPCMPESTRM $-1, X1, X2 // c4e37960d1ff
353 VPCMPISTRI $-1, X1, X2 // c4e37963d1ff
354 VPCMPISTRM $-1, X1, X2 // c4e37962d1ff
355 VPERMPD $-1, Y1, Y2 // c4e3fd01d1ff
356 VPERMILPD $-1, X1, X2 // c4e37905d1ff
357 VPERMILPD $-1, Y1, Y2 // c4e37d05d1ff
358 VPERMILPS $-1, X1, X2 // c4e37904d1ff
359 VPERMILPS $-1, Y1, Y2 // c4e37d04d1ff
360 VCVTPS2PH $-1, X1, X2 // c4e3791dcaff
361 VCVTPS2PH $-1, Y1, X2 // c4e37d1dcaff
362 VPSLLW $-1, X1, X2 // c5e971f1ff
363 VPSLLW $-1, Y1, Y2 // c5ed71f1ff
364 VPSRAD $-1, X1, X2 // c5e972e1ff
365 VPSRAD $-1, Y1, Y2 // c5ed72e1ff
366 VPSRAW $-1, X1, X2 // c5e971e1ff
367 VPSRAW $-1, Y1, Y2 // c5ed71e1ff
368 VPSRLW $-1, X1, X1 // c5f171d1ff
369 VPSRLW $-1, Y1, Y2 // c5ed71d1ff
370 VEXTRACTPS $-1, X1, AX // c4e37917c8ff
371 VPEXTRB $-1, X1, AX // c4e37914c8ff
372 VPEXTRD $-1, X1, AX // c4e37916c8ff
373 VPEXTRQ $-1, X1, AX // c4e3f916c8ff
374 // EVEX: High-16 X registers.
375 VADDPD X30, X1, X0 // 6291f50858c6
376 VADDPD X2, X29, X0 // 62f1950058c2
377 VADDPD X30, X29, X0 // 6291950058c6
378 VADDPD X2, X1, X28 // 6261f50858e2
379 VADDPD X30, X1, X28 // 6201f50858e6
380 VADDPD X2, X29, X28 // 6261950058e2
381 VADDPD X30, X29, X28 // 6201950058e6
382 VADDPD X30, X11, X10 // 6211a50858d6
383 VADDPD X12, X29, X10 // 6251950058d4
384 VADDPD X30, X29, X10 // 6211950058d6
385 VADDPD X12, X11, X28 // 6241a50858e4
386 VADDPD X30, X11, X28 // 6201a50858e6
387 VADDPD X12, X29, X28 // 6241950058e4
388 VADDPD X30, X29, X28 // 6201950058e6
389 VADDPD (AX), X29, X0 // 62f195005800
390 VADDPD (AX), X1, X28 // 6261f5085820
391 VADDPD (AX), X29, X28 // 626195005820
392 VADDPD (AX), X29, X10 // 627195005810
393 VADDPD (AX), X10, X28 // 6261ad085820
394 VADDPD (CX)(AX*1), X29, X0 // 62f19500580401
395 VADDPD (CX)(AX*1), X1, X28 // 6261f508582401
396 VADDPD (CX)(AX*1), X29, X28 // 62619500582401
397 VADDPD (CX)(AX*1), X29, X10 // 62719500581401
398 VADDPD (CX)(AX*1), X10, X28 // 6261ad08582401
399 VADDPD (CX)(AX*2), X29, X0 // 62f19500580441
400 VADDPD (CX)(AX*2), X1, X28 // 6261f508582441
401 VADDPD (CX)(AX*2), X29, X28 // 62619500582441
402 VADDPD (CX)(AX*2), X29, X10 // 62719500581441
403 VADDPD (CX)(AX*2), X10, X28 // 6261ad08582441
404 // EVEX: displacement without Disp8.
405 VADDPD 15(AX), X29, X0 // 62f1950058800f000000
406 VADDPD 15(AX), X1, X28 // 6261f50858a00f000000
407 VADDPD 15(AX), X29, X28 // 6261950058a00f000000
408 VADDPD 15(AX), X29, X10 // 6271950058900f000000
409 VADDPD 15(AX), X10, X28 // 6261ad0858a00f000000
410 VADDPD 15(CX)(AX*1), X29, X0 // 62f195005884010f000000
411 VADDPD 15(CX)(AX*1), X1, X28 // 6261f50858a4010f000000
412 VADDPD 15(CX)(AX*1), X29, X28 // 6261950058a4010f000000
413 VADDPD 15(CX)(AX*1), X29, X10 // 627195005894010f000000
414 VADDPD 15(CX)(AX*1), X10, X28 // 6261ad0858a4010f000000
415 VADDPD 15(CX)(AX*2), X29, X0 // 62f195005884410f000000
416 VADDPD 15(CX)(AX*2), X1, X28 // 6261f50858a4410f000000
417 VADDPD 15(CX)(AX*2), X29, X28 // 6261950058a4410f000000
418 VADDPD 15(CX)(AX*2), X29, X10 // 627195005894410f000000
419 VADDPD 15(CX)(AX*2), X10, X28 // 6261ad0858a4410f000000
420 // EVEX: compressed displacement (Disp8).
421 VADDPD 2032(DX), X29, X0 // 62f1950058427f
422 VADDPD 2032(DX), X1, X29 // 6261f508586a7f
423 VADDPD 2032(DX), X29, X28 // 6261950058627f
424 VADDPD 2032(DX)(AX*2), X29, X0 // 62f195005844427f
425 VADDPD 2032(DX)(AX*2), X1, X29 // 6261f508586c427f
426 VADDPD 2032(DX)(AX*2), X29, X28 // 626195005864427f
427 VADDPD 4064(DX), Y0, Y29 // 6261fd28586a7f
428 VADDPD 4064(DX), Y29, Y1 // 62f19520584a7f
429 VADDPD 4064(DX), Y28, Y29 // 62619d20586a7f
430 VADDPD 4064(DX)(AX*2), Y0, Y29 // 6261fd28586c427f
431 VADDPD 4064(DX)(AX*2), Y29, Y1 // 62f19520584c427f
432 VADDPD 8128(DX), Z0, Z29 // 6261fd48586a7f
433 VADDPD 8128(DX), Z29, Z1 // 62f19540584a7f
434 VADDPD 8128(DX), Z28, Z29 // 62619d40586a7f
435 VADDPD 8128(DX)(AX*2), Z0, Z29 // 6261fd48586c427f
436 VADDPD 8128(DX)(AX*2), Z29, Z1 // 62f19540584c427f
437 // EVEX: compressed displacement that does not fit into 8bits.
438 VADDPD 2048(DX), X29, X0 // 62f19500588200080000
439 VADDPD 2048(DX), X1, X29 // 6261f50858aa00080000
440 VADDPD 2048(DX), X29, X28 // 6261950058a200080000
441 VADDPD 2048(DX)(AX*2), X29, X0 // 62f1950058844200080000
442 VADDPD 2048(DX)(AX*2), X1, X29 // 6261f50858ac4200080000
443 VADDPD 2048(DX)(AX*2), X29, X28 // 6261950058a44200080000
444 VADDPD 4096(DX), Y0, Y29 // 6261fd2858aa00100000
445 VADDPD 4096(DX), Y29, Y1 // 62f19520588a00100000
446 VADDPD 4096(DX), Y28, Y29 // 62619d2058aa00100000
447 VADDPD 4096(DX)(AX*2), Y0, Y29 // 6261fd2858ac4200100000
448 VADDPD 4096(DX)(AX*2), Y29, Y1 // 62f19520588c4200100000
449 VADDPD 8192(DX), Z0, Z29 // 6261fd4858aa00200000
450 VADDPD 8192(DX), Z29, Z1 // 62f19540588a00200000
451 VADDPD 8192(DX), Z28, Z29 // 62619d4058aa00200000
452 VADDPD 8192(DX)(AX*2), Z0, Z29 // 6261fd4858ac4200200000
453 VADDPD 8192(DX)(AX*2), Z29, Z1 // 62f19540588c4200200000
454 // EVEX: Y registers; VL=256.
455 VADDPD Y30, Y1, Y0 // 6291f52858c6
456 VADDPD Y0, Y29, Y2 // 62f1952058d0
457 VADDPD Y0, Y29, Y30 // 6261952058f0
458 VADDPD Y28, Y1, Y2 // 6291f52858d4
459 VADDPD Y28, Y1, Y30 // 6201f52858f4
460 VADDPD Y28, Y29, Y2 // 6291952058d4
461 VADDPD Y28, Y29, Y30 // 6201952058f4
462 VADDPD Y10, Y11, Y30 // 6241a52858f2
463 VADDPD Y10, Y29, Y12 // 6251952058e2
464 VADDPD Y10, Y29, Y30 // 6241952058f2
465 VADDPD Y28, Y11, Y12 // 6211a52858e4
466 VADDPD Y28, Y11, Y30 // 6201a52858f4
467 VADDPD Y28, Y29, Y12 // 6211952058e4
468 VADDPD Y28, Y29, Y30 // 6201952058f4
469 VADDPD (AX), Y29, Y0 // 62f195205800
470 VADDPD (AX), Y1, Y28 // 6261f5285820
471 VADDPD (AX), Y29, Y28 // 626195205820
472 VADDPD (AX), Y29, Y10 // 627195205810
473 VADDPD (AX), Y10, Y28 // 6261ad285820
474 VADDPD (CX)(AX*1), Y29, Y0 // 62f19520580401
475 VADDPD (CX)(AX*1), Y1, Y28 // 6261f528582401
476 VADDPD (CX)(AX*1), Y29, Y28 // 62619520582401
477 VADDPD (CX)(AX*1), Y29, Y10 // 62719520581401
478 VADDPD (CX)(AX*1), Y10, Y28 // 6261ad28582401
479 VADDPD (CX)(AX*2), Y29, Y0 // 62f19520580441
480 VADDPD (CX)(AX*2), Y1, Y28 // 6261f528582441
481 VADDPD (CX)(AX*2), Y29, Y28 // 62619520582441
482 VADDPD (CX)(AX*2), Y29, Y10 // 62719520581441
483 VADDPD (CX)(AX*2), Y10, Y28 // 6261ad28582441
484 VADDPD 15(AX), Y0, Y29 // 6261fd2858a80f000000
485 VADDPD 15(AX), Y28, Y1 // 62f19d2058880f000000
486 VADDPD 15(AX), Y28, Y29 // 62619d2058a80f000000
487 VADDPD 15(AX), Y10, Y29 // 6261ad2858a80f000000
488 VADDPD 15(AX), Y28, Y10 // 62719d2058900f000000
489 VADDPD 15(CX)(AX*1), Y0, Y29 // 6261fd2858ac010f000000
490 VADDPD 15(CX)(AX*1), Y28, Y1 // 62f19d20588c010f000000
491 VADDPD 15(CX)(AX*1), Y28, Y29 // 62619d2058ac010f000000
492 VADDPD 15(CX)(AX*1), Y10, Y29 // 6261ad2858ac010f000000
493 VADDPD 15(CX)(AX*1), Y28, Y10 // 62719d205894010f000000
494 VADDPD 15(CX)(AX*2), Y0, Y29 // 6261fd2858ac410f000000
495 VADDPD 15(CX)(AX*2), Y28, Y1 // 62f19d20588c410f000000
496 VADDPD 15(CX)(AX*2), Y28, Y29 // 62619d2058ac410f000000
497 VADDPD 15(CX)(AX*2), Y10, Y29 // 6261ad2858ac410f000000
498 VADDPD 15(CX)(AX*2), Y28, Y10 // 62719d205894410f000000
499 VADDPD 2048(DX), Y0, Y29 // 6261fd28586a40
500 VADDPD 2048(DX), Y29, Y1 // 62f19520584a40
501 VADDPD 2048(DX), Y28, Y29 // 62619d20586a40
502 VADDPD 2048(DX)(AX*2), Y0, Y29 // 6261fd28586c4240
503 VADDPD 2048(DX)(AX*2), Y29, Y1 // 62f19520584c4240
504 VADDPD 2048(DX)(AX*2), Y28, Y29 // 62619d20586c4240
505 // EVEX: Z registers; VL=512.
506 VADDPD Z30, Z0, Z1 // 6291fd4858ce
507 VADDPD Z0, Z2, Z29 // 6261ed4858e8
508 VADDPD Z0, Z30, Z29 // 62618d4058e8
509 VADDPD Z28, Z2, Z1 // 6291ed4858cc
510 VADDPD Z28, Z30, Z1 // 62918d4058cc
511 VADDPD Z28, Z2, Z29 // 6201ed4858ec
512 VADDPD Z28, Z30, Z29 // 62018d4058ec
513 VADDPD Z10, Z30, Z11 // 62518d4058da
514 VADDPD Z10, Z12, Z29 // 62419d4858ea
515 VADDPD Z10, Z30, Z29 // 62418d4058ea
516 VADDPD Z28, Z12, Z11 // 62119d4858dc
517 VADDPD Z28, Z30, Z11 // 62118d4058dc
518 VADDPD Z28, Z12, Z29 // 62019d4858ec
519 VADDPD Z28, Z30, Z29 // 62018d4058ec
520 VADDPD (AX), Z0, Z29 // 6261fd485828
521 VADDPD (AX), Z28, Z1 // 62f19d405808
522 VADDPD (AX), Z28, Z29 // 62619d405828
523 VADDPD (AX), Z10, Z29 // 6261ad485828
524 VADDPD (AX), Z28, Z10 // 62719d405810
525 VADDPD (CX)(AX*1), Z0, Z29 // 6261fd48582c01
526 VADDPD (CX)(AX*1), Z28, Z1 // 62f19d40580c01
527 VADDPD (CX)(AX*1), Z28, Z29 // 62619d40582c01
528 VADDPD (CX)(AX*1), Z10, Z29 // 6261ad48582c01
529 VADDPD (CX)(AX*1), Z28, Z10 // 62719d40581401
530 VADDPD (CX)(AX*2), Z0, Z29 // 6261fd48582c41
531 VADDPD (CX)(AX*2), Z28, Z1 // 62f19d40580c41
532 VADDPD (CX)(AX*2), Z28, Z29 // 62619d40582c41
533 VADDPD (CX)(AX*2), Z10, Z29 // 6261ad48582c41
534 VADDPD (CX)(AX*2), Z28, Z10 // 62719d40581441
535 VADDPD 15(AX), Z29, Z0 // 62f1954058800f000000
536 VADDPD 15(AX), Z1, Z28 // 6261f54858a00f000000
537 VADDPD 15(AX), Z29, Z28 // 6261954058a00f000000
538 VADDPD 15(AX), Z29, Z10 // 6271954058900f000000
539 VADDPD 15(AX), Z10, Z28 // 6261ad4858a00f000000
540 VADDPD 15(CX)(AX*1), Z29, Z0 // 62f195405884010f000000
541 VADDPD 15(CX)(AX*1), Z1, Z28 // 6261f54858a4010f000000
542 VADDPD 15(CX)(AX*1), Z29, Z28 // 6261954058a4010f000000
543 VADDPD 15(CX)(AX*1), Z29, Z10 // 627195405894010f000000
544 VADDPD 15(CX)(AX*1), Z10, Z28 // 6261ad4858a4010f000000
545 VADDPD 15(CX)(AX*2), Z29, Z0 // 62f195405884410f000000
546 VADDPD 15(CX)(AX*2), Z1, Z28 // 6261f54858a4410f000000
547 VADDPD 15(CX)(AX*2), Z29, Z28 // 6261954058a4410f000000
548 VADDPD 15(CX)(AX*2), Z29, Z10 // 627195405894410f000000
549 VADDPD 15(CX)(AX*2), Z10, Z28 // 6261ad4858a4410f000000
550 VADDPD 2048(DX), Z29, Z0 // 62f19540584220
551 VADDPD 2048(DX), Z1, Z29 // 6261f548586a20
552 VADDPD 2048(DX), Z29, Z28 // 62619540586220
553 VADDPD 2048(DX)(AX*2), Z29, Z0 // 62f1954058444220
554 VADDPD 2048(DX)(AX*2), Z1, Z29 // 6261f548586c4220
555 VADDPD 2048(DX)(AX*2), Z29, Z28 // 6261954058644220
556 // EVEX: KOP (opmask) instructions.
557 KMOVB K0, K0 // c5f990c0
558 KMOVB K7, K7 // c5f990ff
559 KMOVB K5, K1 // c5f990cd
560 KMOVB K1, K5 // c5f990e9
561 KMOVB (AX), K1 // c5f99008
562 KMOVB K0, (AX) // c5f99100
563 KMOVB K7, (R10) // c4c179913a
564 KMOVB K5, AX // c5f993c5
565 KMOVB K7, R10 // c57993d7
566 KMOVB AX, K5 // c5f992e8
567 KMOVB R10, K7 // c4c17992fa
568 KMOVW K0, K0 // c5f890c0
569 KMOVW K7, K7 // c5f890ff
570 KMOVW K5, K1 // c5f890cd
571 KMOVW K1, K5 // c5f890e9
572 KMOVW (AX), K1 // c5f89008
573 KMOVW K0, (AX) // c5f89100
574 KMOVW K7, (R10) // c4c178913a
575 KMOVW K5, AX // c5f893c5
576 KMOVW K7, R10 // c57893d7
577 KMOVW AX, K5 // c5f892e8
578 KMOVW R10, K7 // c4c17892fa
579 KMOVD K0, K0 // c4e1f990c0
580 KMOVD K7, K7 // c4e1f990ff
581 KMOVD K5, K1 // c4e1f990cd
582 KMOVD K1, K5 // c4e1f990e9
583 KMOVD (AX), K1 // c4e1f99008
584 KMOVD AX, K5 // c5fb92e8
585 KMOVD R10, K7 // c4c17b92fa
586 KMOVD K0, (AX) // c4e1f99100
587 KMOVD K7, (R10) // c4c1f9913a
588 KMOVD K5, AX // c5fb93c5
589 KMOVD K7, R10 // c57b93d7
590 KMOVQ K0, K0 // c4e1f890c0
591 KMOVQ K7, K7 // c4e1f890ff
592 KMOVQ K5, K1 // c4e1f890cd
593 KMOVQ K1, K5 // c4e1f890e9
594 KMOVQ (AX), K1 // c4e1f89008
595 KMOVQ AX, K5 // c4e1fb92e8
596 KMOVQ R10, K7 // c4c1fb92fa
597 KMOVQ K0, (AX) // c4e1f89100
598 KMOVQ K7, (R10) // c4c1f8913a
599 KMOVQ K5, AX // c4e1fb93c5
600 KMOVQ K7, R10 // c461fb93d7
601 KNOTB K7, K0 // c5f944c7
602 KNOTB K1, K5 // c5f944e9
603 KNOTW K7, K0 // c5f844c7
604 KNOTW K1, K5 // c5f844e9
605 KNOTD K7, K0 // c4e1f944c7
606 KNOTD K1, K5 // c4e1f944e9
607 KNOTQ K7, K0 // c4e1f844c7
608 KNOTQ K1, K5 // c4e1f844e9
609 KORB K7, K5, K0 // c5d545c7
610 KORB K0, K7, K5 // c5c545e8
611 KORW K7, K5, K0 // c5d445c7
612 KORW K0, K7, K5 // c5c445e8
613 KORD K7, K5, K0 // c4e1d545c7
614 KORD K0, K7, K5 // c4e1c545e8
615 KORQ K7, K5, K0 // c4e1d445c7
616 KORQ K0, K7, K5 // c4e1c445e8
617 KSHIFTLB $0, K7, K0 // c4e37932c700
618 KSHIFTLB $196, K1, K5 // c4e37932e9c4
619 KSHIFTLW $0, K7, K0 // c4e3f932c700
620 KSHIFTLW $196, K1, K5 // c4e3f932e9c4
621 KSHIFTLD $0, K7, K0 // c4e37933c700
622 KSHIFTLD $196, K1, K5 // c4e37933e9c4
623 KSHIFTLQ $0, K7, K0 // c4e3f933c700
624 KSHIFTLQ $196, K1, K5 // c4e3f933e9c4
625 // EVEX: masking with K1-K7.
626 VADDPD X2, X1, K1, X0 // 62f1f50958c2
627 VADDPD X12, X1, K4, X10 // 6251f50c58d4
628 VADDPD X22, X1, K7, X20 // 62a1f50f58e6
629 VADDPD (AX), X1, K1, X1 // 62f1f5095808
630 VADDPD 8(R10), X10, K4, X10 // 6251ad0c589208000000
631 VADDPD (R10)(AX*4), X20, K7, X20 // 62c1dd07582482
632 VADDPD Y2, Y1, K1, Y0 // 62f1f52958c2
633 VADDPD Y12, Y1, K4, Y10 // 6251f52c58d4
634 VADDPD Y22, Y1, K7, Y20 // 62a1f52f58e6
635 VADDPD (AX), Y1, K1, Y1 // 62f1f5295808
636 VADDPD 8(R10), Y10, K4, Y10 // 6251ad2c589208000000
637 VADDPD (R10)(AX*4), Y20, K7, Y20 // 62c1dd27582482
638 VADDPD Z2, Z1, K1, Z0 // 62f1f54958c2
639 VADDPD Z12, Z1, K4, Z10 // 6251f54c58d4
640 VADDPD Z22, Z1, K7, Z20 // 62a1f54f58e6
641 VADDPD (AX), Z1, K1, Z1 // 62f1f5495808
642 VADDPD 8(R10), Z10, K4, Z10 // 6251ad4c589208000000
643 VADDPD (R10)(AX*4), Z20, K7, Z20 // 62c1dd47582482
644 // EVEX gather (also tests Z as VSIB index).
645 VPGATHERDD 360(AX)(X2*4), K1, X1 // 62f27d09904c905a
646 VPGATHERDD 640(BP)(X15*8), K3, X14 // 62327d0b90b4fd80020000
647 VPGATHERDD 960(R10)(X25*2), K7, X24 // 62027d0790844ac0030000
648 VPGATHERDD 1280(R10)(X1*4), K4, X0 // 62d27d0c90848a00050000
649 VPGATHERDD 360(AX)(Y2*4), K1, Y1 // 62f27d29904c905a
650 VPGATHERDD 640(BP)(Y15*8), K3, Y14 // 62327d2b90b4fd80020000
651 VPGATHERDD 960(R10)(Y25*2), K7, Y24 // 62027d2790844ac0030000
652 VPGATHERDD 1280(R10)(Y1*4), K4, Y0 // 62d27d2c90848a00050000
653 VPGATHERDD 360(AX)(Z2*4), K1, Z1 // 62f27d49904c905a
654 VPGATHERDD 640(BP)(Z15*8), K3, Z14 // 62327d4b90b4fd80020000
655 VPGATHERDD 960(R10)(Z25*2), K7, Z24 // 62027d4790844ac0030000
656 VPGATHERDD 1280(R10)(Z1*4), K4, Z0 // 62d27d4c90848a00050000
657 VPGATHERDQ 360(AX)(X2*4), K1, X1 // 62f2fd09904c902d
658 VPGATHERDQ 640(BP)(X15*8), K3, X14 // 6232fd0b9074fd50
659 VPGATHERDQ 960(R10)(X25*2), K7, X24 // 6202fd0790444a78
660 VPGATHERDQ 1280(R10)(X1*4), K4, X0 // 62d2fd0c90848a00050000
661 VPGATHERDQ 360(AX)(X2*4), K1, Y1 // 62f2fd29904c902d
662 VPGATHERDQ 640(BP)(X15*8), K3, Y14 // 6232fd2b9074fd50
663 VPGATHERDQ 960(R10)(X25*2), K7, Y24 // 6202fd2790444a78
664 VPGATHERDQ 1280(R10)(X1*4), K4, Y0 // 62d2fd2c90848a00050000
665 VPGATHERDQ 360(AX)(Y2*4), K1, Z1 // 62f2fd49904c902d
666 VPGATHERDQ 640(BP)(Y15*8), K3, Z14 // 6232fd4b9074fd50
667 VPGATHERDQ 960(R10)(Y25*2), K7, Z24 // 6202fd4790444a78
668 VPGATHERDQ 1280(R10)(Y1*4), K4, Z0 // 62d2fd4c90848a00050000
669 VGATHERDPD 360(R15)(X30*2), K6, X20 // 6282fd069264772d
670 VGATHERDPD 640(R15)(X20*2), K6, X10 // 6252fd0692546750
671 VGATHERDPD 960(R15)(X10*2), K6, X20 // 6282fd0e92645778
672 VGATHERDPD 1280(R15)(X0*2), K6, X10 // 6252fd0e92944700050000
673 VGATHERDPD 360(R15)(X30*2), K6, Y20 // 6282fd269264772d
674 VGATHERDPD 640(R15)(X20*2), K6, Y10 // 6252fd2692546750
675 VGATHERDPD 960(R15)(X10*2), K6, Y20 // 6282fd2e92645778
676 VGATHERDPD 1280(R15)(X0*2), K6, Y10 // 6252fd2e92944700050000
677 VGATHERDPD 360(R15)(Y30*2), K6, Z20 // 6282fd469264772d
678 VGATHERDPD 640(R15)(Y20*2), K6, Z10 // 6252fd4692546750
679 VGATHERDPD 960(R15)(Y10*2), K6, Z20 // 6282fd4e92645778
680 VGATHERDPD 1280(R15)(Y0*2), K6, Z10 // 6252fd4e92944700050000
681 VGATHERDPS 360(R15)(X30*2), K6, X20 // 62827d069264775a
682 VGATHERDPS 640(R15)(X20*2), K6, X10 // 62527d0692946780020000
683 VGATHERDPS 960(R15)(X10*2), K6, X20 // 62827d0e92a457c0030000
684 VGATHERDPS 1280(R15)(X0*2), K6, X10 // 62527d0e92944700050000
685 VGATHERDPS 360(R15)(Y30*2), K6, Y20 // 62827d269264775a
686 VGATHERDPS 640(R15)(Y20*2), K6, Y10 // 62527d2692946780020000
687 VGATHERDPS 960(R15)(Y10*2), K6, Y20 // 62827d2e92a457c0030000
688 VGATHERDPS 1280(R15)(Y0*2), K6, Y10 // 62527d2e92944700050000
689 VGATHERDPS 360(R15)(Z30*2), K6, Z20 // 62827d469264775a
690 VGATHERDPS 640(R15)(Z20*2), K6, Z10 // 62527d4692946780020000
691 VGATHERDPS 960(R15)(Z10*2), K6, Z20 // 62827d4e92a457c0030000
692 VGATHERDPS 1280(R15)(Z0*2), K6, Z10 // 62527d4e92944700050000
693 VGATHERQPS 360(R15)(X30*2), K6, X20 // 62827d069364775a
694 VGATHERQPS 640(R15)(X20*2), K6, X10 // 62527d0693946780020000
695 VGATHERQPS 960(R15)(X10*2), K6, X20 // 62827d0e93a457c0030000
696 VGATHERQPS 1280(R15)(X0*2), K6, X10 // 62527d0e93944700050000
697 VGATHERQPS 360(R15)(Y30*2), K6, X20 // 62827d269364775a
698 VGATHERQPS 640(R15)(Y20*2), K6, X10 // 62527d2693946780020000
699 VGATHERQPS 960(R15)(Y10*2), K6, X20 // 62827d2e93a457c0030000
700 VGATHERQPS 1280(R15)(Y0*2), K6, X10 // 62527d2e93944700050000
701 VGATHERQPS 360(R15)(Z30*2), K6, Y20 // 62827d469364775a
702 VGATHERQPS 640(R15)(Z20*2), K6, Y10 // 62527d4693946780020000
703 VGATHERQPS 960(R15)(Z10*2), K6, Y20 // 62827d4e93a457c0030000
704 VGATHERQPS 1280(R15)(Z0*2), K6, Y10 // 62527d4e93944700050000
705 VPGATHERQD 360(R15)(X30*2), K6, X20 // 62827d069164775a
706 VPGATHERQD 640(R15)(X20*2), K6, X10 // 62527d0691946780020000
707 VPGATHERQD 960(R15)(X10*2), K6, X20 // 62827d0e91a457c0030000
708 VPGATHERQD 1280(R15)(X0*2), K6, X10 // 62527d0e91944700050000
709 VPGATHERQD 360(R15)(Y30*2), K6, X20 // 62827d269164775a
710 VPGATHERQD 640(R15)(Y20*2), K6, X10 // 62527d2691946780020000
711 VPGATHERQD 960(R15)(Y10*2), K6, X20 // 62827d2e91a457c0030000
712 VPGATHERQD 1280(R15)(Y0*2), K6, X10 // 62527d2e91944700050000
713 VPGATHERQD 360(R15)(Z30*2), K6, Y20 // 62827d469164775a
714 VPGATHERQD 640(R15)(Z20*2), K6, Y10 // 62527d4691946780020000
715 VPGATHERQD 960(R15)(Z10*2), K6, Y20 // 62827d4e91a457c0030000
716 VPGATHERQD 1280(R15)(Z0*2), K6, Y10 // 62527d4e91944700050000
717 VPGATHERQQ 360(R15)(X30*2), K6, X20 // 6282fd069164772d
718 VPGATHERQQ 640(R15)(X20*2), K6, X10 // 6252fd0691546750
719 VPGATHERQQ 960(R15)(X10*2), K6, X20 // 6282fd0e91645778
720 VPGATHERQQ 1280(R15)(X0*2), K6, X10 // 6252fd0e91944700050000
721 VPGATHERQQ 360(R15)(Y30*2), K6, Y20 // 6282fd269164772d
722 VPGATHERQQ 640(R15)(Y20*2), K6, Y10 // 6252fd2691546750
723 VPGATHERQQ 960(R15)(Y10*2), K6, Y20 // 6282fd2e91645778
724 VPGATHERQQ 1280(R15)(Y0*2), K6, Y10 // 6252fd2e91944700050000
725 VPGATHERQQ 360(R15)(Z30*2), K6, Z20 // 6282fd469164772d
726 VPGATHERQQ 640(R15)(Z20*2), K6, Z10 // 6252fd4691546750
727 VPGATHERQQ 960(R15)(Z10*2), K6, Z20 // 6282fd4e91645778
728 VPGATHERQQ 1280(R15)(Z0*2), K6, Z10 // 6252fd4e91944700050000
729 VGATHERQPD 360(R15)(X30*2), K6, X20 // 6282fd069364772d
730 VGATHERQPD 640(R15)(X20*2), K6, X10 // 6252fd0693546750
731 VGATHERQPD 960(R15)(X10*2), K6, X20 // 6282fd0e93645778
732 VGATHERQPD 1280(R15)(X0*2), K6, X10 // 6252fd0e93944700050000
733 VGATHERQPD 360(R15)(Y30*2), K6, Y20 // 6282fd269364772d
734 VGATHERQPD 640(R15)(Y20*2), K6, Y10 // 6252fd2693546750
735 VGATHERQPD 960(R15)(Y10*2), K6, Y20 // 6282fd2e93645778
736 VGATHERQPD 1280(R15)(Y0*2), K6, Y10 // 6252fd2e93944700050000
737 VGATHERQPD 360(R15)(Z30*2), K6, Z20 // 6282fd469364772d
738 VGATHERQPD 640(R15)(Z20*2), K6, Z10 // 6252fd4693546750
739 VGATHERQPD 960(R15)(Z10*2), K6, Z20 // 6282fd4e93645778
740 VGATHERQPD 1280(R15)(Z0*2), K6, Z10 // 6252fd4e93944700050000
741 // EVEX: corner cases for High-16 registers.
742 VADDPD X31, X16, X15 // 6211fd0058ff
743 VADDPD X23, X15, X16 // 62a1850858c7
744 VADDPD Y31, Y16, Y15 // 6211fd2058ff
745 VADDPD Y23, Y15, Y16 // 62a1852858c7
746 VADDPD Z31, Z16, Z15 // 6211fd4058ff
747 VADDPD Z23, Z15, Z16 // 62a1854858c7
748 VGATHERQPD (DX)(X16*1),K1,X31 // 6262fd01933c02
749 VGATHERQPD (DX)(X31*1),K1,X16 // 62a2fd0193043a
750 VGATHERQPD (DX)(X15*1),K1,X23 // 62a2fd09933c3a
751 VGATHERQPD (DX)(X23*1),K1,X15 // 6272fd01933c3a
752 VGATHERQPD (DX)(Y16*1),K1,Y31 // 6262fd21933c02
753 VGATHERQPD (DX)(Y31*1),K1,Y16 // 62a2fd2193043a
754 VGATHERQPD (DX)(Y15*1),K1,Y23 // 62a2fd29933c3a
755 VGATHERQPD (DX)(Y23*1),K1,Y15 // 6272fd21933c3a
756 VGATHERQPD (DX)(Z16*1),K1,Z31 // 6262fd41933c02
757 VGATHERQPD (DX)(Z31*1),K1,Z16 // 62a2fd4193043a
758 VGATHERQPD (DX)(Z15*1),K1,Z23 // 62a2fd49933c3a
759 VGATHERQPD (DX)(Z23*1),K1,Z15 // 6272fd41933c3a
760 // EVEX: VCVTPD2DQ with Y suffix (VL=2).
761 VCVTPD2DQY (BX), X20 // 62e1ff28e623
762 VCVTPD2DQY (R11), X30 // 6241ff28e633
763 // XED encoder uses EVEX.X=0 for these; most x86 tools use EVEX.X=1.
764 // Either way is OK.
765 VMOVQ SP, X20 // 62e1fd086ee4 or 62a1fd086ee4
766 VMOVQ BP, X20 // 62e1fd086ee5 or 62a1fd086ee5
767 VMOVQ R14, X20 // 62c1fd086ee6 or 6281fd086ee6
768 // "VMOVQ r/m64, xmm1"/6E vs "VMOVQ xmm2/m64, xmm1"/7E with mem operand.
769 VMOVQ (AX), X20 // 62e1fd086e20 or 62e1fe087e20
770 VMOVQ 7(DX), X20 // 62e1fd086ea207000000 or 62e1fe087ea207000000
771 VMOVQ -15(R11)(CX*1), X20 // 62c1fd086ea40bf1ffffff or 62c1fe087ea40bf1ffffff
772 VMOVQ (SP)(AX*2), X20 // 62e1fd086e2444 or 62e1fe087e2444
773 // "VMOVQ xmm1, r/m64"/7E vs "VMOVQ xmm1, xmm2/m64"/D6 with mem operand.
774 VMOVQ X20, (AX) // 62e1fd087e20 or 62e1fd08d620
775 VMOVQ X20, 7(DX) // 62e1fd087ea207000000 or 62e1fd08d6a207000000
776 VMOVQ X20, -15(R11)(CX*1) // 62c1fd087ea40bf1ffffff or 62c1fd08d6a40bf1ffffff
777 VMOVQ X20, (SP)(AX*2) // 62e1fd087e2444 or 62e1fd08d62444
778 // VMOVHPD: overlapping VEX and EVEX variants.
779 VMOVHPD (AX), X5, X5 // c5d11628 or c4e1d11628 or 62f1d5281628 or 62f1d5481628
780 VMOVHPD 7(DX), X5, X5 // c5d1166a07 or 62f1d52816aa07000000 or 62f1d54816aa07000000
781 VMOVHPD -15(R11)(CX*1), X5, X5 // c4c151166c0bf1 or 62d1d52816ac0bf1ffffff or 62d1d54816ac0bf1ffffff
782 VMOVHPD (SP)(AX*2), X5, X5 // c5d1162c44 or c4e1d1162c44 or 62f1d528162c44 or 62f1d548162c44
783 VMOVHPD (AX), X8, X5 // c5b91628 or c4e1b91628 or 62f1bd281628 or 62f1bd481628
784 VMOVHPD 7(DX), X8, X5 // c5b9166a07 or 62f1bd2816aa07000000 or 62f1bd4816aa07000000
785 VMOVHPD -15(R11)(CX*1), X8, X5 // c4c139166c0bf1 or 62d1bd4816ac0bf1ffffff
786 VMOVHPD (SP)(AX*2), X8, X5 // c5b9162c44 or c4e1b9162c44 or 62f1bd28162c44 or 62f1bd48162c44
787 VMOVHPD (AX), X20, X5 // 62f1dd001628 or 62f1dd201628 or 62f1dd401628
788 VMOVHPD 7(DX), X20, X5 // 62f1dd0016aa07000000 or 62f1dd2016aa07000000 or 62f1dd4016aa07000000
789 VMOVHPD -15(R11)(CX*1), X20, X5 // 62d1dd0016ac0bf1ffffff or 62d1dd2016ac0bf1ffffff or 62d1dd4016ac0bf1ffffff
790 VMOVHPD (SP)(AX*2), X20, X5 // 62f1dd00162c44 or 62f1dd20162c44 or 62f1dd40162c44
791 VMOVHPD (AX), X5, X8 // c5511600 or c461d11600 or 6271d5281600 or 6271d5481600
792 VMOVHPD 7(DX), X5, X8 // c551164207 or 6271d528168207000000 or 6271d548168207000000
793 VMOVHPD -15(R11)(CX*1), X5, X8 // c4415116440bf1 or 6251d52816840bf1ffffff or 6251d54816840bf1ffffff
794 VMOVHPD (SP)(AX*2), X5, X8 // c551160444 or 6271d528160444 or 6271d548160444
795 VMOVHPD (AX), X8, X8 // c5391600 or 6271bd281600 or 6271bd481600
796 VMOVHPD 7(DX), X8, X8 // c539164207 or 6271bd28168207000000 or 6271bd48168207000000
797 VMOVHPD -15(R11)(CX*1), X8, X8 // c4413916440bf1 or 6251bd2816840bf1ffffff or 6251bd4816840bf1ffffff
798 VMOVHPD (SP)(AX*2), X8, X8 // c539160444 or 6271bd28160444 or 6271bd48160444
799 VMOVHPD (AX), X20, X8 // 6271dd001600 or 6271dd201600 or 6271dd401600
800 VMOVHPD 7(DX), X20, X8 // 6271dd00168207000000 or 6271dd20168207000000 or 6271dd40168207000000
801 VMOVHPD -15(R11)(CX*1), X20, X8 // 6251dd0016840bf1ffffff or 6251dd2016840bf1ffffff or 6251dd4016840bf1ffffff
802 VMOVHPD (SP)(AX*2), X20, X8 // 6271dd00160444 or 6271dd20160444 or 6271dd40160444
803 VMOVHPD (AX), X5, X20 // 62e1d5081620 or 62e1d5281620 or 62e1d5481620
804 VMOVHPD 7(DX), X5, X20 // 62e1d50816a207000000 or 62e1d52816a207000000 or 62e1d54816a207000000
805 VMOVHPD -15(R11)(CX*1), X5, X20 // 62c1d50816a40bf1ffffff or 62c1d52816a40bf1ffffff or 62c1d54816a40bf1ffffff
806 VMOVHPD (SP)(AX*2), X5, X20 // 62e1d508162444 or 62e1d528162444 or 62e1d548162444
807 VMOVHPD (AX), X8, X20 // 62e1bd081620 or 62e1bd281620 or 62e1bd481620
808 VMOVHPD 7(DX), X8, X20 // 62e1bd0816a207000000 or 62e1bd2816a207000000 or 62e1bd4816a207000000
809 VMOVHPD -15(R11)(CX*1), X8, X20 // 62c1bd0816a40bf1ffffff or 62c1bd2816a40bf1ffffff or 62c1bd4816a40bf1ffffff
810 VMOVHPD (SP)(AX*2), X8, X20 // 62e1bd08162444 or 62e1bd28162444 or 62e1bd48162444
811 VMOVHPD (AX), X20, X20 // 62e1dd001620 or 62e1dd201620 or 62e1dd401620
812 VMOVHPD 7(DX), X20, X20 // 62e1dd0016a207000000 or 62e1dd2016a207000000 or 62e1dd4016a207000000
813 VMOVHPD -15(R11)(CX*1), X20, X20 // 62c1dd0016a40bf1ffffff or 62c1dd2016a40bf1ffffff or 62c1dd4016a40bf1ffffff
814 VMOVHPD (SP)(AX*2), X20, X20 // 62e1dd00162444 or 62e1dd20162444 or 62e1dd40162444
815 VMOVHPD X5, (AX) // c5f91728 or 62f1fd281728 or 62f1fd481728
816 VMOVHPD X8, (AX) // c5791700 or 6271fd281700 or 6271fd481700
817 VMOVHPD X20, (AX) // 62e1fd081720 or 62e1fd281720 or 62e1fd481720
818 VMOVHPD X5, 7(DX) // c5f9176a07 or 62f1fd2817aa07000000 or 62f1fd4817aa07000000
819 VMOVHPD X8, 7(DX) // c579174207 or 6271fd28178207000000 or 6271fd48178207000000
820 VMOVHPD X20, 7(DX) // 62e1fd0817a207000000 or 62e1fd2817a207000000 or 62e1fd4817a207000000
821 VMOVHPD X5, -15(R11)(CX*1) // c4c179176c0bf1 or 62d1fd2817ac0bf1ffffff or 62d1fd4817ac0bf1ffffff
822 VMOVHPD X8, -15(R11)(CX*1) // c4417917440bf1 or 6251fd2817840bf1ffffff or 6251fd4817840bf1ffffff
823 VMOVHPD X20, -15(R11)(CX*1) // 62c1fd0817a40bf1ffffff or 62c1fd2817a40bf1ffffff or 62c1fd4817a40bf1ffffff
824 VMOVHPD X5, (SP)(AX*2) // c5f9172c44 or 62f1fd28172c44 or 62f1fd48172c44
825 VMOVHPD X8, (SP)(AX*2) // c579170444 or 6271fd28170444 or 6271fd48170444
826 VMOVHPD X20, (SP)(AX*2) // 62e1fd08172444 or 62e1fd28172444 or 62e1fd48172444
827 // VMOVLPD: overlapping VEX and EVEX variants.
828 VMOVLPD (AX), X5, X5 // c5d11228 or 62f1d5281228 or 62f1d5481228
829 VMOVLPD 7(DX), X5, X5 // c5d1126a07 or 62f1d52812aa07000000 or 62f1d54812aa07000000
830 VMOVLPD -15(R11)(CX*1), X5, X5 // c4c151126c0bf1 or 62d1d52812ac0bf1ffffff or 62d1d54812ac0bf1ffffff
831 VMOVLPD (SP)(AX*2), X5, X5 // c5d1122c44 or 62f1d528122c44 or 62f1d548122c44
832 VMOVLPD (AX), X8, X5 // c5b91228 or 62f1bd281228 or 62f1bd481228
833 VMOVLPD 7(DX), X8, X5 // c5b9126a07 or 62f1bd2812aa07000000 or 62f1bd4812aa07000000
834 VMOVLPD -15(R11)(CX*1), X8, X5 // c4c139126c0bf1 or 62d1bd2812ac0bf1ffffff or 62d1bd4812ac0bf1ffffff
835 VMOVLPD (SP)(AX*2), X8, X5 // c5b9122c44 or 62f1bd28122c44 or 62f1bd48122c44
836 VMOVLPD (AX), X20, X5 // 62f1dd001228 or 62f1dd201228 or 62f1dd401228
837 VMOVLPD 7(DX), X20, X5 // 62f1dd0012aa07000000 or 62f1dd2012aa07000000 or 62f1dd4012aa07000000
838 VMOVLPD -15(R11)(CX*1), X20, X5 // 62d1dd0012ac0bf1ffffff or 62d1dd2012ac0bf1ffffff or 62d1dd4012ac0bf1ffffff
839 VMOVLPD (SP)(AX*2), X20, X5 // 62f1dd00122c44 or 62f1dd20122c44 or 62f1dd40122c44
840 VMOVLPD (AX), X5, X8 // c5511200 or 6271d5281200 or 6271d5481200
841 VMOVLPD 7(DX), X5, X8 // c551124207 or 6271d528128207000000 or 6271d548128207000000
842 VMOVLPD -15(R11)(CX*1), X5, X8 // c4415112440bf1 or 6251d52812840bf1ffffff or 6251d54812840bf1ffffff
843 VMOVLPD (SP)(AX*2), X5, X8 // c551120444 or 6271d528120444 or 6271d548120444
844 VMOVLPD (AX), X8, X8 // c5391200 or 6271bd281200 or 6271bd481200
845 VMOVLPD 7(DX), X8, X8 // c539124207 or 6271bd28128207000000 or 6271bd48128207000000
846 VMOVLPD -15(R11)(CX*1), X8, X8 // c4413912440bf1 or 6251bd2812840bf1ffffff or 6251bd4812840bf1ffffff
847 VMOVLPD (SP)(AX*2), X8, X8 // c539120444 or 6271bd28120444 or 6271bd48120444
848 VMOVLPD (AX), X20, X8 // 6271dd001200 or 6271dd201200 or 6271dd401200
849 VMOVLPD 7(DX), X20, X8 // 6271dd00128207000000 or 6271dd20128207000000 or 6271dd40128207000000
850 VMOVLPD -15(R11)(CX*1), X20, X8 // 6251dd0012840bf1ffffff or 6251dd2012840bf1ffffff or 6251dd4012840bf1ffffff
851 VMOVLPD (SP)(AX*2), X20, X8 // 6271dd00120444 or 6271dd20120444 or 6271dd40120444
852 VMOVLPD (AX), X5, X20 // 62e1d5081220 or 62e1d5281220 or 62e1d5481220
853 VMOVLPD 7(DX), X5, X20 // 62e1d50812a207000000 or 62e1d52812a207000000 or 62e1d54812a207000000
854 VMOVLPD -15(R11)(CX*1), X5, X20 // 62c1d50812a40bf1ffffff or 62c1d52812a40bf1ffffff or 62c1d54812a40bf1ffffff
855 VMOVLPD (SP)(AX*2), X5, X20 // 62e1d508122444 or 62e1d528122444 or 62e1d548122444
856 VMOVLPD (AX), X8, X20 // 62e1bd081220 or 62e1bd281220 or 62e1bd481220
857 VMOVLPD 7(DX), X8, X20 // 62e1bd0812a207000000 or 62e1bd2812a207000000 or 62e1bd4812a207000000
858 VMOVLPD -15(R11)(CX*1), X8, X20 // 62c1bd0812a40bf1ffffff or 62c1bd2812a40bf1ffffff or 62c1bd4812a40bf1ffffff
859 VMOVLPD (SP)(AX*2), X8, X20 // 62e1bd08122444 or 62e1bd28122444 or 62e1bd48122444
860 VMOVLPD (AX), X20, X20 // 62e1dd001220 or 62e1dd201220 or 62e1dd401220
861 VMOVLPD 7(DX), X20, X20 // 62e1dd0012a207000000 or 62e1dd2012a207000000 or 62e1dd4012a207000000
862 VMOVLPD -15(R11)(CX*1), X20, X20 // 62c1dd0012a40bf1ffffff or 62c1dd2012a40bf1ffffff or 62c1dd4012a40bf1ffffff
863 VMOVLPD (SP)(AX*2), X20, X20 // 62e1dd00122444 or 62e1dd20122444 or 62e1dd40122444
864 VMOVLPD X5, (AX) // c5f91328 or 62f1fd281328 or 62f1fd481328
865 VMOVLPD X8, (AX) // c5791300 or 6271fd281300 or 6271fd481300
866 VMOVLPD X20, (AX) // 62e1fd081320 or 62e1fd281320 or 62e1fd481320
867 VMOVLPD X5, 7(DX) // c5f9136a07 or 62f1fd2813aa07000000 or 62f1fd4813aa07000000
868 VMOVLPD X8, 7(DX) // c579134207 or 6271fd28138207000000 or 6271fd48138207000000
869 VMOVLPD X20, 7(DX) // 62e1fd0813a207000000 or 62e1fd2813a207000000 or 62e1fd4813a207000000
870 VMOVLPD X5, -15(R11)(CX*1) // c4c179136c0bf1 or 62d1fd2813ac0bf1ffffff or 62d1fd4813ac0bf1ffffff
871 VMOVLPD X8, -15(R11)(CX*1) // c4417913440bf1 or 6251fd2813840bf1ffffff or 6251fd4813840bf1ffffff
872 VMOVLPD X20, -15(R11)(CX*1) // 62c1fd0813a40bf1ffffff or 62c1fd2813a40bf1ffffff or 62c1fd4813a40bf1ffffff
873 VMOVLPD X5, (SP)(AX*2) // c5f9132c44 or 62f1fd28132c44 or 62f1fd48132c44
874 VMOVLPD X8, (SP)(AX*2) // c579130444 or 6271fd28130444 or 6271fd48130444
875 VMOVLPD X20, (SP)(AX*2) // 62e1fd08132444 or 62e1fd28132444 or 62e1fd48132444
876 // "VPEXTRW imm8u, xmm1, r32/m16"/15 vs "VPEXTRW imm8u, xmm2, r32"/C5.
877 VPEXTRW $17, X20, AX // 62b17d08c5c411 or 62e37d0815e011 or 62e3fd0815e011
878 VPEXTRW $127, X20, AX // 62b17d08c5c47f or 62e37d0815e07f or 62e3fd0815e07f
879 VPEXTRW $17, X20, SP // 62b17d08c5e411 or 62e37d0815e411 or 62e3fd0815e411
880 VPEXTRW $127, X20, SP // 62b17d08c5e47f or 62e37d0815e47f or 62e3fd0815e47f
881 VPEXTRW $17, X20, BP // 62b17d08c5ec11 or 62e37d0815e511 or 62e3fd0815e511
882 VPEXTRW $127, X20, BP // 62b17d08c5ec7f or 62e37d0815e57f or 62e3fd0815e57f
883 VPEXTRW $17, X20, R14 // 62317d08c5f411 or 62c37d0815e611 or 62c3fd0815e611
884 VPEXTRW $127, X20, R14 // 62317d08c5f47f or 62c37d0815e67f or 62c3fd0815e67f
885 VPEXTRW $17, X20, (AX) // 62e37d08152011 or 62e3fd08152011
886 VPEXTRW $127, X20, (AX) // 62e37d0815207f or 62e3fd0815207f
887 VPEXTRW $17, X20, 7(DX) // 62e37d0815a20700000011 or 62e3fd0815a20700000011
888 VPEXTRW $127, X20, 7(DX) // 62e37d0815a2070000007f or 62e3fd0815a2070000007f
889 VPEXTRW $17, X20, -15(R11)(CX*1) // 62c37d0815a40bf1ffffff11 or 62c3fd0815a40bf1ffffff11
890 VPEXTRW $127, X20, -15(R11)(CX*1) // 62c37d0815a40bf1ffffff7f or 62c3fd0815a40bf1ffffff7f
891 VPEXTRW $17, X20, (SP)(AX*2) // 62e37d0815244411 or 62e3fd0815244411
892 VPEXTRW $127, X20, (SP)(AX*2) // 62e37d081524447f or 62e3fd081524447f
893 // EVEX: embedded zeroing.
894 VADDPD.Z X30, X1, K7, X0 // 6291f58f58c6
895 VMAXPD.Z (AX), Z2, K1, Z1 // 62f1edc95f08
896 // EVEX: embedded rounding.
897 VADDPD.RU_SAE Z3, Z2, K1, Z1 // 62f1ed5958cb
898 VADDPD.RD_SAE Z3, Z2, K1, Z1 // 62f1ed3958cb
899 VADDPD.RZ_SAE Z3, Z2, K1, Z1 // 62f1ed7958cb
900 VADDPD.RN_SAE Z3, Z2, K1, Z1 // 62f1ed1958cb
901 VADDPD.RU_SAE.Z Z3, Z2, K1, Z1 // 62f1edd958cb
902 VADDPD.RD_SAE.Z Z3, Z2, K1, Z1 // 62f1edb958cb
903 VADDPD.RZ_SAE.Z Z3, Z2, K1, Z1 // 62f1edf958cb
904 VADDPD.RN_SAE.Z Z3, Z2, K1, Z1 // 62f1ed9958cb
905 // EVEX: embedded broadcasting.
906 VADDPD.BCST (AX), X2, K1, X1 // 62f1ed195808
907 VADDPD.BCST.Z (AX), X2, K1, X1 // 62f1ed995808
908 VADDPD.BCST (AX), Y2, K1, Y1 // 62f1ed395808
909 VADDPD.BCST.Z (AX), Y2, K1, Y1 // 62f1edb95808
910 VADDPD.BCST (AX), Z2, K1, Z1 // 62f1ed595808
911 VADDPD.BCST.Z (AX), Z2, K1, Z1 // 62f1edd95808
912 VMAXPD.BCST (AX), Z2, K1, Z1 // 62f1ed595f08
913 VMAXPD.BCST.Z (AX), Z2, K1, Z1 // 62f1edd95f08
914 // EVEX: suppress all exceptions (SAE).
915 VMAXPD.SAE Z3, Z2, K1, Z1 // 62f1ed595fcb or 62f1ed195fcb
916 VMAXPD.SAE.Z Z3, Z2, K1, Z1 // 62f1edd95fcb or 62f1ed995fcb
917 VMAXPD (AX), Z2, K1, Z1 // 62f1ed495f08
918 VCMPSD.SAE $0, X0, X2, K0 // 62f1ef18c2c000
919 VCMPSD.SAE $0, X0, X2, K1, K0 // 62f1ef19c2c000
920 // EVEX: broadcast-affected compressed displacement (Disp8).
921 VADDPD.BCST 1016(DX), X0, X29 // 6261fd18586a7f
922 VADDPD.BCST 1016(DX), X29, X1 // 62f19510584a7f
923 VADDPD.BCST 1016(DX), X28, X29 // 62619d10586a7f
924 VADDPD.BCST 1016(DX)(AX*2), X0, X29 // 6261fd18586c427f
925 VADDPD.BCST 1016(DX)(AX*2), X29, X1 // 62f19510584c427f
926 VADDPD.BCST 1016(DX), Y0, Y29 // 6261fd38586a7f
927 VADDPD.BCST 1016(DX), Y29, Y1 // 62f19530584a7f
928 VADDPD.BCST 1016(DX), Y28, Y29 // 62619d30586a7f
929 VADDPD.BCST 1016(DX)(AX*2), Y0, Y29 // 6261fd38586c427f
930 VADDPD.BCST 1016(DX)(AX*2), Y29, Y1 // 62f19530584c427f
931 VADDPD.BCST 1016(DX), Z0, Z29 // 6261fd58586a7f
932 VADDPD.BCST 1016(DX), Z29, Z1 // 62f19550584a7f
933 VADDPD.BCST 1016(DX), Z28, Z29 // 62619d50586a7f
934 VADDPD.BCST 1016(DX)(AX*2), Z0, Z29 // 6261fd58586c427f
935 VADDPD.BCST 1016(DX)(AX*2), Z29, Z1 // 62f19550584c427f
936 VADDPS.BCST 508(DX), Z0, Z29 // 62617c58586a7f
937 VADDPS.BCST 508(DX), Z1, Z29 // 62617458586a7f
938 VADDPS.BCST 508(DX), Z28, Z29 // 62611c50586a7f
939 VADDPS.BCST 508(DX)(AX*2), Z0, Z29 // 62617c58586c427f
940 VADDPS.BCST 508(DX)(AX*2), Z1, Z29 // 62617458586c427f
941 // EVEX: broadcast-affected compressed displacement that does not fit into 8bits.
942 VADDPD.BCST 2032(DX), X0, X29 // 6261fd1858aaf0070000
943 VADDPD.BCST 2032(DX), X29, X1 // 62f19510588af0070000
944 VADDPD.BCST 2032(DX), X28, X29 // 62619d1058aaf0070000
945 VADDPD.BCST 2032(DX)(AX*2), X0, X29 // 6261fd1858ac42f0070000
946 VADDPD.BCST 2032(DX)(AX*2), X29, X1 // 62f19510588c42f0070000
947 VADDPD.BCST 2032(DX), Y0, Y29 // 6261fd3858aaf0070000
948 VADDPD.BCST 2032(DX), Y29, Y1 // 62f19530588af0070000
949 VADDPD.BCST 2032(DX), Y28, Y29 // 62619d3058aaf0070000
950 VADDPD.BCST 2032(DX)(AX*2), Y0, Y29 // 6261fd3858ac42f0070000
951 VADDPD.BCST 2032(DX)(AX*2), Y29, Y1 // 62f19530588c42f0070000
952 VADDPD.BCST 2032(DX), Z0, Z29 // 6261fd5858aaf0070000
953 VADDPD.BCST 2032(DX), Z29, Z1 // 62f19550588af0070000
954 VADDPD.BCST 2032(DX), Z28, Z29 // 62619d5058aaf0070000
955 VADDPD.BCST 2032(DX)(AX*2), Z0, Z29 // 6261fd5858ac42f0070000
956 VADDPD.BCST 2032(DX)(AX*2), Z29, Z1 // 62f19550588c42f0070000
957 VADDPS.BCST 2032(DX), Z0, Z29 // 62617c5858aaf0070000
958 VADDPS.BCST 2032(DX), Z1, Z29 // 6261745858aaf0070000
959 VADDPS.BCST 2032(DX), Z28, Z29 // 62611c5058aaf0070000
960 VADDPS.BCST 2032(DX)(AX*2), Z0, Z29 // 62617c5858ac42f0070000
961 VADDPS.BCST 2032(DX)(AX*2), Z1, Z29 // 6261745858ac42f0070000
962 // Forced EVEX encoding due to suffixes.
963 VADDPD.BCST 2032(DX), X0, X0 // 62f1fd185882f0070000
964 VADDPD.BCST 2032(DX), Y0, Y0 // 62f1fd385882f0070000
965 // Test new Z-cases one-by-one.
966 //
967 // Zevex_i_r_k_rm.
968 VCVTPS2PH $1, Z2, K5, Y21 // 62b37d4d1dd501
969 VCVTPS2PH $2, Z21, K4, Y2 // 62e37d4c1dea02
970 // Zevex_i_r_rm.
971 VCVTPS2PH $1, Z2, Y21 // 62b37d481dd501
972 VCVTPS2PH $2, Z21, Y2 // 62e37d481dea02
973 // Zevex_i_rm_k_r.
974 VFPCLASSPDX $1, X2, K5, K3 // 62f3fd0d66da01
975 VFPCLASSPDX $2, X21, K4, K1 // 62b3fd0c66cd02
976 VFPCLASSPDX $1, (AX), K5, K3 // 62f3fd0d661801
977 VFPCLASSPDX $2, (CX), K4, K1 // 62f3fd0c660902
978 // Zevex_i_rm_k_vo.
979 VPROLD $1, X2, K5, X21 // 62f1550572ca01
980 VPROLD $2, Y21, K5, Y2 // 62b16d2d72cd02
981 VPROLD $1, (AX), K5, X21 // 62f15505720801
982 VPROLD $2, (CX), K5, Y2 // 62f16d2d720902
983 // Zevex_i_rm_r.
984 VFPCLASSPDX $1, X2, K3 // 62f3fd0866da01
985 VFPCLASSPDX $2, X21, K1 // 62b3fd0866cd02
986 VFPCLASSPDX $1, (AX), K3 // 62f3fd08661801
987 VFPCLASSPDX $2, (CX), K1 // 62f3fd08660902
988 // Zevex_i_rm_v_k_r.
989 VALIGND $1, X2, X9, K5, X21 // 62e3350d03ea01
990 VALIGND $2, Y21, Y2, K5, Y9 // 62336d2d03cd02
991 VALIGND $3, Z9, Z21, K5, Z2 // 62d3554503d103
992 VALIGND $1, (AX), X9, K5, X21 // 62e3350d032801
993 VALIGND $2, (CX), Y2, K5, Y9 // 62736d2d030902
994 VALIGND $3, (AX), Z21, K5, Z2 // 62f35545031003
995 // Zevex_i_rm_v_r.
996 VALIGND $1, X2, X9, X21 // 62e3350803ea01
997 VALIGND $2, Y21, Y2, Y9 // 62336d2803cd02
998 VALIGND $3, Z9, Z21, Z2 // 62d3554003d103
999 VALIGND $1, (AX), X9, X21 // 62e33508032801
1000 VALIGND $2, (CX), Y2, Y9 // 62736d28030902
1001 VALIGND $3, (AX), Z21, Z2 // 62f35540031003
1002 // Zevex_i_rm_vo.
1003 VPROLD $1, X2, X21 // 62f1550072ca01
1004 VPROLD $2, Y21, Y2 // 62b16d2872cd02
1005 VPROLD $1, (AX), X21 // 62f15500720801
1006 VPROLD $2, (CX), Y2 // 62f16d28720902
1007 // Zevex_k_rmo.
1008 VGATHERPF0DPD K5, (AX)(Y2*2) // 62f2fd4dc60c50
1009 VGATHERPF0DPD K3, (CX)(Y21*2) // 62f2fd43c60c69
1010 VSCATTERPF1DPD K5, (AX)(Y2*2) // 62f2fd4dc63450
1011 VSCATTERPF1DPD K3, (CX)(Y21*2) // 62f2fd43c63469
1012 // Zevex_r_k_rm.
1013 VPSCATTERDD X2, K5, (AX)(X21*2) // 62f27d05a01468
1014 VPSCATTERDD X21, K5, (AX)(X2*2) // 62e27d0da02c50
1015 VPSCATTERDD Y2, K5, (AX)(Y21*2) // 62f27d25a01468
1016 VPSCATTERDD Y21, K5, (AX)(Y2*2) // 62e27d2da02c50
1017 VPSCATTERDD Z2, K5, (AX)(Z21*2) // 62f27d45a01468
1018 VPSCATTERDD Z21, K5, (AX)(Z2*2) // 62e27d4da02c50
1019 // Zevex_r_v_k_rm.
1020 VMOVSD X2, X9, K5, X21 // 62b1b70d11d5 or 62e1b70d10ea
1021 VMOVSD X21, X2, K5, X9 // 62c1ef0d11e9 or 6231ef0d10cd
1022 VMOVSD X9, X21, K5, X2 // 6271d70511ca or 62d1d70510d1
1023 // Zevex_r_v_rm.
1024 VMOVSD X2, X9, X21 // 62b1b70811d5 or 62e1b70810ea
1025 VMOVSD X21, X2, X9 // 62c1ef0811e9 or 6231ef0810cd
1026 VMOVSD X9, X21, X2 // 6271d70011ca or 62d1d70010d1
1027 VPMOVDB X2, X21 // 62b27e0831d5
1028 VPMOVDB X21, X2 // 62e27e0831ea
1029 VPMOVDB X2, (AX) // 62f27e083110
1030 VPMOVDB X21, (AX) // 62e27e083128
1031 // Zevex_rm_k_r.
1032 VMOVDDUP X2, K5, X21 // 62e1ff0d12ea
1033 VMOVDDUP X21, K5, X2 // 62b1ff0d12d5
1034 VMOVDDUP (AX), K5, X21 // 62e1ff0d1228
1035 VMOVDDUP (CX), K5, X2 // 62f1ff0d1211
1036 VMOVDDUP Y2, K5, Y21 // 62e1ff2d12ea
1037 VMOVDDUP Y21, K5, Y2 // 62b1ff2d12d5
1038 VMOVDDUP (AX), K5, Y21 // 62e1ff2d1228
1039 VMOVDDUP (CX), K5, Y2 // 62f1ff2d1211
1040 VMOVDDUP Z2, K5, Z21 // 62e1ff4d12ea
1041 VMOVDDUP Z21, K5, Z2 // 62b1ff4d12d5
1042 VMOVDDUP (AX), K5, Z21 // 62e1ff4d1228
1043 VMOVDDUP (CX), K5, Z2 // 62f1ff4d1211
1044 // Zevex_rm_v_k_r.
1045 VADDPD Z2, Z9, K5, Z21 // 62e1b54d58ea
1046 VADDPD Z21, Z2, K5, Z9 // 6231ed4d58cd
1047 VADDPD Z9, Z21, K5, Z2 // 62d1d54558d1
1048 // Zevex_rm_v_r.
1049 VADDPD Z2, Z9, Z21 // 62e1b54858ea
1050 VADDPD Z21, Z2, Z9 // 6231ed4858cd
1051 VADDPD Z9, Z21, Z2 // 62d1d54058d1
1052
1053 CLWB (BX) // 660fae33
1054 CLDEMOTE (BX) // 0f1c03
1055 TPAUSE BX // 660faef3
1056 UMONITOR BX // f30faef3
1057 UMWAIT BX // f20faef3
1058
1059 RDPID DX // f30fc7fa
1060 RDPID R11 // f3410fc7fb
1061
1062 // End of tests.
1063 RET
1064
View as plain text