• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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