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