1
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <assert.h>
5 #include <malloc.h>
6
7 typedef unsigned char UChar;
8 typedef unsigned int UInt;
9 typedef unsigned long int UWord;
10 typedef unsigned long long int ULong;
11
12 #define IS_32_ALIGNED(_ptr) (0 == (0x1F & (UWord)(_ptr)))
13
14 typedef union { UChar u8[32]; UInt u32[8]; } YMM;
15
16 typedef struct { YMM a1; YMM a2; YMM a3; YMM a4; ULong u64; } Block;
17
showYMM(YMM * vec)18 void showYMM ( YMM* vec )
19 {
20 int i;
21 assert(IS_32_ALIGNED(vec));
22 for (i = 31; i >= 0; i--) {
23 printf("%02x", (UInt)vec->u8[i]);
24 if (i > 0 && 0 == ((i+0) & 7)) printf(".");
25 }
26 }
27
showBlock(char * msg,Block * block)28 void showBlock ( char* msg, Block* block )
29 {
30 printf(" %s\n", msg);
31 printf(" "); showYMM(&block->a1); printf("\n");
32 printf(" "); showYMM(&block->a2); printf("\n");
33 printf(" "); showYMM(&block->a3); printf("\n");
34 printf(" "); showYMM(&block->a4); printf("\n");
35 printf(" %016llx\n", block->u64);
36 }
37
randUChar(void)38 UChar randUChar ( void )
39 {
40 static UInt seed = 80021;
41 seed = 1103515245 * seed + 12345;
42 return (seed >> 17) & 0xFF;
43 }
44
randBlock(Block * b)45 void randBlock ( Block* b )
46 {
47 int i;
48 UChar* p = (UChar*)b;
49 for (i = 0; i < sizeof(Block); i++)
50 p[i] = randUChar();
51 }
52
53
54 /* Generate a function test_NAME, that tests the given insn, in both
55 its mem and reg forms. The reg form of the insn may mention, as
56 operands only %ymm6, %ymm7, %ymm8, %ymm9 and %r14. The mem form of
57 the insn may mention as operands only (%rax), %ymm7, %ymm8, %ymm9
58 and %r14. It's OK for the insn to clobber ymm0, as this is needed
59 for testing PCMPxSTRx. */
60
61 #define GEN_test_RandM(_name, _reg_form, _mem_form) \
62 \
63 __attribute__ ((noinline)) static void test_##_name ( void ) \
64 { \
65 Block* b = memalign(32, sizeof(Block)); \
66 randBlock(b); \
67 printf("%s(reg)\n", #_name); \
68 showBlock("before", b); \
69 __asm__ __volatile__( \
70 "vmovdqa 0(%0),%%ymm7" "\n\t" \
71 "vmovdqa 32(%0),%%ymm8" "\n\t" \
72 "vmovdqa 64(%0),%%ymm6" "\n\t" \
73 "vmovdqa 96(%0),%%ymm9" "\n\t" \
74 "movq 128(%0),%%r14" "\n\t" \
75 _reg_form "\n\t" \
76 "vmovdqa %%ymm7, 0(%0)" "\n\t" \
77 "vmovdqa %%ymm8, 32(%0)" "\n\t" \
78 "vmovdqa %%ymm6, 64(%0)" "\n\t" \
79 "vmovdqa %%ymm9, 96(%0)" "\n\t" \
80 "movq %%r14, 128(%0)" "\n\t" \
81 : /*OUT*/ \
82 : /*IN*/"r"(b) \
83 : /*TRASH*/"xmm0","xmm7","xmm8","xmm6","xmm9","r14","memory","cc" \
84 ); \
85 showBlock("after", b); \
86 randBlock(b); \
87 printf("%s(mem)\n", #_name); \
88 showBlock("before", b); \
89 __asm__ __volatile__( \
90 "leaq 0(%0),%%rax" "\n\t" \
91 "vmovdqa 32(%0),%%ymm8" "\n\t" \
92 "vmovdqa 64(%0),%%ymm7" "\n\t" \
93 "vmovdqa 96(%0),%%ymm9" "\n\t" \
94 "movq 128(%0),%%r14" "\n\t" \
95 _mem_form "\n\t" \
96 "vmovdqa %%ymm8, 32(%0)" "\n\t" \
97 "vmovdqa %%ymm7, 64(%0)" "\n\t" \
98 "vmovdqa %%ymm9, 96(%0)" "\n\t" \
99 "movq %%r14, 128(%0)" "\n\t" \
100 : /*OUT*/ \
101 : /*IN*/"r"(b) \
102 : /*TRASH*/"xmm0","xmm8","xmm7","xmm9","r14","rax","memory","cc" \
103 ); \
104 showBlock("after", b); \
105 printf("\n"); \
106 free(b); \
107 }
108
109 #define GEN_test_Ronly(_name, _reg_form) \
110 GEN_test_RandM(_name, _reg_form, "")
111 #define GEN_test_Monly(_name, _mem_form) \
112 GEN_test_RandM(_name, "", _mem_form)
113
114
115 GEN_test_RandM(VPOR_128,
116 "vpor %%xmm6, %%xmm8, %%xmm7",
117 "vpor (%%rax), %%xmm8, %%xmm7")
118
119 GEN_test_RandM(VPXOR_128,
120 "vpxor %%xmm6, %%xmm8, %%xmm7",
121 "vpxor (%%rax), %%xmm8, %%xmm7")
122
123 GEN_test_RandM(VPSUBB_128,
124 "vpsubb %%xmm6, %%xmm8, %%xmm7",
125 "vpsubb (%%rax), %%xmm8, %%xmm7")
126
127 GEN_test_RandM(VPSUBD_128,
128 "vpsubd %%xmm6, %%xmm8, %%xmm7",
129 "vpsubd (%%rax), %%xmm8, %%xmm7")
130
131 GEN_test_RandM(VPADDD_128,
132 "vpaddd %%xmm6, %%xmm8, %%xmm7",
133 "vpaddd (%%rax), %%xmm8, %%xmm7")
134
135 GEN_test_RandM(VPMOVZXWD_128,
136 "vpmovzxwd %%xmm6, %%xmm8",
137 "vpmovzxwd (%%rax), %%xmm8")
138
139 GEN_test_RandM(VPMOVZXBW_128,
140 "vpmovzxbw %%xmm6, %%xmm8",
141 "vpmovzxbw (%%rax), %%xmm8")
142
143 GEN_test_RandM(VPBLENDVB_128,
144 "vpblendvb %%xmm9, %%xmm6, %%xmm8, %%xmm7",
145 "vpblendvb %%xmm9, (%%rax), %%xmm8, %%xmm7")
146
147 GEN_test_RandM(VPMINSD_128,
148 "vpminsd %%xmm6, %%xmm8, %%xmm7",
149 "vpminsd (%%rax), %%xmm8, %%xmm7")
150
151 GEN_test_RandM(VPMAXSD_128,
152 "vpmaxsd %%xmm6, %%xmm8, %%xmm7",
153 "vpmaxsd (%%rax), %%xmm8, %%xmm7")
154
155 GEN_test_RandM(VANDPD_128,
156 "vandpd %%xmm6, %%xmm8, %%xmm7",
157 "vandpd (%%rax), %%xmm8, %%xmm7")
158
159 GEN_test_RandM(VCVTSI2SD_32,
160 "vcvtsi2sdl %%r14d, %%xmm8, %%xmm7",
161 "vcvtsi2sdl (%%rax), %%xmm8, %%xmm7")
162
163 GEN_test_RandM(VCVTSI2SD_64,
164 "vcvtsi2sdq %%r14, %%xmm8, %%xmm7",
165 "vcvtsi2sdq (%%rax), %%xmm8, %%xmm7")
166
167 GEN_test_RandM(VCVTSI2SS_64,
168 "vcvtsi2ssq %%r14, %%xmm8, %%xmm7",
169 "vcvtsi2ssq (%%rax), %%xmm8, %%xmm7")
170
171 GEN_test_RandM(VCVTTSD2SI_32,
172 "vcvttsd2si %%xmm8, %%r14d",
173 "vcvttsd2si (%%rax), %%r14d")
174
175 GEN_test_RandM(VCVTTSD2SI_64,
176 "vcvttsd2si %%xmm8, %%r14",
177 "vcvttsd2si (%%rax), %%r14")
178
179 GEN_test_RandM(VCVTSD2SI_32,
180 "vcvtsd2si %%xmm8, %%r14d",
181 "vcvtsd2si (%%rax), %%r14d")
182
183 GEN_test_RandM(VCVTSD2SI_64,
184 "vcvtsd2si %%xmm8, %%r14",
185 "vcvtsd2si (%%rax), %%r14")
186
187 GEN_test_RandM(VPSHUFB_128,
188 "vpshufb %%xmm6, %%xmm8, %%xmm7",
189 "vpshufb (%%rax), %%xmm8, %%xmm7")
190
191 GEN_test_RandM(VCMPSD_128_0x0,
192 "vcmpsd $0, %%xmm6, %%xmm8, %%xmm7",
193 "vcmpsd $0, (%%rax), %%xmm8, %%xmm7")
194 GEN_test_RandM(VCMPSD_128_0x1,
195 "vcmpsd $1, %%xmm6, %%xmm8, %%xmm7",
196 "vcmpsd $1, (%%rax), %%xmm8, %%xmm7")
197 GEN_test_RandM(VCMPSD_128_0x2,
198 "vcmpsd $2, %%xmm6, %%xmm8, %%xmm7",
199 "vcmpsd $2, (%%rax), %%xmm8, %%xmm7")
200 GEN_test_RandM(VCMPSD_128_0x3,
201 "vcmpsd $3, %%xmm6, %%xmm8, %%xmm7",
202 "vcmpsd $3, (%%rax), %%xmm8, %%xmm7")
203 GEN_test_RandM(VCMPSD_128_0x4,
204 "vcmpsd $4, %%xmm6, %%xmm8, %%xmm7",
205 "vcmpsd $4, (%%rax), %%xmm8, %%xmm7")
206 GEN_test_RandM(VCMPSD_128_0x5,
207 "vcmpsd $5, %%xmm6, %%xmm8, %%xmm7",
208 "vcmpsd $5, (%%rax), %%xmm8, %%xmm7")
209 GEN_test_RandM(VCMPSD_128_0x6,
210 "vcmpsd $6, %%xmm6, %%xmm8, %%xmm7",
211 "vcmpsd $6, (%%rax), %%xmm8, %%xmm7")
212 GEN_test_RandM(VCMPSD_128_0x7,
213 "vcmpsd $7, %%xmm6, %%xmm8, %%xmm7",
214 "vcmpsd $7, (%%rax), %%xmm8, %%xmm7")
215 GEN_test_RandM(VCMPSD_128_0x8,
216 "vcmpsd $8, %%xmm6, %%xmm8, %%xmm7",
217 "vcmpsd $8, (%%rax), %%xmm8, %%xmm7")
218 GEN_test_RandM(VCMPSD_128_0xA,
219 "vcmpsd $0xA, %%xmm6, %%xmm8, %%xmm7",
220 "vcmpsd $0xA, (%%rax), %%xmm8, %%xmm7")
221 GEN_test_RandM(VCMPSD_128_0xC,
222 "vcmpsd $0xC, %%xmm6, %%xmm8, %%xmm7",
223 "vcmpsd $0xC, (%%rax), %%xmm8, %%xmm7")
224 GEN_test_RandM(VCMPSD_128_0xD,
225 "vcmpsd $0xD, %%xmm6, %%xmm8, %%xmm7",
226 "vcmpsd $0xD, (%%rax), %%xmm8, %%xmm7")
227 GEN_test_RandM(VCMPSD_128_0xE,
228 "vcmpsd $0xE, %%xmm6, %%xmm8, %%xmm7",
229 "vcmpsd $0xE, (%%rax), %%xmm8, %%xmm7")
230 GEN_test_RandM(VCMPSD_128_0x11,
231 "vcmpsd $0x11, %%xmm6, %%xmm8, %%xmm7",
232 "vcmpsd $0x11, (%%rax), %%xmm8, %%xmm7")
233 GEN_test_RandM(VCMPSD_128_0x12,
234 "vcmpsd $0x12, %%xmm6, %%xmm8, %%xmm7",
235 "vcmpsd $0x12, (%%rax), %%xmm8, %%xmm7")
236 GEN_test_RandM(VCMPSD_128_0x16,
237 "vcmpsd $0x16, %%xmm6, %%xmm8, %%xmm7",
238 "vcmpsd $0x16, (%%rax), %%xmm8, %%xmm7")
239 GEN_test_RandM(VCMPSD_128_0x1E,
240 "vcmpsd $0x1E, %%xmm6, %%xmm8, %%xmm7",
241 "vcmpsd $0x1E, (%%rax), %%xmm8, %%xmm7")
242
243 GEN_test_RandM(VSQRTSD_128,
244 "vsqrtsd %%xmm6, %%xmm8, %%xmm7",
245 "vsqrtsd (%%rax), %%xmm8, %%xmm7")
246
247 GEN_test_RandM(VORPS_128,
248 "vorps %%xmm6, %%xmm8, %%xmm7",
249 "vorps (%%rax), %%xmm8, %%xmm7")
250
251 GEN_test_RandM(VANDNPS_128,
252 "vandnps %%xmm6, %%xmm8, %%xmm7",
253 "vandnps (%%rax), %%xmm8, %%xmm7")
254
255 GEN_test_RandM(VMAXSS_128,
256 "vmaxss %%xmm6, %%xmm8, %%xmm7",
257 "vmaxss (%%rax), %%xmm8, %%xmm7")
258
259 GEN_test_RandM(VMINSS_128,
260 "vminss %%xmm6, %%xmm8, %%xmm7",
261 "vminss (%%rax), %%xmm8, %%xmm7")
262
263 GEN_test_RandM(VANDPS_128,
264 "vandps %%xmm6, %%xmm8, %%xmm7",
265 "vandps (%%rax), %%xmm8, %%xmm7")
266
267 GEN_test_RandM(VCVTSI2SS_128,
268 "vcvtsi2ssl %%r14d, %%xmm8, %%xmm7",
269 "vcvtsi2ssl (%%rax), %%xmm8, %%xmm7")
270
271 GEN_test_RandM(VUNPCKLPS_128,
272 "vunpcklps %%xmm6, %%xmm8, %%xmm7",
273 "vunpcklps (%%rax), %%xmm8, %%xmm7")
274
275 GEN_test_RandM(VDIVSS_128,
276 "vdivss %%xmm6, %%xmm8, %%xmm7",
277 "vdivss (%%rax), %%xmm8, %%xmm7")
278
279 GEN_test_RandM(VADDSS_128,
280 "vaddss %%xmm6, %%xmm8, %%xmm7",
281 "vaddss (%%rax), %%xmm8, %%xmm7")
282
283 GEN_test_RandM(VSUBSS_128,
284 "vsubss %%xmm6, %%xmm8, %%xmm7",
285 "vsubss (%%rax), %%xmm8, %%xmm7")
286
287 GEN_test_RandM(VMULSS_128,
288 "vmulss %%xmm6, %%xmm8, %%xmm7",
289 "vmulss (%%rax), %%xmm8, %%xmm7")
290
291 GEN_test_RandM(VPUNPCKLBW_128,
292 "vpunpcklbw %%xmm6, %%xmm8, %%xmm7",
293 "vpunpcklbw (%%rax), %%xmm8, %%xmm7")
294
295 GEN_test_RandM(VPUNPCKHBW_128,
296 "vpunpckhbw %%xmm6, %%xmm8, %%xmm7",
297 "vpunpckhbw (%%rax), %%xmm8, %%xmm7")
298
299 GEN_test_RandM(VCVTTSS2SI_32,
300 "vcvttss2si %%xmm8, %%r14d",
301 "vcvttss2si (%%rax), %%r14d")
302
303 GEN_test_RandM(VCVTSS2SI_32,
304 "vcvtss2si %%xmm8, %%r14d",
305 "vcvtss2si (%%rax), %%r14d")
306
307 GEN_test_RandM(VMOVQ_XMMorMEM64_to_XMM,
308 "vmovq %%xmm7, %%xmm8",
309 "vmovq (%%rax), %%xmm8")
310
311 /* NB tests the reg form only */
312 GEN_test_Ronly(VMOVQ_XMM_to_IREG64,
313 "vmovq %%xmm7, %%r14")
314
315 /* This insn only exists in the reg-reg-reg form. */
316 GEN_test_Ronly(VMOVHLPS_128,
317 "vmovhlps %%xmm6, %%xmm8, %%xmm7")
318
319 GEN_test_RandM(VPABSD_128,
320 "vpabsd %%xmm6, %%xmm8",
321 "vpabsd (%%rax), %%xmm8")
322
323 /* This insn only exists in the reg-reg-reg form. */
324 GEN_test_Ronly(VMOVLHPS_128,
325 "vmovlhps %%xmm6, %%xmm8, %%xmm7")
326
327 GEN_test_Monly(VMOVNTDQ_128,
328 "vmovntdq %%xmm8, (%%rax)")
329
330 GEN_test_Monly(VMOVNTDQ_256,
331 "vmovntdq %%ymm8, (%%rax)")
332
333 GEN_test_RandM(VMOVUPS_XMM_to_XMMorMEM,
334 "vmovups %%xmm8, %%xmm7",
335 "vmovups %%xmm9, (%%rax)")
336
337 GEN_test_RandM(VMOVQ_IREGorMEM64_to_XMM,
338 "vmovq %%r14, %%xmm7",
339 "vmovq (%%rax), %%xmm9")
340
341 GEN_test_RandM(VPCMPESTRM_0x45_128,
342 "vpcmpestrm $0x45, %%xmm7, %%xmm8; movapd %%xmm0, %%xmm9",
343 "vpcmpestrm $0x45, (%%rax), %%xmm8; movapd %%xmm0, %%xmm9")
344
345 /* NB tests the reg form only */
346 GEN_test_Ronly(VMOVD_XMM_to_IREG32,
347 "vmovd %%xmm7, %%r14d")
348
349 GEN_test_RandM(VCVTSD2SS_128,
350 "vcvtsd2ss %%xmm9, %%xmm8, %%xmm7",
351 "vcvtsd2ss (%%rax), %%xmm8, %%xmm7")
352
353 GEN_test_RandM(VCVTSS2SD_128,
354 "vcvtss2sd %%xmm9, %%xmm8, %%xmm7",
355 "vcvtss2sd (%%rax), %%xmm8, %%xmm7")
356
357 GEN_test_RandM(VPACKUSWB_128,
358 "vpackuswb %%xmm9, %%xmm8, %%xmm7",
359 "vpackuswb (%%rax), %%xmm8, %%xmm7")
360
361 GEN_test_RandM(VCVTTSS2SI_64,
362 "vcvttss2si %%xmm8, %%r14",
363 "vcvttss2si (%%rax), %%r14")
364
365 GEN_test_RandM(VCVTSS2SI_64,
366 "vcvtss2si %%xmm8, %%r14",
367 "vcvtss2si (%%rax), %%r14")
368
369 GEN_test_Ronly(VPMOVMSKB_128,
370 "vpmovmskb %%xmm8, %%r14")
371
372 GEN_test_RandM(VPAND_128,
373 "vpand %%xmm9, %%xmm8, %%xmm7",
374 "vpand (%%rax), %%xmm8, %%xmm7")
375
376 GEN_test_Monly(VMOVHPD_128_StoreForm,
377 "vmovhpd %%xmm8, (%%rax)")
378
379 GEN_test_Monly(VMOVHPS_128_StoreForm,
380 "vmovhps %%xmm8, (%%rax)")
381
382 GEN_test_RandM(VPCMPEQB_128,
383 "vpcmpeqb %%xmm9, %%xmm8, %%xmm7",
384 "vpcmpeqb (%%rax), %%xmm8, %%xmm7")
385
386 GEN_test_RandM(VSHUFPS_0x39_128,
387 "vshufps $0x39, %%xmm9, %%xmm8, %%xmm7",
388 "vshufps $0xC6, (%%rax), %%xmm8, %%xmm7")
389
390 GEN_test_RandM(VMULPS_128,
391 "vmulps %%xmm9, %%xmm8, %%xmm7",
392 "vmulps (%%rax), %%xmm8, %%xmm7")
393
394 GEN_test_RandM(VSUBPS_128,
395 "vsubps %%xmm9, %%xmm8, %%xmm7",
396 "vsubps (%%rax), %%xmm8, %%xmm7")
397
398 GEN_test_RandM(VADDPS_128,
399 "vaddps %%xmm9, %%xmm8, %%xmm7",
400 "vaddps (%%rax), %%xmm8, %%xmm7")
401
402 GEN_test_RandM(VMAXPS_128,
403 "vmaxps %%xmm9, %%xmm8, %%xmm7",
404 "vmaxps (%%rax), %%xmm8, %%xmm7")
405
406 GEN_test_RandM(VMAXPS_256,
407 "vmaxps %%ymm9, %%ymm8, %%ymm7",
408 "vmaxps (%%rax), %%ymm8, %%ymm7")
409
410 GEN_test_RandM(VMAXPD_128,
411 "vmaxpd %%xmm9, %%xmm8, %%xmm7",
412 "vmaxpd (%%rax), %%xmm8, %%xmm7")
413
414 GEN_test_RandM(VMAXPD_256,
415 "vmaxpd %%ymm9, %%ymm8, %%ymm7",
416 "vmaxpd (%%rax), %%ymm8, %%ymm7")
417
418 GEN_test_RandM(VMINPS_128,
419 "vminps %%xmm9, %%xmm8, %%xmm7",
420 "vminps (%%rax), %%xmm8, %%xmm7")
421
422 GEN_test_RandM(VMINPS_256,
423 "vminps %%ymm9, %%ymm8, %%ymm7",
424 "vminps (%%rax), %%ymm8, %%ymm7")
425
426 GEN_test_RandM(VMINPD_128,
427 "vminpd %%xmm9, %%xmm8, %%xmm7",
428 "vminpd (%%rax), %%xmm8, %%xmm7")
429
430 GEN_test_RandM(VMINPD_256,
431 "vminpd %%ymm9, %%ymm8, %%ymm7",
432 "vminpd (%%rax), %%ymm8, %%ymm7")
433
434 GEN_test_RandM(VCVTPS2DQ_128,
435 "vcvtps2dq %%xmm8, %%xmm7",
436 "vcvtps2dq (%%rax), %%xmm8")
437
438 GEN_test_RandM(VPSHUFLW_0x39_128,
439 "vpshuflw $0x39, %%xmm9, %%xmm7",
440 "vpshuflw $0xC6, (%%rax), %%xmm8")
441
442 GEN_test_RandM(VPSHUFHW_0x39_128,
443 "vpshufhw $0x39, %%xmm9, %%xmm7",
444 "vpshufhw $0xC6, (%%rax), %%xmm8")
445
446 GEN_test_RandM(VPMULLW_128,
447 "vpmullw %%xmm9, %%xmm8, %%xmm7",
448 "vpmullw (%%rax), %%xmm8, %%xmm7")
449
450 GEN_test_RandM(VPADDUSW_128,
451 "vpaddusw %%xmm9, %%xmm8, %%xmm7",
452 "vpaddusw (%%rax), %%xmm8, %%xmm7")
453
454 GEN_test_RandM(VPMULHUW_128,
455 "vpmulhuw %%xmm9, %%xmm8, %%xmm7",
456 "vpmulhuw (%%rax), %%xmm8, %%xmm7")
457
458 GEN_test_RandM(VPADDUSB_128,
459 "vpaddusb %%xmm9, %%xmm8, %%xmm7",
460 "vpaddusb (%%rax), %%xmm8, %%xmm7")
461
462 GEN_test_RandM(VPUNPCKLWD_128,
463 "vpunpcklwd %%xmm6, %%xmm8, %%xmm7",
464 "vpunpcklwd (%%rax), %%xmm8, %%xmm7")
465
466 GEN_test_RandM(VPUNPCKHWD_128,
467 "vpunpckhwd %%xmm6, %%xmm8, %%xmm7",
468 "vpunpckhwd (%%rax), %%xmm8, %%xmm7")
469
470 GEN_test_Ronly(VPSLLD_0x05_128,
471 "vpslld $0x5, %%xmm9, %%xmm7")
472
473 GEN_test_Ronly(VPSRLD_0x05_128,
474 "vpsrld $0x5, %%xmm9, %%xmm7")
475
476 GEN_test_Ronly(VPSRAD_0x05_128,
477 "vpsrad $0x5, %%xmm9, %%xmm7")
478
479 GEN_test_RandM(VPSUBUSB_128,
480 "vpsubusb %%xmm9, %%xmm8, %%xmm7",
481 "vpsubusb (%%rax), %%xmm8, %%xmm7")
482
483 GEN_test_RandM(VPSUBSB_128,
484 "vpsubsb %%xmm9, %%xmm8, %%xmm7",
485 "vpsubsb (%%rax), %%xmm8, %%xmm7")
486
487 GEN_test_Ronly(VPSRLDQ_0x05_128,
488 "vpsrldq $0x5, %%xmm9, %%xmm7")
489
490 GEN_test_Ronly(VPSLLDQ_0x05_128,
491 "vpslldq $0x5, %%xmm9, %%xmm7")
492
493 GEN_test_RandM(VPANDN_128,
494 "vpandn %%xmm9, %%xmm8, %%xmm7",
495 "vpandn (%%rax), %%xmm8, %%xmm7")
496
497 /* NB tests the mem form only */
498 GEN_test_Monly(VMOVD_XMM_to_MEM32,
499 "vmovd %%xmm7, (%%rax)")
500
501 GEN_test_RandM(VPINSRD_128,
502 "vpinsrd $0, %%r14d, %%xmm8, %%xmm7",
503 "vpinsrd $3, (%%rax), %%xmm8, %%xmm7")
504
505 GEN_test_RandM(VPUNPCKLQDQ_128,
506 "vpunpcklqdq %%xmm6, %%xmm8, %%xmm7",
507 "vpunpcklqdq (%%rax), %%xmm8, %%xmm7")
508
509 GEN_test_Ronly(VPSRLW_0x05_128,
510 "vpsrlw $0x5, %%xmm9, %%xmm7")
511
512 GEN_test_Ronly(VPSLLW_0x05_128,
513 "vpsllw $0x5, %%xmm9, %%xmm7")
514
515 GEN_test_RandM(VPADDW_128,
516 "vpaddw %%xmm6, %%xmm8, %%xmm7",
517 "vpaddw (%%rax), %%xmm8, %%xmm7")
518
519 GEN_test_RandM(VPACKSSDW_128,
520 "vpackssdw %%xmm9, %%xmm8, %%xmm7",
521 "vpackssdw (%%rax), %%xmm8, %%xmm7")
522
523 GEN_test_RandM(VPUNPCKLDQ_128,
524 "vpunpckldq %%xmm6, %%xmm8, %%xmm7",
525 "vpunpckldq (%%rax), %%xmm8, %%xmm7")
526
527 GEN_test_RandM(VINSERTPS_0x39_128,
528 "vinsertps $0x39, %%xmm6, %%xmm8, %%xmm7",
529 "vinsertps $0xC6, (%%rax), %%xmm8, %%xmm7")
530
531 GEN_test_Monly(VMOVSD_M64_XMM, "vmovsd (%%rax), %%xmm8")
532
533 GEN_test_Monly(VMOVSS_M64_XMM, "vmovss (%%rax), %%xmm8")
534
535 GEN_test_Monly(VMOVSD_XMM_M64, "vmovsd %%xmm8, (%%rax)")
536
537 GEN_test_Monly(VMOVSS_XMM_M32, "vmovss %%xmm8, (%%rax)")
538
539 GEN_test_RandM(VMOVUPD_GtoE_128,
540 "vmovupd %%xmm9, %%xmm6",
541 "vmovupd %%xmm7, (%%rax)")
542
543 GEN_test_RandM(VMOVAPD_EtoG_128,
544 "vmovapd %%xmm6, %%xmm8",
545 "vmovapd (%%rax), %%xmm9")
546
547 GEN_test_RandM(VMOVAPD_EtoG_256,
548 "vmovapd %%ymm6, %%ymm8",
549 "vmovapd (%%rax), %%ymm9")
550
551 GEN_test_RandM(VMOVAPS_EtoG_128,
552 "vmovaps %%xmm6, %%xmm8",
553 "vmovaps (%%rax), %%xmm9")
554
555 GEN_test_RandM(VMOVAPS_GtoE_128,
556 "vmovaps %%xmm9, %%xmm6",
557 "vmovaps %%xmm7, (%%rax)")
558
559 GEN_test_RandM(VMOVAPS_GtoE_256,
560 "vmovaps %%ymm9, %%ymm6",
561 "vmovaps %%ymm7, (%%rax)")
562
563 GEN_test_RandM(VMOVAPD_GtoE_128,
564 "vmovapd %%xmm9, %%xmm6",
565 "vmovapd %%xmm7, (%%rax)")
566
567 GEN_test_RandM(VMOVAPD_GtoE_256,
568 "vmovapd %%ymm9, %%ymm6",
569 "vmovapd %%ymm7, (%%rax)")
570
571 GEN_test_RandM(VMOVDQU_EtoG_128,
572 "vmovdqu %%xmm6, %%xmm8",
573 "vmovdqu (%%rax), %%xmm9")
574
575 GEN_test_RandM(VMOVDQA_EtoG_128,
576 "vmovdqa %%xmm6, %%xmm8",
577 "vmovdqa (%%rax), %%xmm9")
578
579 GEN_test_RandM(VMOVDQA_EtoG_256,
580 "vmovdqa %%ymm6, %%ymm8",
581 "vmovdqa (%%rax), %%ymm9")
582
583 GEN_test_RandM(VMOVDQU_GtoE_128,
584 "vmovdqu %%xmm9, %%xmm6",
585 "vmovdqu %%xmm7, (%%rax)")
586
587 GEN_test_RandM(VMOVDQA_GtoE_128,
588 "vmovdqa %%xmm9, %%xmm6",
589 "vmovdqa %%xmm7, (%%rax)")
590
591 GEN_test_RandM(VMOVDQA_GtoE_256,
592 "vmovdqa %%ymm9, %%ymm6",
593 "vmovdqa %%ymm7, (%%rax)")
594
595 GEN_test_Monly(VMOVQ_XMM_MEM64, "vmovq %%xmm8, (%%rax)")
596
597 GEN_test_RandM(VMOVD_IREGorMEM32_to_XMM,
598 "vmovd %%r14d, %%xmm7",
599 "vmovd (%%rax), %%xmm9")
600
601 GEN_test_RandM(VMOVDDUP_XMMorMEM64_to_XMM,
602 "vmovddup %%xmm8, %%xmm7",
603 "vmovddup (%%rax), %%xmm9")
604
605 GEN_test_RandM(VCMPSS_128_0x0,
606 "vcmpss $0, %%xmm6, %%xmm8, %%xmm7",
607 "vcmpss $0, (%%rax), %%xmm8, %%xmm7")
608 GEN_test_RandM(VCMPSS_128_0x1,
609 "vcmpss $1, %%xmm6, %%xmm8, %%xmm7",
610 "vcmpss $1, (%%rax), %%xmm8, %%xmm7")
611 GEN_test_RandM(VCMPSS_128_0x2,
612 "vcmpss $2, %%xmm6, %%xmm8, %%xmm7",
613 "vcmpss $2, (%%rax), %%xmm8, %%xmm7")
614 GEN_test_RandM(VCMPSS_128_0x3,
615 "vcmpss $3, %%xmm6, %%xmm8, %%xmm7",
616 "vcmpss $3, (%%rax), %%xmm8, %%xmm7")
617 GEN_test_RandM(VCMPSS_128_0x4,
618 "vcmpss $4, %%xmm6, %%xmm8, %%xmm7",
619 "vcmpss $4, (%%rax), %%xmm8, %%xmm7")
620 GEN_test_RandM(VCMPSS_128_0x5,
621 "vcmpss $5, %%xmm6, %%xmm8, %%xmm7",
622 "vcmpss $5, (%%rax), %%xmm8, %%xmm7")
623 GEN_test_RandM(VCMPSS_128_0x6,
624 "vcmpss $6, %%xmm6, %%xmm8, %%xmm7",
625 "vcmpss $6, (%%rax), %%xmm8, %%xmm7")
626 GEN_test_RandM(VCMPSS_128_0x7,
627 "vcmpss $7, %%xmm6, %%xmm8, %%xmm7",
628 "vcmpss $7, (%%rax), %%xmm8, %%xmm7")
629 GEN_test_RandM(VCMPSS_128_0x8,
630 "vcmpss $8, %%xmm6, %%xmm8, %%xmm7",
631 "vcmpss $8, (%%rax), %%xmm8, %%xmm7")
632 GEN_test_RandM(VCMPSS_128_0xA,
633 "vcmpss $0xA, %%xmm6, %%xmm8, %%xmm7",
634 "vcmpss $0xA, (%%rax), %%xmm8, %%xmm7")
635 GEN_test_RandM(VCMPSS_128_0xC,
636 "vcmpss $0xC, %%xmm6, %%xmm8, %%xmm7",
637 "vcmpss $0xC, (%%rax), %%xmm8, %%xmm7")
638 GEN_test_RandM(VCMPSS_128_0xD,
639 "vcmpss $0xD, %%xmm6, %%xmm8, %%xmm7",
640 "vcmpss $0xD, (%%rax), %%xmm8, %%xmm7")
641 GEN_test_RandM(VCMPSS_128_0xE,
642 "vcmpss $0xE, %%xmm6, %%xmm8, %%xmm7",
643 "vcmpss $0xE, (%%rax), %%xmm8, %%xmm7")
644 GEN_test_RandM(VCMPSS_128_0x11,
645 "vcmpss $0x11, %%xmm6, %%xmm8, %%xmm7",
646 "vcmpss $0x11, (%%rax), %%xmm8, %%xmm7")
647 GEN_test_RandM(VCMPSS_128_0x12,
648 "vcmpss $0x12, %%xmm6, %%xmm8, %%xmm7",
649 "vcmpss $0x12, (%%rax), %%xmm8, %%xmm7")
650 GEN_test_RandM(VCMPSS_128_0x16,
651 "vcmpss $0x16, %%xmm6, %%xmm8, %%xmm7",
652 "vcmpss $0x16, (%%rax), %%xmm8, %%xmm7")
653 GEN_test_RandM(VCMPSS_128_0x1E,
654 "vcmpss $0x1E, %%xmm6, %%xmm8, %%xmm7",
655 "vcmpss $0x1E, (%%rax), %%xmm8, %%xmm7")
656
657 // The x suffix denotes a 128 -> 64 operation
658 GEN_test_RandM(VCVTPD2PS_128,
659 "vcvtpd2psx %%xmm8, %%xmm7",
660 "vcvtpd2psx (%%rax), %%xmm9")
661
662 GEN_test_RandM(VEXTRACTF128_0x0,
663 "vextractf128 $0x0, %%ymm7, %%xmm9",
664 "vextractf128 $0x0, %%ymm7, (%%rax)")
665
666 GEN_test_RandM(VEXTRACTF128_0x1,
667 "vextractf128 $0x1, %%ymm7, %%xmm9",
668 "vextractf128 $0x1, %%ymm7, (%%rax)")
669
670 GEN_test_RandM(VINSERTF128_0x0,
671 "vinsertf128 $0x0, %%xmm9, %%ymm7, %%ymm8",
672 "vinsertf128 $0x0, (%%rax), %%ymm7, %%ymm8")
673
674 GEN_test_RandM(VINSERTF128_0x1,
675 "vinsertf128 $0x1, %%xmm9, %%ymm7, %%ymm8",
676 "vinsertf128 $0x1, (%%rax), %%ymm7, %%ymm8")
677
678 GEN_test_RandM(VPEXTRD_128_0x0,
679 "vpextrd $0x0, %%xmm7, %%r14d",
680 "vpextrd $0x0, %%xmm7, (%%rax)")
681
682 GEN_test_RandM(VPEXTRD_128_0x3,
683 "vpextrd $0x3, %%xmm7, %%r14d",
684 "vpextrd $0x3, %%xmm7, (%%rax)")
685
686 GEN_test_RandM(VPCMPEQD_128,
687 "vpcmpeqd %%xmm6, %%xmm8, %%xmm7",
688 "vpcmpeqd (%%rax), %%xmm8, %%xmm7")
689
690 GEN_test_RandM(VPSHUFD_0x39_128,
691 "vpshufd $0x39, %%xmm9, %%xmm8",
692 "vpshufd $0xC6, (%%rax), %%xmm7")
693
694 GEN_test_RandM(VMAXSD_128,
695 "vmaxsd %%xmm6, %%xmm8, %%xmm7",
696 "vmaxsd (%%rax), %%xmm8, %%xmm7")
697
698 GEN_test_RandM(VDIVSD_128,
699 "vdivsd %%xmm6, %%xmm8, %%xmm7",
700 "vdivsd (%%rax), %%xmm8, %%xmm7")
701
702 GEN_test_RandM(VMINSD_128,
703 "vminsd %%xmm6, %%xmm8, %%xmm7",
704 "vminsd (%%rax), %%xmm8, %%xmm7")
705
706 GEN_test_RandM(VSUBSD_128,
707 "vsubsd %%xmm6, %%xmm8, %%xmm7",
708 "vsubsd (%%rax), %%xmm8, %%xmm7")
709
710 GEN_test_RandM(VADDSD_128,
711 "vaddsd %%xmm6, %%xmm8, %%xmm7",
712 "vaddsd (%%rax), %%xmm8, %%xmm7")
713
714 GEN_test_RandM(VMULSD_128,
715 "vmulsd %%xmm6, %%xmm8, %%xmm7",
716 "vmulsd (%%rax), %%xmm8, %%xmm7")
717
718 GEN_test_RandM(VXORPS_128,
719 "vxorps %%xmm6, %%xmm8, %%xmm7",
720 "vxorps (%%rax), %%xmm8, %%xmm7")
721
722 GEN_test_RandM(VXORPD_128,
723 "vxorpd %%xmm6, %%xmm8, %%xmm7",
724 "vxorpd (%%rax), %%xmm8, %%xmm7")
725
726 GEN_test_RandM(VORPD_128,
727 "vorpd %%xmm6, %%xmm8, %%xmm7",
728 "vorpd (%%rax), %%xmm8, %%xmm7")
729
730 GEN_test_RandM(VANDNPD_128,
731 "vandnpd %%xmm6, %%xmm8, %%xmm7",
732 "vandnpd (%%rax), %%xmm8, %%xmm7")
733
734 GEN_test_RandM(VCVTPS2PD_128,
735 "vcvtps2pd %%xmm6, %%xmm8",
736 "vcvtps2pd (%%rax), %%xmm8")
737
738 GEN_test_RandM(VUCOMISD_128,
739 "vucomisd %%xmm6, %%xmm8; pushfq; popq %%r14; andq $0x8D5, %%r14",
740 "vucomisd (%%rax), %%xmm8; pushfq; popq %%r14; andq $0x8D5, %%r14")
741
742 GEN_test_RandM(VUCOMISS_128,
743 "vucomiss %%xmm6, %%xmm8; pushfq; popq %%r14; andq $0x8D5, %%r14",
744 "vucomiss (%%rax), %%xmm8; pushfq; popq %%r14; andq $0x8D5, %%r14")
745
746 GEN_test_RandM(VPINSRQ_128,
747 "vpinsrq $0, %%r14, %%xmm8, %%xmm7",
748 "vpinsrq $1, (%%rax), %%xmm8, %%xmm7")
749
750 GEN_test_RandM(VPADDQ_128,
751 "vpaddq %%xmm6, %%xmm8, %%xmm7",
752 "vpaddq (%%rax), %%xmm8, %%xmm7")
753
754 GEN_test_RandM(VPSUBQ_128,
755 "vpsubq %%xmm6, %%xmm8, %%xmm7",
756 "vpsubq (%%rax), %%xmm8, %%xmm7")
757
758 GEN_test_RandM(VPSUBW_128,
759 "vpsubw %%xmm6, %%xmm8, %%xmm7",
760 "vpsubw (%%rax), %%xmm8, %%xmm7")
761
762 GEN_test_RandM(VMOVUPD_GtoE_256,
763 "vmovupd %%ymm9, %%ymm6",
764 "vmovupd %%ymm7, (%%rax)")
765
766 GEN_test_RandM(VMOVUPD_EtoG_256,
767 "vmovupd %%ymm6, %%ymm9",
768 "vmovupd (%%rax), %%ymm7")
769
770 GEN_test_RandM(VMULPD_256,
771 "vmulpd %%ymm6, %%ymm8, %%ymm7",
772 "vmulpd (%%rax), %%ymm8, %%ymm7")
773
774 GEN_test_RandM(VMOVUPD_EtoG_128,
775 "vmovupd %%xmm6, %%xmm9",
776 "vmovupd (%%rax), %%xmm7")
777
778 GEN_test_RandM(VADDPD_256,
779 "vaddpd %%ymm6, %%ymm8, %%ymm7",
780 "vaddpd (%%rax), %%ymm8, %%ymm7")
781
782 GEN_test_RandM(VSUBPD_256,
783 "vsubpd %%ymm6, %%ymm8, %%ymm7",
784 "vsubpd (%%rax), %%ymm8, %%ymm7")
785
786 GEN_test_RandM(VDIVPD_256,
787 "vdivpd %%ymm6, %%ymm8, %%ymm7",
788 "vdivpd (%%rax), %%ymm8, %%ymm7")
789
790 GEN_test_RandM(VPCMPEQQ_128,
791 "vpcmpeqq %%xmm6, %%xmm8, %%xmm7",
792 "vpcmpeqq (%%rax), %%xmm8, %%xmm7")
793
794 GEN_test_RandM(VSUBPD_128,
795 "vsubpd %%xmm6, %%xmm8, %%xmm7",
796 "vsubpd (%%rax), %%xmm8, %%xmm7")
797
798 GEN_test_RandM(VADDPD_128,
799 "vaddpd %%xmm6, %%xmm8, %%xmm7",
800 "vaddpd (%%rax), %%xmm8, %%xmm7")
801
802 GEN_test_RandM(VUNPCKLPD_128,
803 "vunpcklpd %%xmm6, %%xmm8, %%xmm7",
804 "vunpcklpd (%%rax), %%xmm8, %%xmm7")
805
806 GEN_test_RandM(VUNPCKHPD_128,
807 "vunpckhpd %%xmm6, %%xmm8, %%xmm7",
808 "vunpckhpd (%%rax), %%xmm8, %%xmm7")
809
810 GEN_test_RandM(VUNPCKHPS_128,
811 "vunpckhps %%xmm6, %%xmm8, %%xmm7",
812 "vunpckhps (%%rax), %%xmm8, %%xmm7")
813
814 GEN_test_RandM(VMOVUPS_EtoG_128,
815 "vmovups %%xmm6, %%xmm8",
816 "vmovups (%%rax), %%xmm9")
817
818 GEN_test_RandM(VADDPS_256,
819 "vaddps %%ymm6, %%ymm8, %%ymm7",
820 "vaddps (%%rax), %%ymm8, %%ymm7")
821
822 GEN_test_RandM(VSUBPS_256,
823 "vsubps %%ymm6, %%ymm8, %%ymm7",
824 "vsubps (%%rax), %%ymm8, %%ymm7")
825
826 GEN_test_RandM(VMULPS_256,
827 "vmulps %%ymm6, %%ymm8, %%ymm7",
828 "vmulps (%%rax), %%ymm8, %%ymm7")
829
830 GEN_test_RandM(VDIVPS_256,
831 "vdivps %%ymm6, %%ymm8, %%ymm7",
832 "vdivps (%%rax), %%ymm8, %%ymm7")
833
834 GEN_test_RandM(VPCMPGTQ_128,
835 "vpcmpgtq %%xmm6, %%xmm8, %%xmm7",
836 "vpcmpgtq (%%rax), %%xmm8, %%xmm7")
837
838 GEN_test_RandM(VPEXTRQ_128_0x0,
839 "vpextrq $0x0, %%xmm7, %%r14",
840 "vpextrq $0x0, %%xmm7, (%%rax)")
841
842 GEN_test_RandM(VPEXTRQ_128_0x1,
843 "vpextrq $0x1, %%xmm7, %%r14",
844 "vpextrq $0x1, %%xmm7, (%%rax)")
845
846 GEN_test_Ronly(VPSRLQ_0x05_128,
847 "vpsrlq $0x5, %%xmm9, %%xmm7")
848
849 GEN_test_RandM(VPMULUDQ_128,
850 "vpmuludq %%xmm6, %%xmm8, %%xmm7",
851 "vpmuludq (%%rax), %%xmm8, %%xmm7")
852
853 GEN_test_RandM(VPMULDQ_128,
854 "vpmuldq %%xmm6, %%xmm8, %%xmm7",
855 "vpmuldq (%%rax), %%xmm8, %%xmm7")
856
857 GEN_test_Ronly(VPSLLQ_0x05_128,
858 "vpsllq $0x5, %%xmm9, %%xmm7")
859
860 GEN_test_RandM(VPMAXUD_128,
861 "vpmaxud %%xmm6, %%xmm8, %%xmm7",
862 "vpmaxud (%%rax), %%xmm8, %%xmm7")
863
864 GEN_test_RandM(VPMINUD_128,
865 "vpminud %%xmm6, %%xmm8, %%xmm7",
866 "vpminud (%%rax), %%xmm8, %%xmm7")
867
868 GEN_test_RandM(VPMULLD_128,
869 "vpmulld %%xmm6, %%xmm8, %%xmm7",
870 "vpmulld (%%rax), %%xmm8, %%xmm7")
871
872 GEN_test_RandM(VPMAXUW_128,
873 "vpmaxuw %%xmm6, %%xmm8, %%xmm7",
874 "vpmaxuw (%%rax), %%xmm8, %%xmm7")
875
876 GEN_test_Ronly(VPEXTRW_128_EregOnly_toG_0x0,
877 "vpextrw $0x0, %%xmm7, %%r14d")
878
879 GEN_test_Ronly(VPEXTRW_128_EregOnly_toG_0x7,
880 "vpextrw $0x7, %%xmm7, %%r14d")
881
882 GEN_test_RandM(VPMINUW_128,
883 "vpminuw %%xmm6, %%xmm8, %%xmm7",
884 "vpminuw (%%rax), %%xmm8, %%xmm7")
885
886 GEN_test_RandM(VPHMINPOSUW_128,
887 "vphminposuw %%xmm6, %%xmm8",
888 "vphminposuw (%%rax), %%xmm7")
889
890 GEN_test_RandM(VPMAXSW_128,
891 "vpmaxsw %%xmm6, %%xmm8, %%xmm7",
892 "vpmaxsw (%%rax), %%xmm8, %%xmm7")
893
894 GEN_test_RandM(VPMINSW_128,
895 "vpminsw %%xmm6, %%xmm8, %%xmm7",
896 "vpminsw (%%rax), %%xmm8, %%xmm7")
897
898 GEN_test_RandM(VPMAXUB_128,
899 "vpmaxub %%xmm6, %%xmm8, %%xmm7",
900 "vpmaxub (%%rax), %%xmm8, %%xmm7")
901
902 GEN_test_RandM(VPEXTRB_GtoE_128_0x0,
903 "vpextrb $0x0, %%xmm8, %%r14",
904 "vpextrb $0x0, %%xmm8, (%%rax)")
905
906 GEN_test_RandM(VPEXTRB_GtoE_128_0x1,
907 "vpextrb $0x1, %%xmm8, %%r14",
908 "vpextrb $0x1, %%xmm8, (%%rax)")
909
910 GEN_test_RandM(VPEXTRB_GtoE_128_0x2,
911 "vpextrb $0x2, %%xmm8, %%r14",
912 "vpextrb $0x2, %%xmm8, (%%rax)")
913
914 GEN_test_RandM(VPEXTRB_GtoE_128_0x3,
915 "vpextrb $0x3, %%xmm8, %%r14",
916 "vpextrb $0x3, %%xmm8, (%%rax)")
917
918 GEN_test_RandM(VPEXTRB_GtoE_128_0x4,
919 "vpextrb $0x4, %%xmm8, %%r14",
920 "vpextrb $0x4, %%xmm8, (%%rax)")
921
922 GEN_test_RandM(VPEXTRB_GtoE_128_0x9,
923 "vpextrb $0x9, %%xmm8, %%r14",
924 "vpextrb $0x9, %%xmm8, (%%rax)")
925
926 GEN_test_RandM(VPEXTRB_GtoE_128_0xE,
927 "vpextrb $0xE, %%xmm8, %%r14",
928 "vpextrb $0xE, %%xmm8, (%%rax)")
929
930 GEN_test_RandM(VPEXTRB_GtoE_128_0xF,
931 "vpextrb $0xF, %%xmm8, %%r14",
932 "vpextrb $0xF, %%xmm8, (%%rax)")
933
934 GEN_test_RandM(VPMINUB_128,
935 "vpminub %%xmm6, %%xmm8, %%xmm7",
936 "vpminub (%%rax), %%xmm8, %%xmm7")
937
938 GEN_test_RandM(VPMAXSB_128,
939 "vpmaxsb %%xmm6, %%xmm8, %%xmm7",
940 "vpmaxsb (%%rax), %%xmm8, %%xmm7")
941
942 GEN_test_RandM(VPMINSB_128,
943 "vpminsb %%xmm6, %%xmm8, %%xmm7",
944 "vpminsb (%%rax), %%xmm8, %%xmm7")
945
946 GEN_test_RandM(VPERM2F128_0x00,
947 "vperm2f128 $0x00, %%ymm6, %%ymm8, %%ymm7",
948 "vperm2f128 $0x00, (%%rax), %%ymm8, %%ymm7")
949 GEN_test_RandM(VPERM2F128_0xFF,
950 "vperm2f128 $0xFF, %%ymm6, %%ymm8, %%ymm7",
951 "vperm2f128 $0xFF, (%%rax), %%ymm8, %%ymm7")
952 GEN_test_RandM(VPERM2F128_0x30,
953 "vperm2f128 $0x30, %%ymm6, %%ymm8, %%ymm7",
954 "vperm2f128 $0x30, (%%rax), %%ymm8, %%ymm7")
955 GEN_test_RandM(VPERM2F128_0x21,
956 "vperm2f128 $0x21, %%ymm6, %%ymm8, %%ymm7",
957 "vperm2f128 $0x21, (%%rax), %%ymm8, %%ymm7")
958 GEN_test_RandM(VPERM2F128_0x12,
959 "vperm2f128 $0x12, %%ymm6, %%ymm8, %%ymm7",
960 "vperm2f128 $0x12, (%%rax), %%ymm8, %%ymm7")
961 GEN_test_RandM(VPERM2F128_0x03,
962 "vperm2f128 $0x03, %%ymm6, %%ymm8, %%ymm7",
963 "vperm2f128 $0x03, (%%rax), %%ymm8, %%ymm7")
964 GEN_test_RandM(VPERM2F128_0x85,
965 "vperm2f128 $0x85, %%ymm6, %%ymm8, %%ymm7",
966 "vperm2f128 $0x85, (%%rax), %%ymm8, %%ymm7")
967 GEN_test_RandM(VPERM2F128_0x5A,
968 "vperm2f128 $0x5A, %%ymm6, %%ymm8, %%ymm7",
969 "vperm2f128 $0x5A, (%%rax), %%ymm8, %%ymm7")
970
971 GEN_test_RandM(VPERMILPD_256_0x0,
972 "vpermilpd $0x0, %%ymm6, %%ymm8",
973 "vpermilpd $0x1, (%%rax), %%ymm8")
974 GEN_test_RandM(VPERMILPD_256_0xF,
975 "vpermilpd $0xF, %%ymm6, %%ymm8",
976 "vpermilpd $0xE, (%%rax), %%ymm8")
977 GEN_test_RandM(VPERMILPD_256_0xA,
978 "vpermilpd $0xA, %%ymm6, %%ymm8",
979 "vpermilpd $0xB, (%%rax), %%ymm8")
980 GEN_test_RandM(VPERMILPD_256_0x5,
981 "vpermilpd $0x5, %%ymm6, %%ymm8",
982 "vpermilpd $0x4, (%%rax), %%ymm8")
983
984 GEN_test_RandM(VPERMILPD_128_0x0,
985 "vpermilpd $0x0, %%xmm6, %%xmm8",
986 "vpermilpd $0x1, (%%rax), %%xmm8")
987 GEN_test_RandM(VPERMILPD_128_0x3,
988 "vpermilpd $0x3, %%xmm6, %%xmm8",
989 "vpermilpd $0x2, (%%rax), %%xmm8")
990
991 GEN_test_RandM(VUNPCKLPD_256,
992 "vunpcklpd %%ymm6, %%ymm8, %%ymm7",
993 "vunpcklpd (%%rax), %%ymm8, %%ymm7")
994
995 GEN_test_RandM(VUNPCKHPD_256,
996 "vunpckhpd %%ymm6, %%ymm8, %%ymm7",
997 "vunpckhpd (%%rax), %%ymm8, %%ymm7")
998
999 GEN_test_RandM(VSHUFPS_0x39_256,
1000 "vshufps $0x39, %%ymm9, %%ymm8, %%ymm7",
1001 "vshufps $0xC6, (%%rax), %%ymm8, %%ymm7")
1002
1003 GEN_test_RandM(VUNPCKLPS_256,
1004 "vunpcklps %%ymm6, %%ymm8, %%ymm7",
1005 "vunpcklps (%%rax), %%ymm8, %%ymm7")
1006
1007 GEN_test_RandM(VUNPCKHPS_256,
1008 "vunpckhps %%ymm6, %%ymm8, %%ymm7",
1009 "vunpckhps (%%rax), %%ymm8, %%ymm7")
1010
1011 GEN_test_RandM(VXORPD_256,
1012 "vxorpd %%ymm6, %%ymm8, %%ymm7",
1013 "vxorpd (%%rax), %%ymm8, %%ymm7")
1014
1015 GEN_test_Monly(VBROADCASTSD_256,
1016 "vbroadcastsd (%%rax), %%ymm8")
1017
1018 GEN_test_RandM(VCMPPD_128_0x4,
1019 "vcmppd $4, %%xmm6, %%xmm8, %%xmm7",
1020 "vcmppd $4, (%%rax), %%xmm8, %%xmm7")
1021
1022 GEN_test_RandM(VCMPPD_256_0x4,
1023 "vcmppd $4, %%ymm6, %%ymm8, %%ymm7",
1024 "vcmppd $4, (%%rax), %%ymm8, %%ymm7")
1025
1026 GEN_test_RandM(VCMPPS_128_0x4,
1027 "vcmpps $4, %%xmm6, %%xmm8, %%xmm7",
1028 "vcmpps $4, (%%rax), %%xmm8, %%xmm7")
1029
1030 GEN_test_RandM(VCMPPS_256_0x4,
1031 "vcmpps $4, %%ymm6, %%ymm8, %%ymm7",
1032 "vcmpps $4, (%%rax), %%ymm8, %%ymm7")
1033
1034 GEN_test_RandM(VCVTDQ2PD_128,
1035 "vcvtdq2pd %%xmm6, %%xmm8",
1036 "vcvtdq2pd (%%rax), %%xmm8")
1037
1038 GEN_test_RandM(VDIVPD_128,
1039 "vdivpd %%xmm6, %%xmm8, %%xmm7",
1040 "vdivpd (%%rax), %%xmm8, %%xmm7")
1041
1042 GEN_test_RandM(VANDPD_256,
1043 "vandpd %%ymm6, %%ymm8, %%ymm7",
1044 "vandpd (%%rax), %%ymm8, %%ymm7")
1045
1046 GEN_test_RandM(VPMOVSXBW_128,
1047 "vpmovsxbw %%xmm6, %%xmm8",
1048 "vpmovsxbw (%%rax), %%xmm8")
1049
1050 GEN_test_RandM(VPSUBUSW_128,
1051 "vpsubusw %%xmm9, %%xmm8, %%xmm7",
1052 "vpsubusw (%%rax), %%xmm8, %%xmm7")
1053
1054 GEN_test_RandM(VPSUBSW_128,
1055 "vpsubsw %%xmm9, %%xmm8, %%xmm7",
1056 "vpsubsw (%%rax), %%xmm8, %%xmm7")
1057
1058 GEN_test_RandM(VPCMPEQW_128,
1059 "vpcmpeqw %%xmm6, %%xmm8, %%xmm7",
1060 "vpcmpeqw (%%rax), %%xmm8, %%xmm7")
1061
1062 GEN_test_RandM(VPADDB_128,
1063 "vpaddb %%xmm6, %%xmm8, %%xmm7",
1064 "vpaddb (%%rax), %%xmm8, %%xmm7")
1065
1066 GEN_test_RandM(VMOVAPS_EtoG_256,
1067 "vmovaps %%ymm6, %%ymm8",
1068 "vmovaps (%%rax), %%ymm9")
1069
1070 GEN_test_RandM(VCVTDQ2PD_256,
1071 "vcvtdq2pd %%xmm6, %%ymm8",
1072 "vcvtdq2pd (%%rax), %%ymm8")
1073
1074 GEN_test_Monly(VMOVHPD_128_LoadForm,
1075 "vmovhpd (%%rax), %%xmm8, %%xmm7")
1076
1077 GEN_test_Monly(VMOVHPS_128_LoadForm,
1078 "vmovhps (%%rax), %%xmm8, %%xmm7")
1079
1080 // The y suffix denotes a 256 -> 128 operation
1081 GEN_test_RandM(VCVTPD2PS_256,
1082 "vcvtpd2psy %%ymm8, %%xmm7",
1083 "vcvtpd2psy (%%rax), %%xmm9")
1084
1085 GEN_test_RandM(VPUNPCKHDQ_128,
1086 "vpunpckhdq %%xmm6, %%xmm8, %%xmm7",
1087 "vpunpckhdq (%%rax), %%xmm8, %%xmm7")
1088
1089 GEN_test_Monly(VBROADCASTSS_128,
1090 "vbroadcastss (%%rax), %%xmm8")
1091
1092 GEN_test_RandM(VPMOVSXDQ_128,
1093 "vpmovsxdq %%xmm6, %%xmm8",
1094 "vpmovsxdq (%%rax), %%xmm8")
1095
1096 GEN_test_RandM(VPMOVSXWD_128,
1097 "vpmovsxwd %%xmm6, %%xmm8",
1098 "vpmovsxwd (%%rax), %%xmm8")
1099
1100 GEN_test_RandM(VDIVPS_128,
1101 "vdivps %%xmm9, %%xmm8, %%xmm7",
1102 "vdivps (%%rax), %%xmm8, %%xmm7")
1103
1104 GEN_test_RandM(VANDPS_256,
1105 "vandps %%ymm6, %%ymm8, %%ymm7",
1106 "vandps (%%rax), %%ymm8, %%ymm7")
1107
1108 GEN_test_RandM(VXORPS_256,
1109 "vxorps %%ymm6, %%ymm8, %%ymm7",
1110 "vxorps (%%rax), %%ymm8, %%ymm7")
1111
1112 GEN_test_RandM(VORPS_256,
1113 "vorps %%ymm6, %%ymm8, %%ymm7",
1114 "vorps (%%rax), %%ymm8, %%ymm7")
1115
1116 GEN_test_RandM(VANDNPD_256,
1117 "vandnpd %%ymm6, %%ymm8, %%ymm7",
1118 "vandnpd (%%rax), %%ymm8, %%ymm7")
1119
1120 GEN_test_RandM(VANDNPS_256,
1121 "vandnps %%ymm6, %%ymm8, %%ymm7",
1122 "vandnps (%%rax), %%ymm8, %%ymm7")
1123
1124 GEN_test_RandM(VORPD_256,
1125 "vorpd %%ymm6, %%ymm8, %%ymm7",
1126 "vorpd (%%rax), %%ymm8, %%ymm7")
1127
1128 GEN_test_RandM(VPERMILPS_256_0x0F,
1129 "vpermilps $0x0F, %%ymm6, %%ymm8",
1130 "vpermilps $0x1E, (%%rax), %%ymm8")
1131 GEN_test_RandM(VPERMILPS_256_0xFA,
1132 "vpermilps $0xFA, %%ymm6, %%ymm8",
1133 "vpermilps $0xE5, (%%rax), %%ymm8")
1134 GEN_test_RandM(VPERMILPS_256_0xA3,
1135 "vpermilps $0xA3, %%ymm6, %%ymm8",
1136 "vpermilps $0xB4, (%%rax), %%ymm8")
1137 GEN_test_RandM(VPERMILPS_256_0x5A,
1138 "vpermilps $0x5A, %%ymm6, %%ymm8",
1139 "vpermilps $0x45, (%%rax), %%ymm8")
1140
1141 GEN_test_RandM(VPMULHW_128,
1142 "vpmulhw %%xmm9, %%xmm8, %%xmm7",
1143 "vpmulhw (%%rax), %%xmm8, %%xmm7")
1144
1145 GEN_test_RandM(VPUNPCKHQDQ_128,
1146 "vpunpckhqdq %%xmm6, %%xmm8, %%xmm7",
1147 "vpunpckhqdq (%%rax), %%xmm8, %%xmm7")
1148
1149 GEN_test_Ronly(VPSRAW_0x05_128,
1150 "vpsraw $0x5, %%xmm9, %%xmm7")
1151
1152 GEN_test_RandM(VPCMPGTB_128,
1153 "vpcmpgtb %%xmm6, %%xmm8, %%xmm7",
1154 "vpcmpgtb (%%rax), %%xmm8, %%xmm7")
1155
1156 GEN_test_RandM(VPCMPGTW_128,
1157 "vpcmpgtw %%xmm6, %%xmm8, %%xmm7",
1158 "vpcmpgtw (%%rax), %%xmm8, %%xmm7")
1159
1160 GEN_test_RandM(VPCMPGTD_128,
1161 "vpcmpgtd %%xmm6, %%xmm8, %%xmm7",
1162 "vpcmpgtd (%%rax), %%xmm8, %%xmm7")
1163
1164 GEN_test_RandM(VPMOVZXBD_128,
1165 "vpmovzxbd %%xmm6, %%xmm8",
1166 "vpmovzxbd (%%rax), %%xmm8")
1167
1168 GEN_test_RandM(VPMOVSXBD_128,
1169 "vpmovsxbd %%xmm6, %%xmm8",
1170 "vpmovsxbd (%%rax), %%xmm8")
1171
1172 GEN_test_RandM(VPINSRB_128_1of3,
1173 "vpinsrb $0, %%r14d, %%xmm8, %%xmm7",
1174 "vpinsrb $3, (%%rax), %%xmm8, %%xmm7")
1175 GEN_test_RandM(VPINSRB_128_2of3,
1176 "vpinsrb $6, %%r14d, %%xmm8, %%xmm7",
1177 "vpinsrb $9, (%%rax), %%xmm8, %%xmm7")
1178 GEN_test_RandM(VPINSRB_128_3of3,
1179 "vpinsrb $12, %%r14d, %%xmm8, %%xmm7",
1180 "vpinsrb $15, (%%rax), %%xmm8, %%xmm7")
1181
1182 GEN_test_RandM(VPINSRW_128_1of4,
1183 "vpinsrw $0, %%r14d, %%xmm8, %%xmm7",
1184 "vpinsrw $3, (%%rax), %%xmm8, %%xmm7")
1185 GEN_test_RandM(VPINSRW_128_2of4,
1186 "vpinsrw $2, %%r14d, %%xmm8, %%xmm7",
1187 "vpinsrw $3, (%%rax), %%xmm8, %%xmm7")
1188 GEN_test_RandM(VPINSRW_128_3of4,
1189 "vpinsrw $4, %%r14d, %%xmm8, %%xmm7",
1190 "vpinsrw $5, (%%rax), %%xmm8, %%xmm7")
1191 GEN_test_RandM(VPINSRW_128_4of4,
1192 "vpinsrw $6, %%r14d, %%xmm8, %%xmm7",
1193 "vpinsrw $7, (%%rax), %%xmm8, %%xmm7")
1194
1195 GEN_test_RandM(VCOMISD_128,
1196 "vcomisd %%xmm6, %%xmm8; pushfq; popq %%r14; andq $0x8D5, %%r14",
1197 "vcomisd (%%rax), %%xmm8; pushfq; popq %%r14; andq $0x8D5, %%r14")
1198
1199 GEN_test_RandM(VCOMISS_128,
1200 "vcomiss %%xmm6, %%xmm8; pushfq; popq %%r14; andq $0x8D5, %%r14",
1201 "vcomiss (%%rax), %%xmm8; pushfq; popq %%r14; andq $0x8D5, %%r14")
1202
1203 GEN_test_RandM(VMOVUPS_YMM_to_YMMorMEM,
1204 "vmovups %%ymm8, %%ymm7",
1205 "vmovups %%ymm9, (%%rax)")
1206
1207 GEN_test_RandM(VDPPD_128_1of4,
1208 "vdppd $0x00, %%xmm6, %%xmm8, %%xmm7",
1209 "vdppd $0xA5, (%%rax), %%xmm9, %%xmm6")
1210 GEN_test_RandM(VDPPD_128_2of4,
1211 "vdppd $0x5A, %%xmm6, %%xmm8, %%xmm7",
1212 "vdppd $0xFF, (%%rax), %%xmm9, %%xmm6")
1213 GEN_test_RandM(VDPPD_128_3of4,
1214 "vdppd $0x0F, %%xmm6, %%xmm8, %%xmm7",
1215 "vdppd $0x37, (%%rax), %%xmm9, %%xmm6")
1216 GEN_test_RandM(VDPPD_128_4of4,
1217 "vdppd $0xF0, %%xmm6, %%xmm8, %%xmm7",
1218 "vdppd $0x73, (%%rax), %%xmm9, %%xmm6")
1219
1220 GEN_test_RandM(VDPPS_128_1of4,
1221 "vdpps $0x00, %%xmm6, %%xmm8, %%xmm7",
1222 "vdpps $0xA5, (%%rax), %%xmm9, %%xmm6")
1223 GEN_test_RandM(VDPPS_128_2of4,
1224 "vdpps $0x5A, %%xmm6, %%xmm8, %%xmm7",
1225 "vdpps $0xFF, (%%rax), %%xmm9, %%xmm6")
1226 GEN_test_RandM(VDPPS_128_3of4,
1227 "vdpps $0x0F, %%xmm6, %%xmm8, %%xmm7",
1228 "vdpps $0x37, (%%rax), %%xmm9, %%xmm6")
1229 GEN_test_RandM(VDPPS_128_4of4,
1230 "vdpps $0xF0, %%xmm6, %%xmm8, %%xmm7",
1231 "vdpps $0x73, (%%rax), %%xmm9, %%xmm6")
1232
1233 GEN_test_RandM(VDPPS_256_1of4,
1234 "vdpps $0x00, %%ymm6, %%ymm8, %%ymm7",
1235 "vdpps $0xA5, (%%rax), %%ymm9, %%ymm6")
1236 GEN_test_RandM(VDPPS_256_2of4,
1237 "vdpps $0x5A, %%ymm6, %%ymm8, %%ymm7",
1238 "vdpps $0xFF, (%%rax), %%ymm9, %%ymm6")
1239 GEN_test_RandM(VDPPS_256_3of4,
1240 "vdpps $0x0F, %%ymm6, %%ymm8, %%ymm7",
1241 "vdpps $0x37, (%%rax), %%ymm9, %%ymm6")
1242 GEN_test_RandM(VDPPS_256_4of4,
1243 "vdpps $0xF0, %%ymm6, %%ymm8, %%ymm7",
1244 "vdpps $0x73, (%%rax), %%ymm9, %%ymm6")
1245
1246 GEN_test_Monly(VBROADCASTSS_256,
1247 "vbroadcastss (%%rax), %%ymm8")
1248
1249 GEN_test_RandM(VPALIGNR_128_1of3,
1250 "vpalignr $0, %%xmm6, %%xmm8, %%xmm7",
1251 "vpalignr $3, (%%rax), %%xmm8, %%xmm7")
1252 GEN_test_RandM(VPALIGNR_128_2of3,
1253 "vpalignr $6, %%xmm6, %%xmm8, %%xmm7",
1254 "vpalignr $9, (%%rax), %%xmm8, %%xmm7")
1255 GEN_test_RandM(VPALIGNR_128_3of3,
1256 "vpalignr $12, %%xmm6, %%xmm8, %%xmm7",
1257 "vpalignr $15, (%%rax), %%xmm8, %%xmm7")
1258
1259 GEN_test_Ronly(VMOVSD_REG_XMM, "vmovsd %%xmm9, %%xmm7, %%xmm8")
1260
1261 GEN_test_Ronly(VMOVSS_REG_XMM, "vmovss %%xmm9, %%xmm7, %%xmm8")
1262
1263 GEN_test_Monly(VMOVLPD_128_M64_XMM_XMM, "vmovlpd (%%rax), %%xmm8, %%xmm7")
1264
1265 GEN_test_Monly(VMOVLPD_128_XMM_M64, "vmovlpd %%xmm7, (%%rax)")
1266
1267 GEN_test_RandM(VSHUFPD_128_1of2,
1268 "vshufpd $0, %%xmm9, %%xmm8, %%xmm7",
1269 "vshufpd $1, (%%rax), %%xmm8, %%xmm7")
1270 GEN_test_RandM(VSHUFPD_128_2of2,
1271 "vshufpd $2, %%xmm9, %%xmm8, %%xmm7",
1272 "vshufpd $3, (%%rax), %%xmm8, %%xmm7")
1273
1274 GEN_test_RandM(VSHUFPD_256_1of2,
1275 "vshufpd $0x00, %%ymm9, %%ymm8, %%ymm7",
1276 "vshufpd $0xFF, (%%rax), %%ymm8, %%ymm7")
1277 GEN_test_RandM(VSHUFPD_256_2of2,
1278 "vshufpd $0x5A, %%ymm9, %%ymm8, %%ymm7",
1279 "vshufpd $0xA5, (%%rax), %%ymm8, %%ymm7")
1280
1281 GEN_test_RandM(VPERMILPS_128_0x00,
1282 "vpermilps $0x00, %%xmm6, %%xmm8",
1283 "vpermilps $0x01, (%%rax), %%xmm8")
1284 GEN_test_RandM(VPERMILPS_128_0xFE,
1285 "vpermilps $0xFE, %%xmm6, %%xmm8",
1286 "vpermilps $0xFF, (%%rax), %%xmm8")
1287 GEN_test_RandM(VPERMILPS_128_0x30,
1288 "vpermilps $0x30, %%xmm6, %%xmm8",
1289 "vpermilps $0x03, (%%rax), %%xmm8")
1290 GEN_test_RandM(VPERMILPS_128_0x21,
1291 "vpermilps $0x21, %%xmm6, %%xmm8",
1292 "vpermilps $0x12, (%%rax), %%xmm8")
1293 GEN_test_RandM(VPERMILPS_128_0xD7,
1294 "vpermilps $0xD7, %%xmm6, %%xmm8",
1295 "vpermilps $0x6C, (%%rax), %%xmm8")
1296 GEN_test_RandM(VPERMILPS_128_0xB5,
1297 "vpermilps $0xB5, %%xmm6, %%xmm8",
1298 "vpermilps $0x4A, (%%rax), %%xmm8")
1299 GEN_test_RandM(VPERMILPS_128_0x85,
1300 "vpermilps $0x85, %%xmm6, %%xmm8",
1301 "vpermilps $0xDC, (%%rax), %%xmm8")
1302 GEN_test_RandM(VPERMILPS_128_0x29,
1303 "vpermilps $0x29, %%xmm6, %%xmm8",
1304 "vpermilps $0x92, (%%rax), %%xmm8")
1305
1306 GEN_test_RandM(VBLENDPS_128_1of3,
1307 "vblendps $0, %%xmm6, %%xmm8, %%xmm7",
1308 "vblendps $3, (%%rax), %%xmm8, %%xmm7")
1309 GEN_test_RandM(VBLENDPS_128_2of3,
1310 "vblendps $6, %%xmm6, %%xmm8, %%xmm7",
1311 "vblendps $9, (%%rax), %%xmm8, %%xmm7")
1312 GEN_test_RandM(VBLENDPS_128_3of3,
1313 "vblendps $12, %%xmm6, %%xmm8, %%xmm7",
1314 "vblendps $15, (%%rax), %%xmm8, %%xmm7")
1315
1316 GEN_test_RandM(VBLENDPD_128_1of2,
1317 "vblendpd $0, %%xmm6, %%xmm8, %%xmm7",
1318 "vblendpd $1, (%%rax), %%xmm8, %%xmm7")
1319 GEN_test_RandM(VBLENDPD_128_2of2,
1320 "vblendpd $2, %%xmm6, %%xmm8, %%xmm7",
1321 "vblendpd $3, (%%rax), %%xmm8, %%xmm7")
1322
1323 GEN_test_RandM(VBLENDPD_256_1of3,
1324 "vblendpd $0, %%ymm6, %%ymm8, %%ymm7",
1325 "vblendpd $3, (%%rax), %%ymm8, %%ymm7")
1326 GEN_test_RandM(VBLENDPD_256_2of3,
1327 "vblendpd $6, %%ymm6, %%ymm8, %%ymm7",
1328 "vblendpd $9, (%%rax), %%ymm8, %%ymm7")
1329 GEN_test_RandM(VBLENDPD_256_3of3,
1330 "vblendpd $12, %%ymm6, %%ymm8, %%ymm7",
1331 "vblendpd $15, (%%rax), %%ymm8, %%ymm7")
1332
1333 GEN_test_RandM(VPBLENDW_128_0x00,
1334 "vpblendw $0x00, %%xmm6, %%xmm8, %%xmm7",
1335 "vpblendw $0x01, (%%rax), %%xmm8, %%xmm7")
1336 GEN_test_RandM(VPBLENDW_128_0xFE,
1337 "vpblendw $0xFE, %%xmm6, %%xmm8, %%xmm7",
1338 "vpblendw $0xFF, (%%rax), %%xmm8, %%xmm7")
1339 GEN_test_RandM(VPBLENDW_128_0x30,
1340 "vpblendw $0x30, %%xmm6, %%xmm8, %%xmm7",
1341 "vpblendw $0x03, (%%rax), %%xmm8, %%xmm7")
1342 GEN_test_RandM(VPBLENDW_128_0x21,
1343 "vpblendw $0x21, %%xmm6, %%xmm8, %%xmm7",
1344 "vpblendw $0x12, (%%rax), %%xmm8, %%xmm7")
1345 GEN_test_RandM(VPBLENDW_128_0xD7,
1346 "vpblendw $0xD7, %%xmm6, %%xmm8, %%xmm7",
1347 "vpblendw $0x6C, (%%rax), %%xmm8, %%xmm7")
1348 GEN_test_RandM(VPBLENDW_128_0xB5,
1349 "vpblendw $0xB5, %%xmm6, %%xmm8, %%xmm7",
1350 "vpblendw $0x4A, (%%rax), %%xmm8, %%xmm7")
1351 GEN_test_RandM(VPBLENDW_128_0x85,
1352 "vpblendw $0x85, %%xmm6, %%xmm8, %%xmm7",
1353 "vpblendw $0xDC, (%%rax), %%xmm8, %%xmm7")
1354 GEN_test_RandM(VPBLENDW_128_0x29,
1355 "vpblendw $0x29, %%xmm6, %%xmm8, %%xmm7",
1356 "vpblendw $0x92, (%%rax), %%xmm8, %%xmm7")
1357
1358 GEN_test_RandM(VMOVUPS_EtoG_256,
1359 "vmovups %%ymm6, %%ymm9",
1360 "vmovups (%%rax), %%ymm7")
1361
1362 GEN_test_RandM(VSQRTSS_128,
1363 "vsqrtss %%xmm6, %%xmm8, %%xmm7",
1364 "vsqrtss (%%rax), %%xmm8, %%xmm7")
1365
1366 GEN_test_RandM(VSQRTPS_128,
1367 "vsqrtps %%xmm6, %%xmm8",
1368 "vsqrtps (%%rax), %%xmm8")
1369
1370 GEN_test_RandM(VSQRTPS_256,
1371 "vsqrtps %%ymm6, %%ymm8",
1372 "vsqrtps (%%rax), %%ymm8")
1373
1374 GEN_test_RandM(VSQRTPD_128,
1375 "vsqrtpd %%xmm6, %%xmm8",
1376 "vsqrtpd (%%rax), %%xmm8")
1377
1378 GEN_test_RandM(VSQRTPD_256,
1379 "vsqrtpd %%ymm6, %%ymm8",
1380 "vsqrtpd (%%rax), %%ymm8")
1381
1382 GEN_test_RandM(VRSQRTSS_128,
1383 "vrsqrtss %%xmm6, %%xmm8, %%xmm7",
1384 "vrsqrtss (%%rax), %%xmm8, %%xmm7")
1385
1386 GEN_test_RandM(VRSQRTPS_128,
1387 "vrsqrtps %%xmm6, %%xmm8",
1388 "vrsqrtps (%%rax), %%xmm8")
1389
1390 GEN_test_RandM(VRSQRTPS_256,
1391 "vrsqrtps %%ymm6, %%ymm8",
1392 "vrsqrtps (%%rax), %%ymm8")
1393
1394 GEN_test_RandM(VMOVDQU_GtoE_256,
1395 "vmovdqu %%ymm9, %%ymm6",
1396 "vmovdqu %%ymm7, (%%rax)")
1397
1398 GEN_test_RandM(VCVTPS2PD_256,
1399 "vcvtps2pd %%xmm9, %%ymm6",
1400 "vcvtps2pd (%%rax), %%ymm7")
1401
1402 GEN_test_RandM(VCVTTPS2DQ_128,
1403 "vcvttps2dq %%xmm9, %%xmm6",
1404 "vcvttps2dq (%%rax), %%xmm7")
1405
1406 GEN_test_RandM(VCVTTPS2DQ_256,
1407 "vcvttps2dq %%ymm9, %%ymm6",
1408 "vcvttps2dq (%%rax), %%ymm7")
1409
1410 GEN_test_RandM(VCVTDQ2PS_128,
1411 "vcvtdq2ps %%xmm9, %%xmm6",
1412 "vcvtdq2ps (%%rax), %%xmm7")
1413
1414 GEN_test_RandM(VCVTDQ2PS_256,
1415 "vcvtdq2ps %%ymm9, %%ymm6",
1416 "vcvtdq2ps (%%rax), %%ymm7")
1417
1418 GEN_test_RandM(VCVTTPD2DQ_128,
1419 "vcvttpd2dqx %%xmm9, %%xmm6",
1420 "vcvttpd2dqx (%%rax), %%xmm7")
1421
1422 GEN_test_RandM(VCVTTPD2DQ_256,
1423 "vcvttpd2dqy %%ymm9, %%xmm6",
1424 "vcvttpd2dqy (%%rax), %%xmm7")
1425
1426 GEN_test_RandM(VCVTPD2DQ_128,
1427 "vcvtpd2dqx %%xmm9, %%xmm6",
1428 "vcvtpd2dqx (%%rax), %%xmm7")
1429
1430 GEN_test_RandM(VCVTPD2DQ_256,
1431 "vcvtpd2dqy %%ymm9, %%xmm6",
1432 "vcvtpd2dqy (%%rax), %%xmm7")
1433
1434 GEN_test_RandM(VMOVSLDUP_128,
1435 "vmovsldup %%xmm9, %%xmm6",
1436 "vmovsldup (%%rax), %%xmm7")
1437
1438 GEN_test_RandM(VMOVSLDUP_256,
1439 "vmovsldup %%ymm9, %%ymm6",
1440 "vmovsldup (%%rax), %%ymm7")
1441
1442 GEN_test_RandM(VMOVSHDUP_128,
1443 "vmovshdup %%xmm9, %%xmm6",
1444 "vmovshdup (%%rax), %%xmm7")
1445
1446 GEN_test_RandM(VMOVSHDUP_256,
1447 "vmovshdup %%ymm9, %%ymm6",
1448 "vmovshdup (%%rax), %%ymm7")
1449
1450 GEN_test_RandM(VPERMILPS_VAR_128,
1451 "vpermilps %%xmm6, %%xmm8, %%xmm7",
1452 "vpermilps (%%rax), %%xmm8, %%xmm7")
1453
1454 GEN_test_RandM(VPERMILPD_VAR_128,
1455 "vpermilpd %%xmm6, %%xmm8, %%xmm7",
1456 "vpermilpd (%%rax), %%xmm8, %%xmm7")
1457
1458 GEN_test_RandM(VPERMILPS_VAR_256,
1459 "vpermilps %%ymm6, %%ymm8, %%ymm7",
1460 "vpermilps (%%rax), %%ymm8, %%ymm7")
1461
1462 GEN_test_RandM(VPERMILPD_VAR_256,
1463 "vpermilpd %%ymm6, %%ymm8, %%ymm7",
1464 "vpermilpd (%%rax), %%ymm8, %%ymm7")
1465
1466 GEN_test_RandM(VPSLLW_128,
1467 "andl $15, %%r14d;"
1468 "vmovd %%r14d, %%xmm6;"
1469 "vpsllw %%xmm6, %%xmm8, %%xmm9",
1470 "andq $15, 128(%%rax);"
1471 "vpsllw 128(%%rax), %%xmm8, %%xmm9")
1472
1473 GEN_test_RandM(VPSRLW_128,
1474 "andl $15, %%r14d;"
1475 "vmovd %%r14d, %%xmm6;"
1476 "vpsrlw %%xmm6, %%xmm8, %%xmm9",
1477 "andq $15, 128(%%rax);"
1478 "vpsrlw 128(%%rax), %%xmm8, %%xmm9")
1479
1480 GEN_test_RandM(VPSRAW_128,
1481 "andl $31, %%r14d;"
1482 "vmovd %%r14d, %%xmm6;"
1483 "vpsraw %%xmm6, %%xmm8, %%xmm9",
1484 "andq $15, 128(%%rax);"
1485 "vpsraw 128(%%rax), %%xmm8, %%xmm9")
1486
1487 GEN_test_RandM(VPSLLD_128,
1488 "andl $31, %%r14d;"
1489 "vmovd %%r14d, %%xmm6;"
1490 "vpslld %%xmm6, %%xmm8, %%xmm9",
1491 "andq $31, 128(%%rax);"
1492 "vpslld 128(%%rax), %%xmm8, %%xmm9")
1493
1494 GEN_test_RandM(VPSRLD_128,
1495 "andl $31, %%r14d;"
1496 "vmovd %%r14d, %%xmm6;"
1497 "vpsrld %%xmm6, %%xmm8, %%xmm9",
1498 "andq $31, 128(%%rax);"
1499 "vpsrld 128(%%rax), %%xmm8, %%xmm9")
1500
1501 GEN_test_RandM(VPSRAD_128,
1502 "andl $31, %%r14d;"
1503 "vmovd %%r14d, %%xmm6;"
1504 "vpsrad %%xmm6, %%xmm8, %%xmm9",
1505 "andq $31, 128(%%rax);"
1506 "vpsrad 128(%%rax), %%xmm8, %%xmm9")
1507
1508 GEN_test_RandM(VPSLLQ_128,
1509 "andl $63, %%r14d;"
1510 "vmovd %%r14d, %%xmm6;"
1511 "vpsllq %%xmm6, %%xmm8, %%xmm9",
1512 "andq $63, 128(%%rax);"
1513 "vpsllq 128(%%rax), %%xmm8, %%xmm9")
1514
1515 GEN_test_RandM(VPSRLQ_128,
1516 "andl $63, %%r14d;"
1517 "vmovd %%r14d, %%xmm6;"
1518 "vpsrlq %%xmm6, %%xmm8, %%xmm9",
1519 "andq $63, 128(%%rax);"
1520 "vpsrlq 128(%%rax), %%xmm8, %%xmm9")
1521
1522 GEN_test_RandM(VROUNDPS_128_0x0,
1523 "vroundps $0x0, %%xmm8, %%xmm9",
1524 "vroundps $0x0, (%%rax), %%xmm9")
1525 GEN_test_RandM(VROUNDPS_128_0x1,
1526 "vroundps $0x1, %%xmm8, %%xmm9",
1527 "vroundps $0x1, (%%rax), %%xmm9")
1528 GEN_test_RandM(VROUNDPS_128_0x2,
1529 "vroundps $0x2, %%xmm8, %%xmm9",
1530 "vroundps $0x2, (%%rax), %%xmm9")
1531 GEN_test_RandM(VROUNDPS_128_0x3,
1532 "vroundps $0x3, %%xmm8, %%xmm9",
1533 "vroundps $0x3, (%%rax), %%xmm9")
1534 GEN_test_RandM(VROUNDPS_128_0x4,
1535 "vroundps $0x4, %%xmm8, %%xmm9",
1536 "vroundps $0x4, (%%rax), %%xmm9")
1537
1538 GEN_test_RandM(VROUNDPS_256_0x0,
1539 "vroundps $0x0, %%ymm8, %%ymm9",
1540 "vroundps $0x0, (%%rax), %%ymm9")
1541 GEN_test_RandM(VROUNDPS_256_0x1,
1542 "vroundps $0x1, %%ymm8, %%ymm9",
1543 "vroundps $0x1, (%%rax), %%ymm9")
1544 GEN_test_RandM(VROUNDPS_256_0x2,
1545 "vroundps $0x2, %%ymm8, %%ymm9",
1546 "vroundps $0x2, (%%rax), %%ymm9")
1547 GEN_test_RandM(VROUNDPS_256_0x3,
1548 "vroundps $0x3, %%ymm8, %%ymm9",
1549 "vroundps $0x3, (%%rax), %%ymm9")
1550 GEN_test_RandM(VROUNDPS_256_0x4,
1551 "vroundps $0x4, %%ymm8, %%ymm9",
1552 "vroundps $0x4, (%%rax), %%ymm9")
1553
1554 GEN_test_RandM(VROUNDPD_128_0x0,
1555 "vroundpd $0x0, %%xmm8, %%xmm9",
1556 "vroundpd $0x0, (%%rax), %%xmm9")
1557 GEN_test_RandM(VROUNDPD_128_0x1,
1558 "vroundpd $0x1, %%xmm8, %%xmm9",
1559 "vroundpd $0x1, (%%rax), %%xmm9")
1560 GEN_test_RandM(VROUNDPD_128_0x2,
1561 "vroundpd $0x2, %%xmm8, %%xmm9",
1562 "vroundpd $0x2, (%%rax), %%xmm9")
1563 GEN_test_RandM(VROUNDPD_128_0x3,
1564 "vroundpd $0x3, %%xmm8, %%xmm9",
1565 "vroundpd $0x3, (%%rax), %%xmm9")
1566 GEN_test_RandM(VROUNDPD_128_0x4,
1567 "vroundpd $0x4, %%xmm8, %%xmm9",
1568 "vroundpd $0x4, (%%rax), %%xmm9")
1569
1570 GEN_test_RandM(VROUNDPD_256_0x0,
1571 "vroundpd $0x0, %%ymm8, %%ymm9",
1572 "vroundpd $0x0, (%%rax), %%ymm9")
1573 GEN_test_RandM(VROUNDPD_256_0x1,
1574 "vroundpd $0x1, %%ymm8, %%ymm9",
1575 "vroundpd $0x1, (%%rax), %%ymm9")
1576 GEN_test_RandM(VROUNDPD_256_0x2,
1577 "vroundpd $0x2, %%ymm8, %%ymm9",
1578 "vroundpd $0x2, (%%rax), %%ymm9")
1579 GEN_test_RandM(VROUNDPD_256_0x3,
1580 "vroundpd $0x3, %%ymm8, %%ymm9",
1581 "vroundpd $0x3, (%%rax), %%ymm9")
1582 GEN_test_RandM(VROUNDPD_256_0x4,
1583 "vroundpd $0x4, %%ymm8, %%ymm9",
1584 "vroundpd $0x4, (%%rax), %%ymm9")
1585
1586 GEN_test_RandM(VPMADDWD_128,
1587 "vpmaddwd %%xmm6, %%xmm8, %%xmm7",
1588 "vpmaddwd (%%rax), %%xmm8, %%xmm7")
1589
1590 GEN_test_RandM(VADDSUBPS_128,
1591 "vaddsubps %%xmm6, %%xmm8, %%xmm7",
1592 "vaddsubps (%%rax), %%xmm8, %%xmm7")
1593
1594 GEN_test_RandM(VADDSUBPS_256,
1595 "vaddsubps %%ymm6, %%ymm8, %%ymm7",
1596 "vaddsubps (%%rax), %%ymm8, %%ymm7")
1597
1598 GEN_test_RandM(VADDSUBPD_128,
1599 "vaddsubpd %%xmm6, %%xmm8, %%xmm7",
1600 "vaddsubpd (%%rax), %%xmm8, %%xmm7")
1601
1602 GEN_test_RandM(VADDSUBPD_256,
1603 "vaddsubpd %%ymm6, %%ymm8, %%ymm7",
1604 "vaddsubpd (%%rax), %%ymm8, %%ymm7")
1605
1606 GEN_test_RandM(VROUNDSS_0x0,
1607 "vroundss $0x0, %%xmm8, %%xmm6, %%xmm9",
1608 "vroundss $0x0, (%%rax), %%xmm6, %%xmm9")
1609 GEN_test_RandM(VROUNDSS_0x1,
1610 "vroundss $0x1, %%xmm8, %%xmm6, %%xmm9",
1611 "vroundss $0x1, (%%rax), %%xmm6, %%xmm9")
1612 GEN_test_RandM(VROUNDSS_0x2,
1613 "vroundss $0x2, %%xmm8, %%xmm6, %%xmm9",
1614 "vroundss $0x2, (%%rax), %%xmm6, %%xmm9")
1615 GEN_test_RandM(VROUNDSS_0x3,
1616 "vroundss $0x3, %%xmm8, %%xmm6, %%xmm9",
1617 "vroundss $0x3, (%%rax), %%xmm6, %%xmm9")
1618 GEN_test_RandM(VROUNDSS_0x4,
1619 "vroundss $0x4, %%xmm8, %%xmm6, %%xmm9",
1620 "vroundss $0x4, (%%rax), %%xmm6, %%xmm9")
1621 GEN_test_RandM(VROUNDSS_0x5,
1622 "vroundss $0x5, %%xmm8, %%xmm6, %%xmm9",
1623 "vroundss $0x5, (%%rax), %%xmm6, %%xmm9")
1624
1625 GEN_test_RandM(VROUNDSD_0x0,
1626 "vroundsd $0x0, %%xmm8, %%xmm6, %%xmm9",
1627 "vroundsd $0x0, (%%rax), %%xmm6, %%xmm9")
1628 GEN_test_RandM(VROUNDSD_0x1,
1629 "vroundsd $0x1, %%xmm8, %%xmm6, %%xmm9",
1630 "vroundsd $0x1, (%%rax), %%xmm6, %%xmm9")
1631 GEN_test_RandM(VROUNDSD_0x2,
1632 "vroundsd $0x2, %%xmm8, %%xmm6, %%xmm9",
1633 "vroundsd $0x2, (%%rax), %%xmm6, %%xmm9")
1634 GEN_test_RandM(VROUNDSD_0x3,
1635 "vroundsd $0x3, %%xmm8, %%xmm6, %%xmm9",
1636 "vroundsd $0x3, (%%rax), %%xmm6, %%xmm9")
1637 GEN_test_RandM(VROUNDSD_0x4,
1638 "vroundsd $0x4, %%xmm8, %%xmm6, %%xmm9",
1639 "vroundsd $0x4, (%%rax), %%xmm6, %%xmm9")
1640 GEN_test_RandM(VROUNDSD_0x5,
1641 "vroundsd $0x5, %%xmm8, %%xmm6, %%xmm9",
1642 "vroundsd $0x5, (%%rax), %%xmm6, %%xmm9")
1643
1644 GEN_test_RandM(VPTEST_128_1,
1645 "vptest %%xmm6, %%xmm8; "
1646 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1647 "vptest (%%rax), %%xmm8; "
1648 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1649
1650 /* Here we ignore the boilerplate-supplied data and try to do
1651 x AND x and x AND NOT x. Not a great test but better
1652 than nothing. */
1653 GEN_test_RandM(VPTEST_128_2,
1654 "vmovups %%xmm6, %%xmm8;"
1655 "vptest %%xmm6, %%xmm8; "
1656 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1657 "vmovups (%%rax), %%xmm8;"
1658 "vcmpeqpd %%xmm8,%%xmm8,%%xmm7;"
1659 "vxorpd %%xmm8,%%xmm7,%%xmm8;"
1660 "vptest (%%rax), %%xmm8; "
1661 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1662
1663 GEN_test_RandM(VPTEST_256_1,
1664 "vptest %%ymm6, %%ymm8; "
1665 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1666 "vptest (%%rax), %%ymm8; "
1667 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1668
1669 /* Here we ignore the boilerplate-supplied data and try to do
1670 x AND x and x AND NOT x. Not a great test but better
1671 than nothing. */
1672 GEN_test_RandM(VPTEST_256_2,
1673 "vmovups %%ymm6, %%ymm8;"
1674 "vptest %%ymm6, %%ymm8; "
1675 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1676 "vmovups (%%rax), %%ymm8;"
1677 "vcmpeqpd %%xmm8,%%xmm8,%%xmm7;"
1678 "subq $1024, %%rsp;"
1679 "vmovups %%xmm7,512(%%rsp);"
1680 "vmovups %%xmm7,528(%%rsp);"
1681 "vmovups 512(%%rsp), %%ymm7;"
1682 "addq $1024, %%rsp;"
1683 "vxorpd %%ymm8,%%ymm7,%%ymm8;"
1684 "vptest (%%rax), %%ymm8; "
1685 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1686
1687
1688 /* VTESTPS/VTESTPD: test once with all-0 operands, once with
1689 one all-0s and one all 1s, and once with random data. */
1690
1691 GEN_test_RandM(VTESTPS_128_1,
1692 "vtestps %%xmm6, %%xmm8; "
1693 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1694 "vtestps (%%rax), %%xmm8; "
1695 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1696
1697 /* Here we ignore the boilerplate-supplied data and try to do
1698 x AND x and x AND NOT x. Not a great test but better
1699 than nothing. */
1700 GEN_test_RandM(VTESTPS_128_2,
1701 "vmovups %%xmm6, %%xmm8;"
1702 "vtestps %%xmm6, %%xmm8; "
1703 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1704 "vmovups (%%rax), %%xmm8;"
1705 "vcmpeqpd %%xmm8,%%xmm8,%%xmm7;"
1706 "vxorpd %%xmm8,%%xmm7,%%xmm8;"
1707 "vtestps (%%rax), %%xmm8; "
1708 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1709
1710 GEN_test_RandM(VTESTPS_128_3,
1711 "vtestps %%xmm8, %%xmm9; "
1712 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1713 "vtestps (%%rax), %%xmm9; "
1714 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1715
1716
1717
1718
1719 GEN_test_RandM(VTESTPS_256_1,
1720 "vtestps %%ymm6, %%ymm8; "
1721 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1722 "vtestps (%%rax), %%ymm8; "
1723 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1724
1725 /* Here we ignore the boilerplate-supplied data and try to do
1726 x AND x and x AND NOT x. Not a great test but better
1727 than nothing. */
1728 GEN_test_RandM(VTESTPS_256_2,
1729 "vmovups %%ymm6, %%ymm8;"
1730 "vtestps %%ymm6, %%ymm8; "
1731 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1732 "vmovups (%%rax), %%ymm8;"
1733 "vcmpeqpd %%xmm8,%%xmm8,%%xmm7;"
1734 "subq $1024, %%rsp;"
1735 "vmovups %%xmm7,512(%%rsp);"
1736 "vmovups %%xmm7,528(%%rsp);"
1737 "vmovups 512(%%rsp), %%ymm7;"
1738 "addq $1024, %%rsp;"
1739 "vxorpd %%ymm8,%%ymm7,%%ymm8;"
1740 "vtestps (%%rax), %%ymm8; "
1741 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1742
1743 GEN_test_RandM(VTESTPS_256_3,
1744 "vtestps %%ymm8, %%ymm9; "
1745 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1746 "vtestps (%%rax), %%ymm9; "
1747 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1748
1749
1750
1751 GEN_test_RandM(VTESTPD_128_1,
1752 "vtestpd %%xmm6, %%xmm8; "
1753 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1754 "vtestpd (%%rax), %%xmm8; "
1755 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1756
1757 /* Here we ignore the boilerplate-supplied data and try to do
1758 x AND x and x AND NOT x. Not a great test but better
1759 than nothing. */
1760 GEN_test_RandM(VTESTPD_128_2,
1761 "vmovups %%xmm6, %%xmm8;"
1762 "vtestpd %%xmm6, %%xmm8; "
1763 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1764 "vmovups (%%rax), %%xmm8;"
1765 "vcmpeqpd %%xmm8,%%xmm8,%%xmm7;"
1766 "vxorpd %%xmm8,%%xmm7,%%xmm8;"
1767 "vtestpd (%%rax), %%xmm8; "
1768 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1769
1770 GEN_test_RandM(VTESTPD_128_3,
1771 "vtestpd %%xmm8, %%xmm9; "
1772 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1773 "vtestpd (%%rax), %%xmm9; "
1774 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1775
1776
1777
1778
1779 GEN_test_RandM(VTESTPD_256_1,
1780 "vtestpd %%ymm6, %%ymm8; "
1781 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1782 "vtestpd (%%rax), %%ymm8; "
1783 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1784
1785 /* Here we ignore the boilerplate-supplied data and try to do
1786 x AND x and x AND NOT x. Not a great test but better
1787 than nothing. */
1788 GEN_test_RandM(VTESTPD_256_2,
1789 "vmovups %%ymm6, %%ymm8;"
1790 "vtestpd %%ymm6, %%ymm8; "
1791 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1792 "vmovups (%%rax), %%ymm8;"
1793 "vcmpeqpd %%xmm8,%%xmm8,%%xmm7;"
1794 "subq $1024, %%rsp;"
1795 "vmovups %%xmm7,512(%%rsp);"
1796 "vmovups %%xmm7,528(%%rsp);"
1797 "vmovups 512(%%rsp), %%ymm7;"
1798 "addq $1024, %%rsp;"
1799 "vxorpd %%ymm8,%%ymm7,%%ymm8;"
1800 "vtestpd (%%rax), %%ymm8; "
1801 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1802
1803 GEN_test_RandM(VTESTPD_256_3,
1804 "vtestpd %%ymm8, %%ymm9; "
1805 "pushfq; popq %%r14; andq $0x8D5, %%r14",
1806 "vtestpd (%%rax), %%ymm9; "
1807 "pushfq; popq %%r14; andq $0x8D5, %%r14")
1808
1809 GEN_test_RandM(VBLENDVPS_128,
1810 "vblendvps %%xmm9, %%xmm6, %%xmm8, %%xmm7",
1811 "vblendvps %%xmm9, (%%rax), %%xmm8, %%xmm7")
1812
1813 GEN_test_RandM(VBLENDVPS_256,
1814 "vblendvps %%ymm9, %%ymm6, %%ymm8, %%ymm7",
1815 "vblendvps %%ymm9, (%%rax), %%ymm8, %%ymm7")
1816
1817 GEN_test_RandM(VBLENDVPD_128,
1818 "vblendvpd %%xmm9, %%xmm6, %%xmm8, %%xmm7",
1819 "vblendvpd %%xmm9, (%%rax), %%xmm8, %%xmm7")
1820
1821 GEN_test_RandM(VBLENDVPD_256,
1822 "vblendvpd %%ymm9, %%ymm6, %%ymm8, %%ymm7",
1823 "vblendvpd %%ymm9, (%%rax), %%ymm8, %%ymm7")
1824
1825
1826 GEN_test_RandM(VHADDPS_128,
1827 "vhaddps %%xmm6, %%xmm8, %%xmm7",
1828 "vhaddps (%%rax), %%xmm8, %%xmm7")
1829
1830 GEN_test_RandM(VHADDPS_256,
1831 "vhaddps %%ymm6, %%ymm8, %%ymm7",
1832 "vhaddps (%%rax), %%ymm8, %%ymm7")
1833
1834 GEN_test_RandM(VHADDPD_128,
1835 "vhaddpd %%xmm6, %%xmm8, %%xmm7",
1836 "vhaddpd (%%rax), %%xmm8, %%xmm7")
1837
1838 GEN_test_RandM(VHADDPD_256,
1839 "vhaddpd %%ymm6, %%ymm8, %%ymm7",
1840 "vhaddpd (%%rax), %%ymm8, %%ymm7")
1841
1842 GEN_test_RandM(VHSUBPS_128,
1843 "vhsubps %%xmm6, %%xmm8, %%xmm7",
1844 "vhsubps (%%rax), %%xmm8, %%xmm7")
1845
1846 GEN_test_RandM(VHSUBPS_256,
1847 "vhsubps %%ymm6, %%ymm8, %%ymm7",
1848 "vhsubps (%%rax), %%ymm8, %%ymm7")
1849
1850 GEN_test_RandM(VHSUBPD_128,
1851 "vhsubpd %%xmm6, %%xmm8, %%xmm7",
1852 "vhsubpd (%%rax), %%xmm8, %%xmm7")
1853
1854 GEN_test_RandM(VHSUBPD_256,
1855 "vhsubpd %%ymm6, %%ymm8, %%ymm7",
1856 "vhsubpd (%%rax), %%ymm8, %%ymm7")
1857
1858 GEN_test_RandM(VEXTRACTPS_0x0,
1859 "vextractps $0, %%xmm8, %%r14d",
1860 "vextractps $0, %%xmm8, (%%rax)")
1861
1862 GEN_test_RandM(VEXTRACTPS_0x1,
1863 "vextractps $1, %%xmm8, %%r14d",
1864 "vextractps $1, %%xmm8, (%%rax)")
1865
1866 GEN_test_RandM(VEXTRACTPS_0x2,
1867 "vextractps $2, %%xmm8, %%r14d",
1868 "vextractps $2, %%xmm8, (%%rax)")
1869
1870 GEN_test_RandM(VEXTRACTPS_0x3,
1871 "vextractps $3, %%xmm8, %%r14d",
1872 "vextractps $3, %%xmm8, (%%rax)")
1873
1874 GEN_test_Monly(VLDDQU_128,
1875 "vlddqu 1(%%rax), %%xmm8")
1876
1877 GEN_test_Monly(VLDDQU_256,
1878 "vlddqu 1(%%rax), %%ymm8")
1879
1880 GEN_test_Monly(VMOVNTDQA_128,
1881 "vmovntdqa (%%rax), %%xmm9")
1882
1883 GEN_test_Monly(VMASKMOVDQU_128,
1884 "xchgq %%rax, %%rdi;"
1885 "vmaskmovdqu %%xmm8, %%xmm9;"
1886 "xchgq %%rax, %%rdi")
1887
1888 GEN_test_Ronly(VMOVMSKPD_128,
1889 "vmovmskpd %%xmm9, %%r14d")
1890
1891 GEN_test_Ronly(VMOVMSKPD_256,
1892 "vmovmskpd %%ymm9, %%r14d")
1893
1894 GEN_test_Ronly(VMOVMSKPS_128,
1895 "vmovmskps %%xmm9, %%r14d")
1896
1897 GEN_test_Ronly(VMOVMSKPS_256,
1898 "vmovmskps %%ymm9, %%r14d")
1899
1900 GEN_test_Monly(VMOVNTPD_128,
1901 "vmovntpd %%xmm9, (%%rax)")
1902
1903 GEN_test_Monly(VMOVNTPD_256,
1904 "vmovntpd %%ymm9, (%%rax)")
1905
1906 GEN_test_Monly(VMOVNTPS_128,
1907 "vmovntps %%xmm9, (%%rax)")
1908
1909 GEN_test_Monly(VMOVNTPS_256,
1910 "vmovntps %%ymm9, (%%rax)")
1911
1912 GEN_test_RandM(VPACKSSWB_128,
1913 "vpacksswb %%xmm6, %%xmm8, %%xmm7",
1914 "vpacksswb (%%rax), %%xmm8, %%xmm7")
1915
1916 GEN_test_RandM(VPAVGB_128,
1917 "vpavgb %%xmm6, %%xmm8, %%xmm7",
1918 "vpavgb (%%rax), %%xmm8, %%xmm7")
1919
1920 GEN_test_RandM(VPAVGW_128,
1921 "vpavgw %%xmm6, %%xmm8, %%xmm7",
1922 "vpavgw (%%rax), %%xmm8, %%xmm7")
1923
1924 GEN_test_RandM(VPADDSB_128,
1925 "vpaddsb %%xmm6, %%xmm8, %%xmm7",
1926 "vpaddsb (%%rax), %%xmm8, %%xmm7")
1927
1928 GEN_test_RandM(VPADDSW_128,
1929 "vpaddsw %%xmm6, %%xmm8, %%xmm7",
1930 "vpaddsw (%%rax), %%xmm8, %%xmm7")
1931
1932 GEN_test_RandM(VPHADDW_128,
1933 "vphaddw %%xmm6, %%xmm8, %%xmm7",
1934 "vphaddw (%%rax), %%xmm8, %%xmm7")
1935
1936 GEN_test_RandM(VPHADDD_128,
1937 "vphaddd %%xmm6, %%xmm8, %%xmm7",
1938 "vphaddd (%%rax), %%xmm8, %%xmm7")
1939
1940 GEN_test_RandM(VPHADDSW_128,
1941 "vphaddsw %%xmm6, %%xmm8, %%xmm7",
1942 "vphaddsw (%%rax), %%xmm8, %%xmm7")
1943
1944 GEN_test_RandM(VPMADDUBSW_128,
1945 "vpmaddubsw %%xmm6, %%xmm8, %%xmm7",
1946 "vpmaddubsw (%%rax), %%xmm8, %%xmm7")
1947
1948 GEN_test_RandM(VPHSUBW_128,
1949 "vphsubw %%xmm6, %%xmm8, %%xmm7",
1950 "vphsubw (%%rax), %%xmm8, %%xmm7")
1951
1952 GEN_test_RandM(VPHSUBD_128,
1953 "vphsubd %%xmm6, %%xmm8, %%xmm7",
1954 "vphsubd (%%rax), %%xmm8, %%xmm7")
1955
1956 GEN_test_RandM(VPHSUBSW_128,
1957 "vphsubsw %%xmm6, %%xmm8, %%xmm7",
1958 "vphsubsw (%%rax), %%xmm8, %%xmm7")
1959
1960 GEN_test_RandM(VPABSB_128,
1961 "vpabsb %%xmm6, %%xmm7",
1962 "vpabsb (%%rax), %%xmm7")
1963
1964 GEN_test_RandM(VPABSW_128,
1965 "vpabsw %%xmm6, %%xmm7",
1966 "vpabsw (%%rax), %%xmm7")
1967
1968 GEN_test_RandM(VPMOVSXBQ_128,
1969 "vpmovsxbq %%xmm6, %%xmm8",
1970 "vpmovsxbq (%%rax), %%xmm8")
1971
1972 GEN_test_RandM(VPMOVSXWQ_128,
1973 "vpmovsxwq %%xmm6, %%xmm8",
1974 "vpmovsxwq (%%rax), %%xmm8")
1975
1976 GEN_test_RandM(VPACKUSDW_128,
1977 "vpackusdw %%xmm6, %%xmm8, %%xmm7",
1978 "vpackusdw (%%rax), %%xmm8, %%xmm7")
1979
1980 GEN_test_RandM(VPMOVZXBQ_128,
1981 "vpmovzxbq %%xmm6, %%xmm8",
1982 "vpmovzxbq (%%rax), %%xmm8")
1983
1984 GEN_test_RandM(VPMOVZXWQ_128,
1985 "vpmovzxwq %%xmm6, %%xmm8",
1986 "vpmovzxwq (%%rax), %%xmm8")
1987
1988 GEN_test_RandM(VPMOVZXDQ_128,
1989 "vpmovzxdq %%xmm6, %%xmm8",
1990 "vpmovzxdq (%%rax), %%xmm8")
1991
1992 GEN_test_RandM(VMPSADBW_128_0x0,
1993 "vmpsadbw $0, %%xmm6, %%xmm8, %%xmm7",
1994 "vmpsadbw $0, (%%rax), %%xmm8, %%xmm7")
1995 GEN_test_RandM(VMPSADBW_128_0x1,
1996 "vmpsadbw $1, %%xmm6, %%xmm8, %%xmm7",
1997 "vmpsadbw $1, (%%rax), %%xmm8, %%xmm7")
1998 GEN_test_RandM(VMPSADBW_128_0x2,
1999 "vmpsadbw $2, %%xmm6, %%xmm8, %%xmm7",
2000 "vmpsadbw $2, (%%rax), %%xmm8, %%xmm7")
2001 GEN_test_RandM(VMPSADBW_128_0x3,
2002 "vmpsadbw $3, %%xmm6, %%xmm8, %%xmm7",
2003 "vmpsadbw $3, (%%rax), %%xmm8, %%xmm7")
2004 GEN_test_RandM(VMPSADBW_128_0x4,
2005 "vmpsadbw $4, %%xmm6, %%xmm8, %%xmm7",
2006 "vmpsadbw $4, (%%rax), %%xmm8, %%xmm7")
2007 GEN_test_RandM(VMPSADBW_128_0x5,
2008 "vmpsadbw $5, %%xmm6, %%xmm8, %%xmm7",
2009 "vmpsadbw $5, (%%rax), %%xmm8, %%xmm7")
2010 GEN_test_RandM(VMPSADBW_128_0x6,
2011 "vmpsadbw $6, %%xmm6, %%xmm8, %%xmm7",
2012 "vmpsadbw $6, (%%rax), %%xmm8, %%xmm7")
2013 GEN_test_RandM(VMPSADBW_128_0x7,
2014 "vmpsadbw $7, %%xmm6, %%xmm8, %%xmm7",
2015 "vmpsadbw $7, (%%rax), %%xmm8, %%xmm7")
2016
2017 GEN_test_RandM(VMOVDDUP_YMMorMEM256_to_YMM,
2018 "vmovddup %%ymm8, %%ymm7",
2019 "vmovddup (%%rax), %%ymm9")
2020
2021 GEN_test_Monly(VMOVLPS_128_M64_XMM_XMM, "vmovlps (%%rax), %%xmm8, %%xmm7")
2022
2023 GEN_test_Monly(VMOVLPS_128_XMM_M64, "vmovlps %%xmm7, (%%rax)")
2024
2025 GEN_test_RandM(VRCPSS_128,
2026 "vrcpss %%xmm6, %%xmm8, %%xmm7",
2027 "vrcpss (%%rax), %%xmm8, %%xmm7")
2028
2029 GEN_test_RandM(VRCPPS_128,
2030 "vrcpps %%xmm6, %%xmm8",
2031 "vrcpps (%%rax), %%xmm8")
2032
2033 GEN_test_RandM(VRCPPS_256,
2034 "vrcpps %%ymm6, %%ymm8",
2035 "vrcpps (%%rax), %%ymm8")
2036
2037 GEN_test_RandM(VPSADBW_128,
2038 "vpsadbw %%xmm6, %%xmm8, %%xmm7",
2039 "vpsadbw (%%rax), %%xmm8, %%xmm7")
2040
2041 GEN_test_RandM(VPSIGNB_128,
2042 "vpsignb %%xmm6, %%xmm8, %%xmm7",
2043 "vpsignb (%%rax), %%xmm8, %%xmm7")
2044
2045 GEN_test_RandM(VPSIGNW_128,
2046 "vpsignw %%xmm6, %%xmm8, %%xmm7",
2047 "vpsignw (%%rax), %%xmm8, %%xmm7")
2048
2049 GEN_test_RandM(VPSIGND_128,
2050 "vpsignd %%xmm6, %%xmm8, %%xmm7",
2051 "vpsignd (%%rax), %%xmm8, %%xmm7")
2052
2053 GEN_test_RandM(VPMULHRSW_128,
2054 "vpmulhrsw %%xmm6, %%xmm8, %%xmm7",
2055 "vpmulhrsw (%%rax), %%xmm8, %%xmm7")
2056
2057 GEN_test_Monly(VBROADCASTF128,
2058 "vbroadcastf128 (%%rax), %%ymm9")
2059
2060 GEN_test_RandM(VPEXTRW_128_0x0,
2061 "vpextrw $0x0, %%xmm7, %%r14d",
2062 "vpextrw $0x0, %%xmm7, (%%rax)")
2063 GEN_test_RandM(VPEXTRW_128_0x1,
2064 "vpextrw $0x1, %%xmm7, %%r14d",
2065 "vpextrw $0x1, %%xmm7, (%%rax)")
2066 GEN_test_RandM(VPEXTRW_128_0x2,
2067 "vpextrw $0x2, %%xmm7, %%r14d",
2068 "vpextrw $0x2, %%xmm7, (%%rax)")
2069 GEN_test_RandM(VPEXTRW_128_0x3,
2070 "vpextrw $0x3, %%xmm7, %%r14d",
2071 "vpextrw $0x3, %%xmm7, (%%rax)")
2072 GEN_test_RandM(VPEXTRW_128_0x4,
2073 "vpextrw $0x4, %%xmm7, %%r14d",
2074 "vpextrw $0x4, %%xmm7, (%%rax)")
2075 GEN_test_RandM(VPEXTRW_128_0x5,
2076 "vpextrw $0x5, %%xmm7, %%r14d",
2077 "vpextrw $0x5, %%xmm7, (%%rax)")
2078 GEN_test_RandM(VPEXTRW_128_0x6,
2079 "vpextrw $0x6, %%xmm7, %%r14d",
2080 "vpextrw $0x6, %%xmm7, (%%rax)")
2081 GEN_test_RandM(VPEXTRW_128_0x7,
2082 "vpextrw $0x7, %%xmm7, %%r14d",
2083 "vpextrw $0x7, %%xmm7, (%%rax)")
2084
2085 GEN_test_RandM(VAESENC,
2086 "vaesenc %%xmm6, %%xmm8, %%xmm7",
2087 "vaesenc (%%rax), %%xmm8, %%xmm7")
2088
2089 GEN_test_RandM(VAESENCLAST,
2090 "vaesenclast %%xmm6, %%xmm8, %%xmm7",
2091 "vaesenclast (%%rax), %%xmm8, %%xmm7")
2092
2093 GEN_test_RandM(VAESDEC,
2094 "vaesdec %%xmm6, %%xmm8, %%xmm7",
2095 "vaesdec (%%rax), %%xmm8, %%xmm7")
2096
2097 GEN_test_RandM(VAESDECLAST,
2098 "vaesdeclast %%xmm6, %%xmm8, %%xmm7",
2099 "vaesdeclast (%%rax), %%xmm8, %%xmm7")
2100
2101 GEN_test_RandM(VAESIMC,
2102 "vaesimc %%xmm6, %%xmm7",
2103 "vaesimc (%%rax), %%xmm7")
2104
2105 GEN_test_RandM(VAESKEYGENASSIST_0x00,
2106 "vaeskeygenassist $0x00, %%xmm6, %%xmm7",
2107 "vaeskeygenassist $0x00, (%%rax), %%xmm7")
2108 GEN_test_RandM(VAESKEYGENASSIST_0x31,
2109 "vaeskeygenassist $0x31, %%xmm6, %%xmm7",
2110 "vaeskeygenassist $0x31, (%%rax), %%xmm7")
2111 GEN_test_RandM(VAESKEYGENASSIST_0xB2,
2112 "vaeskeygenassist $0xb2, %%xmm6, %%xmm7",
2113 "vaeskeygenassist $0xb2, (%%rax), %%xmm7")
2114 GEN_test_RandM(VAESKEYGENASSIST_0xFF,
2115 "vaeskeygenassist $0xFF, %%xmm6, %%xmm7",
2116 "vaeskeygenassist $0xFF, (%%rax), %%xmm7")
2117
2118 GEN_test_RandM(VPCLMULQDQ_0x00,
2119 "vpclmulqdq $0x00, %%xmm6, %%xmm8, %%xmm7",
2120 "vpclmulqdq $0x00, (%%rax), %%xmm8, %%xmm7")
2121 GEN_test_RandM(VPCLMULQDQ_0x01,
2122 "vpclmulqdq $0x01, %%xmm6, %%xmm8, %%xmm7",
2123 "vpclmulqdq $0x01, (%%rax), %%xmm8, %%xmm7")
2124 GEN_test_RandM(VPCLMULQDQ_0x10,
2125 "vpclmulqdq $0x10, %%xmm6, %%xmm8, %%xmm7",
2126 "vpclmulqdq $0x10, (%%rax), %%xmm8, %%xmm7")
2127 GEN_test_RandM(VPCLMULQDQ_0x11,
2128 "vpclmulqdq $0x11, %%xmm6, %%xmm8, %%xmm7",
2129 "vpclmulqdq $0x11, (%%rax), %%xmm8, %%xmm7")
2130 GEN_test_RandM(VPCLMULQDQ_0xFF,
2131 "vpclmulqdq $0xFF, %%xmm6, %%xmm8, %%xmm7",
2132 "vpclmulqdq $0xFF, (%%rax), %%xmm8, %%xmm7")
2133
2134 GEN_test_RandM(VCMPSS_128_0x9,
2135 "vcmpss $0x9, %%xmm6, %%xmm8, %%xmm7",
2136 "vcmpss $0x9, (%%rax), %%xmm8, %%xmm7")
2137
2138 GEN_test_Monly(VMASKMOVPS_128_LoadForm,
2139 "vmaskmovps (%%rax), %%xmm8, %%xmm7;"
2140 "vxorps %%xmm6, %%xmm6, %%xmm6;"
2141 "vmaskmovps (%%rax,%%rax,4), %%xmm6, %%xmm9")
2142
2143 GEN_test_Monly(VMASKMOVPS_256_LoadForm,
2144 "vmaskmovps (%%rax), %%ymm8, %%ymm7;"
2145 "vxorps %%ymm6, %%ymm6, %%ymm6;"
2146 "vmaskmovps (%%rax,%%rax,4), %%ymm6, %%ymm9")
2147
2148 GEN_test_Monly(VMASKMOVPD_128_LoadForm,
2149 "vmaskmovpd (%%rax), %%xmm8, %%xmm7;"
2150 "vxorpd %%xmm6, %%xmm6, %%xmm6;"
2151 "vmaskmovpd (%%rax,%%rax,4), %%xmm6, %%xmm9")
2152
2153 GEN_test_Monly(VMASKMOVPD_256_LoadForm,
2154 "vmaskmovpd (%%rax), %%ymm8, %%ymm7;"
2155 "vxorpd %%ymm6, %%ymm6, %%ymm6;"
2156 "vmaskmovpd (%%rax,%%rax,4), %%ymm6, %%ymm9")
2157
2158 /* Comment duplicated above, for convenient reference:
2159 Allowed operands in test insns:
2160 Reg form: %ymm6, %ymm7, %ymm8, %ymm9 and %r14.
2161 Mem form: (%rax), %ymm7, %ymm8, %ymm9 and %r14.
2162 Imm8 etc fields are also allowed, where they make sense.
2163 */
2164
2165 #define N_DEFAULT_ITERS 3
2166
2167 // Do the specified test some number of times
2168 #define DO_N(_iters, _testfn) \
2169 do { int i; for (i = 0; i < (_iters); i++) { test_##_testfn(); } } while (0)
2170
2171 // Do the specified test the default number of times
2172 #define DO_D(_testfn) DO_N(N_DEFAULT_ITERS, _testfn)
2173
2174
main(void)2175 int main ( void )
2176 {
2177 DO_D( VMOVUPD_EtoG_256 );
2178 DO_D( VMOVUPD_GtoE_256 );
2179 DO_D( VPSUBW_128 );
2180 DO_D( VPSUBQ_128 );
2181 DO_D( VPADDQ_128 );
2182 DO_D( VPINSRQ_128 );
2183 DO_D( VUCOMISS_128 );
2184 DO_D( VUCOMISD_128 );
2185 DO_D( VCVTPS2PD_128 );
2186 DO_D( VANDNPD_128 );
2187 DO_D( VORPD_128 );
2188 DO_D( VXORPD_128 );
2189 DO_D( VXORPS_128 );
2190 DO_D( VMULSD_128 );
2191 DO_D( VADDSD_128 );
2192 DO_D( VMINSD_128 );
2193 DO_D( VSUBSD_128 );
2194 DO_D( VDIVSD_128 );
2195 DO_D( VMAXSD_128 );
2196 DO_D( VPSHUFD_0x39_128 );
2197 DO_D( VPCMPEQD_128 );
2198 DO_D( VPEXTRD_128_0x3 );
2199 DO_D( VPEXTRD_128_0x0 );
2200 DO_D( VINSERTF128_0x0 );
2201 DO_D( VINSERTF128_0x1 );
2202 DO_D( VEXTRACTF128_0x0 );
2203 DO_D( VEXTRACTF128_0x1 );
2204 DO_D( VCVTPD2PS_128 );
2205 /* Test all CMPSS variants; this code is tricky. */
2206 DO_D( VCMPSS_128_0x0 );
2207 DO_D( VCMPSS_128_0x1 );
2208 DO_D( VCMPSS_128_0x2 );
2209 DO_D( VCMPSS_128_0x3 );
2210 DO_D( VCMPSS_128_0x4 );
2211 DO_D( VCMPSS_128_0x5 );
2212 DO_D( VCMPSS_128_0x6 );
2213 DO_D( VCMPSS_128_0x7 );
2214 DO_D( VCMPSS_128_0x8 );
2215 DO_D( VCMPSS_128_0xA );
2216 DO_D( VCMPSS_128_0xC );
2217 DO_D( VCMPSS_128_0xC );
2218 DO_D( VCMPSS_128_0xD );
2219 DO_D( VCMPSS_128_0xE );
2220 DO_D( VCMPSS_128_0x11 );
2221 DO_D( VCMPSS_128_0x12);
2222 DO_D( VCMPSS_128_0x16 );
2223 DO_D( VCMPSS_128_0x1E );
2224 DO_D( VMOVDDUP_XMMorMEM64_to_XMM );
2225 DO_D( VMOVD_IREGorMEM32_to_XMM );
2226 DO_D( VMOVQ_XMM_MEM64 );
2227 DO_D( VMOVDQA_GtoE_256 );
2228 DO_D( VMOVDQA_GtoE_128 );
2229 DO_D( VMOVDQU_GtoE_128 );
2230 DO_D( VMOVDQA_EtoG_256 );
2231 DO_D( VMOVDQA_EtoG_128 );
2232 DO_D( VMOVDQU_EtoG_128 );
2233 DO_D( VMOVAPD_GtoE_128 );
2234 DO_D( VMOVAPD_GtoE_256 );
2235 DO_D( VMOVAPS_GtoE_128 );
2236 DO_D( VMOVAPS_GtoE_256 );
2237 DO_D( VMOVAPS_EtoG_128 );
2238 DO_D( VMOVAPD_EtoG_256 );
2239 DO_D( VMOVAPD_EtoG_128 );
2240 DO_D( VMOVUPD_GtoE_128 );
2241 DO_D( VMOVSS_XMM_M32 );
2242 DO_D( VMOVSD_XMM_M64 );
2243 DO_D( VMOVSS_M64_XMM );
2244 DO_D( VMOVSD_M64_XMM );
2245 DO_D( VINSERTPS_0x39_128 );
2246 DO_D( VPUNPCKLDQ_128 );
2247 DO_D( VPACKSSDW_128 );
2248 DO_D( VPADDW_128 );
2249 DO_D( VPSRLW_0x05_128 );
2250 DO_D( VPSLLW_0x05_128 );
2251 DO_D( VPUNPCKLQDQ_128 );
2252 DO_D( VPINSRD_128 );
2253 DO_D( VMOVD_XMM_to_MEM32 );
2254 DO_D( VPANDN_128 );
2255 DO_D( VPSLLDQ_0x05_128 );
2256 DO_D( VPSRLDQ_0x05_128 );
2257 DO_D( VPSUBUSB_128 );
2258 DO_D( VPSUBSB_128 );
2259 DO_D( VPSLLD_0x05_128 );
2260 DO_D( VPSRLD_0x05_128 );
2261 DO_D( VPSRAD_0x05_128 );
2262 DO_D( VPUNPCKLWD_128 );
2263 DO_D( VPUNPCKHWD_128 );
2264 DO_D( VPADDUSB_128 );
2265 DO_D( VPMULHUW_128 );
2266 DO_D( VPADDUSW_128 );
2267 DO_D( VPMULLW_128 );
2268 DO_D( VPSHUFHW_0x39_128 );
2269 DO_D( VPSHUFLW_0x39_128 );
2270 DO_D( VCVTPS2DQ_128 );
2271 DO_D( VSUBPS_128 );
2272 DO_D( VADDPS_128 );
2273 DO_D( VMULPS_128 );
2274 DO_D( VMAXPS_128 );
2275 DO_D( VMINPS_128 );
2276 DO_D( VSHUFPS_0x39_128 );
2277 DO_D( VPCMPEQB_128 );
2278 DO_D( VMOVHPD_128_StoreForm );
2279 DO_D( VPAND_128 );
2280 DO_D( VPMOVMSKB_128 );
2281 DO_D( VCVTTSS2SI_64 );
2282 DO_D( VPACKUSWB_128 );
2283 DO_D( VCVTSS2SD_128 );
2284 DO_D( VCVTSD2SS_128 );
2285 DO_D( VMOVD_XMM_to_IREG32 );
2286 DO_D( VPCMPESTRM_0x45_128 );
2287 DO_D( VMOVQ_IREGorMEM64_to_XMM );
2288 DO_D( VMOVUPS_XMM_to_XMMorMEM );
2289 DO_D( VMOVNTDQ_128 );
2290 DO_D( VMOVLHPS_128 );
2291 DO_D( VPABSD_128 );
2292 DO_D( VMOVHLPS_128 );
2293 DO_D( VMOVQ_XMM_to_IREG64 );
2294 DO_D( VMOVQ_XMMorMEM64_to_XMM );
2295 DO_D( VCVTTSS2SI_32 );
2296 DO_D( VPUNPCKLBW_128 );
2297 DO_D( VPUNPCKHBW_128 );
2298 DO_D( VMULSS_128 );
2299 DO_D( VSUBSS_128 );
2300 DO_D( VADDSS_128 );
2301 DO_D( VDIVSS_128 );
2302 DO_D( VUNPCKLPS_128 );
2303 DO_D( VCVTSI2SS_128 );
2304 DO_D( VANDPS_128 );
2305 DO_D( VMINSS_128 );
2306 DO_D( VMAXSS_128 );
2307 DO_D( VANDNPS_128 );
2308 DO_D( VORPS_128 );
2309 DO_D( VSQRTSD_128 );
2310 /* Test all CMPSS variants; this code is tricky. */
2311 DO_D( VCMPSD_128_0x0 );
2312 DO_D( VCMPSD_128_0x1 );
2313 DO_D( VCMPSD_128_0x2 );
2314 DO_D( VCMPSD_128_0x3 );
2315 DO_D( VCMPSD_128_0x4 );
2316 DO_D( VCMPSD_128_0x5 );
2317 DO_D( VCMPSD_128_0x6 );
2318 DO_D( VCMPSD_128_0x7 );
2319 DO_D( VCMPSD_128_0x8 );
2320 DO_D( VCMPSD_128_0xA );
2321 DO_D( VCMPSD_128_0xC );
2322 DO_D( VCMPSD_128_0xD );
2323 DO_D( VCMPSD_128_0xE );
2324 DO_D( VCMPSD_128_0x11 );
2325 DO_D( VCMPSD_128_0x12 );
2326 DO_D( VCMPSD_128_0x16 );
2327 DO_D( VCMPSD_128_0x1E );
2328 DO_D( VPSHUFB_128 );
2329 DO_D( VCVTTSD2SI_32 );
2330 DO_D( VCVTTSD2SI_64 );
2331 DO_D( VCVTSI2SS_64 );
2332 DO_D( VCVTSI2SD_64 );
2333 DO_D( VCVTSI2SD_32 );
2334 DO_D( VPOR_128 );
2335 DO_D( VPXOR_128 );
2336 DO_D( VPSUBB_128 );
2337 DO_D( VPSUBD_128 );
2338 DO_D( VPADDD_128 );
2339 DO_D( VPMOVZXBW_128 );
2340 DO_D( VPMOVZXWD_128 );
2341 DO_D( VPBLENDVB_128 );
2342 DO_D( VPMINSD_128 );
2343 DO_D( VPMAXSD_128 );
2344 DO_D( VANDPD_128 );
2345 DO_D( VMULPD_256 );
2346 DO_D( VMOVUPD_EtoG_128 );
2347 DO_D( VADDPD_256 );
2348 DO_D( VSUBPD_256 );
2349 DO_D( VDIVPD_256 );
2350 DO_D( VPCMPEQQ_128 );
2351 DO_D( VSUBPD_128 );
2352 DO_D( VADDPD_128 );
2353 DO_D( VUNPCKLPD_128 );
2354 DO_D( VUNPCKHPD_128 );
2355 DO_D( VUNPCKHPS_128 );
2356 DO_D( VMOVUPS_EtoG_128 );
2357 DO_D( VADDPS_256 );
2358 DO_D( VSUBPS_256 );
2359 DO_D( VMULPS_256 );
2360 DO_D( VDIVPS_256 );
2361 DO_D( VPCMPGTQ_128 );
2362 DO_D( VPEXTRQ_128_0x0 );
2363 DO_D( VPEXTRQ_128_0x1 );
2364 DO_D( VPSRLQ_0x05_128 );
2365 DO_D( VPMULUDQ_128 );
2366 DO_D( VPSLLQ_0x05_128 );
2367 DO_D( VPMAXUD_128 );
2368 DO_D( VPMINUD_128 );
2369 DO_D( VPMULLD_128 );
2370 DO_D( VPMAXUW_128 );
2371 DO_D( VPEXTRW_128_EregOnly_toG_0x0 );
2372 DO_D( VPEXTRW_128_EregOnly_toG_0x7 );
2373 DO_D( VPMINUW_128 );
2374 DO_D( VPHMINPOSUW_128 );
2375 DO_D( VPMAXSW_128 );
2376 DO_D( VPMINSW_128 );
2377 DO_D( VPMAXUB_128 );
2378 DO_D( VPEXTRB_GtoE_128_0x0 );
2379 DO_D( VPEXTRB_GtoE_128_0x1 );
2380 DO_D( VPEXTRB_GtoE_128_0x2 );
2381 DO_D( VPEXTRB_GtoE_128_0x3 );
2382 DO_D( VPEXTRB_GtoE_128_0x4 );
2383 DO_D( VPEXTRB_GtoE_128_0x9 );
2384 DO_D( VPEXTRB_GtoE_128_0xE );
2385 DO_D( VPEXTRB_GtoE_128_0xF );
2386 DO_D( VPMINUB_128 );
2387 DO_D( VPMAXSB_128 );
2388 DO_D( VPMINSB_128 );
2389 DO_D( VPERM2F128_0x00 );
2390 DO_D( VPERM2F128_0xFF );
2391 DO_D( VPERM2F128_0x30 );
2392 DO_D( VPERM2F128_0x21 );
2393 DO_D( VPERM2F128_0x12 );
2394 DO_D( VPERM2F128_0x03 );
2395 DO_D( VPERM2F128_0x85 );
2396 DO_D( VPERM2F128_0x5A );
2397 DO_D( VPERMILPD_256_0x0 );
2398 DO_D( VPERMILPD_256_0xF );
2399 DO_D( VPERMILPD_256_0xA );
2400 DO_D( VPERMILPD_256_0x5 );
2401 DO_D( VPERMILPD_128_0x0 );
2402 DO_D( VPERMILPD_128_0x3 );
2403 DO_D( VUNPCKLPD_256 );
2404 DO_D( VUNPCKHPD_256 );
2405 DO_D( VSHUFPS_0x39_256 );
2406 DO_D( VUNPCKLPS_256 );
2407 DO_D( VUNPCKHPS_256 );
2408 DO_D( VXORPD_256 );
2409 DO_D( VBROADCASTSD_256 );
2410 DO_D( VCMPPD_128_0x4 );
2411 DO_D( VCVTDQ2PD_128 );
2412 DO_D( VDIVPD_128 );
2413 DO_D( VANDPD_256 );
2414 DO_D( VPMOVSXBW_128 );
2415 DO_D( VPSUBUSW_128 );
2416 DO_D( VPSUBSW_128 );
2417 DO_D( VPCMPEQW_128 );
2418 DO_D( VPADDB_128 );
2419 DO_D( VMOVAPS_EtoG_256 );
2420 DO_D( VCVTDQ2PD_256 );
2421 DO_D( VMOVHPD_128_LoadForm );
2422 DO_D( VCVTPD2PS_256 );
2423 DO_D( VPUNPCKHDQ_128 );
2424 DO_D( VBROADCASTSS_128 );
2425 DO_D( VPMOVSXDQ_128 );
2426 DO_D( VPMOVSXWD_128 );
2427 DO_D( VDIVPS_128 );
2428 DO_D( VANDPS_256 );
2429 DO_D( VXORPS_256 );
2430 DO_D( VORPS_256 );
2431 DO_D( VANDNPD_256 );
2432 DO_D( VANDNPS_256 );
2433 DO_D( VORPD_256 );
2434 DO_D( VPERMILPS_256_0x0F );
2435 DO_D( VPERMILPS_256_0xFA );
2436 DO_D( VPERMILPS_256_0xA3 );
2437 DO_D( VPERMILPS_256_0x5A );
2438 DO_D( VPMULHW_128 );
2439 DO_D( VPUNPCKHQDQ_128 );
2440 DO_D( VPSRAW_0x05_128 );
2441 DO_D( VPCMPGTD_128 );
2442 DO_D( VPMOVZXBD_128 );
2443 DO_D( VPMOVSXBD_128 );
2444 DO_D( VPINSRB_128_1of3 );
2445 DO_D( VPINSRB_128_2of3 );
2446 DO_D( VPINSRB_128_3of3 );
2447 DO_D( VCOMISD_128 );
2448 DO_D( VCOMISS_128 );
2449 DO_D( VMOVUPS_YMM_to_YMMorMEM );
2450 DO_D( VDPPD_128_1of4 );
2451 DO_D( VDPPD_128_2of4 );
2452 DO_D( VDPPD_128_3of4 );
2453 DO_D( VDPPD_128_4of4 );
2454 DO_D( VPINSRW_128_1of4 );
2455 DO_D( VPINSRW_128_2of4 );
2456 DO_D( VPINSRW_128_3of4 );
2457 DO_D( VPINSRW_128_4of4 );
2458 DO_D( VBROADCASTSS_256 );
2459 DO_D( VPALIGNR_128_1of3 );
2460 DO_D( VPALIGNR_128_2of3 );
2461 DO_D( VPALIGNR_128_3of3 );
2462 DO_D( VMOVSD_REG_XMM );
2463 DO_D( VMOVSS_REG_XMM );
2464 DO_D( VMOVLPD_128_M64_XMM_XMM );
2465 DO_D( VMOVLPD_128_XMM_M64 );
2466 DO_D( VSHUFPD_128_1of2 );
2467 DO_D( VSHUFPD_128_2of2 );
2468 DO_D( VSHUFPD_256_1of2 );
2469 DO_D( VSHUFPD_256_2of2 );
2470 DO_D( VPERMILPS_128_0x00 );
2471 DO_D( VPERMILPS_128_0xFE );
2472 DO_D( VPERMILPS_128_0x30 );
2473 DO_D( VPERMILPS_128_0x21 );
2474 DO_D( VPERMILPS_128_0xD7 );
2475 DO_D( VPERMILPS_128_0xB5 );
2476 DO_D( VPERMILPS_128_0x85 );
2477 DO_D( VPERMILPS_128_0x29 );
2478 DO_D( VBLENDPS_128_1of3 );
2479 DO_D( VBLENDPS_128_2of3 );
2480 DO_D( VBLENDPS_128_3of3 );
2481 DO_D( VBLENDPD_128_1of2 );
2482 DO_D( VBLENDPD_128_2of2 );
2483 DO_D( VBLENDPD_256_1of3 );
2484 DO_D( VBLENDPD_256_2of3 );
2485 DO_D( VBLENDPD_256_3of3 );
2486 DO_D( VPBLENDW_128_0x00 );
2487 DO_D( VPBLENDW_128_0xFE );
2488 DO_D( VPBLENDW_128_0x30 );
2489 DO_D( VPBLENDW_128_0x21 );
2490 DO_D( VPBLENDW_128_0xD7 );
2491 DO_D( VPBLENDW_128_0xB5 );
2492 DO_D( VPBLENDW_128_0x85 );
2493 DO_D( VPBLENDW_128_0x29 );
2494 DO_D( VMOVUPS_EtoG_256 );
2495 DO_D( VSQRTSS_128 );
2496 DO_D( VSQRTPS_128 );
2497 DO_D( VSQRTPS_256 );
2498 DO_D( VSQRTPD_128 );
2499 DO_D( VSQRTPD_256 );
2500 DO_D( VRSQRTSS_128 );
2501 DO_D( VRSQRTPS_128 );
2502 DO_D( VRSQRTPS_256 );
2503 DO_D( VMOVDQU_GtoE_256 );
2504 DO_D( VCVTPS2PD_256 );
2505 DO_D( VCVTTPS2DQ_128 );
2506 DO_D( VCVTTPS2DQ_256 );
2507 DO_D( VCVTDQ2PS_128 );
2508 DO_D( VCVTDQ2PS_256 );
2509 DO_D( VCVTTPD2DQ_128 );
2510 DO_D( VCVTTPD2DQ_256 );
2511 DO_D( VCVTPD2DQ_128 );
2512 DO_D( VCVTPD2DQ_256 );
2513 DO_D( VMOVSLDUP_128 );
2514 DO_D( VMOVSLDUP_256 );
2515 DO_D( VMOVSHDUP_128 );
2516 DO_D( VMOVSHDUP_256 );
2517 DO_D( VPERMILPS_VAR_128 );
2518 DO_D( VPERMILPD_VAR_128 );
2519 DO_D( VPERMILPS_VAR_256 );
2520 DO_D( VPERMILPD_VAR_256 );
2521 DO_D( VPSLLW_128 );
2522 DO_D( VPSRLW_128 );
2523 DO_D( VPSRAW_128 );
2524 DO_D( VPSLLD_128 );
2525 DO_D( VPSRLD_128 );
2526 DO_D( VPSRAD_128 );
2527 DO_D( VPSLLQ_128 );
2528 DO_D( VPSRLQ_128 );
2529 DO_D( VROUNDPS_128_0x0 );
2530 DO_D( VROUNDPS_128_0x1 );
2531 DO_D( VROUNDPS_128_0x2 );
2532 DO_D( VROUNDPS_128_0x3 );
2533 DO_D( VROUNDPS_128_0x4 );
2534 DO_D( VROUNDPS_256_0x0 );
2535 DO_D( VROUNDPS_256_0x1 );
2536 DO_D( VROUNDPS_256_0x2 );
2537 DO_D( VROUNDPS_256_0x3 );
2538 DO_D( VROUNDPS_256_0x4 );
2539 DO_D( VROUNDPD_128_0x0 );
2540 DO_D( VROUNDPD_128_0x1 );
2541 DO_D( VROUNDPD_128_0x2 );
2542 DO_D( VROUNDPD_128_0x3 );
2543 DO_D( VROUNDPD_128_0x4 );
2544 DO_D( VROUNDPD_256_0x0 );
2545 DO_D( VROUNDPD_256_0x1 );
2546 DO_D( VROUNDPD_256_0x2 );
2547 DO_D( VROUNDPD_256_0x3 );
2548 DO_D( VROUNDPD_256_0x4 );
2549 DO_D( VROUNDSS_0x0 );
2550 DO_D( VROUNDSS_0x1 );
2551 DO_D( VROUNDSS_0x2 );
2552 DO_D( VROUNDSS_0x3 );
2553 DO_D( VROUNDSS_0x4 );
2554 DO_D( VROUNDSS_0x5 );
2555 DO_D( VROUNDSD_0x0 );
2556 DO_D( VROUNDSD_0x1 );
2557 DO_D( VROUNDSD_0x2 );
2558 DO_D( VROUNDSD_0x3 );
2559 DO_D( VROUNDSD_0x4 );
2560 DO_D( VROUNDSD_0x5 );
2561 DO_D( VPTEST_128_1 );
2562 DO_D( VPTEST_128_2 );
2563 DO_D( VPTEST_256_1 );
2564 DO_D( VPTEST_256_2 );
2565 DO_D( VTESTPS_128_1 );
2566 DO_D( VTESTPS_128_2 );
2567 DO_N( 10, VTESTPS_128_3 );
2568 DO_D( VTESTPS_256_1 );
2569 DO_D( VTESTPS_256_2 );
2570 DO_N( 10, VTESTPS_256_3 );
2571 DO_D( VTESTPD_128_1 );
2572 DO_D( VTESTPD_128_2 );
2573 DO_N( 10, VTESTPD_128_3 );
2574 DO_D( VTESTPD_256_1 );
2575 DO_D( VTESTPD_256_2 );
2576 DO_N( 10, VTESTPD_256_3 );
2577 DO_D( VBLENDVPS_128 );
2578 DO_D( VBLENDVPS_256 );
2579 DO_D( VBLENDVPD_128 );
2580 DO_D( VBLENDVPD_256 );
2581 DO_D( VPMULDQ_128 );
2582 DO_D( VCMPPD_256_0x4 );
2583 DO_D( VCMPPS_128_0x4 );
2584 DO_D( VCMPPS_256_0x4 );
2585 DO_D( VPCMPGTB_128 );
2586 DO_D( VPCMPGTW_128 );
2587 DO_D( VPMADDWD_128 );
2588 DO_D( VADDSUBPS_128 );
2589 DO_D( VADDSUBPS_256 );
2590 DO_D( VADDSUBPD_128 );
2591 DO_D( VADDSUBPD_256 );
2592 DO_D( VCVTSS2SI_64 );
2593 DO_D( VCVTSS2SI_32 );
2594 DO_D( VCVTSD2SI_32 );
2595 DO_D( VCVTSD2SI_64 );
2596 DO_D( VDPPS_128_1of4 );
2597 DO_D( VDPPS_128_2of4 );
2598 DO_D( VDPPS_128_3of4 );
2599 DO_D( VDPPS_128_4of4 );
2600 DO_D( VDPPS_256_1of4 );
2601 DO_D( VDPPS_256_2of4 );
2602 DO_D( VDPPS_256_3of4 );
2603 DO_D( VDPPS_256_4of4 );
2604 DO_D( VHADDPS_128 );
2605 DO_D( VHADDPS_256 );
2606 DO_D( VHADDPD_128 );
2607 DO_D( VHADDPD_256 );
2608 DO_D( VHSUBPS_128 );
2609 DO_D( VHSUBPS_256 );
2610 DO_D( VHSUBPD_128 );
2611 DO_D( VHSUBPD_256 );
2612 DO_D( VEXTRACTPS_0x0 );
2613 DO_D( VEXTRACTPS_0x1 );
2614 DO_D( VEXTRACTPS_0x2 );
2615 DO_D( VEXTRACTPS_0x3 );
2616 DO_D( VLDDQU_128 );
2617 DO_D( VLDDQU_256 );
2618 DO_D( VMAXPS_256 );
2619 DO_D( VMAXPD_128 );
2620 DO_D( VMAXPD_256 );
2621 DO_D( VMINPS_256 );
2622 DO_D( VMINPD_128 );
2623 DO_D( VMINPD_256 );
2624 DO_D( VMOVHPS_128_StoreForm );
2625 DO_D( VMOVNTDQ_256 );
2626 DO_D( VMOVHPS_128_LoadForm );
2627 DO_D( VMOVNTDQA_128 );
2628 DO_D( VMASKMOVDQU_128 );
2629 DO_D( VMOVMSKPD_128 );
2630 DO_D( VMOVMSKPD_256 );
2631 DO_D( VMOVMSKPS_128 );
2632 DO_D( VMOVMSKPS_256 );
2633 DO_D( VMOVNTPD_128 );
2634 DO_D( VMOVNTPD_256 );
2635 DO_D( VMOVNTPS_128 );
2636 DO_D( VMOVNTPS_256 );
2637 DO_D( VPACKSSWB_128 );
2638 DO_D( VPAVGB_128 );
2639 DO_D( VPAVGW_128 );
2640 DO_D( VPADDSB_128 );
2641 DO_D( VPADDSW_128 );
2642 DO_D( VPHADDW_128 );
2643 DO_D( VPHADDD_128 );
2644 DO_D( VPHADDSW_128 );
2645 DO_D( VPMADDUBSW_128 );
2646 DO_D( VPHSUBW_128 );
2647 DO_D( VPHSUBD_128 );
2648 DO_D( VPHSUBSW_128 );
2649 DO_D( VPABSB_128 );
2650 DO_D( VPABSW_128 );
2651 DO_D( VPMOVSXBQ_128 );
2652 DO_D( VPMOVSXWQ_128 );
2653 DO_D( VPACKUSDW_128 );
2654 DO_D( VPMOVZXBQ_128 );
2655 DO_D( VPMOVZXWQ_128 );
2656 DO_D( VPMOVZXDQ_128 );
2657 DO_D( VMPSADBW_128_0x0 );
2658 DO_D( VMPSADBW_128_0x1 );
2659 DO_D( VMPSADBW_128_0x2 );
2660 DO_D( VMPSADBW_128_0x3 );
2661 DO_D( VMPSADBW_128_0x4 );
2662 DO_D( VMPSADBW_128_0x5 );
2663 DO_D( VMPSADBW_128_0x6 );
2664 DO_D( VMPSADBW_128_0x7 );
2665 DO_D( VMOVDDUP_YMMorMEM256_to_YMM );
2666 DO_D( VMOVLPS_128_M64_XMM_XMM );
2667 DO_D( VMOVLPS_128_XMM_M64 );
2668 DO_D( VRCPSS_128 );
2669 DO_D( VRCPPS_128 );
2670 DO_D( VRCPPS_256 );
2671 DO_D( VPSADBW_128 );
2672 DO_D( VPSIGNB_128 );
2673 DO_D( VPSIGNW_128 );
2674 DO_D( VPSIGND_128 );
2675 DO_D( VPMULHRSW_128 );
2676 DO_D( VBROADCASTF128 );
2677 DO_D( VPEXTRW_128_0x0 );
2678 DO_D( VPEXTRW_128_0x1 );
2679 DO_D( VPEXTRW_128_0x2 );
2680 DO_D( VPEXTRW_128_0x3 );
2681 DO_D( VPEXTRW_128_0x4 );
2682 DO_D( VPEXTRW_128_0x5 );
2683 DO_D( VPEXTRW_128_0x6 );
2684 DO_D( VPEXTRW_128_0x7 );
2685 DO_D( VAESENC );
2686 DO_D( VAESENCLAST );
2687 DO_D( VAESDEC );
2688 DO_D( VAESDECLAST );
2689 DO_D( VAESIMC );
2690 DO_D( VAESKEYGENASSIST_0x00 );
2691 DO_D( VAESKEYGENASSIST_0x31 );
2692 DO_D( VAESKEYGENASSIST_0xB2 );
2693 DO_D( VAESKEYGENASSIST_0xFF );
2694 DO_D( VPCLMULQDQ_0x00 );
2695 DO_D( VPCLMULQDQ_0x01 );
2696 DO_D( VPCLMULQDQ_0x10 );
2697 DO_D( VPCLMULQDQ_0x11 );
2698 DO_D( VPCLMULQDQ_0xFF );
2699 DO_D( VCMPSS_128_0x9 );
2700 DO_D( VMASKMOVPS_128_LoadForm );
2701 DO_D( VMASKMOVPS_256_LoadForm );
2702 DO_D( VMASKMOVPD_128_LoadForm );
2703 DO_D( VMASKMOVPD_256_LoadForm );
2704 return 0;
2705 }
2706
2707