• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <assert.h>
5 #include "tests/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 #if defined(VGO_darwin)
13 UChar randArray[1027] __attribute__((used));
14 #else
15 UChar _randArray[1027] __attribute__((used));
16 #endif
17 
18 #define IS_32_ALIGNED(_ptr) (0 == (0x1F & (UWord)(_ptr)))
19 
20 typedef  union { UChar u8[32];  UInt u32[8];  }  YMM;
21 
22 typedef  struct {  YMM a1; YMM a2; YMM a3; YMM a4; ULong u64; }  Block;
23 
showYMM(YMM * vec)24 void showYMM ( YMM* vec )
25 {
26    int i;
27    assert(IS_32_ALIGNED(vec));
28    for (i = 31; i >= 0; i--) {
29       printf("%02x", (UInt)vec->u8[i]);
30       if (i > 0 && 0 == ((i+0) & 7)) printf(".");
31    }
32 }
33 
showBlock(char * msg,Block * block)34 void showBlock ( char* msg, Block* block )
35 {
36    printf("  %s\n", msg);
37    printf("    "); showYMM(&block->a1); printf("\n");
38    printf("    "); showYMM(&block->a2); printf("\n");
39    printf("    "); showYMM(&block->a3); printf("\n");
40    printf("    "); showYMM(&block->a4); printf("\n");
41    printf("    %016llx\n", block->u64);
42 }
43 
randUChar(void)44 UChar randUChar ( void )
45 {
46    static UInt seed = 80021;
47    seed = 1103515245 * seed + 12345;
48    return (seed >> 17) & 0xFF;
49 }
50 
randBlock(Block * b)51 void randBlock ( Block* b )
52 {
53    int i;
54    UChar* p = (UChar*)b;
55    for (i = 0; i < sizeof(Block); i++)
56       p[i] = randUChar();
57 }
58 
59 
60 /* Generate a function test_NAME, that tests the given insn, in both
61    its mem and reg forms.  The reg form of the insn may mention, as
62    operands only %ymm6, %ymm7, %ymm8, %ymm9 and %r14.  The mem form of
63    the insn may mention as operands only (%rax), %ymm7, %ymm8, %ymm9
64    and %r14.  It's OK for the insn to clobber ymm0, as this is needed
65    for testing PCMPxSTRx, and ymm6, as this is needed for testing
66    MOVMASK variants. */
67 
68 #define GEN_test_RandM(_name, _reg_form, _mem_form)   \
69     \
70     __attribute__ ((noinline)) static void test_##_name ( void )   \
71     { \
72        Block* b = memalign32(sizeof(Block)); \
73        randBlock(b); \
74        printf("%s(reg)\n", #_name); \
75        showBlock("before", b); \
76        __asm__ __volatile__( \
77           "vmovdqa   0(%0),%%ymm7"  "\n\t" \
78           "vmovdqa  32(%0),%%ymm8"  "\n\t" \
79           "vmovdqa  64(%0),%%ymm6"  "\n\t" \
80           "vmovdqa  96(%0),%%ymm9"  "\n\t" \
81           "movq    128(%0),%%r14"   "\n\t" \
82           _reg_form   "\n\t" \
83           "vmovdqa %%ymm7,  0(%0)"  "\n\t" \
84           "vmovdqa %%ymm8, 32(%0)"  "\n\t" \
85           "vmovdqa %%ymm6, 64(%0)"  "\n\t" \
86           "vmovdqa %%ymm9, 96(%0)"  "\n\t" \
87           "movq    %%r14, 128(%0)"  "\n\t" \
88           : /*OUT*/  \
89           : /*IN*/"r"(b) \
90           : /*TRASH*/"xmm0","xmm7","xmm8","xmm6","xmm9","r14","memory","cc" \
91        ); \
92        showBlock("after", b); \
93        randBlock(b); \
94        printf("%s(mem)\n", #_name); \
95        showBlock("before", b); \
96        __asm__ __volatile__( \
97           "leaq      0(%0),%%rax"  "\n\t" \
98           "vmovdqa  32(%0),%%ymm8"  "\n\t" \
99           "vmovdqa  64(%0),%%ymm7"  "\n\t" \
100           "vmovdqa  96(%0),%%ymm9"  "\n\t" \
101           "movq    128(%0),%%r14"   "\n\t" \
102           _mem_form   "\n\t" \
103           "vmovdqa %%ymm8, 32(%0)"  "\n\t" \
104           "vmovdqa %%ymm7, 64(%0)"  "\n\t" \
105           "vmovdqa %%ymm9, 96(%0)"  "\n\t" \
106           "movq    %%r14, 128(%0)"  "\n\t" \
107           : /*OUT*/  \
108           : /*IN*/"r"(b) \
109           : /*TRASH*/"xmm6", \
110                      "xmm0","xmm8","xmm7","xmm9","r14","rax","memory","cc" \
111        ); \
112        showBlock("after", b); \
113        printf("\n"); \
114        free(b); \
115     }
116 
117 #define GEN_test_Ronly(_name, _reg_form) \
118    GEN_test_RandM(_name, _reg_form, "")
119 #define GEN_test_Monly(_name, _mem_form) \
120    GEN_test_RandM(_name, "", _mem_form)
121 
122 /* Vector integers promoved from 128-bit in AVX to 256-bit in AVX2.  */
123 
124 GEN_test_RandM(VPOR_256,
125                "vpor %%ymm6,  %%ymm8, %%ymm7",
126                "vpor (%%rax), %%ymm8, %%ymm7")
127 
128 GEN_test_RandM(VPXOR_256,
129                "vpxor %%ymm6,  %%ymm8, %%ymm7",
130                "vpxor (%%rax), %%ymm8, %%ymm7")
131 
132 GEN_test_RandM(VPSUBB_256,
133                "vpsubb %%ymm6,  %%ymm8, %%ymm7",
134                "vpsubb (%%rax), %%ymm8, %%ymm7")
135 
136 GEN_test_RandM(VPSUBD_256,
137                "vpsubd %%ymm6,  %%ymm8, %%ymm7",
138                "vpsubd (%%rax), %%ymm8, %%ymm7")
139 
140 GEN_test_RandM(VPADDD_256,
141                "vpaddd %%ymm6,  %%ymm8, %%ymm7",
142                "vpaddd (%%rax), %%ymm8, %%ymm7")
143 
144 GEN_test_RandM(VPMOVZXWD_256,
145                "vpmovzxwd %%xmm6,  %%ymm8",
146                "vpmovzxwd (%%rax), %%ymm8")
147 
148 GEN_test_RandM(VPMOVZXBW_256,
149                "vpmovzxbw %%xmm6,  %%ymm8",
150                "vpmovzxbw (%%rax), %%ymm8")
151 
152 GEN_test_RandM(VPBLENDVB_256,
153                "vpblendvb %%ymm9, %%ymm6,  %%ymm8, %%ymm7",
154                "vpblendvb %%ymm9, (%%rax), %%ymm8, %%ymm7")
155 
156 GEN_test_RandM(VPMINSD_256,
157                "vpminsd %%ymm6,  %%ymm8, %%ymm7",
158                "vpminsd (%%rax), %%ymm8, %%ymm7")
159 
160 GEN_test_RandM(VPMAXSD_256,
161                "vpmaxsd %%ymm6,  %%ymm8, %%ymm7",
162                "vpmaxsd (%%rax), %%ymm8, %%ymm7")
163 
164 GEN_test_RandM(VPSHUFB_256,
165                "vpshufb %%ymm6,  %%ymm8, %%ymm7",
166                "vpshufb (%%rax), %%ymm8, %%ymm7")
167 
168 GEN_test_RandM(VPUNPCKLBW_256,
169                "vpunpcklbw %%ymm6,  %%ymm8, %%ymm7",
170                "vpunpcklbw (%%rax), %%ymm8, %%ymm7")
171 
172 GEN_test_RandM(VPUNPCKHBW_256,
173                "vpunpckhbw %%ymm6,  %%ymm8, %%ymm7",
174                "vpunpckhbw (%%rax), %%ymm8, %%ymm7")
175 
176 GEN_test_RandM(VPABSD_256,
177                "vpabsd %%ymm6,  %%ymm8",
178                "vpabsd (%%rax), %%ymm8")
179 
180 GEN_test_RandM(VPACKUSWB_256,
181                "vpackuswb %%ymm9,  %%ymm8, %%ymm7",
182                "vpackuswb (%%rax), %%ymm8, %%ymm7")
183 
184 GEN_test_Ronly(VPMOVMSKB_256,
185                "vpmovmskb %%ymm8, %%r14")
186 
187 GEN_test_RandM(VPAND_256,
188                "vpand %%ymm9,  %%ymm8, %%ymm7",
189                "vpand (%%rax), %%ymm8, %%ymm7")
190 
191 GEN_test_RandM(VPCMPEQB_256,
192                "vpcmpeqb %%ymm9,  %%ymm8, %%ymm7",
193                "vpcmpeqb (%%rax), %%ymm8, %%ymm7")
194 
195 GEN_test_RandM(VPSHUFLW_0x39_256,
196                "vpshuflw $0x39, %%ymm9,  %%ymm7",
197                "vpshuflw $0xC6, (%%rax), %%ymm8")
198 
199 GEN_test_RandM(VPSHUFHW_0x39_256,
200                "vpshufhw $0x39, %%ymm9,  %%ymm7",
201                "vpshufhw $0xC6, (%%rax), %%ymm8")
202 
203 GEN_test_RandM(VPMULLW_256,
204                "vpmullw %%ymm9,  %%ymm8, %%ymm7",
205                "vpmullw (%%rax), %%ymm8, %%ymm7")
206 
207 GEN_test_RandM(VPADDUSW_256,
208                "vpaddusw %%ymm9,  %%ymm8, %%ymm7",
209                "vpaddusw (%%rax), %%ymm8, %%ymm7")
210 
211 GEN_test_RandM(VPMULHUW_256,
212                "vpmulhuw %%ymm9,  %%ymm8, %%ymm7",
213                "vpmulhuw (%%rax), %%ymm8, %%ymm7")
214 
215 GEN_test_RandM(VPADDUSB_256,
216                "vpaddusb %%ymm9,  %%ymm8, %%ymm7",
217                "vpaddusb (%%rax), %%ymm8, %%ymm7")
218 
219 GEN_test_RandM(VPUNPCKLWD_256,
220                "vpunpcklwd %%ymm6,  %%ymm8, %%ymm7",
221                "vpunpcklwd (%%rax), %%ymm8, %%ymm7")
222 
223 GEN_test_RandM(VPUNPCKHWD_256,
224                "vpunpckhwd %%ymm6,  %%ymm8, %%ymm7",
225                "vpunpckhwd (%%rax), %%ymm8, %%ymm7")
226 
227 GEN_test_Ronly(VPSLLD_0x05_256,
228                "vpslld $0x5, %%ymm9,  %%ymm7")
229 
230 GEN_test_Ronly(VPSRLD_0x05_256,
231                "vpsrld $0x5, %%ymm9,  %%ymm7")
232 
233 GEN_test_Ronly(VPSRAD_0x05_256,
234                "vpsrad $0x5, %%ymm9,  %%ymm7")
235 
236 GEN_test_RandM(VPSUBUSB_256,
237                "vpsubusb %%ymm9,  %%ymm8, %%ymm7",
238                "vpsubusb (%%rax), %%ymm8, %%ymm7")
239 
240 GEN_test_RandM(VPSUBSB_256,
241                "vpsubsb %%ymm9,  %%ymm8, %%ymm7",
242                "vpsubsb (%%rax), %%ymm8, %%ymm7")
243 
244 GEN_test_Ronly(VPSRLDQ_0x05_256,
245                "vpsrldq $0x5, %%ymm9,  %%ymm7")
246 
247 GEN_test_Ronly(VPSLLDQ_0x05_256,
248                "vpslldq $0x5, %%ymm9,  %%ymm7")
249 
250 GEN_test_RandM(VPANDN_256,
251                "vpandn %%ymm9,  %%ymm8, %%ymm7",
252                "vpandn (%%rax), %%ymm8, %%ymm7")
253 
254 GEN_test_RandM(VPUNPCKLQDQ_256,
255                "vpunpcklqdq %%ymm6,  %%ymm8, %%ymm7",
256                "vpunpcklqdq (%%rax), %%ymm8, %%ymm7")
257 
258 GEN_test_Ronly(VPSRLW_0x05_256,
259                "vpsrlw $0x5, %%ymm9,  %%ymm7")
260 
261 GEN_test_Ronly(VPSLLW_0x05_256,
262                "vpsllw $0x5, %%ymm9,  %%ymm7")
263 
264 GEN_test_RandM(VPADDW_256,
265                "vpaddw %%ymm6,  %%ymm8, %%ymm7",
266                "vpaddw (%%rax), %%ymm8, %%ymm7")
267 
268 GEN_test_RandM(VPACKSSDW_256,
269                "vpackssdw %%ymm9,  %%ymm8, %%ymm7",
270                "vpackssdw (%%rax), %%ymm8, %%ymm7")
271 
272 GEN_test_RandM(VPUNPCKLDQ_256,
273                "vpunpckldq %%ymm6,  %%ymm8, %%ymm7",
274                "vpunpckldq (%%rax), %%ymm8, %%ymm7")
275 
276 GEN_test_RandM(VPCMPEQD_256,
277                "vpcmpeqd %%ymm6,  %%ymm8, %%ymm7",
278                "vpcmpeqd (%%rax), %%ymm8, %%ymm7")
279 
280 GEN_test_RandM(VPSHUFD_0x39_256,
281                "vpshufd $0x39, %%ymm9,  %%ymm8",
282                "vpshufd $0xC6, (%%rax), %%ymm7")
283 
284 GEN_test_RandM(VPADDQ_256,
285                "vpaddq %%ymm6,  %%ymm8, %%ymm7",
286                "vpaddq (%%rax), %%ymm8, %%ymm7")
287 
288 GEN_test_RandM(VPSUBQ_256,
289                "vpsubq %%ymm6,  %%ymm8, %%ymm7",
290                "vpsubq (%%rax), %%ymm8, %%ymm7")
291 
292 GEN_test_RandM(VPSUBW_256,
293                "vpsubw %%ymm6,  %%ymm8, %%ymm7",
294                "vpsubw (%%rax), %%ymm8, %%ymm7")
295 
296 GEN_test_RandM(VPCMPEQQ_256,
297                "vpcmpeqq %%ymm6,  %%ymm8, %%ymm7",
298                "vpcmpeqq (%%rax), %%ymm8, %%ymm7")
299 
300 GEN_test_RandM(VPCMPGTQ_256,
301                "vpcmpgtq %%ymm6,  %%ymm8, %%ymm7",
302                "vpcmpgtq (%%rax), %%ymm8, %%ymm7")
303 
304 GEN_test_Ronly(VPSRLQ_0x05_256,
305                "vpsrlq $0x5, %%ymm9,  %%ymm7")
306 
307 GEN_test_RandM(VPMULUDQ_256,
308                "vpmuludq %%ymm6,  %%ymm8, %%ymm7",
309                "vpmuludq (%%rax), %%ymm8, %%ymm7")
310 
311 GEN_test_RandM(VPMULDQ_256,
312                "vpmuldq %%ymm6,  %%ymm8, %%ymm7",
313                "vpmuldq (%%rax), %%ymm8, %%ymm7")
314 
315 GEN_test_Ronly(VPSLLQ_0x05_256,
316                "vpsllq $0x5, %%ymm9,  %%ymm7")
317 
318 GEN_test_RandM(VPMAXUD_256,
319                "vpmaxud %%ymm6,  %%ymm8, %%ymm7",
320                "vpmaxud (%%rax), %%ymm8, %%ymm7")
321 
322 GEN_test_RandM(VPMINUD_256,
323                "vpminud %%ymm6,  %%ymm8, %%ymm7",
324                "vpminud (%%rax), %%ymm8, %%ymm7")
325 
326 GEN_test_RandM(VPMULLD_256,
327                "vpmulld %%ymm6,  %%ymm8, %%ymm7",
328                "vpmulld (%%rax), %%ymm8, %%ymm7")
329 
330 GEN_test_RandM(VPMAXUW_256,
331                "vpmaxuw %%ymm6,  %%ymm8, %%ymm7",
332                "vpmaxuw (%%rax), %%ymm8, %%ymm7")
333 
334 GEN_test_RandM(VPMINUW_256,
335                "vpminuw %%ymm6,  %%ymm8, %%ymm7",
336                "vpminuw (%%rax), %%ymm8, %%ymm7")
337 
338 GEN_test_RandM(VPMAXSW_256,
339                "vpmaxsw %%ymm6,  %%ymm8, %%ymm7",
340                "vpmaxsw (%%rax), %%ymm8, %%ymm7")
341 
342 GEN_test_RandM(VPMINSW_256,
343                "vpminsw %%ymm6,  %%ymm8, %%ymm7",
344                "vpminsw (%%rax), %%ymm8, %%ymm7")
345 
346 GEN_test_RandM(VPMAXUB_256,
347                "vpmaxub %%ymm6,  %%ymm8, %%ymm7",
348                "vpmaxub (%%rax), %%ymm8, %%ymm7")
349 
350 GEN_test_RandM(VPMINUB_256,
351                "vpminub %%ymm6,  %%ymm8, %%ymm7",
352                "vpminub (%%rax), %%ymm8, %%ymm7")
353 
354 GEN_test_RandM(VPMAXSB_256,
355                "vpmaxsb %%ymm6,  %%ymm8, %%ymm7",
356                "vpmaxsb (%%rax), %%ymm8, %%ymm7")
357 
358 GEN_test_RandM(VPMINSB_256,
359                "vpminsb %%ymm6,  %%ymm8, %%ymm7",
360                "vpminsb (%%rax), %%ymm8, %%ymm7")
361 
362 GEN_test_RandM(VPMOVSXBW_256,
363                "vpmovsxbw %%xmm6,  %%ymm8",
364                "vpmovsxbw (%%rax), %%ymm8")
365 
366 GEN_test_RandM(VPSUBUSW_256,
367                "vpsubusw %%ymm9,  %%ymm8, %%ymm7",
368                "vpsubusw (%%rax), %%ymm8, %%ymm7")
369 
370 GEN_test_RandM(VPSUBSW_256,
371                "vpsubsw %%ymm9,  %%ymm8, %%ymm7",
372                "vpsubsw (%%rax), %%ymm8, %%ymm7")
373 
374 GEN_test_RandM(VPCMPEQW_256,
375                "vpcmpeqw %%ymm6,  %%ymm8, %%ymm7",
376                "vpcmpeqw (%%rax), %%ymm8, %%ymm7")
377 
378 GEN_test_RandM(VPADDB_256,
379                "vpaddb %%ymm6,  %%ymm8, %%ymm7",
380                "vpaddb (%%rax), %%ymm8, %%ymm7")
381 
382 GEN_test_RandM(VPUNPCKHDQ_256,
383                "vpunpckhdq %%ymm6,  %%ymm8, %%ymm7",
384                "vpunpckhdq (%%rax), %%ymm8, %%ymm7")
385 
386 GEN_test_RandM(VPMOVSXDQ_256,
387                "vpmovsxdq %%xmm6,  %%ymm8",
388                "vpmovsxdq (%%rax), %%ymm8")
389 
390 GEN_test_RandM(VPMOVSXWD_256,
391                "vpmovsxwd %%xmm6,  %%ymm8",
392                "vpmovsxwd (%%rax), %%ymm8")
393 
394 GEN_test_RandM(VPMULHW_256,
395                "vpmulhw %%ymm9,  %%ymm8, %%ymm7",
396                "vpmulhw (%%rax), %%ymm8, %%ymm7")
397 
398 GEN_test_RandM(VPUNPCKHQDQ_256,
399                "vpunpckhqdq %%ymm6,  %%ymm8, %%ymm7",
400                "vpunpckhqdq (%%rax), %%ymm8, %%ymm7")
401 
402 GEN_test_Ronly(VPSRAW_0x05_256,
403                "vpsraw $0x5, %%ymm9,  %%ymm7")
404 
405 GEN_test_RandM(VPCMPGTB_256,
406                "vpcmpgtb %%ymm6,  %%ymm8, %%ymm7",
407                "vpcmpgtb (%%rax), %%ymm8, %%ymm7")
408 
409 GEN_test_RandM(VPCMPGTW_256,
410                "vpcmpgtw %%ymm6,  %%ymm8, %%ymm7",
411                "vpcmpgtw (%%rax), %%ymm8, %%ymm7")
412 
413 GEN_test_RandM(VPCMPGTD_256,
414                "vpcmpgtd %%ymm6,  %%ymm8, %%ymm7",
415                "vpcmpgtd (%%rax), %%ymm8, %%ymm7")
416 
417 GEN_test_RandM(VPMOVZXBD_256,
418                "vpmovzxbd %%xmm6,  %%ymm8",
419                "vpmovzxbd (%%rax), %%ymm8")
420 
421 GEN_test_RandM(VPMOVSXBD_256,
422                "vpmovsxbd %%xmm6,  %%ymm8",
423                "vpmovsxbd (%%rax), %%ymm8")
424 
425 GEN_test_RandM(VPALIGNR_256_1of3,
426                "vpalignr $0, %%ymm6,  %%ymm8, %%ymm7",
427                "vpalignr $3, (%%rax), %%ymm8, %%ymm7")
428 GEN_test_RandM(VPALIGNR_256_2of3,
429                "vpalignr $6, %%ymm6,  %%ymm8, %%ymm7",
430                "vpalignr $9, (%%rax), %%ymm8, %%ymm7")
431 GEN_test_RandM(VPALIGNR_256_3of3,
432                "vpalignr $12, %%ymm6,  %%ymm8, %%ymm7",
433                "vpalignr $15, (%%rax), %%ymm8, %%ymm7")
434 
435 GEN_test_RandM(VPBLENDW_256_0x00,
436                "vpblendw $0x00, %%ymm6,  %%ymm8, %%ymm7",
437                "vpblendw $0x01, (%%rax), %%ymm8, %%ymm7")
438 GEN_test_RandM(VPBLENDW_256_0xFE,
439                "vpblendw $0xFE, %%ymm6,  %%ymm8, %%ymm7",
440                "vpblendw $0xFF, (%%rax), %%ymm8, %%ymm7")
441 GEN_test_RandM(VPBLENDW_256_0x30,
442                "vpblendw $0x30, %%ymm6,  %%ymm8, %%ymm7",
443                "vpblendw $0x03, (%%rax), %%ymm8, %%ymm7")
444 GEN_test_RandM(VPBLENDW_256_0x21,
445                "vpblendw $0x21, %%ymm6,  %%ymm8, %%ymm7",
446                "vpblendw $0x12, (%%rax), %%ymm8, %%ymm7")
447 GEN_test_RandM(VPBLENDW_256_0xD7,
448                "vpblendw $0xD7, %%ymm6,  %%ymm8, %%ymm7",
449                "vpblendw $0x6C, (%%rax), %%ymm8, %%ymm7")
450 GEN_test_RandM(VPBLENDW_256_0xB5,
451                "vpblendw $0xB5, %%ymm6,  %%ymm8, %%ymm7",
452                "vpblendw $0x4A, (%%rax), %%ymm8, %%ymm7")
453 GEN_test_RandM(VPBLENDW_256_0x85,
454                "vpblendw $0x85, %%ymm6,  %%ymm8, %%ymm7",
455                "vpblendw $0xDC, (%%rax), %%ymm8, %%ymm7")
456 GEN_test_RandM(VPBLENDW_256_0x29,
457                "vpblendw $0x29, %%ymm6,  %%ymm8, %%ymm7",
458                "vpblendw $0x92, (%%rax), %%ymm8, %%ymm7")
459 
460 GEN_test_RandM(VPSLLW_256,
461                "andl $15, %%r14d;"
462                "vmovd %%r14d, %%xmm6;"
463                "vpsllw %%xmm6,     %%ymm8, %%ymm9",
464                "andq $15, 128(%%rax);"
465                "vpsllw 128(%%rax), %%ymm8, %%ymm9")
466 
467 GEN_test_RandM(VPSRLW_256,
468                "andl $15, %%r14d;"
469                "vmovd %%r14d, %%xmm6;"
470                "vpsrlw %%xmm6,     %%ymm8, %%ymm9",
471                "andq $15, 128(%%rax);"
472                "vpsrlw 128(%%rax), %%ymm8, %%ymm9")
473 
474 GEN_test_RandM(VPSRAW_256,
475                "andl $31, %%r14d;"
476                "vmovd %%r14d, %%xmm6;"
477                "vpsraw %%xmm6,     %%ymm8, %%ymm9",
478                "andq $15, 128(%%rax);"
479                "vpsraw 128(%%rax), %%ymm8, %%ymm9")
480 
481 GEN_test_RandM(VPSLLD_256,
482                "andl $31, %%r14d;"
483                "vmovd %%r14d, %%xmm6;"
484                "vpslld %%xmm6,     %%ymm8, %%ymm9",
485                "andq $31, 128(%%rax);"
486                "vpslld 128(%%rax), %%ymm8, %%ymm9")
487 
488 GEN_test_RandM(VPSRLD_256,
489                "andl $31, %%r14d;"
490                "vmovd %%r14d, %%xmm6;"
491                "vpsrld %%xmm6,     %%ymm8, %%ymm9",
492                "andq $31, 128(%%rax);"
493                "vpsrld 128(%%rax), %%ymm8, %%ymm9")
494 
495 GEN_test_RandM(VPSRAD_256,
496                "andl $31, %%r14d;"
497                "vmovd %%r14d, %%xmm6;"
498                "vpsrad %%xmm6,     %%ymm8, %%ymm9",
499                "andq $31, 128(%%rax);"
500                "vpsrad 128(%%rax), %%ymm8, %%ymm9")
501 
502 GEN_test_RandM(VPSLLQ_256,
503                "andl $63, %%r14d;"
504                "vmovd %%r14d, %%xmm6;"
505                "vpsllq %%xmm6,     %%ymm8, %%ymm9",
506                "andq $63, 128(%%rax);"
507                "vpsllq 128(%%rax), %%ymm8, %%ymm9")
508 
509 GEN_test_RandM(VPSRLQ_256,
510                "andl $63, %%r14d;"
511                "vmovd %%r14d, %%xmm6;"
512                "vpsrlq %%xmm6,     %%ymm8, %%ymm9",
513                "andq $63, 128(%%rax);"
514                "vpsrlq 128(%%rax), %%ymm8, %%ymm9")
515 
516 GEN_test_RandM(VPMADDWD_256,
517                "vpmaddwd %%ymm6,  %%ymm8, %%ymm7",
518                "vpmaddwd (%%rax), %%ymm8, %%ymm7")
519 
520 GEN_test_Monly(VMOVNTDQA_256,
521                "vmovntdqa (%%rax), %%ymm9")
522 
523 GEN_test_RandM(VPACKSSWB_256,
524                "vpacksswb %%ymm6,  %%ymm8, %%ymm7",
525                "vpacksswb (%%rax), %%ymm8, %%ymm7")
526 
527 GEN_test_RandM(VPAVGB_256,
528                "vpavgb %%ymm6,  %%ymm8, %%ymm7",
529                "vpavgb (%%rax), %%ymm8, %%ymm7")
530 
531 GEN_test_RandM(VPAVGW_256,
532                "vpavgw %%ymm6,  %%ymm8, %%ymm7",
533                "vpavgw (%%rax), %%ymm8, %%ymm7")
534 
535 GEN_test_RandM(VPADDSB_256,
536                "vpaddsb %%ymm6,  %%ymm8, %%ymm7",
537                "vpaddsb (%%rax), %%ymm8, %%ymm7")
538 
539 GEN_test_RandM(VPADDSW_256,
540                "vpaddsw %%ymm6,  %%ymm8, %%ymm7",
541                "vpaddsw (%%rax), %%ymm8, %%ymm7")
542 
543 GEN_test_RandM(VPHADDW_256,
544                "vphaddw %%ymm6,  %%ymm8, %%ymm7",
545                "vphaddw (%%rax), %%ymm8, %%ymm7")
546 
547 GEN_test_RandM(VPHADDD_256,
548                "vphaddd %%ymm6,  %%ymm8, %%ymm7",
549                "vphaddd (%%rax), %%ymm8, %%ymm7")
550 
551 GEN_test_RandM(VPHADDSW_256,
552                "vphaddsw %%ymm6,  %%ymm8, %%ymm7",
553                "vphaddsw (%%rax), %%ymm8, %%ymm7")
554 
555 GEN_test_RandM(VPMADDUBSW_256,
556                "vpmaddubsw %%ymm6,  %%ymm8, %%ymm7",
557                "vpmaddubsw (%%rax), %%ymm8, %%ymm7")
558 
559 GEN_test_RandM(VPHSUBW_256,
560                "vphsubw %%ymm6,  %%ymm8, %%ymm7",
561                "vphsubw (%%rax), %%ymm8, %%ymm7")
562 
563 GEN_test_RandM(VPHSUBD_256,
564                "vphsubd %%ymm6,  %%ymm8, %%ymm7",
565                "vphsubd (%%rax), %%ymm8, %%ymm7")
566 
567 GEN_test_RandM(VPHSUBSW_256,
568                "vphsubsw %%ymm6,  %%ymm8, %%ymm7",
569                "vphsubsw (%%rax), %%ymm8, %%ymm7")
570 
571 GEN_test_RandM(VPABSB_256,
572                "vpabsb %%ymm6,  %%ymm7",
573                "vpabsb (%%rax), %%ymm7")
574 
575 GEN_test_RandM(VPABSW_256,
576                "vpabsw %%ymm6,  %%ymm7",
577                "vpabsw (%%rax), %%ymm7")
578 
579 GEN_test_RandM(VPMOVSXBQ_256,
580                "vpmovsxbq %%xmm6,  %%ymm8",
581                "vpmovsxbq (%%rax), %%ymm8")
582 
583 GEN_test_RandM(VPMOVSXWQ_256,
584                "vpmovsxwq %%xmm6,  %%ymm8",
585                "vpmovsxwq (%%rax), %%ymm8")
586 
587 GEN_test_RandM(VPACKUSDW_256,
588                "vpackusdw %%ymm6,  %%ymm8, %%ymm7",
589                "vpackusdw (%%rax), %%ymm8, %%ymm7")
590 
591 GEN_test_RandM(VPMOVZXBQ_256,
592                "vpmovzxbq %%xmm6,  %%ymm8",
593                "vpmovzxbq (%%rax), %%ymm8")
594 
595 GEN_test_RandM(VPMOVZXWQ_256,
596                "vpmovzxwq %%xmm6,  %%ymm8",
597                "vpmovzxwq (%%rax), %%ymm8")
598 
599 GEN_test_RandM(VPMOVZXDQ_256,
600                "vpmovzxdq %%xmm6,  %%ymm8",
601                "vpmovzxdq (%%rax), %%ymm8")
602 
603 GEN_test_RandM(VMPSADBW_256_0x0,
604                "vmpsadbw $0, %%ymm6,  %%ymm8, %%ymm7",
605                "vmpsadbw $0, (%%rax), %%ymm8, %%ymm7")
606 GEN_test_RandM(VMPSADBW_256_0x39,
607                "vmpsadbw $0x39, %%ymm6,  %%ymm8, %%ymm7",
608                "vmpsadbw $0x39, (%%rax), %%ymm8, %%ymm7")
609 GEN_test_RandM(VMPSADBW_256_0x32,
610                "vmpsadbw $0x32, %%ymm6,  %%ymm8, %%ymm7",
611                "vmpsadbw $0x32, (%%rax), %%ymm8, %%ymm7")
612 GEN_test_RandM(VMPSADBW_256_0x2b,
613                "vmpsadbw $0x2b, %%ymm6,  %%ymm8, %%ymm7",
614                "vmpsadbw $0x2b, (%%rax), %%ymm8, %%ymm7")
615 GEN_test_RandM(VMPSADBW_256_0x24,
616                "vmpsadbw $0x24, %%ymm6,  %%ymm8, %%ymm7",
617                "vmpsadbw $0x24, (%%rax), %%ymm8, %%ymm7")
618 GEN_test_RandM(VMPSADBW_256_0x1d,
619                "vmpsadbw $0x1d, %%ymm6,  %%ymm8, %%ymm7",
620                "vmpsadbw $0x1d, (%%rax), %%ymm8, %%ymm7")
621 GEN_test_RandM(VMPSADBW_256_0x16,
622                "vmpsadbw $0x16, %%ymm6,  %%ymm8, %%ymm7",
623                "vmpsadbw $0x16, (%%rax), %%ymm8, %%ymm7")
624 GEN_test_RandM(VMPSADBW_256_0x0f,
625                "vmpsadbw $0x0f, %%ymm6,  %%ymm8, %%ymm7",
626                "vmpsadbw $0x0f, (%%rax), %%ymm8, %%ymm7")
627 
628 GEN_test_RandM(VPSADBW_256,
629                "vpsadbw %%ymm6,  %%ymm8, %%ymm7",
630                "vpsadbw (%%rax), %%ymm8, %%ymm7")
631 
632 GEN_test_RandM(VPSIGNB_256,
633                "vpsignb %%ymm6,  %%ymm8, %%ymm7",
634                "vpsignb (%%rax), %%ymm8, %%ymm7")
635 
636 GEN_test_RandM(VPSIGNW_256,
637                "vpsignw %%ymm6,  %%ymm8, %%ymm7",
638                "vpsignw (%%rax), %%ymm8, %%ymm7")
639 
640 GEN_test_RandM(VPSIGND_256,
641                "vpsignd %%ymm6,  %%ymm8, %%ymm7",
642                "vpsignd (%%rax), %%ymm8, %%ymm7")
643 
644 GEN_test_RandM(VPMULHRSW_256,
645                "vpmulhrsw %%ymm6,  %%ymm8, %%ymm7",
646                "vpmulhrsw (%%rax), %%ymm8, %%ymm7")
647 
648 /* Instructions new in AVX2.  */
649 
650 GEN_test_Monly(VBROADCASTI128,
651                "vbroadcasti128 (%%rax), %%ymm9")
652 
653 GEN_test_RandM(VEXTRACTI128_0x0,
654                "vextracti128 $0x0, %%ymm7, %%xmm9",
655                "vextracti128 $0x0, %%ymm7, (%%rax)")
656 
657 GEN_test_RandM(VEXTRACTI128_0x1,
658                "vextracti128 $0x1, %%ymm7, %%xmm9",
659                "vextracti128 $0x1, %%ymm7, (%%rax)")
660 
661 GEN_test_RandM(VINSERTI128_0x0,
662                "vinserti128 $0x0, %%xmm9,  %%ymm7, %%ymm8",
663                "vinserti128 $0x0, (%%rax), %%ymm7, %%ymm8")
664 
665 GEN_test_RandM(VINSERTI128_0x1,
666                "vinserti128 $0x1, %%xmm9,  %%ymm7, %%ymm8",
667                "vinserti128 $0x1, (%%rax), %%ymm7, %%ymm8")
668 
669 GEN_test_RandM(VPERM2I128_0x00,
670                "vperm2i128 $0x00, %%ymm6,  %%ymm8, %%ymm7",
671                "vperm2i128 $0x00, (%%rax), %%ymm8, %%ymm7")
672 GEN_test_RandM(VPERM2I128_0xFF,
673                "vperm2i128 $0xFF, %%ymm6,  %%ymm8, %%ymm7",
674                "vperm2i128 $0xFF, (%%rax), %%ymm8, %%ymm7")
675 GEN_test_RandM(VPERM2I128_0x30,
676                "vperm2i128 $0x30, %%ymm6,  %%ymm8, %%ymm7",
677                "vperm2i128 $0x30, (%%rax), %%ymm8, %%ymm7")
678 GEN_test_RandM(VPERM2I128_0x21,
679                "vperm2i128 $0x21, %%ymm6,  %%ymm8, %%ymm7",
680                "vperm2i128 $0x21, (%%rax), %%ymm8, %%ymm7")
681 GEN_test_RandM(VPERM2I128_0x12,
682                "vperm2i128 $0x12, %%ymm6,  %%ymm8, %%ymm7",
683                "vperm2i128 $0x12, (%%rax), %%ymm8, %%ymm7")
684 GEN_test_RandM(VPERM2I128_0x03,
685                "vperm2i128 $0x03, %%ymm6,  %%ymm8, %%ymm7",
686                "vperm2i128 $0x03, (%%rax), %%ymm8, %%ymm7")
687 GEN_test_RandM(VPERM2I128_0x85,
688                "vperm2i128 $0x85, %%ymm6,  %%ymm8, %%ymm7",
689                "vperm2i128 $0x85, (%%rax), %%ymm8, %%ymm7")
690 GEN_test_RandM(VPERM2I128_0x5A,
691                "vperm2i128 $0x5A, %%ymm6,  %%ymm8, %%ymm7",
692                "vperm2i128 $0x5A, (%%rax), %%ymm8, %%ymm7")
693 
694 GEN_test_Ronly(VBROADCASTSS_128,
695                "vbroadcastss %%xmm9, %%xmm7")
696 
697 GEN_test_Ronly(VBROADCASTSS_256,
698                "vbroadcastss %%xmm9, %%ymm7")
699 
700 GEN_test_Ronly(VBROADCASTSD_256,
701                "vbroadcastsd %%xmm9, %%ymm7")
702 
703 GEN_test_RandM(VPERMD,
704                "vpermd %%ymm6, %%ymm7, %%ymm9",
705                "vpermd (%%rax), %%ymm7, %%ymm9")
706 
707 GEN_test_RandM(VPERMQ_0x00,
708                "vpermq $0x00, %%ymm6,  %%ymm7",
709                "vpermq $0x01, (%%rax), %%ymm7")
710 GEN_test_RandM(VPERMQ_0xFE,
711                "vpermq $0xFE, %%ymm6,  %%ymm7",
712                "vpermq $0xFF, (%%rax), %%ymm7")
713 GEN_test_RandM(VPERMQ_0x30,
714                "vpermq $0x30, %%ymm6,  %%ymm7",
715                "vpermq $0x03, (%%rax), %%ymm7")
716 GEN_test_RandM(VPERMQ_0x21,
717                "vpermq $0x21, %%ymm6,  %%ymm7",
718                "vpermq $0x12, (%%rax), %%ymm7")
719 GEN_test_RandM(VPERMQ_0xD7,
720                "vpermq $0xD7, %%ymm6,  %%ymm7",
721                "vpermq $0x6C, (%%rax), %%ymm7")
722 GEN_test_RandM(VPERMQ_0xB5,
723                "vpermq $0xB5, %%ymm6,  %%ymm7",
724                "vpermq $0x4A, (%%rax), %%ymm7")
725 GEN_test_RandM(VPERMQ_0x85,
726                "vpermq $0x85, %%ymm6,  %%ymm7",
727                "vpermq $0xDC, (%%rax), %%ymm7")
728 GEN_test_RandM(VPERMQ_0x29,
729                "vpermq $0x29, %%ymm6,  %%ymm7",
730                "vpermq $0x92, (%%rax), %%ymm7")
731 
732 GEN_test_RandM(VPERMPS,
733                "vpermps %%ymm6, %%ymm7, %%ymm9",
734                "vpermps (%%rax), %%ymm7, %%ymm9")
735 
736 GEN_test_RandM(VPERMPD_0x00,
737                "vpermpd $0x00, %%ymm6,  %%ymm7",
738                "vpermpd $0x01, (%%rax), %%ymm7")
739 GEN_test_RandM(VPERMPD_0xFE,
740                "vpermpd $0xFE, %%ymm6,  %%ymm7",
741                "vpermpd $0xFF, (%%rax), %%ymm7")
742 GEN_test_RandM(VPERMPD_0x30,
743                "vpermpd $0x30, %%ymm6,  %%ymm7",
744                "vpermpd $0x03, (%%rax), %%ymm7")
745 GEN_test_RandM(VPERMPD_0x21,
746                "vpermpd $0x21, %%ymm6,  %%ymm7",
747                "vpermpd $0x12, (%%rax), %%ymm7")
748 GEN_test_RandM(VPERMPD_0xD7,
749                "vpermpd $0xD7, %%ymm6,  %%ymm7",
750                "vpermpd $0x6C, (%%rax), %%ymm7")
751 GEN_test_RandM(VPERMPD_0xB5,
752                "vpermpd $0xB5, %%ymm6,  %%ymm7",
753                "vpermpd $0x4A, (%%rax), %%ymm7")
754 GEN_test_RandM(VPERMPD_0x85,
755                "vpermpd $0x85, %%ymm6,  %%ymm7",
756                "vpermpd $0xDC, (%%rax), %%ymm7")
757 GEN_test_RandM(VPERMPD_0x29,
758                "vpermpd $0x29, %%ymm6,  %%ymm7",
759                "vpermpd $0x92, (%%rax), %%ymm7")
760 
761 GEN_test_RandM(VPBLENDD_128_0x00,
762                "vpblendd $0x00, %%xmm6,  %%xmm8, %%xmm7",
763                "vpblendd $0x01, (%%rax), %%xmm8, %%xmm7")
764 GEN_test_RandM(VPBLENDD_128_0x02,
765                "vpblendd $0x02, %%xmm6,  %%xmm8, %%xmm7",
766                "vpblendd $0x03, (%%rax), %%xmm8, %%xmm7")
767 GEN_test_RandM(VPBLENDD_128_0x04,
768                "vpblendd $0x04, %%xmm6,  %%xmm8, %%xmm7",
769                "vpblendd $0x05, (%%rax), %%xmm8, %%xmm7")
770 GEN_test_RandM(VPBLENDD_128_0x06,
771                "vpblendd $0x06, %%xmm6,  %%xmm8, %%xmm7",
772                "vpblendd $0x07, (%%rax), %%xmm8, %%xmm7")
773 GEN_test_RandM(VPBLENDD_128_0x08,
774                "vpblendd $0x08, %%xmm6,  %%xmm8, %%xmm7",
775                "vpblendd $0x09, (%%rax), %%xmm8, %%xmm7")
776 GEN_test_RandM(VPBLENDD_128_0x0A,
777                "vpblendd $0x0A, %%xmm6,  %%xmm8, %%xmm7",
778                "vpblendd $0x0B, (%%rax), %%xmm8, %%xmm7")
779 GEN_test_RandM(VPBLENDD_128_0x0C,
780                "vpblendd $0x0C, %%xmm6,  %%xmm8, %%xmm7",
781                "vpblendd $0x0D, (%%rax), %%xmm8, %%xmm7")
782 GEN_test_RandM(VPBLENDD_128_0x0E,
783                "vpblendd $0x0E, %%xmm6,  %%xmm8, %%xmm7",
784                "vpblendd $0x0F, (%%rax), %%xmm8, %%xmm7")
785 
786 GEN_test_RandM(VPBLENDD_256_0x00,
787                "vpblendd $0x00, %%ymm6,  %%ymm8, %%ymm7",
788                "vpblendd $0x01, (%%rax), %%ymm8, %%ymm7")
789 GEN_test_RandM(VPBLENDD_256_0xFE,
790                "vpblendd $0xFE, %%ymm6,  %%ymm8, %%ymm7",
791                "vpblendd $0xFF, (%%rax), %%ymm8, %%ymm7")
792 GEN_test_RandM(VPBLENDD_256_0x30,
793                "vpblendd $0x30, %%ymm6,  %%ymm8, %%ymm7",
794                "vpblendd $0x03, (%%rax), %%ymm8, %%ymm7")
795 GEN_test_RandM(VPBLENDD_256_0x21,
796                "vpblendd $0x21, %%ymm6,  %%ymm8, %%ymm7",
797                "vpblendd $0x12, (%%rax), %%ymm8, %%ymm7")
798 GEN_test_RandM(VPBLENDD_256_0xD7,
799                "vpblendd $0xD7, %%ymm6,  %%ymm8, %%ymm7",
800                "vpblendd $0x6C, (%%rax), %%ymm8, %%ymm7")
801 GEN_test_RandM(VPBLENDD_256_0xB5,
802                "vpblendd $0xB5, %%ymm6,  %%ymm8, %%ymm7",
803                "vpblendd $0x4A, (%%rax), %%ymm8, %%ymm7")
804 GEN_test_RandM(VPBLENDD_256_0x85,
805                "vpblendd $0x85, %%ymm6,  %%ymm8, %%ymm7",
806                "vpblendd $0xDC, (%%rax), %%ymm8, %%ymm7")
807 GEN_test_RandM(VPBLENDD_256_0x29,
808                "vpblendd $0x29, %%ymm6,  %%ymm8, %%ymm7",
809                "vpblendd $0x92, (%%rax), %%ymm8, %%ymm7")
810 
811 GEN_test_RandM(VPSLLVD_128,
812                "vpslld $27, %%xmm6, %%xmm6;"
813                "vpsrld $27, %%xmm6, %%xmm6;"
814                "vpsllvd %%xmm6, %%xmm8, %%xmm7",
815                "andl $31, (%%rax);"
816                "andl $31, 4(%%rax);"
817                "andl $31, 8(%%rax);"
818                "vpsllvd (%%rax), %%xmm8, %%xmm7")
819 
820 GEN_test_RandM(VPSLLVD_256,
821                "vpslld $27, %%ymm6, %%ymm6;"
822                "vpsrld $27, %%ymm6, %%ymm6;"
823                "vpsllvd %%ymm6, %%ymm8, %%ymm7",
824                "andl $31, (%%rax);"
825                "andl $31, 4(%%rax);"
826                "andl $31, 8(%%rax);"
827                "andl $31, 16(%%rax);"
828                "andl $31, 20(%%rax);"
829                "andl $31, 24(%%rax);"
830                "vpsllvd (%%rax), %%ymm8, %%ymm7")
831 
832 GEN_test_RandM(VPSLLVQ_128,
833                "vpsllq $58, %%xmm6, %%xmm6;"
834                "vpsrlq $58, %%xmm6, %%xmm6;"
835                "vpsllvq %%xmm6, %%xmm8, %%xmm7",
836                "andl $63, (%%rax);"
837                "vpsllvq (%%rax), %%xmm8, %%xmm7")
838 
839 GEN_test_RandM(VPSLLVQ_256,
840                "vpsllq $58, %%ymm6, %%ymm6;"
841                "vpsrlq $58, %%ymm6, %%ymm6;"
842                "vpsllvq %%ymm6, %%ymm8, %%ymm7",
843                "andl $63, (%%rax);"
844                "andl $63, 8(%%rax);"
845                "andl $63, 16(%%rax);"
846                "vpsllvq (%%rax), %%ymm8, %%ymm7")
847 
848 GEN_test_RandM(VPSRLVD_128,
849                "vpslld $27, %%xmm6, %%xmm6;"
850                "vpsrld $27, %%xmm6, %%xmm6;"
851                "vpsrlvd %%xmm6, %%xmm8, %%xmm7",
852                "andl $31, (%%rax);"
853                "andl $31, 4(%%rax);"
854                "andl $31, 8(%%rax);"
855                "vpsrlvd (%%rax), %%xmm8, %%xmm7")
856 
857 GEN_test_RandM(VPSRLVD_256,
858                "vpslld $27, %%ymm6, %%ymm6;"
859                "vpsrld $27, %%ymm6, %%ymm6;"
860                "vpsrlvd %%ymm6, %%ymm8, %%ymm7",
861                "andl $31, (%%rax);"
862                "andl $31, 4(%%rax);"
863                "andl $31, 8(%%rax);"
864                "andl $31, 16(%%rax);"
865                "andl $31, 20(%%rax);"
866                "andl $31, 24(%%rax);"
867                "vpsrlvd (%%rax), %%ymm8, %%ymm7")
868 
869 GEN_test_RandM(VPSRLVQ_128,
870                "vpsllq $58, %%xmm6, %%xmm6;"
871                "vpsrlq $58, %%xmm6, %%xmm6;"
872                "vpsrlvq %%xmm6, %%xmm8, %%xmm7",
873                "andl $63, (%%rax);"
874                "vpsrlvq (%%rax), %%xmm8, %%xmm7")
875 
876 GEN_test_RandM(VPSRLVQ_256,
877                "vpsllq $58, %%ymm6, %%ymm6;"
878                "vpsrlq $58, %%ymm6, %%ymm6;"
879                "vpsrlvq %%ymm6, %%ymm8, %%ymm7",
880                "andl $63, (%%rax);"
881                "andl $63, 8(%%rax);"
882                "andl $63, 16(%%rax);"
883                "vpsrlvq (%%rax), %%ymm8, %%ymm7")
884 
885 GEN_test_RandM(VPSRAVD_128,
886                "vpslld $27, %%xmm6, %%xmm6;"
887                "vpsrld $27, %%xmm6, %%xmm6;"
888                "vpsravd %%xmm6, %%xmm8, %%xmm7",
889                "andl $31, (%%rax);"
890                "andl $31, 4(%%rax);"
891                "andl $31, 8(%%rax);"
892                "vpsravd (%%rax), %%xmm8, %%xmm7")
893 
894 GEN_test_RandM(VPSRAVD_256,
895                "vpslld $27, %%ymm6, %%ymm6;"
896                "vpsrld $27, %%ymm6, %%ymm6;"
897                "vpsravd %%ymm6, %%ymm8, %%ymm7",
898                "andl $31, (%%rax);"
899                "andl $31, 4(%%rax);"
900                "andl $31, 8(%%rax);"
901                "andl $31, 16(%%rax);"
902                "andl $31, 20(%%rax);"
903                "andl $31, 24(%%rax);"
904                "vpsravd (%%rax), %%ymm8, %%ymm7")
905 
906 GEN_test_RandM(VPBROADCASTB_128,
907                "vpbroadcastb %%xmm9, %%xmm7",
908                "vpbroadcastb (%%rax), %%xmm7")
909 
910 GEN_test_RandM(VPBROADCASTB_256,
911                "vpbroadcastb %%xmm9, %%ymm7",
912                "vpbroadcastb (%%rax), %%ymm7")
913 
914 GEN_test_RandM(VPBROADCASTW_128,
915                "vpbroadcastw %%xmm9, %%xmm7",
916                "vpbroadcastw (%%rax), %%xmm7")
917 
918 GEN_test_RandM(VPBROADCASTW_256,
919                "vpbroadcastw %%xmm9, %%ymm7",
920                "vpbroadcastw (%%rax), %%ymm7")
921 
922 GEN_test_RandM(VPBROADCASTD_128,
923                "vpbroadcastd %%xmm9, %%xmm7",
924                "vpbroadcastd (%%rax), %%xmm7")
925 
926 GEN_test_RandM(VPBROADCASTD_256,
927                "vpbroadcastd %%xmm9, %%ymm7",
928                "vpbroadcastd (%%rax), %%ymm7")
929 
930 GEN_test_RandM(VPBROADCASTQ_128,
931                "vpbroadcastq %%xmm9, %%xmm7",
932                "vpbroadcastq (%%rax), %%xmm7")
933 
934 GEN_test_RandM(VPBROADCASTQ_256,
935                "vpbroadcastq %%xmm9, %%ymm7",
936                "vpbroadcastq (%%rax), %%ymm7")
937 
938 GEN_test_Monly(VPMASKMOVD_128_LoadForm,
939                "vpmaskmovd (%%rax), %%xmm8, %%xmm7;"
940                "vxorps %%xmm6, %%xmm6, %%xmm6;"
941                "vpmaskmovd (%%rax,%%rax,4), %%xmm6, %%xmm9")
942 
943 GEN_test_Monly(VPMASKMOVD_256_LoadForm,
944                "vpmaskmovd (%%rax), %%ymm8, %%ymm7;"
945                "vxorps %%ymm6, %%ymm6, %%ymm6;"
946                "vpmaskmovd (%%rax,%%rax,4), %%ymm6, %%ymm9")
947 
948 GEN_test_Monly(VPMASKMOVQ_128_LoadForm,
949                "vpmaskmovq (%%rax), %%xmm8, %%xmm7;"
950                "vxorpd %%xmm6, %%xmm6, %%xmm6;"
951                "vpmaskmovq (%%rax,%%rax,4), %%xmm6, %%xmm9")
952 
953 GEN_test_Monly(VPMASKMOVQ_256_LoadForm,
954                "vpmaskmovq (%%rax), %%ymm8, %%ymm7;"
955                "vxorpd %%ymm6, %%ymm6, %%ymm6;"
956                "vpmaskmovq (%%rax,%%rax,4), %%ymm6, %%ymm9")
957 
958 GEN_test_Monly(VPMASKMOVD_128_StoreForm,
959                "vpmaskmovd %%xmm8, %%xmm7, (%%rax);"
960                "vxorps %%xmm6, %%xmm6, %%xmm6;"
961                "vpmaskmovd %%xmm9, %%xmm6, (%%rax,%%rax,4)")
962 
963 GEN_test_Monly(VPMASKMOVD_256_StoreForm,
964                "vpmaskmovd %%ymm8, %%ymm7, (%%rax);"
965                "vxorps %%ymm6, %%ymm6, %%ymm6;"
966                "vpmaskmovd %%ymm9, %%ymm6, (%%rax,%%rax,4)")
967 
968 GEN_test_Monly(VPMASKMOVQ_128_StoreForm,
969                "vpmaskmovq %%xmm8, %%xmm7, (%%rax);"
970                "vxorpd %%xmm6, %%xmm6, %%xmm6;"
971                "vpmaskmovq %%xmm9, %%xmm6, (%%rax,%%rax,4)")
972 
973 GEN_test_Monly(VPMASKMOVQ_256_StoreForm,
974                "vpmaskmovq %%ymm8, %%ymm7, (%%rax);"
975                "vxorpd %%ymm6, %%ymm6, %%ymm6;"
976                "vpmaskmovq %%ymm9, %%ymm6, (%%rax,%%rax,4)")
977 
978 GEN_test_Ronly(VGATHERDPS_128,
979                "vpslld $25, %%xmm7, %%xmm8;"
980                "vpsrld $25, %%xmm8, %%xmm8;"
981                "vblendvps %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
982                "leaq _randArray(%%rip), %%r14;"
983                "vgatherdps %%xmm6, 3(%%r14,%%xmm8,4), %%xmm9;"
984                "xorl %%r14d, %%r14d")
985 
986 GEN_test_Ronly(VGATHERDPS_256,
987                "vpslld $25, %%ymm7, %%ymm8;"
988                "vpsrld $25, %%ymm8, %%ymm8;"
989                "vblendvps %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
990                "leaq _randArray(%%rip), %%r14;"
991                "vgatherdps %%ymm6, 3(%%r14,%%ymm8,4), %%ymm9;"
992                "xorl %%r14d, %%r14d")
993 
994 GEN_test_Ronly(VGATHERQPS_128_1,
995                "vpsllq $57, %%xmm7, %%xmm8;"
996                "vpsrlq $57, %%xmm8, %%xmm8;"
997                "vpmovsxdq %%xmm6, %%xmm9;"
998                "vblendvpd %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
999                "vmovdqa 96(%0), %%ymm9;"
1000                "leaq _randArray(%%rip), %%r14;"
1001                "vgatherqps %%xmm6, 3(%%r14,%%xmm8,4), %%xmm9;"
1002                "xorl %%r14d, %%r14d")
1003 
1004 GEN_test_Ronly(VGATHERQPS_256_1,
1005                "vpsllq $57, %%ymm7, %%ymm8;"
1006                "vpsrlq $57, %%ymm8, %%ymm8;"
1007                "vpmovsxdq %%xmm6, %%ymm9;"
1008                "vblendvpd %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
1009                "vmovdqa 96(%0), %%ymm9;"
1010                "leaq _randArray(%%rip), %%r14;"
1011                "vgatherqps %%xmm6, 3(%%r14,%%ymm8,4), %%xmm9;"
1012                "xorl %%r14d, %%r14d")
1013 
1014 GEN_test_Ronly(VGATHERQPS_128_2,
1015                "vpsllq $57, %%xmm7, %%xmm8;"
1016                "vpsrlq $57, %%xmm8, %%xmm8;"
1017                "vpmovsxdq %%xmm6, %%xmm9;"
1018                "vblendvpd %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
1019                "vmovdqa 96(%0), %%ymm9;"
1020                "leaq _randArray(%%rip), %%r14;"
1021                "vmovq %%r14, %%xmm7;"
1022                "vpsllq $2, %%xmm8, %%xmm8;"
1023                "vpbroadcastq %%xmm7, %%xmm7;"
1024                "vpaddq %%xmm7, %%xmm8, %%xmm8;"
1025                "vgatherqps %%xmm6, 1(,%%xmm8,1), %%xmm9;"
1026                "vpsubq %%xmm7, %%xmm8, %%xmm8;"
1027                "vmovdqa 0(%0), %%ymm7;"
1028                "xorl %%r14d, %%r14d")
1029 
1030 GEN_test_Ronly(VGATHERQPS_256_2,
1031                "vpsllq $57, %%ymm7, %%ymm8;"
1032                "vpsrlq $57, %%ymm8, %%ymm8;"
1033                "vpmovsxdq %%xmm6, %%ymm9;"
1034                "vblendvpd %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
1035                "vmovdqa 96(%0), %%ymm9;"
1036                "leaq _randArray(%%rip), %%r14;"
1037                "vmovq %%r14, %%xmm7;"
1038                "vpsllq $2, %%ymm8, %%ymm8;"
1039                "vpbroadcastq %%xmm7, %%ymm7;"
1040                "vpaddq %%ymm7, %%ymm8, %%ymm8;"
1041                "vgatherqps %%xmm6, 1(,%%ymm8,1), %%xmm9;"
1042                "vpsubq %%ymm7, %%ymm8, %%ymm8;"
1043                "vmovdqa 0(%0), %%ymm7;"
1044                "xorl %%r14d, %%r14d")
1045 
1046 GEN_test_Ronly(VGATHERDPD_128,
1047                "vpslld $26, %%xmm7, %%xmm8;"
1048                "vpsrld $26, %%xmm8, %%xmm8;"
1049                "vshufps $13, %%xmm6, %%xmm6, %%xmm9;"
1050                "vblendvps %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
1051                "vmovdqa 96(%0), %%ymm9;"
1052                "leaq _randArray(%%rip), %%r14;"
1053                "vgatherdpd %%xmm6, 3(%%r14,%%xmm8,8), %%xmm9;"
1054                "xorl %%r14d, %%r14d")
1055 
1056 GEN_test_Ronly(VGATHERDPD_256,
1057                "vpslld $26, %%ymm7, %%ymm8;"
1058                "vpsrld $26, %%ymm8, %%ymm8;"
1059                "vextracti128 $1, %%ymm6, %%xmm9;"
1060                "vshufps $221, %%ymm9, %%ymm6, %%ymm9;"
1061                "vblendvps %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
1062                "vmovdqa 96(%0), %%ymm9;"
1063                "leaq _randArray(%%rip), %%r14;"
1064                "vgatherdpd %%ymm6, 3(%%r14,%%xmm8,8), %%ymm9;"
1065                "xorl %%r14d, %%r14d")
1066 
1067 GEN_test_Ronly(VGATHERQPD_128_1,
1068                "vpsllq $58, %%xmm7, %%xmm8;"
1069                "vpsrlq $58, %%xmm8, %%xmm8;"
1070                "vblendvpd %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
1071                "leaq _randArray(%%rip), %%r14;"
1072                "vgatherqpd %%xmm6, 3(%%r14,%%xmm8,8), %%xmm9;"
1073                "xorl %%r14d, %%r14d")
1074 
1075 GEN_test_Ronly(VGATHERQPD_256_1,
1076                "vpsllq $58, %%ymm7, %%ymm8;"
1077                "vpsrlq $58, %%ymm8, %%ymm8;"
1078                "vblendvpd %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
1079                "leaq _randArray(%%rip), %%r14;"
1080                "vgatherqpd %%ymm6, 3(%%r14,%%ymm8,8), %%ymm9;"
1081                "xorl %%r14d, %%r14d")
1082 
1083 GEN_test_Ronly(VGATHERQPD_128_2,
1084                "vpsllq $58, %%xmm7, %%xmm8;"
1085                "vpsrlq $58, %%xmm8, %%xmm8;"
1086                "vblendvpd %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
1087                "leaq _randArray(%%rip), %%r14;"
1088                "vmovq %%r14, %%xmm7;"
1089                "vpsllq $2, %%xmm8, %%xmm8;"
1090                "vpbroadcastq %%xmm7, %%xmm7;"
1091                "vpaddq %%xmm7, %%xmm8, %%xmm8;"
1092                "vgatherqpd %%xmm6, 1(,%%xmm8,1), %%xmm9;"
1093                "vpsubq %%xmm7, %%xmm8, %%xmm8;"
1094                "vmovdqa 0(%0), %%ymm7;"
1095                "xorl %%r14d, %%r14d")
1096 
1097 GEN_test_Ronly(VGATHERQPD_256_2,
1098                "vpsllq $58, %%ymm7, %%ymm8;"
1099                "vpsrlq $58, %%ymm8, %%ymm8;"
1100                "vblendvpd %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
1101                "leaq _randArray(%%rip), %%r14;"
1102                "vmovq %%r14, %%xmm7;"
1103                "vpsllq $2, %%ymm8, %%ymm8;"
1104                "vpbroadcastq %%xmm7, %%ymm7;"
1105                "vpaddq %%ymm7, %%ymm8, %%ymm8;"
1106                "vgatherqpd %%ymm6, 1(,%%ymm8,1), %%ymm9;"
1107                "vpsubq %%ymm7, %%ymm8, %%ymm8;"
1108                "vmovdqa 0(%0), %%ymm7;"
1109                "xorl %%r14d, %%r14d")
1110 
1111 GEN_test_Ronly(VPGATHERDD_128,
1112                "vpslld $25, %%xmm7, %%xmm8;"
1113                "vpsrld $25, %%xmm8, %%xmm8;"
1114                "vblendvps %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
1115                "leaq _randArray(%%rip), %%r14;"
1116                "vpgatherdd %%xmm6, 3(%%r14,%%xmm8,4), %%xmm9;"
1117                "xorl %%r14d, %%r14d")
1118 
1119 GEN_test_Ronly(VPGATHERDD_256,
1120                "vpslld $25, %%ymm7, %%ymm8;"
1121                "vpsrld $25, %%ymm8, %%ymm8;"
1122                "vblendvps %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
1123                "leaq _randArray(%%rip), %%r14;"
1124                "vpgatherdd %%ymm6, 3(%%r14,%%ymm8,4), %%ymm9;"
1125                "xorl %%r14d, %%r14d")
1126 
1127 GEN_test_Ronly(VPGATHERQD_128_1,
1128                "vpsllq $57, %%xmm7, %%xmm8;"
1129                "vpsrlq $57, %%xmm8, %%xmm8;"
1130                "vpmovsxdq %%xmm6, %%xmm9;"
1131                "vblendvpd %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
1132                "vmovdqa 96(%0), %%ymm9;"
1133                "leaq _randArray(%%rip), %%r14;"
1134                "vpgatherqd %%xmm6, 3(%%r14,%%xmm8,4), %%xmm9;"
1135                "xorl %%r14d, %%r14d")
1136 
1137 GEN_test_Ronly(VPGATHERQD_256_1,
1138                "vpsllq $57, %%ymm7, %%ymm8;"
1139                "vpsrlq $57, %%ymm8, %%ymm8;"
1140                "vpmovsxdq %%xmm6, %%ymm9;"
1141                "vblendvpd %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
1142                "vmovdqa 96(%0), %%ymm9;"
1143                "leaq _randArray(%%rip), %%r14;"
1144                "vpgatherqd %%xmm6, 3(%%r14,%%ymm8,4), %%xmm9;"
1145                "xorl %%r14d, %%r14d")
1146 
1147 GEN_test_Ronly(VPGATHERQD_128_2,
1148                "vpsllq $57, %%xmm7, %%xmm8;"
1149                "vpsrlq $57, %%xmm8, %%xmm8;"
1150                "vpmovsxdq %%xmm6, %%xmm9;"
1151                "vblendvpd %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
1152                "vmovdqa 96(%0), %%ymm9;"
1153                "leaq _randArray(%%rip), %%r14;"
1154                "vmovq %%r14, %%xmm7;"
1155                "vpsllq $2, %%xmm8, %%xmm8;"
1156                "vpbroadcastq %%xmm7, %%xmm7;"
1157                "vpaddq %%xmm7, %%xmm8, %%xmm8;"
1158                "vpgatherqd %%xmm6, 1(,%%xmm8,1), %%xmm9;"
1159                "vpsubq %%xmm7, %%xmm8, %%xmm8;"
1160                "vmovdqa 0(%0), %%ymm7;"
1161                "xorl %%r14d, %%r14d")
1162 
1163 GEN_test_Ronly(VPGATHERQD_256_2,
1164                "vpsllq $57, %%ymm7, %%ymm8;"
1165                "vpsrlq $57, %%ymm8, %%ymm8;"
1166                "vpmovsxdq %%xmm6, %%ymm9;"
1167                "vblendvpd %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
1168                "vmovdqa 96(%0), %%ymm9;"
1169                "leaq _randArray(%%rip), %%r14;"
1170                "vmovq %%r14, %%xmm7;"
1171                "vpsllq $2, %%ymm8, %%ymm8;"
1172                "vpbroadcastq %%xmm7, %%ymm7;"
1173                "vpaddq %%ymm7, %%ymm8, %%ymm8;"
1174                "vpgatherqd %%xmm6, 1(,%%ymm8,1), %%xmm9;"
1175                "vpsubq %%ymm7, %%ymm8, %%ymm8;"
1176                "vmovdqa 0(%0), %%ymm7;"
1177                "xorl %%r14d, %%r14d")
1178 
1179 GEN_test_Ronly(VPGATHERDQ_128,
1180                "vpslld $26, %%xmm7, %%xmm8;"
1181                "vpsrld $26, %%xmm8, %%xmm8;"
1182                "vshufps $13, %%xmm6, %%xmm6, %%xmm9;"
1183                "vblendvps %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
1184                "vmovdqa 96(%0), %%ymm9;"
1185                "leaq _randArray(%%rip), %%r14;"
1186                "vpgatherdq %%xmm6, 3(%%r14,%%xmm8,8), %%xmm9;"
1187                "xorl %%r14d, %%r14d")
1188 
1189 GEN_test_Ronly(VPGATHERDQ_256,
1190                "vpslld $26, %%ymm7, %%ymm8;"
1191                "vpsrld $26, %%ymm8, %%ymm8;"
1192                "vextracti128 $1, %%ymm6, %%xmm9;"
1193                "vshufps $221, %%ymm9, %%ymm6, %%ymm9;"
1194                "vblendvps %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
1195                "vmovdqa 96(%0), %%ymm9;"
1196                "leaq _randArray(%%rip), %%r14;"
1197                "vpgatherdq %%ymm6, 3(%%r14,%%xmm8,8), %%ymm9;"
1198                "xorl %%r14d, %%r14d")
1199 
1200 GEN_test_Ronly(VPGATHERQQ_128_1,
1201                "vpsllq $58, %%xmm7, %%xmm8;"
1202                "vpsrlq $58, %%xmm8, %%xmm8;"
1203                "vblendvpd %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
1204                "leaq _randArray(%%rip), %%r14;"
1205                "vpgatherqq %%xmm6, 3(%%r14,%%xmm8,8), %%xmm9;"
1206                "xorl %%r14d, %%r14d")
1207 
1208 GEN_test_Ronly(VPGATHERQQ_256_1,
1209                "vpsllq $58, %%ymm7, %%ymm8;"
1210                "vpsrlq $58, %%ymm8, %%ymm8;"
1211                "vblendvpd %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
1212                "leaq _randArray(%%rip), %%r14;"
1213                "vpgatherqq %%ymm6, 3(%%r14,%%ymm8,8), %%ymm9;"
1214                "xorl %%r14d, %%r14d")
1215 
1216 GEN_test_Ronly(VPGATHERQQ_128_2,
1217                "vpsllq $58, %%xmm7, %%xmm8;"
1218                "vpsrlq $58, %%xmm8, %%xmm8;"
1219                "vblendvpd %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
1220                "leaq _randArray(%%rip), %%r14;"
1221                "vmovq %%r14, %%xmm7;"
1222                "vpsllq $2, %%xmm8, %%xmm8;"
1223                "vpbroadcastq %%xmm7, %%xmm7;"
1224                "vpaddq %%xmm7, %%xmm8, %%xmm8;"
1225                "vpgatherqq %%xmm6, 1(,%%xmm8,1), %%xmm9;"
1226                "vpsubq %%xmm7, %%xmm8, %%xmm8;"
1227                "vmovdqa 0(%0), %%ymm7;"
1228                "xorl %%r14d, %%r14d")
1229 
1230 GEN_test_Ronly(VPGATHERQQ_256_2,
1231                "vpsllq $58, %%ymm7, %%ymm8;"
1232                "vpsrlq $58, %%ymm8, %%ymm8;"
1233                "vblendvpd %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
1234                "leaq _randArray(%%rip), %%r14;"
1235                "vmovq %%r14, %%xmm7;"
1236                "vpsllq $2, %%ymm8, %%ymm8;"
1237                "vpbroadcastq %%xmm7, %%ymm7;"
1238                "vpaddq %%ymm7, %%ymm8, %%ymm8;"
1239                "vpgatherqq %%ymm6, 1(,%%ymm8,1), %%ymm9;"
1240                "vpsubq %%ymm7, %%ymm8, %%ymm8;"
1241                "vmovdqa 0(%0), %%ymm7;"
1242                "xorl %%r14d, %%r14d")
1243 
1244 /* Comment duplicated above, for convenient reference:
1245    Allowed operands in test insns:
1246      Reg form:  %ymm6,  %ymm7, %ymm8, %ymm9 and %r14.
1247      Mem form:  (%rax), %ymm7, %ymm8, %ymm9 and %r14.
1248    Imm8 etc fields are also allowed, where they make sense.
1249    Both forms may use ymm0 as scratch.  Mem form may also use
1250    ymm6 as scratch.
1251 */
1252 
1253 #define N_DEFAULT_ITERS 3
1254 
1255 // Do the specified test some number of times
1256 #define DO_N(_iters, _testfn) \
1257    do { int i; for (i = 0; i < (_iters); i++) { test_##_testfn(); } } while (0)
1258 
1259 // Do the specified test the default number of times
1260 #define DO_D(_testfn) DO_N(N_DEFAULT_ITERS, _testfn)
1261 
1262 
main(void)1263 int main ( void )
1264 {
1265    DO_D( VPOR_256 );
1266    DO_D( VPXOR_256 );
1267    DO_D( VPSUBB_256 );
1268    DO_D( VPSUBD_256 );
1269    DO_D( VPADDD_256 );
1270    DO_D( VPMOVZXWD_256 );
1271    DO_D( VPMOVZXBW_256 );
1272    DO_D( VPBLENDVB_256 );
1273    DO_D( VPMINSD_256 );
1274    DO_D( VPMAXSD_256 );
1275    DO_D( VPSHUFB_256 );
1276    DO_D( VPUNPCKLBW_256 );
1277    DO_D( VPUNPCKHBW_256 );
1278    DO_D( VPABSD_256 );
1279    DO_D( VPACKUSWB_256 );
1280    DO_D( VPMOVMSKB_256 );
1281    DO_D( VPAND_256 );
1282    DO_D( VPCMPEQB_256 );
1283    DO_D( VPSHUFLW_0x39_256 );
1284    DO_D( VPSHUFHW_0x39_256 );
1285    DO_D( VPMULLW_256 );
1286    DO_D( VPADDUSW_256 );
1287    DO_D( VPMULHUW_256 );
1288    DO_D( VPADDUSB_256 );
1289    DO_D( VPUNPCKLWD_256 );
1290    DO_D( VPUNPCKHWD_256 );
1291    DO_D( VPSLLD_0x05_256 );
1292    DO_D( VPSRLD_0x05_256 );
1293    DO_D( VPSRAD_0x05_256 );
1294    DO_D( VPSUBUSB_256 );
1295    DO_D( VPSUBSB_256 );
1296    DO_D( VPSRLDQ_0x05_256 );
1297    DO_D( VPSLLDQ_0x05_256 );
1298    DO_D( VPANDN_256 );
1299    DO_D( VPUNPCKLQDQ_256 );
1300    DO_D( VPSRLW_0x05_256 );
1301    DO_D( VPSLLW_0x05_256 );
1302    DO_D( VPADDW_256 );
1303    DO_D( VPACKSSDW_256 );
1304    DO_D( VPUNPCKLDQ_256 );
1305    DO_D( VPCMPEQD_256 );
1306    DO_D( VPSHUFD_0x39_256 );
1307    DO_D( VPADDQ_256 );
1308    DO_D( VPSUBQ_256 );
1309    DO_D( VPSUBW_256 );
1310    DO_D( VPCMPEQQ_256 );
1311    DO_D( VPCMPGTQ_256 );
1312    DO_D( VPSRLQ_0x05_256 );
1313    DO_D( VPMULUDQ_256 );
1314    DO_D( VPMULDQ_256 );
1315    DO_D( VPSLLQ_0x05_256 );
1316    DO_D( VPMAXUD_256 );
1317    DO_D( VPMINUD_256 );
1318    DO_D( VPMULLD_256 );
1319    DO_D( VPMAXUW_256 );
1320    DO_D( VPMINUW_256 );
1321    DO_D( VPMAXSW_256 );
1322    DO_D( VPMINSW_256 );
1323    DO_D( VPMAXUB_256 );
1324    DO_D( VPMINUB_256 );
1325    DO_D( VPMAXSB_256 );
1326    DO_D( VPMINSB_256 );
1327    DO_D( VPMOVSXBW_256 );
1328    DO_D( VPSUBUSW_256 );
1329    DO_D( VPSUBSW_256 );
1330    DO_D( VPCMPEQW_256 );
1331    DO_D( VPADDB_256 );
1332    DO_D( VPUNPCKHDQ_256 );
1333    DO_D( VPMOVSXDQ_256 );
1334    DO_D( VPMOVSXWD_256 );
1335    DO_D( VPMULHW_256 );
1336    DO_D( VPUNPCKHQDQ_256 );
1337    DO_D( VPSRAW_0x05_256 );
1338    DO_D( VPCMPGTB_256 );
1339    DO_D( VPCMPGTW_256 );
1340    DO_D( VPCMPGTD_256 );
1341    DO_D( VPMOVZXBD_256 );
1342    DO_D( VPMOVSXBD_256 );
1343    DO_D( VPALIGNR_256_1of3 );
1344    DO_D( VPALIGNR_256_2of3 );
1345    DO_D( VPALIGNR_256_3of3 );
1346    DO_D( VPBLENDW_256_0x00 );
1347    DO_D( VPBLENDW_256_0xFE );
1348    DO_D( VPBLENDW_256_0x30 );
1349    DO_D( VPBLENDW_256_0x21 );
1350    DO_D( VPBLENDW_256_0xD7 );
1351    DO_D( VPBLENDW_256_0xB5 );
1352    DO_D( VPBLENDW_256_0x85 );
1353    DO_D( VPBLENDW_256_0x29 );
1354    DO_D( VPSLLW_256 );
1355    DO_D( VPSRLW_256 );
1356    DO_D( VPSRAW_256 );
1357    DO_D( VPSLLD_256 );
1358    DO_D( VPSRLD_256 );
1359    DO_D( VPSRAD_256 );
1360    DO_D( VPSLLQ_256 );
1361    DO_D( VPSRLQ_256 );
1362    DO_D( VPMADDWD_256 );
1363    DO_D( VMOVNTDQA_256 );
1364    DO_D( VPACKSSWB_256 );
1365    DO_D( VPAVGB_256 );
1366    DO_D( VPAVGW_256 );
1367    DO_D( VPADDSB_256 );
1368    DO_D( VPADDSW_256 );
1369    DO_D( VPHADDW_256 );
1370    DO_D( VPHADDD_256 );
1371    DO_D( VPHADDSW_256 );
1372    DO_D( VPMADDUBSW_256 );
1373    DO_D( VPHSUBW_256 );
1374    DO_D( VPHSUBD_256 );
1375    DO_D( VPHSUBSW_256 );
1376    DO_D( VPABSB_256 );
1377    DO_D( VPABSW_256 );
1378    DO_D( VPMOVSXBQ_256 );
1379    DO_D( VPMOVSXWQ_256 );
1380    DO_D( VPACKUSDW_256 );
1381    DO_D( VPMOVZXBQ_256 );
1382    DO_D( VPMOVZXWQ_256 );
1383    DO_D( VPMOVZXDQ_256 );
1384    DO_D( VMPSADBW_256_0x0 );
1385    DO_D( VMPSADBW_256_0x39 );
1386    DO_D( VMPSADBW_256_0x32 );
1387    DO_D( VMPSADBW_256_0x2b );
1388    DO_D( VMPSADBW_256_0x24 );
1389    DO_D( VMPSADBW_256_0x1d );
1390    DO_D( VMPSADBW_256_0x16 );
1391    DO_D( VMPSADBW_256_0x0f );
1392    DO_D( VPSADBW_256 );
1393    DO_D( VPSIGNB_256 );
1394    DO_D( VPSIGNW_256 );
1395    DO_D( VPSIGND_256 );
1396    DO_D( VPMULHRSW_256 );
1397    DO_D( VBROADCASTI128 );
1398    DO_D( VEXTRACTI128_0x0 );
1399    DO_D( VEXTRACTI128_0x1 );
1400    DO_D( VINSERTI128_0x0 );
1401    DO_D( VINSERTI128_0x1 );
1402    DO_D( VPERM2I128_0x00 );
1403    DO_D( VPERM2I128_0xFF );
1404    DO_D( VPERM2I128_0x30 );
1405    DO_D( VPERM2I128_0x21 );
1406    DO_D( VPERM2I128_0x12 );
1407    DO_D( VPERM2I128_0x03 );
1408    DO_D( VPERM2I128_0x85 );
1409    DO_D( VPERM2I128_0x5A );
1410    DO_D( VBROADCASTSS_128 );
1411    DO_D( VBROADCASTSS_256 );
1412    DO_D( VBROADCASTSD_256 );
1413    DO_D( VPERMD );
1414    DO_D( VPERMQ_0x00 );
1415    DO_D( VPERMQ_0xFE );
1416    DO_D( VPERMQ_0x30 );
1417    DO_D( VPERMQ_0x21 );
1418    DO_D( VPERMQ_0xD7 );
1419    DO_D( VPERMQ_0xB5 );
1420    DO_D( VPERMQ_0x85 );
1421    DO_D( VPERMQ_0x29 );
1422    DO_D( VPERMPS );
1423    DO_D( VPERMPD_0x00 );
1424    DO_D( VPERMPD_0xFE );
1425    DO_D( VPERMPD_0x30 );
1426    DO_D( VPERMPD_0x21 );
1427    DO_D( VPERMPD_0xD7 );
1428    DO_D( VPERMPD_0xB5 );
1429    DO_D( VPERMPD_0x85 );
1430    DO_D( VPERMPD_0x29 );
1431    DO_D( VPBLENDD_128_0x00 );
1432    DO_D( VPBLENDD_128_0x02 );
1433    DO_D( VPBLENDD_128_0x04 );
1434    DO_D( VPBLENDD_128_0x06 );
1435    DO_D( VPBLENDD_128_0x08 );
1436    DO_D( VPBLENDD_128_0x0A );
1437    DO_D( VPBLENDD_128_0x0C );
1438    DO_D( VPBLENDD_128_0x0E );
1439    DO_D( VPBLENDD_256_0x00 );
1440    DO_D( VPBLENDD_256_0xFE );
1441    DO_D( VPBLENDD_256_0x30 );
1442    DO_D( VPBLENDD_256_0x21 );
1443    DO_D( VPBLENDD_256_0xD7 );
1444    DO_D( VPBLENDD_256_0xB5 );
1445    DO_D( VPBLENDD_256_0x85 );
1446    DO_D( VPBLENDD_256_0x29 );
1447    DO_D( VPSLLVD_128 );
1448    DO_D( VPSLLVD_256 );
1449    DO_D( VPSLLVQ_128 );
1450    DO_D( VPSLLVQ_256 );
1451    DO_D( VPSRLVD_128 );
1452    DO_D( VPSRLVD_256 );
1453    DO_D( VPSRLVQ_128 );
1454    DO_D( VPSRLVQ_256 );
1455    DO_D( VPSRAVD_128 );
1456    DO_D( VPSRAVD_256 );
1457    DO_D( VPBROADCASTB_128 );
1458    DO_D( VPBROADCASTB_256 );
1459    DO_D( VPBROADCASTW_128 );
1460    DO_D( VPBROADCASTW_256 );
1461    DO_D( VPBROADCASTD_128 );
1462    DO_D( VPBROADCASTD_256 );
1463    DO_D( VPBROADCASTQ_128 );
1464    DO_D( VPBROADCASTQ_256 );
1465    DO_D( VPMASKMOVD_128_LoadForm );
1466    DO_D( VPMASKMOVD_256_LoadForm );
1467    DO_D( VPMASKMOVQ_128_LoadForm );
1468    DO_D( VPMASKMOVQ_256_LoadForm );
1469    DO_D( VPMASKMOVD_128_StoreForm );
1470    DO_D( VPMASKMOVD_256_StoreForm );
1471    DO_D( VPMASKMOVQ_128_StoreForm );
1472    DO_D( VPMASKMOVQ_256_StoreForm );
1473 #if defined(VGO_darwin)
1474    { int i; for (i = 0; i < sizeof(randArray); i++) randArray[i] = randUChar(); }
1475 #else
1476    { int i; for (i = 0; i < sizeof(_randArray); i++) _randArray[i] = randUChar(); }
1477 #endif
1478    DO_D( VGATHERDPS_128 );
1479    DO_D( VGATHERDPS_256 );
1480    DO_D( VGATHERQPS_128_1 );
1481    DO_D( VGATHERQPS_256_1 );
1482    DO_D( VGATHERQPS_128_2 );
1483    DO_D( VGATHERQPS_256_2 );
1484    DO_D( VGATHERDPD_128 );
1485    DO_D( VGATHERDPD_256 );
1486    DO_D( VGATHERQPD_128_1 );
1487    DO_D( VGATHERQPD_256_1 );
1488    DO_D( VGATHERQPD_128_2 );
1489    DO_D( VGATHERQPD_256_2 );
1490    DO_D( VPGATHERDD_128 );
1491    DO_D( VPGATHERDD_256 );
1492    DO_D( VPGATHERQD_128_1 );
1493    DO_D( VPGATHERQD_256_1 );
1494    DO_D( VPGATHERQD_128_2 );
1495    DO_D( VPGATHERQD_256_2 );
1496    DO_D( VPGATHERDQ_128 );
1497    DO_D( VPGATHERDQ_256 );
1498    DO_D( VPGATHERQQ_128_1 );
1499    DO_D( VPGATHERQQ_256_1 );
1500    DO_D( VPGATHERQQ_128_2 );
1501    DO_D( VPGATHERQQ_256_2 );
1502    return 0;
1503 }
1504