root/tools/perf/arch/x86/tests/insn-x86-dat-src.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * This file contains instructions for testing by the test titled:
   4  *
   5  *         "Test x86 instruction decoder - new instructions"
   6  *
   7  * Note that the 'Expecting' comment lines are consumed by the
   8  * gen-insn-x86-dat.awk script and have the format:
   9  *
  10  *         Expecting: <op> <branch> <rel>
  11  *
  12  * If this file is changed, remember to run the gen-insn-x86-dat.sh
  13  * script and commit the result.
  14  *
  15  * Refer to insn-x86.c for more details.
  16  */
  17 
  18 int main(void)
  19 {
  20         /* Following line is a marker for the awk script - do not change */
  21         asm volatile("rdtsc"); /* Start here */
  22 
  23         /* Test fix for vcvtph2ps in x86-opcode-map.txt */
  24 
  25         asm volatile("vcvtph2ps %xmm3,%ymm5");
  26 
  27 #ifdef __x86_64__
  28 
  29         /* AVX-512: Instructions with the same op codes as Mask Instructions  */
  30 
  31         asm volatile("cmovno %rax,%rbx");
  32         asm volatile("cmovno 0x12345678(%rax),%rcx");
  33         asm volatile("cmovno 0x12345678(%rax),%cx");
  34 
  35         asm volatile("cmove  %rax,%rbx");
  36         asm volatile("cmove 0x12345678(%rax),%rcx");
  37         asm volatile("cmove 0x12345678(%rax),%cx");
  38 
  39         asm volatile("seto    0x12345678(%rax)");
  40         asm volatile("setno   0x12345678(%rax)");
  41         asm volatile("setb    0x12345678(%rax)");
  42         asm volatile("setc    0x12345678(%rax)");
  43         asm volatile("setnae  0x12345678(%rax)");
  44         asm volatile("setae   0x12345678(%rax)");
  45         asm volatile("setnb   0x12345678(%rax)");
  46         asm volatile("setnc   0x12345678(%rax)");
  47         asm volatile("sets    0x12345678(%rax)");
  48         asm volatile("setns   0x12345678(%rax)");
  49 
  50         /* AVX-512: Mask Instructions */
  51 
  52         asm volatile("kandw  %k7,%k6,%k5");
  53         asm volatile("kandq  %k7,%k6,%k5");
  54         asm volatile("kandb  %k7,%k6,%k5");
  55         asm volatile("kandd  %k7,%k6,%k5");
  56 
  57         asm volatile("kandnw  %k7,%k6,%k5");
  58         asm volatile("kandnq  %k7,%k6,%k5");
  59         asm volatile("kandnb  %k7,%k6,%k5");
  60         asm volatile("kandnd  %k7,%k6,%k5");
  61 
  62         asm volatile("knotw  %k7,%k6");
  63         asm volatile("knotq  %k7,%k6");
  64         asm volatile("knotb  %k7,%k6");
  65         asm volatile("knotd  %k7,%k6");
  66 
  67         asm volatile("korw  %k7,%k6,%k5");
  68         asm volatile("korq  %k7,%k6,%k5");
  69         asm volatile("korb  %k7,%k6,%k5");
  70         asm volatile("kord  %k7,%k6,%k5");
  71 
  72         asm volatile("kxnorw  %k7,%k6,%k5");
  73         asm volatile("kxnorq  %k7,%k6,%k5");
  74         asm volatile("kxnorb  %k7,%k6,%k5");
  75         asm volatile("kxnord  %k7,%k6,%k5");
  76 
  77         asm volatile("kxorw  %k7,%k6,%k5");
  78         asm volatile("kxorq  %k7,%k6,%k5");
  79         asm volatile("kxorb  %k7,%k6,%k5");
  80         asm volatile("kxord  %k7,%k6,%k5");
  81 
  82         asm volatile("kaddw  %k7,%k6,%k5");
  83         asm volatile("kaddq  %k7,%k6,%k5");
  84         asm volatile("kaddb  %k7,%k6,%k5");
  85         asm volatile("kaddd  %k7,%k6,%k5");
  86 
  87         asm volatile("kunpckbw %k7,%k6,%k5");
  88         asm volatile("kunpckwd %k7,%k6,%k5");
  89         asm volatile("kunpckdq %k7,%k6,%k5");
  90 
  91         asm volatile("kmovw  %k6,%k5");
  92         asm volatile("kmovw  (%rcx),%k5");
  93         asm volatile("kmovw  0x123(%rax,%r14,8),%k5");
  94         asm volatile("kmovw  %k5,(%rcx)");
  95         asm volatile("kmovw  %k5,0x123(%rax,%r14,8)");
  96         asm volatile("kmovw  %eax,%k5");
  97         asm volatile("kmovw  %ebp,%k5");
  98         asm volatile("kmovw  %r13d,%k5");
  99         asm volatile("kmovw  %k5,%eax");
 100         asm volatile("kmovw  %k5,%ebp");
 101         asm volatile("kmovw  %k5,%r13d");
 102 
 103         asm volatile("kmovq  %k6,%k5");
 104         asm volatile("kmovq  (%rcx),%k5");
 105         asm volatile("kmovq  0x123(%rax,%r14,8),%k5");
 106         asm volatile("kmovq  %k5,(%rcx)");
 107         asm volatile("kmovq  %k5,0x123(%rax,%r14,8)");
 108         asm volatile("kmovq  %rax,%k5");
 109         asm volatile("kmovq  %rbp,%k5");
 110         asm volatile("kmovq  %r13,%k5");
 111         asm volatile("kmovq  %k5,%rax");
 112         asm volatile("kmovq  %k5,%rbp");
 113         asm volatile("kmovq  %k5,%r13");
 114 
 115         asm volatile("kmovb  %k6,%k5");
 116         asm volatile("kmovb  (%rcx),%k5");
 117         asm volatile("kmovb  0x123(%rax,%r14,8),%k5");
 118         asm volatile("kmovb  %k5,(%rcx)");
 119         asm volatile("kmovb  %k5,0x123(%rax,%r14,8)");
 120         asm volatile("kmovb  %eax,%k5");
 121         asm volatile("kmovb  %ebp,%k5");
 122         asm volatile("kmovb  %r13d,%k5");
 123         asm volatile("kmovb  %k5,%eax");
 124         asm volatile("kmovb  %k5,%ebp");
 125         asm volatile("kmovb  %k5,%r13d");
 126 
 127         asm volatile("kmovd  %k6,%k5");
 128         asm volatile("kmovd  (%rcx),%k5");
 129         asm volatile("kmovd  0x123(%rax,%r14,8),%k5");
 130         asm volatile("kmovd  %k5,(%rcx)");
 131         asm volatile("kmovd  %k5,0x123(%rax,%r14,8)");
 132         asm volatile("kmovd  %eax,%k5");
 133         asm volatile("kmovd  %ebp,%k5");
 134         asm volatile("kmovd  %r13d,%k5");
 135         asm volatile("kmovd  %k5,%eax");
 136         asm volatile("kmovd  %k5,%ebp");
 137         asm volatile("kmovd %k5,%r13d");
 138 
 139         asm volatile("kortestw %k6,%k5");
 140         asm volatile("kortestq %k6,%k5");
 141         asm volatile("kortestb %k6,%k5");
 142         asm volatile("kortestd %k6,%k5");
 143 
 144         asm volatile("ktestw %k6,%k5");
 145         asm volatile("ktestq %k6,%k5");
 146         asm volatile("ktestb %k6,%k5");
 147         asm volatile("ktestd %k6,%k5");
 148 
 149         asm volatile("kshiftrw $0x12,%k6,%k5");
 150         asm volatile("kshiftrq $0x5b,%k6,%k5");
 151         asm volatile("kshiftlw $0x12,%k6,%k5");
 152         asm volatile("kshiftlq $0x5b,%k6,%k5");
 153 
 154         /* AVX-512: Op code 0f 5b */
 155         asm volatile("vcvtdq2ps %xmm5,%xmm6");
 156         asm volatile("vcvtqq2ps %zmm29,%ymm6{%k7}");
 157         asm volatile("vcvtps2dq %xmm5,%xmm6");
 158         asm volatile("vcvttps2dq %xmm5,%xmm6");
 159 
 160         /* AVX-512: Op code 0f 6f */
 161 
 162         asm volatile("movq   %mm0,%mm4");
 163         asm volatile("vmovdqa %ymm4,%ymm6");
 164         asm volatile("vmovdqa32 %zmm25,%zmm26");
 165         asm volatile("vmovdqa64 %zmm25,%zmm26");
 166         asm volatile("vmovdqu %ymm4,%ymm6");
 167         asm volatile("vmovdqu32 %zmm29,%zmm30");
 168         asm volatile("vmovdqu64 %zmm25,%zmm26");
 169         asm volatile("vmovdqu8 %zmm29,%zmm30");
 170         asm volatile("vmovdqu16 %zmm25,%zmm26");
 171 
 172         /* AVX-512: Op code 0f 78 */
 173 
 174         asm volatile("vmread %rax,%rbx");
 175         asm volatile("vcvttps2udq %zmm25,%zmm26");
 176         asm volatile("vcvttpd2udq %zmm29,%ymm6{%k7}");
 177         asm volatile("vcvttsd2usi %xmm6,%rax");
 178         asm volatile("vcvttss2usi %xmm6,%rax");
 179         asm volatile("vcvttps2uqq %ymm5,%zmm26{%k7}");
 180         asm volatile("vcvttpd2uqq %zmm29,%zmm30");
 181 
 182         /* AVX-512: Op code 0f 79 */
 183 
 184         asm volatile("vmwrite %rax,%rbx");
 185         asm volatile("vcvtps2udq %zmm25,%zmm26");
 186         asm volatile("vcvtpd2udq %zmm29,%ymm6{%k7}");
 187         asm volatile("vcvtsd2usi %xmm6,%rax");
 188         asm volatile("vcvtss2usi %xmm6,%rax");
 189         asm volatile("vcvtps2uqq %ymm5,%zmm26{%k7}");
 190         asm volatile("vcvtpd2uqq %zmm29,%zmm30");
 191 
 192         /* AVX-512: Op code 0f 7a */
 193 
 194         asm volatile("vcvtudq2pd %ymm5,%zmm29{%k7}");
 195         asm volatile("vcvtuqq2pd %zmm25,%zmm26");
 196         asm volatile("vcvtudq2ps %zmm29,%zmm30");
 197         asm volatile("vcvtuqq2ps %zmm25,%ymm26{%k7}");
 198         asm volatile("vcvttps2qq %ymm25,%zmm26{%k7}");
 199         asm volatile("vcvttpd2qq %zmm29,%zmm30");
 200 
 201         /* AVX-512: Op code 0f 7b */
 202 
 203         asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
 204         asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
 205         asm volatile("vcvtps2qq %ymm5,%zmm26{%k7}");
 206         asm volatile("vcvtpd2qq %zmm29,%zmm30");
 207 
 208         /* AVX-512: Op code 0f 7f */
 209 
 210         asm volatile("movq.s  %mm0,%mm4");
 211         asm volatile("vmovdqa %ymm8,%ymm6");
 212         asm volatile("vmovdqa32.s %zmm25,%zmm26");
 213         asm volatile("vmovdqa64.s %zmm25,%zmm26");
 214         asm volatile("vmovdqu %ymm8,%ymm6");
 215         asm volatile("vmovdqu32.s %zmm25,%zmm26");
 216         asm volatile("vmovdqu64.s %zmm25,%zmm26");
 217         asm volatile("vmovdqu8.s %zmm30,(%rcx)");
 218         asm volatile("vmovdqu16.s %zmm25,%zmm26");
 219 
 220         /* AVX-512: Op code 0f db */
 221 
 222         asm volatile("pand  %mm1,%mm2");
 223         asm volatile("pand  %xmm1,%xmm2");
 224         asm volatile("vpand  %ymm4,%ymm6,%ymm2");
 225         asm volatile("vpandd %zmm24,%zmm25,%zmm26");
 226         asm volatile("vpandq %zmm24,%zmm25,%zmm26");
 227 
 228         /* AVX-512: Op code 0f df */
 229 
 230         asm volatile("pandn  %mm1,%mm2");
 231         asm volatile("pandn  %xmm1,%xmm2");
 232         asm volatile("vpandn %ymm4,%ymm6,%ymm2");
 233         asm volatile("vpandnd %zmm24,%zmm25,%zmm26");
 234         asm volatile("vpandnq %zmm24,%zmm25,%zmm26");
 235 
 236         /* AVX-512: Op code 0f e6 */
 237 
 238         asm volatile("vcvttpd2dq %xmm1,%xmm2");
 239         asm volatile("vcvtdq2pd %xmm5,%xmm6");
 240         asm volatile("vcvtdq2pd %ymm5,%zmm26{%k7}");
 241         asm volatile("vcvtqq2pd %zmm25,%zmm26");
 242         asm volatile("vcvtpd2dq %xmm1,%xmm2");
 243 
 244         /* AVX-512: Op code 0f eb */
 245 
 246         asm volatile("por   %mm4,%mm6");
 247         asm volatile("vpor   %ymm4,%ymm6,%ymm2");
 248         asm volatile("vpord  %zmm24,%zmm25,%zmm26");
 249         asm volatile("vporq  %zmm24,%zmm25,%zmm26");
 250 
 251         /* AVX-512: Op code 0f ef */
 252 
 253         asm volatile("pxor   %mm4,%mm6");
 254         asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
 255         asm volatile("vpxord %zmm24,%zmm25,%zmm26");
 256         asm volatile("vpxorq %zmm24,%zmm25,%zmm26");
 257 
 258         /* AVX-512: Op code 0f 38 10 */
 259 
 260         asm volatile("pblendvb %xmm1,%xmm0");
 261         asm volatile("vpsrlvw %zmm27,%zmm28,%zmm29");
 262         asm volatile("vpmovuswb %zmm28,%ymm6{%k7}");
 263 
 264         /* AVX-512: Op code 0f 38 11 */
 265 
 266         asm volatile("vpmovusdb %zmm28,%xmm6{%k7}");
 267         asm volatile("vpsravw %zmm27,%zmm28,%zmm29");
 268 
 269         /* AVX-512: Op code 0f 38 12 */
 270 
 271         asm volatile("vpmovusqb %zmm27,%xmm6{%k7}");
 272         asm volatile("vpsllvw %zmm27,%zmm28,%zmm29");
 273 
 274         /* AVX-512: Op code 0f 38 13 */
 275 
 276         asm volatile("vcvtph2ps %xmm3,%ymm5");
 277         asm volatile("vcvtph2ps %ymm5,%zmm27{%k7}");
 278         asm volatile("vpmovusdw %zmm27,%ymm6{%k7}");
 279 
 280         /* AVX-512: Op code 0f 38 14 */
 281 
 282         asm volatile("blendvps %xmm1,%xmm0");
 283         asm volatile("vpmovusqw %zmm27,%xmm6{%k7}");
 284         asm volatile("vprorvd %zmm27,%zmm28,%zmm29");
 285         asm volatile("vprorvq %zmm27,%zmm28,%zmm29");
 286 
 287         /* AVX-512: Op code 0f 38 15 */
 288 
 289         asm volatile("blendvpd %xmm1,%xmm0");
 290         asm volatile("vpmovusqd %zmm27,%ymm6{%k7}");
 291         asm volatile("vprolvd %zmm27,%zmm28,%zmm29");
 292         asm volatile("vprolvq %zmm27,%zmm28,%zmm29");
 293 
 294         /* AVX-512: Op code 0f 38 16 */
 295 
 296         asm volatile("vpermps %ymm4,%ymm6,%ymm2");
 297         asm volatile("vpermps %ymm24,%ymm26,%ymm22{%k7}");
 298         asm volatile("vpermpd %ymm24,%ymm26,%ymm22{%k7}");
 299 
 300         /* AVX-512: Op code 0f 38 19 */
 301 
 302         asm volatile("vbroadcastsd %xmm4,%ymm6");
 303         asm volatile("vbroadcastf32x2 %xmm27,%zmm26");
 304 
 305         /* AVX-512: Op code 0f 38 1a */
 306 
 307         asm volatile("vbroadcastf128 (%rcx),%ymm4");
 308         asm volatile("vbroadcastf32x4 (%rcx),%zmm26");
 309         asm volatile("vbroadcastf64x2 (%rcx),%zmm26");
 310 
 311         /* AVX-512: Op code 0f 38 1b */
 312 
 313         asm volatile("vbroadcastf32x8 (%rcx),%zmm27");
 314         asm volatile("vbroadcastf64x4 (%rcx),%zmm26");
 315 
 316         /* AVX-512: Op code 0f 38 1f */
 317 
 318         asm volatile("vpabsq %zmm27,%zmm28");
 319 
 320         /* AVX-512: Op code 0f 38 20 */
 321 
 322         asm volatile("vpmovsxbw %xmm4,%xmm5");
 323         asm volatile("vpmovswb %zmm27,%ymm6{%k7}");
 324 
 325         /* AVX-512: Op code 0f 38 21 */
 326 
 327         asm volatile("vpmovsxbd %xmm4,%ymm6");
 328         asm volatile("vpmovsdb %zmm27,%xmm6{%k7}");
 329 
 330         /* AVX-512: Op code 0f 38 22 */
 331 
 332         asm volatile("vpmovsxbq %xmm4,%ymm4");
 333         asm volatile("vpmovsqb %zmm27,%xmm6{%k7}");
 334 
 335         /* AVX-512: Op code 0f 38 23 */
 336 
 337         asm volatile("vpmovsxwd %xmm4,%ymm4");
 338         asm volatile("vpmovsdw %zmm27,%ymm6{%k7}");
 339 
 340         /* AVX-512: Op code 0f 38 24 */
 341 
 342         asm volatile("vpmovsxwq %xmm4,%ymm6");
 343         asm volatile("vpmovsqw %zmm27,%xmm6{%k7}");
 344 
 345         /* AVX-512: Op code 0f 38 25 */
 346 
 347         asm volatile("vpmovsxdq %xmm4,%ymm4");
 348         asm volatile("vpmovsqd %zmm27,%ymm6{%k7}");
 349 
 350         /* AVX-512: Op code 0f 38 26 */
 351 
 352         asm volatile("vptestmb %zmm27,%zmm28,%k5");
 353         asm volatile("vptestmw %zmm27,%zmm28,%k5");
 354         asm volatile("vptestnmb %zmm26,%zmm27,%k5");
 355         asm volatile("vptestnmw %zmm26,%zmm27,%k5");
 356 
 357         /* AVX-512: Op code 0f 38 27 */
 358 
 359         asm volatile("vptestmd %zmm27,%zmm28,%k5");
 360         asm volatile("vptestmq %zmm27,%zmm28,%k5");
 361         asm volatile("vptestnmd %zmm26,%zmm27,%k5");
 362         asm volatile("vptestnmq %zmm26,%zmm27,%k5");
 363 
 364         /* AVX-512: Op code 0f 38 28 */
 365 
 366         asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
 367         asm volatile("vpmovm2b %k5,%zmm28");
 368         asm volatile("vpmovm2w %k5,%zmm28");
 369 
 370         /* AVX-512: Op code 0f 38 29 */
 371 
 372         asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
 373         asm volatile("vpmovb2m %zmm28,%k5");
 374         asm volatile("vpmovw2m %zmm28,%k5");
 375 
 376         /* AVX-512: Op code 0f 38 2a */
 377 
 378         asm volatile("vmovntdqa (%rcx),%ymm4");
 379         asm volatile("vpbroadcastmb2q %k6,%zmm30");
 380 
 381         /* AVX-512: Op code 0f 38 2c */
 382 
 383         asm volatile("vmaskmovps (%rcx),%ymm4,%ymm6");
 384         asm volatile("vscalefps %zmm24,%zmm25,%zmm26");
 385         asm volatile("vscalefpd %zmm24,%zmm25,%zmm26");
 386 
 387         /* AVX-512: Op code 0f 38 2d */
 388 
 389         asm volatile("vmaskmovpd (%rcx),%ymm4,%ymm6");
 390         asm volatile("vscalefss %xmm24,%xmm25,%xmm26{%k7}");
 391         asm volatile("vscalefsd %xmm24,%xmm25,%xmm26{%k7}");
 392 
 393         /* AVX-512: Op code 0f 38 30 */
 394 
 395         asm volatile("vpmovzxbw %xmm4,%ymm4");
 396         asm volatile("vpmovwb %zmm27,%ymm6{%k7}");
 397 
 398         /* AVX-512: Op code 0f 38 31 */
 399 
 400         asm volatile("vpmovzxbd %xmm4,%ymm6");
 401         asm volatile("vpmovdb %zmm27,%xmm6{%k7}");
 402 
 403         /* AVX-512: Op code 0f 38 32 */
 404 
 405         asm volatile("vpmovzxbq %xmm4,%ymm4");
 406         asm volatile("vpmovqb %zmm27,%xmm6{%k7}");
 407 
 408         /* AVX-512: Op code 0f 38 33 */
 409 
 410         asm volatile("vpmovzxwd %xmm4,%ymm4");
 411         asm volatile("vpmovdw %zmm27,%ymm6{%k7}");
 412 
 413         /* AVX-512: Op code 0f 38 34 */
 414 
 415         asm volatile("vpmovzxwq %xmm4,%ymm6");
 416         asm volatile("vpmovqw %zmm27,%xmm6{%k7}");
 417 
 418         /* AVX-512: Op code 0f 38 35 */
 419 
 420         asm volatile("vpmovzxdq %xmm4,%ymm4");
 421         asm volatile("vpmovqd %zmm27,%ymm6{%k7}");
 422 
 423         /* AVX-512: Op code 0f 38 38 */
 424 
 425         asm volatile("vpermd %ymm4,%ymm6,%ymm2");
 426         asm volatile("vpermd %ymm24,%ymm26,%ymm22{%k7}");
 427         asm volatile("vpermq %ymm24,%ymm26,%ymm22{%k7}");
 428 
 429         /* AVX-512: Op code 0f 38 38 */
 430 
 431         asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
 432         asm volatile("vpmovm2d %k5,%zmm28");
 433         asm volatile("vpmovm2q %k5,%zmm28");
 434 
 435         /* AVX-512: Op code 0f 38 39 */
 436 
 437         asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
 438         asm volatile("vpminsd %zmm24,%zmm25,%zmm26");
 439         asm volatile("vpminsq %zmm24,%zmm25,%zmm26");
 440         asm volatile("vpmovd2m %zmm28,%k5");
 441         asm volatile("vpmovq2m %zmm28,%k5");
 442 
 443         /* AVX-512: Op code 0f 38 3a */
 444 
 445         asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
 446         asm volatile("vpbroadcastmw2d %k6,%zmm28");
 447 
 448         /* AVX-512: Op code 0f 38 3b */
 449 
 450         asm volatile("vpminud %ymm4,%ymm6,%ymm2");
 451         asm volatile("vpminud %zmm24,%zmm25,%zmm26");
 452         asm volatile("vpminuq %zmm24,%zmm25,%zmm26");
 453 
 454         /* AVX-512: Op code 0f 38 3d */
 455 
 456         asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
 457         asm volatile("vpmaxsd %zmm24,%zmm25,%zmm26");
 458         asm volatile("vpmaxsq %zmm24,%zmm25,%zmm26");
 459 
 460         /* AVX-512: Op code 0f 38 3f */
 461 
 462         asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
 463         asm volatile("vpmaxud %zmm24,%zmm25,%zmm26");
 464         asm volatile("vpmaxuq %zmm24,%zmm25,%zmm26");
 465 
 466         /* AVX-512: Op code 0f 38 42 */
 467 
 468         asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
 469         asm volatile("vpmulld %zmm24,%zmm25,%zmm26");
 470         asm volatile("vpmullq %zmm24,%zmm25,%zmm26");
 471 
 472         /* AVX-512: Op code 0f 38 42 */
 473 
 474         asm volatile("vgetexpps %zmm25,%zmm26");
 475         asm volatile("vgetexppd %zmm27,%zmm28");
 476 
 477         /* AVX-512: Op code 0f 38 43 */
 478 
 479         asm volatile("vgetexpss %xmm24,%xmm25,%xmm26{%k7}");
 480         asm volatile("vgetexpsd %xmm28,%xmm29,%xmm30{%k7}");
 481 
 482         /* AVX-512: Op code 0f 38 44 */
 483 
 484         asm volatile("vplzcntd %zmm27,%zmm28");
 485         asm volatile("vplzcntq %zmm27,%zmm28");
 486 
 487         /* AVX-512: Op code 0f 38 46 */
 488 
 489         asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
 490         asm volatile("vpsravd %zmm24,%zmm25,%zmm26");
 491         asm volatile("vpsravq %zmm24,%zmm25,%zmm26");
 492 
 493         /* AVX-512: Op code 0f 38 4c */
 494 
 495         asm volatile("vrcp14ps %zmm25,%zmm26");
 496         asm volatile("vrcp14pd %zmm27,%zmm28");
 497 
 498         /* AVX-512: Op code 0f 38 4d */
 499 
 500         asm volatile("vrcp14ss %xmm24,%xmm25,%xmm26{%k7}");
 501         asm volatile("vrcp14sd %xmm24,%xmm25,%xmm26{%k7}");
 502 
 503         /* AVX-512: Op code 0f 38 4e */
 504 
 505         asm volatile("vrsqrt14ps %zmm25,%zmm26");
 506         asm volatile("vrsqrt14pd %zmm27,%zmm28");
 507 
 508         /* AVX-512: Op code 0f 38 4f */
 509 
 510         asm volatile("vrsqrt14ss %xmm24,%xmm25,%xmm26{%k7}");
 511         asm volatile("vrsqrt14sd %xmm24,%xmm25,%xmm26{%k7}");
 512 
 513         /* AVX-512: Op code 0f 38 59 */
 514 
 515         asm volatile("vpbroadcastq %xmm4,%xmm6");
 516         asm volatile("vbroadcasti32x2 %xmm27,%zmm26");
 517 
 518         /* AVX-512: Op code 0f 38 5a */
 519 
 520         asm volatile("vbroadcasti128 (%rcx),%ymm4");
 521         asm volatile("vbroadcasti32x4 (%rcx),%zmm26");
 522         asm volatile("vbroadcasti64x2 (%rcx),%zmm26");
 523 
 524         /* AVX-512: Op code 0f 38 5b */
 525 
 526         asm volatile("vbroadcasti32x8 (%rcx),%zmm28");
 527         asm volatile("vbroadcasti64x4 (%rcx),%zmm26");
 528 
 529         /* AVX-512: Op code 0f 38 64 */
 530 
 531         asm volatile("vpblendmd %zmm26,%zmm27,%zmm28");
 532         asm volatile("vpblendmq %zmm26,%zmm27,%zmm28");
 533 
 534         /* AVX-512: Op code 0f 38 65 */
 535 
 536         asm volatile("vblendmps %zmm24,%zmm25,%zmm26");
 537         asm volatile("vblendmpd %zmm26,%zmm27,%zmm28");
 538 
 539         /* AVX-512: Op code 0f 38 66 */
 540 
 541         asm volatile("vpblendmb %zmm26,%zmm27,%zmm28");
 542         asm volatile("vpblendmw %zmm26,%zmm27,%zmm28");
 543 
 544         /* AVX-512: Op code 0f 38 75 */
 545 
 546         asm volatile("vpermi2b %zmm24,%zmm25,%zmm26");
 547         asm volatile("vpermi2w %zmm26,%zmm27,%zmm28");
 548 
 549         /* AVX-512: Op code 0f 38 76 */
 550 
 551         asm volatile("vpermi2d %zmm26,%zmm27,%zmm28");
 552         asm volatile("vpermi2q %zmm26,%zmm27,%zmm28");
 553 
 554         /* AVX-512: Op code 0f 38 77 */
 555 
 556         asm volatile("vpermi2ps %zmm26,%zmm27,%zmm28");
 557         asm volatile("vpermi2pd %zmm26,%zmm27,%zmm28");
 558 
 559         /* AVX-512: Op code 0f 38 7a */
 560 
 561         asm volatile("vpbroadcastb %eax,%xmm30");
 562 
 563         /* AVX-512: Op code 0f 38 7b */
 564 
 565         asm volatile("vpbroadcastw %eax,%xmm30");
 566 
 567         /* AVX-512: Op code 0f 38 7c */
 568 
 569         asm volatile("vpbroadcastd %eax,%xmm30");
 570         asm volatile("vpbroadcastq %rax,%zmm30");
 571 
 572         /* AVX-512: Op code 0f 38 7d */
 573 
 574         asm volatile("vpermt2b %zmm26,%zmm27,%zmm28");
 575         asm volatile("vpermt2w %zmm26,%zmm27,%zmm28");
 576 
 577         /* AVX-512: Op code 0f 38 7e */
 578 
 579         asm volatile("vpermt2d %zmm26,%zmm27,%zmm28");
 580         asm volatile("vpermt2q %zmm26,%zmm27,%zmm28");
 581 
 582         /* AVX-512: Op code 0f 38 7f */
 583 
 584         asm volatile("vpermt2ps %zmm26,%zmm27,%zmm28");
 585         asm volatile("vpermt2pd %zmm26,%zmm27,%zmm28");
 586 
 587         /* AVX-512: Op code 0f 38 83 */
 588 
 589         asm volatile("vpmultishiftqb %zmm26,%zmm27,%zmm28");
 590 
 591         /* AVX-512: Op code 0f 38 88 */
 592 
 593         asm volatile("vexpandps (%rcx),%zmm26");
 594         asm volatile("vexpandpd (%rcx),%zmm28");
 595 
 596         /* AVX-512: Op code 0f 38 89 */
 597 
 598         asm volatile("vpexpandd (%rcx),%zmm28");
 599         asm volatile("vpexpandq (%rcx),%zmm26");
 600 
 601         /* AVX-512: Op code 0f 38 8a */
 602 
 603         asm volatile("vcompressps %zmm28,(%rcx)");
 604         asm volatile("vcompresspd %zmm28,(%rcx)");
 605 
 606         /* AVX-512: Op code 0f 38 8b */
 607 
 608         asm volatile("vpcompressd %zmm28,(%rcx)");
 609         asm volatile("vpcompressq %zmm26,(%rcx)");
 610 
 611         /* AVX-512: Op code 0f 38 8d */
 612 
 613         asm volatile("vpermb %zmm26,%zmm27,%zmm28");
 614         asm volatile("vpermw %zmm26,%zmm27,%zmm28");
 615 
 616         /* AVX-512: Op code 0f 38 90 */
 617 
 618         asm volatile("vpgatherdd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
 619         asm volatile("vpgatherdq %xmm2,0x04(%rbp,%xmm7,2),%xmm1");
 620         asm volatile("vpgatherdd 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
 621         asm volatile("vpgatherdq 0x7b(%rbp,%ymm27,8),%zmm26{%k1}");
 622 
 623         /* AVX-512: Op code 0f 38 91 */
 624 
 625         asm volatile("vpgatherqd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
 626         asm volatile("vpgatherqq %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
 627         asm volatile("vpgatherqd 0x7b(%rbp,%zmm27,8),%ymm26{%k1}");
 628         asm volatile("vpgatherqq 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
 629 
 630         /* AVX-512: Op code 0f 38 a0 */
 631 
 632         asm volatile("vpscatterdd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
 633         asm volatile("vpscatterdq %zmm26,0x7b(%rbp,%ymm27,8){%k1}");
 634 
 635         /* AVX-512: Op code 0f 38 a1 */
 636 
 637         asm volatile("vpscatterqd %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
 638         asm volatile("vpscatterqq %ymm6,0x7b(%rbp,%ymm27,8){%k1}");
 639 
 640         /* AVX-512: Op code 0f 38 a2 */
 641 
 642         asm volatile("vscatterdps %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
 643         asm volatile("vscatterdpd %zmm28,0x7b(%rbp,%ymm27,8){%k1}");
 644 
 645         /* AVX-512: Op code 0f 38 a3 */
 646 
 647         asm volatile("vscatterqps %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
 648         asm volatile("vscatterqpd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
 649 
 650         /* AVX-512: Op code 0f 38 b4 */
 651 
 652         asm volatile("vpmadd52luq %zmm26,%zmm27,%zmm28");
 653 
 654         /* AVX-512: Op code 0f 38 b5 */
 655 
 656         asm volatile("vpmadd52huq %zmm26,%zmm27,%zmm28");
 657 
 658         /* AVX-512: Op code 0f 38 c4 */
 659 
 660         asm volatile("vpconflictd %zmm26,%zmm27");
 661         asm volatile("vpconflictq %zmm26,%zmm27");
 662 
 663         /* AVX-512: Op code 0f 38 c8 */
 664 
 665         asm volatile("vexp2ps %zmm29,%zmm30");
 666         asm volatile("vexp2pd %zmm26,%zmm27");
 667 
 668         /* AVX-512: Op code 0f 38 ca */
 669 
 670         asm volatile("vrcp28ps %zmm29,%zmm30");
 671         asm volatile("vrcp28pd %zmm26,%zmm27");
 672 
 673         /* AVX-512: Op code 0f 38 cb */
 674 
 675         asm volatile("vrcp28ss %xmm28,%xmm29,%xmm30{%k7}");
 676         asm volatile("vrcp28sd %xmm25,%xmm26,%xmm27{%k7}");
 677 
 678         /* AVX-512: Op code 0f 38 cc */
 679 
 680         asm volatile("vrsqrt28ps %zmm29,%zmm30");
 681         asm volatile("vrsqrt28pd %zmm26,%zmm27");
 682 
 683         /* AVX-512: Op code 0f 38 cd */
 684 
 685         asm volatile("vrsqrt28ss %xmm28,%xmm29,%xmm30{%k7}");
 686         asm volatile("vrsqrt28sd %xmm25,%xmm26,%xmm27{%k7}");
 687 
 688         /* AVX-512: Op code 0f 3a 03 */
 689 
 690         asm volatile("valignd $0x12,%zmm28,%zmm29,%zmm30");
 691         asm volatile("valignq $0x12,%zmm25,%zmm26,%zmm27");
 692 
 693         /* AVX-512: Op code 0f 3a 08 */
 694 
 695         asm volatile("vroundps $0x5,%ymm6,%ymm2");
 696         asm volatile("vrndscaleps $0x12,%zmm25,%zmm26");
 697 
 698         /* AVX-512: Op code 0f 3a 09 */
 699 
 700         asm volatile("vroundpd $0x5,%ymm6,%ymm2");
 701         asm volatile("vrndscalepd $0x12,%zmm25,%zmm26");
 702 
 703         /* AVX-512: Op code 0f 3a 1a */
 704 
 705         asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
 706         asm volatile("vrndscaless $0x12,%xmm24,%xmm25,%xmm26{%k7}");
 707 
 708         /* AVX-512: Op code 0f 3a 0b */
 709 
 710         asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
 711         asm volatile("vrndscalesd $0x12,%xmm24,%xmm25,%xmm26{%k7}");
 712 
 713         /* AVX-512: Op code 0f 3a 18 */
 714 
 715         asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
 716         asm volatile("vinsertf32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
 717         asm volatile("vinsertf64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
 718 
 719         /* AVX-512: Op code 0f 3a 19 */
 720 
 721         asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
 722         asm volatile("vextractf32x4 $0x12,%zmm25,%xmm26{%k7}");
 723         asm volatile("vextractf64x2 $0x12,%zmm25,%xmm26{%k7}");
 724 
 725         /* AVX-512: Op code 0f 3a 1a */
 726 
 727         asm volatile("vinsertf32x8 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
 728         asm volatile("vinsertf64x4 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
 729 
 730         /* AVX-512: Op code 0f 3a 1b */
 731 
 732         asm volatile("vextractf32x8 $0x12,%zmm29,%ymm30{%k7}");
 733         asm volatile("vextractf64x4 $0x12,%zmm26,%ymm27{%k7}");
 734 
 735         /* AVX-512: Op code 0f 3a 1e */
 736 
 737         asm volatile("vpcmpud $0x12,%zmm29,%zmm30,%k5");
 738         asm volatile("vpcmpuq $0x12,%zmm26,%zmm27,%k5");
 739 
 740         /* AVX-512: Op code 0f 3a 1f */
 741 
 742         asm volatile("vpcmpd $0x12,%zmm29,%zmm30,%k5");
 743         asm volatile("vpcmpq $0x12,%zmm26,%zmm27,%k5");
 744 
 745         /* AVX-512: Op code 0f 3a 23 */
 746 
 747         asm volatile("vshuff32x4 $0x12,%zmm28,%zmm29,%zmm30");
 748         asm volatile("vshuff64x2 $0x12,%zmm25,%zmm26,%zmm27");
 749 
 750         /* AVX-512: Op code 0f 3a 25 */
 751 
 752         asm volatile("vpternlogd $0x12,%zmm28,%zmm29,%zmm30");
 753         asm volatile("vpternlogq $0x12,%zmm28,%zmm29,%zmm30");
 754 
 755         /* AVX-512: Op code 0f 3a 26 */
 756 
 757         asm volatile("vgetmantps $0x12,%zmm26,%zmm27");
 758         asm volatile("vgetmantpd $0x12,%zmm29,%zmm30");
 759 
 760         /* AVX-512: Op code 0f 3a 27 */
 761 
 762         asm volatile("vgetmantss $0x12,%xmm25,%xmm26,%xmm27{%k7}");
 763         asm volatile("vgetmantsd $0x12,%xmm28,%xmm29,%xmm30{%k7}");
 764 
 765         /* AVX-512: Op code 0f 3a 38 */
 766 
 767         asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
 768         asm volatile("vinserti32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
 769         asm volatile("vinserti64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
 770 
 771         /* AVX-512: Op code 0f 3a 39 */
 772 
 773         asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
 774         asm volatile("vextracti32x4 $0x12,%zmm25,%xmm26{%k7}");
 775         asm volatile("vextracti64x2 $0x12,%zmm25,%xmm26{%k7}");
 776 
 777         /* AVX-512: Op code 0f 3a 3a */
 778 
 779         asm volatile("vinserti32x8 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
 780         asm volatile("vinserti64x4 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
 781 
 782         /* AVX-512: Op code 0f 3a 3b */
 783 
 784         asm volatile("vextracti32x8 $0x12,%zmm29,%ymm30{%k7}");
 785         asm volatile("vextracti64x4 $0x12,%zmm26,%ymm27{%k7}");
 786 
 787         /* AVX-512: Op code 0f 3a 3e */
 788 
 789         asm volatile("vpcmpub $0x12,%zmm29,%zmm30,%k5");
 790         asm volatile("vpcmpuw $0x12,%zmm26,%zmm27,%k5");
 791 
 792         /* AVX-512: Op code 0f 3a 3f */
 793 
 794         asm volatile("vpcmpb $0x12,%zmm29,%zmm30,%k5");
 795         asm volatile("vpcmpw $0x12,%zmm26,%zmm27,%k5");
 796 
 797         /* AVX-512: Op code 0f 3a 43 */
 798 
 799         asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
 800         asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
 801 
 802         /* AVX-512: Op code 0f 3a 43 */
 803 
 804         asm volatile("vshufi32x4 $0x12,%zmm25,%zmm26,%zmm27");
 805         asm volatile("vshufi64x2 $0x12,%zmm28,%zmm29,%zmm30");
 806 
 807         /* AVX-512: Op code 0f 3a 50 */
 808 
 809         asm volatile("vrangeps $0x12,%zmm25,%zmm26,%zmm27");
 810         asm volatile("vrangepd $0x12,%zmm28,%zmm29,%zmm30");
 811 
 812         /* AVX-512: Op code 0f 3a 51 */
 813 
 814         asm volatile("vrangess $0x12,%xmm25,%xmm26,%xmm27");
 815         asm volatile("vrangesd $0x12,%xmm28,%xmm29,%xmm30");
 816 
 817         /* AVX-512: Op code 0f 3a 54 */
 818 
 819         asm volatile("vfixupimmps $0x12,%zmm28,%zmm29,%zmm30");
 820         asm volatile("vfixupimmpd $0x12,%zmm25,%zmm26,%zmm27");
 821 
 822         /* AVX-512: Op code 0f 3a 55 */
 823 
 824         asm volatile("vfixupimmss $0x12,%xmm28,%xmm29,%xmm30{%k7}");
 825         asm volatile("vfixupimmsd $0x12,%xmm25,%xmm26,%xmm27{%k7}");
 826 
 827         /* AVX-512: Op code 0f 3a 56 */
 828 
 829         asm volatile("vreduceps $0x12,%zmm26,%zmm27");
 830         asm volatile("vreducepd $0x12,%zmm29,%zmm30");
 831 
 832         /* AVX-512: Op code 0f 3a 57 */
 833 
 834         asm volatile("vreducess $0x12,%xmm25,%xmm26,%xmm27");
 835         asm volatile("vreducesd $0x12,%xmm28,%xmm29,%xmm30");
 836 
 837         /* AVX-512: Op code 0f 3a 66 */
 838 
 839         asm volatile("vfpclassps $0x12,%zmm27,%k5");
 840         asm volatile("vfpclasspd $0x12,%zmm30,%k5");
 841 
 842         /* AVX-512: Op code 0f 3a 67 */
 843 
 844         asm volatile("vfpclassss $0x12,%xmm27,%k5");
 845         asm volatile("vfpclasssd $0x12,%xmm30,%k5");
 846 
 847         /* AVX-512: Op code 0f 72 (Grp13) */
 848 
 849         asm volatile("vprord $0x12,%zmm25,%zmm26");
 850         asm volatile("vprorq $0x12,%zmm25,%zmm26");
 851         asm volatile("vprold $0x12,%zmm29,%zmm30");
 852         asm volatile("vprolq $0x12,%zmm29,%zmm30");
 853         asm volatile("psrad  $0x2,%mm6");
 854         asm volatile("vpsrad $0x5,%ymm6,%ymm2");
 855         asm volatile("vpsrad $0x5,%zmm26,%zmm22");
 856         asm volatile("vpsraq $0x5,%zmm26,%zmm22");
 857 
 858         /* AVX-512: Op code 0f 38 c6 (Grp18) */
 859 
 860         asm volatile("vgatherpf0dps 0x7b(%r14,%zmm31,8){%k1}");
 861         asm volatile("vgatherpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
 862         asm volatile("vgatherpf1dps 0x7b(%r14,%zmm31,8){%k1}");
 863         asm volatile("vgatherpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
 864         asm volatile("vscatterpf0dps 0x7b(%r14,%zmm31,8){%k1}");
 865         asm volatile("vscatterpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
 866         asm volatile("vscatterpf1dps 0x7b(%r14,%zmm31,8){%k1}");
 867         asm volatile("vscatterpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
 868 
 869         /* AVX-512: Op code 0f 38 c7 (Grp19) */
 870 
 871         asm volatile("vgatherpf0qps 0x7b(%r14,%zmm31,8){%k1}");
 872         asm volatile("vgatherpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
 873         asm volatile("vgatherpf1qps 0x7b(%r14,%zmm31,8){%k1}");
 874         asm volatile("vgatherpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
 875         asm volatile("vscatterpf0qps 0x7b(%r14,%zmm31,8){%k1}");
 876         asm volatile("vscatterpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
 877         asm volatile("vscatterpf1qps 0x7b(%r14,%zmm31,8){%k1}");
 878         asm volatile("vscatterpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
 879 
 880         /* AVX-512: Examples */
 881 
 882         asm volatile("vaddpd %zmm28,%zmm29,%zmm30");
 883         asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}");
 884         asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}{z}");
 885         asm volatile("vaddpd {rn-sae},%zmm28,%zmm29,%zmm30");
 886         asm volatile("vaddpd {ru-sae},%zmm28,%zmm29,%zmm30");
 887         asm volatile("vaddpd {rd-sae},%zmm28,%zmm29,%zmm30");
 888         asm volatile("vaddpd {rz-sae},%zmm28,%zmm29,%zmm30");
 889         asm volatile("vaddpd (%rcx),%zmm29,%zmm30");
 890         asm volatile("vaddpd 0x123(%rax,%r14,8),%zmm29,%zmm30");
 891         asm volatile("vaddpd (%rcx){1to8},%zmm29,%zmm30");
 892         asm volatile("vaddpd 0x1fc0(%rdx),%zmm29,%zmm30");
 893         asm volatile("vaddpd 0x3f8(%rdx){1to8},%zmm29,%zmm30");
 894         asm volatile("vcmpeq_uqps 0x1fc(%rdx){1to16},%zmm30,%k5");
 895         asm volatile("vcmpltsd 0x123(%rax,%r14,8),%xmm29,%k5{%k7}");
 896         asm volatile("vcmplesd {sae},%xmm28,%xmm29,%k5{%k7}");
 897         asm volatile("vgetmantss $0x5b,0x123(%rax,%r14,8),%xmm29,%xmm30{%k7}");
 898 
 899         /* bndmk m64, bnd */
 900 
 901         asm volatile("bndmk (%rax), %bnd0");
 902         asm volatile("bndmk (%r8), %bnd0");
 903         asm volatile("bndmk (0x12345678), %bnd0");
 904         asm volatile("bndmk (%rax), %bnd3");
 905         asm volatile("bndmk (%rcx,%rax,1), %bnd0");
 906         asm volatile("bndmk 0x12345678(,%rax,1), %bnd0");
 907         asm volatile("bndmk (%rax,%rcx,1), %bnd0");
 908         asm volatile("bndmk (%rax,%rcx,8), %bnd0");
 909         asm volatile("bndmk 0x12(%rax), %bnd0");
 910         asm volatile("bndmk 0x12(%rbp), %bnd0");
 911         asm volatile("bndmk 0x12(%rcx,%rax,1), %bnd0");
 912         asm volatile("bndmk 0x12(%rbp,%rax,1), %bnd0");
 913         asm volatile("bndmk 0x12(%rax,%rcx,1), %bnd0");
 914         asm volatile("bndmk 0x12(%rax,%rcx,8), %bnd0");
 915         asm volatile("bndmk 0x12345678(%rax), %bnd0");
 916         asm volatile("bndmk 0x12345678(%rbp), %bnd0");
 917         asm volatile("bndmk 0x12345678(%rcx,%rax,1), %bnd0");
 918         asm volatile("bndmk 0x12345678(%rbp,%rax,1), %bnd0");
 919         asm volatile("bndmk 0x12345678(%rax,%rcx,1), %bnd0");
 920         asm volatile("bndmk 0x12345678(%rax,%rcx,8), %bnd0");
 921 
 922         /* bndcl r/m64, bnd */
 923 
 924         asm volatile("bndcl (%rax), %bnd0");
 925         asm volatile("bndcl (%r8), %bnd0");
 926         asm volatile("bndcl (0x12345678), %bnd0");
 927         asm volatile("bndcl (%rax), %bnd3");
 928         asm volatile("bndcl (%rcx,%rax,1), %bnd0");
 929         asm volatile("bndcl 0x12345678(,%rax,1), %bnd0");
 930         asm volatile("bndcl (%rax,%rcx,1), %bnd0");
 931         asm volatile("bndcl (%rax,%rcx,8), %bnd0");
 932         asm volatile("bndcl 0x12(%rax), %bnd0");
 933         asm volatile("bndcl 0x12(%rbp), %bnd0");
 934         asm volatile("bndcl 0x12(%rcx,%rax,1), %bnd0");
 935         asm volatile("bndcl 0x12(%rbp,%rax,1), %bnd0");
 936         asm volatile("bndcl 0x12(%rax,%rcx,1), %bnd0");
 937         asm volatile("bndcl 0x12(%rax,%rcx,8), %bnd0");
 938         asm volatile("bndcl 0x12345678(%rax), %bnd0");
 939         asm volatile("bndcl 0x12345678(%rbp), %bnd0");
 940         asm volatile("bndcl 0x12345678(%rcx,%rax,1), %bnd0");
 941         asm volatile("bndcl 0x12345678(%rbp,%rax,1), %bnd0");
 942         asm volatile("bndcl 0x12345678(%rax,%rcx,1), %bnd0");
 943         asm volatile("bndcl 0x12345678(%rax,%rcx,8), %bnd0");
 944         asm volatile("bndcl %rax, %bnd0");
 945 
 946         /* bndcu r/m64, bnd */
 947 
 948         asm volatile("bndcu (%rax), %bnd0");
 949         asm volatile("bndcu (%r8), %bnd0");
 950         asm volatile("bndcu (0x12345678), %bnd0");
 951         asm volatile("bndcu (%rax), %bnd3");
 952         asm volatile("bndcu (%rcx,%rax,1), %bnd0");
 953         asm volatile("bndcu 0x12345678(,%rax,1), %bnd0");
 954         asm volatile("bndcu (%rax,%rcx,1), %bnd0");
 955         asm volatile("bndcu (%rax,%rcx,8), %bnd0");
 956         asm volatile("bndcu 0x12(%rax), %bnd0");
 957         asm volatile("bndcu 0x12(%rbp), %bnd0");
 958         asm volatile("bndcu 0x12(%rcx,%rax,1), %bnd0");
 959         asm volatile("bndcu 0x12(%rbp,%rax,1), %bnd0");
 960         asm volatile("bndcu 0x12(%rax,%rcx,1), %bnd0");
 961         asm volatile("bndcu 0x12(%rax,%rcx,8), %bnd0");
 962         asm volatile("bndcu 0x12345678(%rax), %bnd0");
 963         asm volatile("bndcu 0x12345678(%rbp), %bnd0");
 964         asm volatile("bndcu 0x12345678(%rcx,%rax,1), %bnd0");
 965         asm volatile("bndcu 0x12345678(%rbp,%rax,1), %bnd0");
 966         asm volatile("bndcu 0x12345678(%rax,%rcx,1), %bnd0");
 967         asm volatile("bndcu 0x12345678(%rax,%rcx,8), %bnd0");
 968         asm volatile("bndcu %rax, %bnd0");
 969 
 970         /* bndcn r/m64, bnd */
 971 
 972         asm volatile("bndcn (%rax), %bnd0");
 973         asm volatile("bndcn (%r8), %bnd0");
 974         asm volatile("bndcn (0x12345678), %bnd0");
 975         asm volatile("bndcn (%rax), %bnd3");
 976         asm volatile("bndcn (%rcx,%rax,1), %bnd0");
 977         asm volatile("bndcn 0x12345678(,%rax,1), %bnd0");
 978         asm volatile("bndcn (%rax,%rcx,1), %bnd0");
 979         asm volatile("bndcn (%rax,%rcx,8), %bnd0");
 980         asm volatile("bndcn 0x12(%rax), %bnd0");
 981         asm volatile("bndcn 0x12(%rbp), %bnd0");
 982         asm volatile("bndcn 0x12(%rcx,%rax,1), %bnd0");
 983         asm volatile("bndcn 0x12(%rbp,%rax,1), %bnd0");
 984         asm volatile("bndcn 0x12(%rax,%rcx,1), %bnd0");
 985         asm volatile("bndcn 0x12(%rax,%rcx,8), %bnd0");
 986         asm volatile("bndcn 0x12345678(%rax), %bnd0");
 987         asm volatile("bndcn 0x12345678(%rbp), %bnd0");
 988         asm volatile("bndcn 0x12345678(%rcx,%rax,1), %bnd0");
 989         asm volatile("bndcn 0x12345678(%rbp,%rax,1), %bnd0");
 990         asm volatile("bndcn 0x12345678(%rax,%rcx,1), %bnd0");
 991         asm volatile("bndcn 0x12345678(%rax,%rcx,8), %bnd0");
 992         asm volatile("bndcn %rax, %bnd0");
 993 
 994         /* bndmov m128, bnd */
 995 
 996         asm volatile("bndmov (%rax), %bnd0");
 997         asm volatile("bndmov (%r8), %bnd0");
 998         asm volatile("bndmov (0x12345678), %bnd0");
 999         asm volatile("bndmov (%rax), %bnd3");
1000         asm volatile("bndmov (%rcx,%rax,1), %bnd0");
1001         asm volatile("bndmov 0x12345678(,%rax,1), %bnd0");
1002         asm volatile("bndmov (%rax,%rcx,1), %bnd0");
1003         asm volatile("bndmov (%rax,%rcx,8), %bnd0");
1004         asm volatile("bndmov 0x12(%rax), %bnd0");
1005         asm volatile("bndmov 0x12(%rbp), %bnd0");
1006         asm volatile("bndmov 0x12(%rcx,%rax,1), %bnd0");
1007         asm volatile("bndmov 0x12(%rbp,%rax,1), %bnd0");
1008         asm volatile("bndmov 0x12(%rax,%rcx,1), %bnd0");
1009         asm volatile("bndmov 0x12(%rax,%rcx,8), %bnd0");
1010         asm volatile("bndmov 0x12345678(%rax), %bnd0");
1011         asm volatile("bndmov 0x12345678(%rbp), %bnd0");
1012         asm volatile("bndmov 0x12345678(%rcx,%rax,1), %bnd0");
1013         asm volatile("bndmov 0x12345678(%rbp,%rax,1), %bnd0");
1014         asm volatile("bndmov 0x12345678(%rax,%rcx,1), %bnd0");
1015         asm volatile("bndmov 0x12345678(%rax,%rcx,8), %bnd0");
1016 
1017         /* bndmov bnd, m128 */
1018 
1019         asm volatile("bndmov %bnd0, (%rax)");
1020         asm volatile("bndmov %bnd0, (%r8)");
1021         asm volatile("bndmov %bnd0, (0x12345678)");
1022         asm volatile("bndmov %bnd3, (%rax)");
1023         asm volatile("bndmov %bnd0, (%rcx,%rax,1)");
1024         asm volatile("bndmov %bnd0, 0x12345678(,%rax,1)");
1025         asm volatile("bndmov %bnd0, (%rax,%rcx,1)");
1026         asm volatile("bndmov %bnd0, (%rax,%rcx,8)");
1027         asm volatile("bndmov %bnd0, 0x12(%rax)");
1028         asm volatile("bndmov %bnd0, 0x12(%rbp)");
1029         asm volatile("bndmov %bnd0, 0x12(%rcx,%rax,1)");
1030         asm volatile("bndmov %bnd0, 0x12(%rbp,%rax,1)");
1031         asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,1)");
1032         asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,8)");
1033         asm volatile("bndmov %bnd0, 0x12345678(%rax)");
1034         asm volatile("bndmov %bnd0, 0x12345678(%rbp)");
1035         asm volatile("bndmov %bnd0, 0x12345678(%rcx,%rax,1)");
1036         asm volatile("bndmov %bnd0, 0x12345678(%rbp,%rax,1)");
1037         asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,1)");
1038         asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,8)");
1039 
1040         /* bndmov bnd2, bnd1 */
1041 
1042         asm volatile("bndmov %bnd0, %bnd1");
1043         asm volatile("bndmov %bnd1, %bnd0");
1044 
1045         /* bndldx mib, bnd */
1046 
1047         asm volatile("bndldx (%rax), %bnd0");
1048         asm volatile("bndldx (%r8), %bnd0");
1049         asm volatile("bndldx (0x12345678), %bnd0");
1050         asm volatile("bndldx (%rax), %bnd3");
1051         asm volatile("bndldx (%rcx,%rax,1), %bnd0");
1052         asm volatile("bndldx 0x12345678(,%rax,1), %bnd0");
1053         asm volatile("bndldx (%rax,%rcx,1), %bnd0");
1054         asm volatile("bndldx 0x12(%rax), %bnd0");
1055         asm volatile("bndldx 0x12(%rbp), %bnd0");
1056         asm volatile("bndldx 0x12(%rcx,%rax,1), %bnd0");
1057         asm volatile("bndldx 0x12(%rbp,%rax,1), %bnd0");
1058         asm volatile("bndldx 0x12(%rax,%rcx,1), %bnd0");
1059         asm volatile("bndldx 0x12345678(%rax), %bnd0");
1060         asm volatile("bndldx 0x12345678(%rbp), %bnd0");
1061         asm volatile("bndldx 0x12345678(%rcx,%rax,1), %bnd0");
1062         asm volatile("bndldx 0x12345678(%rbp,%rax,1), %bnd0");
1063         asm volatile("bndldx 0x12345678(%rax,%rcx,1), %bnd0");
1064 
1065         /* bndstx bnd, mib */
1066 
1067         asm volatile("bndstx %bnd0, (%rax)");
1068         asm volatile("bndstx %bnd0, (%r8)");
1069         asm volatile("bndstx %bnd0, (0x12345678)");
1070         asm volatile("bndstx %bnd3, (%rax)");
1071         asm volatile("bndstx %bnd0, (%rcx,%rax,1)");
1072         asm volatile("bndstx %bnd0, 0x12345678(,%rax,1)");
1073         asm volatile("bndstx %bnd0, (%rax,%rcx,1)");
1074         asm volatile("bndstx %bnd0, 0x12(%rax)");
1075         asm volatile("bndstx %bnd0, 0x12(%rbp)");
1076         asm volatile("bndstx %bnd0, 0x12(%rcx,%rax,1)");
1077         asm volatile("bndstx %bnd0, 0x12(%rbp,%rax,1)");
1078         asm volatile("bndstx %bnd0, 0x12(%rax,%rcx,1)");
1079         asm volatile("bndstx %bnd0, 0x12345678(%rax)");
1080         asm volatile("bndstx %bnd0, 0x12345678(%rbp)");
1081         asm volatile("bndstx %bnd0, 0x12345678(%rcx,%rax,1)");
1082         asm volatile("bndstx %bnd0, 0x12345678(%rbp,%rax,1)");
1083         asm volatile("bndstx %bnd0, 0x12345678(%rax,%rcx,1)");
1084 
1085         /* bnd prefix on call, ret, jmp and all jcc */
1086 
1087         asm volatile("bnd call label1");  /* Expecting: call unconditional 0 */
1088         asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
1089         asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
1090         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1091         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1092         asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
1093         asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0 */
1094 
1095         /* sha1rnds4 imm8, xmm2/m128, xmm1 */
1096 
1097         asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
1098         asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
1099         asm volatile("sha1rnds4 $0x91, %xmm8, %xmm0");
1100         asm volatile("sha1rnds4 $0x91, %xmm7, %xmm8");
1101         asm volatile("sha1rnds4 $0x91, %xmm15, %xmm8");
1102         asm volatile("sha1rnds4 $0x91, (%rax), %xmm0");
1103         asm volatile("sha1rnds4 $0x91, (%r8), %xmm0");
1104         asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
1105         asm volatile("sha1rnds4 $0x91, (%rax), %xmm3");
1106         asm volatile("sha1rnds4 $0x91, (%rcx,%rax,1), %xmm0");
1107         asm volatile("sha1rnds4 $0x91, 0x12345678(,%rax,1), %xmm0");
1108         asm volatile("sha1rnds4 $0x91, (%rax,%rcx,1), %xmm0");
1109         asm volatile("sha1rnds4 $0x91, (%rax,%rcx,8), %xmm0");
1110         asm volatile("sha1rnds4 $0x91, 0x12(%rax), %xmm0");
1111         asm volatile("sha1rnds4 $0x91, 0x12(%rbp), %xmm0");
1112         asm volatile("sha1rnds4 $0x91, 0x12(%rcx,%rax,1), %xmm0");
1113         asm volatile("sha1rnds4 $0x91, 0x12(%rbp,%rax,1), %xmm0");
1114         asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,1), %xmm0");
1115         asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,8), %xmm0");
1116         asm volatile("sha1rnds4 $0x91, 0x12345678(%rax), %xmm0");
1117         asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp), %xmm0");
1118         asm volatile("sha1rnds4 $0x91, 0x12345678(%rcx,%rax,1), %xmm0");
1119         asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp,%rax,1), %xmm0");
1120         asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,1), %xmm0");
1121         asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm0");
1122         asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm15");
1123 
1124         /* sha1nexte xmm2/m128, xmm1 */
1125 
1126         asm volatile("sha1nexte %xmm1, %xmm0");
1127         asm volatile("sha1nexte %xmm7, %xmm2");
1128         asm volatile("sha1nexte %xmm8, %xmm0");
1129         asm volatile("sha1nexte %xmm7, %xmm8");
1130         asm volatile("sha1nexte %xmm15, %xmm8");
1131         asm volatile("sha1nexte (%rax), %xmm0");
1132         asm volatile("sha1nexte (%r8), %xmm0");
1133         asm volatile("sha1nexte (0x12345678), %xmm0");
1134         asm volatile("sha1nexte (%rax), %xmm3");
1135         asm volatile("sha1nexte (%rcx,%rax,1), %xmm0");
1136         asm volatile("sha1nexte 0x12345678(,%rax,1), %xmm0");
1137         asm volatile("sha1nexte (%rax,%rcx,1), %xmm0");
1138         asm volatile("sha1nexte (%rax,%rcx,8), %xmm0");
1139         asm volatile("sha1nexte 0x12(%rax), %xmm0");
1140         asm volatile("sha1nexte 0x12(%rbp), %xmm0");
1141         asm volatile("sha1nexte 0x12(%rcx,%rax,1), %xmm0");
1142         asm volatile("sha1nexte 0x12(%rbp,%rax,1), %xmm0");
1143         asm volatile("sha1nexte 0x12(%rax,%rcx,1), %xmm0");
1144         asm volatile("sha1nexte 0x12(%rax,%rcx,8), %xmm0");
1145         asm volatile("sha1nexte 0x12345678(%rax), %xmm0");
1146         asm volatile("sha1nexte 0x12345678(%rbp), %xmm0");
1147         asm volatile("sha1nexte 0x12345678(%rcx,%rax,1), %xmm0");
1148         asm volatile("sha1nexte 0x12345678(%rbp,%rax,1), %xmm0");
1149         asm volatile("sha1nexte 0x12345678(%rax,%rcx,1), %xmm0");
1150         asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm0");
1151         asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm15");
1152 
1153         /* sha1msg1 xmm2/m128, xmm1 */
1154 
1155         asm volatile("sha1msg1 %xmm1, %xmm0");
1156         asm volatile("sha1msg1 %xmm7, %xmm2");
1157         asm volatile("sha1msg1 %xmm8, %xmm0");
1158         asm volatile("sha1msg1 %xmm7, %xmm8");
1159         asm volatile("sha1msg1 %xmm15, %xmm8");
1160         asm volatile("sha1msg1 (%rax), %xmm0");
1161         asm volatile("sha1msg1 (%r8), %xmm0");
1162         asm volatile("sha1msg1 (0x12345678), %xmm0");
1163         asm volatile("sha1msg1 (%rax), %xmm3");
1164         asm volatile("sha1msg1 (%rcx,%rax,1), %xmm0");
1165         asm volatile("sha1msg1 0x12345678(,%rax,1), %xmm0");
1166         asm volatile("sha1msg1 (%rax,%rcx,1), %xmm0");
1167         asm volatile("sha1msg1 (%rax,%rcx,8), %xmm0");
1168         asm volatile("sha1msg1 0x12(%rax), %xmm0");
1169         asm volatile("sha1msg1 0x12(%rbp), %xmm0");
1170         asm volatile("sha1msg1 0x12(%rcx,%rax,1), %xmm0");
1171         asm volatile("sha1msg1 0x12(%rbp,%rax,1), %xmm0");
1172         asm volatile("sha1msg1 0x12(%rax,%rcx,1), %xmm0");
1173         asm volatile("sha1msg1 0x12(%rax,%rcx,8), %xmm0");
1174         asm volatile("sha1msg1 0x12345678(%rax), %xmm0");
1175         asm volatile("sha1msg1 0x12345678(%rbp), %xmm0");
1176         asm volatile("sha1msg1 0x12345678(%rcx,%rax,1), %xmm0");
1177         asm volatile("sha1msg1 0x12345678(%rbp,%rax,1), %xmm0");
1178         asm volatile("sha1msg1 0x12345678(%rax,%rcx,1), %xmm0");
1179         asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm0");
1180         asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm15");
1181 
1182         /* sha1msg2 xmm2/m128, xmm1 */
1183 
1184         asm volatile("sha1msg2 %xmm1, %xmm0");
1185         asm volatile("sha1msg2 %xmm7, %xmm2");
1186         asm volatile("sha1msg2 %xmm8, %xmm0");
1187         asm volatile("sha1msg2 %xmm7, %xmm8");
1188         asm volatile("sha1msg2 %xmm15, %xmm8");
1189         asm volatile("sha1msg2 (%rax), %xmm0");
1190         asm volatile("sha1msg2 (%r8), %xmm0");
1191         asm volatile("sha1msg2 (0x12345678), %xmm0");
1192         asm volatile("sha1msg2 (%rax), %xmm3");
1193         asm volatile("sha1msg2 (%rcx,%rax,1), %xmm0");
1194         asm volatile("sha1msg2 0x12345678(,%rax,1), %xmm0");
1195         asm volatile("sha1msg2 (%rax,%rcx,1), %xmm0");
1196         asm volatile("sha1msg2 (%rax,%rcx,8), %xmm0");
1197         asm volatile("sha1msg2 0x12(%rax), %xmm0");
1198         asm volatile("sha1msg2 0x12(%rbp), %xmm0");
1199         asm volatile("sha1msg2 0x12(%rcx,%rax,1), %xmm0");
1200         asm volatile("sha1msg2 0x12(%rbp,%rax,1), %xmm0");
1201         asm volatile("sha1msg2 0x12(%rax,%rcx,1), %xmm0");
1202         asm volatile("sha1msg2 0x12(%rax,%rcx,8), %xmm0");
1203         asm volatile("sha1msg2 0x12345678(%rax), %xmm0");
1204         asm volatile("sha1msg2 0x12345678(%rbp), %xmm0");
1205         asm volatile("sha1msg2 0x12345678(%rcx,%rax,1), %xmm0");
1206         asm volatile("sha1msg2 0x12345678(%rbp,%rax,1), %xmm0");
1207         asm volatile("sha1msg2 0x12345678(%rax,%rcx,1), %xmm0");
1208         asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm0");
1209         asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm15");
1210 
1211         /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
1212         /* Note sha256rnds2 has an implicit operand 'xmm0' */
1213 
1214         asm volatile("sha256rnds2 %xmm4, %xmm1");
1215         asm volatile("sha256rnds2 %xmm7, %xmm2");
1216         asm volatile("sha256rnds2 %xmm8, %xmm1");
1217         asm volatile("sha256rnds2 %xmm7, %xmm8");
1218         asm volatile("sha256rnds2 %xmm15, %xmm8");
1219         asm volatile("sha256rnds2 (%rax), %xmm1");
1220         asm volatile("sha256rnds2 (%r8), %xmm1");
1221         asm volatile("sha256rnds2 (0x12345678), %xmm1");
1222         asm volatile("sha256rnds2 (%rax), %xmm3");
1223         asm volatile("sha256rnds2 (%rcx,%rax,1), %xmm1");
1224         asm volatile("sha256rnds2 0x12345678(,%rax,1), %xmm1");
1225         asm volatile("sha256rnds2 (%rax,%rcx,1), %xmm1");
1226         asm volatile("sha256rnds2 (%rax,%rcx,8), %xmm1");
1227         asm volatile("sha256rnds2 0x12(%rax), %xmm1");
1228         asm volatile("sha256rnds2 0x12(%rbp), %xmm1");
1229         asm volatile("sha256rnds2 0x12(%rcx,%rax,1), %xmm1");
1230         asm volatile("sha256rnds2 0x12(%rbp,%rax,1), %xmm1");
1231         asm volatile("sha256rnds2 0x12(%rax,%rcx,1), %xmm1");
1232         asm volatile("sha256rnds2 0x12(%rax,%rcx,8), %xmm1");
1233         asm volatile("sha256rnds2 0x12345678(%rax), %xmm1");
1234         asm volatile("sha256rnds2 0x12345678(%rbp), %xmm1");
1235         asm volatile("sha256rnds2 0x12345678(%rcx,%rax,1), %xmm1");
1236         asm volatile("sha256rnds2 0x12345678(%rbp,%rax,1), %xmm1");
1237         asm volatile("sha256rnds2 0x12345678(%rax,%rcx,1), %xmm1");
1238         asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm1");
1239         asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm15");
1240 
1241         /* sha256msg1 xmm2/m128, xmm1 */
1242 
1243         asm volatile("sha256msg1 %xmm1, %xmm0");
1244         asm volatile("sha256msg1 %xmm7, %xmm2");
1245         asm volatile("sha256msg1 %xmm8, %xmm0");
1246         asm volatile("sha256msg1 %xmm7, %xmm8");
1247         asm volatile("sha256msg1 %xmm15, %xmm8");
1248         asm volatile("sha256msg1 (%rax), %xmm0");
1249         asm volatile("sha256msg1 (%r8), %xmm0");
1250         asm volatile("sha256msg1 (0x12345678), %xmm0");
1251         asm volatile("sha256msg1 (%rax), %xmm3");
1252         asm volatile("sha256msg1 (%rcx,%rax,1), %xmm0");
1253         asm volatile("sha256msg1 0x12345678(,%rax,1), %xmm0");
1254         asm volatile("sha256msg1 (%rax,%rcx,1), %xmm0");
1255         asm volatile("sha256msg1 (%rax,%rcx,8), %xmm0");
1256         asm volatile("sha256msg1 0x12(%rax), %xmm0");
1257         asm volatile("sha256msg1 0x12(%rbp), %xmm0");
1258         asm volatile("sha256msg1 0x12(%rcx,%rax,1), %xmm0");
1259         asm volatile("sha256msg1 0x12(%rbp,%rax,1), %xmm0");
1260         asm volatile("sha256msg1 0x12(%rax,%rcx,1), %xmm0");
1261         asm volatile("sha256msg1 0x12(%rax,%rcx,8), %xmm0");
1262         asm volatile("sha256msg1 0x12345678(%rax), %xmm0");
1263         asm volatile("sha256msg1 0x12345678(%rbp), %xmm0");
1264         asm volatile("sha256msg1 0x12345678(%rcx,%rax,1), %xmm0");
1265         asm volatile("sha256msg1 0x12345678(%rbp,%rax,1), %xmm0");
1266         asm volatile("sha256msg1 0x12345678(%rax,%rcx,1), %xmm0");
1267         asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm0");
1268         asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm15");
1269 
1270         /* sha256msg2 xmm2/m128, xmm1 */
1271 
1272         asm volatile("sha256msg2 %xmm1, %xmm0");
1273         asm volatile("sha256msg2 %xmm7, %xmm2");
1274         asm volatile("sha256msg2 %xmm8, %xmm0");
1275         asm volatile("sha256msg2 %xmm7, %xmm8");
1276         asm volatile("sha256msg2 %xmm15, %xmm8");
1277         asm volatile("sha256msg2 (%rax), %xmm0");
1278         asm volatile("sha256msg2 (%r8), %xmm0");
1279         asm volatile("sha256msg2 (0x12345678), %xmm0");
1280         asm volatile("sha256msg2 (%rax), %xmm3");
1281         asm volatile("sha256msg2 (%rcx,%rax,1), %xmm0");
1282         asm volatile("sha256msg2 0x12345678(,%rax,1), %xmm0");
1283         asm volatile("sha256msg2 (%rax,%rcx,1), %xmm0");
1284         asm volatile("sha256msg2 (%rax,%rcx,8), %xmm0");
1285         asm volatile("sha256msg2 0x12(%rax), %xmm0");
1286         asm volatile("sha256msg2 0x12(%rbp), %xmm0");
1287         asm volatile("sha256msg2 0x12(%rcx,%rax,1), %xmm0");
1288         asm volatile("sha256msg2 0x12(%rbp,%rax,1), %xmm0");
1289         asm volatile("sha256msg2 0x12(%rax,%rcx,1), %xmm0");
1290         asm volatile("sha256msg2 0x12(%rax,%rcx,8), %xmm0");
1291         asm volatile("sha256msg2 0x12345678(%rax), %xmm0");
1292         asm volatile("sha256msg2 0x12345678(%rbp), %xmm0");
1293         asm volatile("sha256msg2 0x12345678(%rcx,%rax,1), %xmm0");
1294         asm volatile("sha256msg2 0x12345678(%rbp,%rax,1), %xmm0");
1295         asm volatile("sha256msg2 0x12345678(%rax,%rcx,1), %xmm0");
1296         asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm0");
1297         asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm15");
1298 
1299         /* clflushopt m8 */
1300 
1301         asm volatile("clflushopt (%rax)");
1302         asm volatile("clflushopt (%r8)");
1303         asm volatile("clflushopt (0x12345678)");
1304         asm volatile("clflushopt 0x12345678(%rax,%rcx,8)");
1305         asm volatile("clflushopt 0x12345678(%r8,%rcx,8)");
1306         /* Also check instructions in the same group encoding as clflushopt */
1307         asm volatile("clflush (%rax)");
1308         asm volatile("clflush (%r8)");
1309         asm volatile("sfence");
1310 
1311         /* clwb m8 */
1312 
1313         asm volatile("clwb (%rax)");
1314         asm volatile("clwb (%r8)");
1315         asm volatile("clwb (0x12345678)");
1316         asm volatile("clwb 0x12345678(%rax,%rcx,8)");
1317         asm volatile("clwb 0x12345678(%r8,%rcx,8)");
1318         /* Also check instructions in the same group encoding as clwb */
1319         asm volatile("xsaveopt (%rax)");
1320         asm volatile("xsaveopt (%r8)");
1321         asm volatile("mfence");
1322 
1323         /* xsavec mem */
1324 
1325         asm volatile("xsavec (%rax)");
1326         asm volatile("xsavec (%r8)");
1327         asm volatile("xsavec (0x12345678)");
1328         asm volatile("xsavec 0x12345678(%rax,%rcx,8)");
1329         asm volatile("xsavec 0x12345678(%r8,%rcx,8)");
1330 
1331         /* xsaves mem */
1332 
1333         asm volatile("xsaves (%rax)");
1334         asm volatile("xsaves (%r8)");
1335         asm volatile("xsaves (0x12345678)");
1336         asm volatile("xsaves 0x12345678(%rax,%rcx,8)");
1337         asm volatile("xsaves 0x12345678(%r8,%rcx,8)");
1338 
1339         /* xrstors mem */
1340 
1341         asm volatile("xrstors (%rax)");
1342         asm volatile("xrstors (%r8)");
1343         asm volatile("xrstors (0x12345678)");
1344         asm volatile("xrstors 0x12345678(%rax,%rcx,8)");
1345         asm volatile("xrstors 0x12345678(%r8,%rcx,8)");
1346 
1347         /* ptwrite */
1348 
1349         asm volatile("ptwrite (%rax)");
1350         asm volatile("ptwrite (%r8)");
1351         asm volatile("ptwrite (0x12345678)");
1352         asm volatile("ptwrite 0x12345678(%rax,%rcx,8)");
1353         asm volatile("ptwrite 0x12345678(%r8,%rcx,8)");
1354 
1355         asm volatile("ptwritel (%rax)");
1356         asm volatile("ptwritel (%r8)");
1357         asm volatile("ptwritel (0x12345678)");
1358         asm volatile("ptwritel 0x12345678(%rax,%rcx,8)");
1359         asm volatile("ptwritel 0x12345678(%r8,%rcx,8)");
1360 
1361         asm volatile("ptwriteq (%rax)");
1362         asm volatile("ptwriteq (%r8)");
1363         asm volatile("ptwriteq (0x12345678)");
1364         asm volatile("ptwriteq 0x12345678(%rax,%rcx,8)");
1365         asm volatile("ptwriteq 0x12345678(%r8,%rcx,8)");
1366 
1367 #else  /* #ifdef __x86_64__ */
1368 
1369         /* bound r32, mem (same op code as EVEX prefix) */
1370 
1371         asm volatile("bound %eax, 0x12345678(%ecx)");
1372         asm volatile("bound %ecx, 0x12345678(%eax)");
1373         asm volatile("bound %edx, 0x12345678(%eax)");
1374         asm volatile("bound %ebx, 0x12345678(%eax)");
1375         asm volatile("bound %esp, 0x12345678(%eax)");
1376         asm volatile("bound %ebp, 0x12345678(%eax)");
1377         asm volatile("bound %esi, 0x12345678(%eax)");
1378         asm volatile("bound %edi, 0x12345678(%eax)");
1379         asm volatile("bound %ecx, (%eax)");
1380         asm volatile("bound %eax, (0x12345678)");
1381         asm volatile("bound %edx, (%ecx,%eax,1)");
1382         asm volatile("bound %edx, 0x12345678(,%eax,1)");
1383         asm volatile("bound %edx, (%eax,%ecx,1)");
1384         asm volatile("bound %edx, (%eax,%ecx,8)");
1385         asm volatile("bound %edx, 0x12(%eax)");
1386         asm volatile("bound %edx, 0x12(%ebp)");
1387         asm volatile("bound %edx, 0x12(%ecx,%eax,1)");
1388         asm volatile("bound %edx, 0x12(%ebp,%eax,1)");
1389         asm volatile("bound %edx, 0x12(%eax,%ecx,1)");
1390         asm volatile("bound %edx, 0x12(%eax,%ecx,8)");
1391         asm volatile("bound %edx, 0x12345678(%eax)");
1392         asm volatile("bound %edx, 0x12345678(%ebp)");
1393         asm volatile("bound %edx, 0x12345678(%ecx,%eax,1)");
1394         asm volatile("bound %edx, 0x12345678(%ebp,%eax,1)");
1395         asm volatile("bound %edx, 0x12345678(%eax,%ecx,1)");
1396         asm volatile("bound %edx, 0x12345678(%eax,%ecx,8)");
1397 
1398         /* bound r16, mem (same op code as EVEX prefix) */
1399 
1400         asm volatile("bound %ax, 0x12345678(%ecx)");
1401         asm volatile("bound %cx, 0x12345678(%eax)");
1402         asm volatile("bound %dx, 0x12345678(%eax)");
1403         asm volatile("bound %bx, 0x12345678(%eax)");
1404         asm volatile("bound %sp, 0x12345678(%eax)");
1405         asm volatile("bound %bp, 0x12345678(%eax)");
1406         asm volatile("bound %si, 0x12345678(%eax)");
1407         asm volatile("bound %di, 0x12345678(%eax)");
1408         asm volatile("bound %cx, (%eax)");
1409         asm volatile("bound %ax, (0x12345678)");
1410         asm volatile("bound %dx, (%ecx,%eax,1)");
1411         asm volatile("bound %dx, 0x12345678(,%eax,1)");
1412         asm volatile("bound %dx, (%eax,%ecx,1)");
1413         asm volatile("bound %dx, (%eax,%ecx,8)");
1414         asm volatile("bound %dx, 0x12(%eax)");
1415         asm volatile("bound %dx, 0x12(%ebp)");
1416         asm volatile("bound %dx, 0x12(%ecx,%eax,1)");
1417         asm volatile("bound %dx, 0x12(%ebp,%eax,1)");
1418         asm volatile("bound %dx, 0x12(%eax,%ecx,1)");
1419         asm volatile("bound %dx, 0x12(%eax,%ecx,8)");
1420         asm volatile("bound %dx, 0x12345678(%eax)");
1421         asm volatile("bound %dx, 0x12345678(%ebp)");
1422         asm volatile("bound %dx, 0x12345678(%ecx,%eax,1)");
1423         asm volatile("bound %dx, 0x12345678(%ebp,%eax,1)");
1424         asm volatile("bound %dx, 0x12345678(%eax,%ecx,1)");
1425         asm volatile("bound %dx, 0x12345678(%eax,%ecx,8)");
1426 
1427         /* AVX-512: Instructions with the same op codes as Mask Instructions  */
1428 
1429         asm volatile("cmovno %eax,%ebx");
1430         asm volatile("cmovno 0x12345678(%eax),%ecx");
1431         asm volatile("cmovno 0x12345678(%eax),%cx");
1432 
1433         asm volatile("cmove  %eax,%ebx");
1434         asm volatile("cmove 0x12345678(%eax),%ecx");
1435         asm volatile("cmove 0x12345678(%eax),%cx");
1436 
1437         asm volatile("seto    0x12345678(%eax)");
1438         asm volatile("setno   0x12345678(%eax)");
1439         asm volatile("setb    0x12345678(%eax)");
1440         asm volatile("setc    0x12345678(%eax)");
1441         asm volatile("setnae  0x12345678(%eax)");
1442         asm volatile("setae   0x12345678(%eax)");
1443         asm volatile("setnb   0x12345678(%eax)");
1444         asm volatile("setnc   0x12345678(%eax)");
1445         asm volatile("sets    0x12345678(%eax)");
1446         asm volatile("setns   0x12345678(%eax)");
1447 
1448         /* AVX-512: Mask Instructions */
1449 
1450         asm volatile("kandw  %k7,%k6,%k5");
1451         asm volatile("kandq  %k7,%k6,%k5");
1452         asm volatile("kandb  %k7,%k6,%k5");
1453         asm volatile("kandd  %k7,%k6,%k5");
1454 
1455         asm volatile("kandnw  %k7,%k6,%k5");
1456         asm volatile("kandnq  %k7,%k6,%k5");
1457         asm volatile("kandnb  %k7,%k6,%k5");
1458         asm volatile("kandnd  %k7,%k6,%k5");
1459 
1460         asm volatile("knotw  %k7,%k6");
1461         asm volatile("knotq  %k7,%k6");
1462         asm volatile("knotb  %k7,%k6");
1463         asm volatile("knotd  %k7,%k6");
1464 
1465         asm volatile("korw  %k7,%k6,%k5");
1466         asm volatile("korq  %k7,%k6,%k5");
1467         asm volatile("korb  %k7,%k6,%k5");
1468         asm volatile("kord  %k7,%k6,%k5");
1469 
1470         asm volatile("kxnorw  %k7,%k6,%k5");
1471         asm volatile("kxnorq  %k7,%k6,%k5");
1472         asm volatile("kxnorb  %k7,%k6,%k5");
1473         asm volatile("kxnord  %k7,%k6,%k5");
1474 
1475         asm volatile("kxorw  %k7,%k6,%k5");
1476         asm volatile("kxorq  %k7,%k6,%k5");
1477         asm volatile("kxorb  %k7,%k6,%k5");
1478         asm volatile("kxord  %k7,%k6,%k5");
1479 
1480         asm volatile("kaddw  %k7,%k6,%k5");
1481         asm volatile("kaddq  %k7,%k6,%k5");
1482         asm volatile("kaddb  %k7,%k6,%k5");
1483         asm volatile("kaddd  %k7,%k6,%k5");
1484 
1485         asm volatile("kunpckbw %k7,%k6,%k5");
1486         asm volatile("kunpckwd %k7,%k6,%k5");
1487         asm volatile("kunpckdq %k7,%k6,%k5");
1488 
1489         asm volatile("kmovw  %k6,%k5");
1490         asm volatile("kmovw  (%ecx),%k5");
1491         asm volatile("kmovw  0x123(%eax,%ecx,8),%k5");
1492         asm volatile("kmovw  %k5,(%ecx)");
1493         asm volatile("kmovw  %k5,0x123(%eax,%ecx,8)");
1494         asm volatile("kmovw  %eax,%k5");
1495         asm volatile("kmovw  %ebp,%k5");
1496         asm volatile("kmovw  %k5,%eax");
1497         asm volatile("kmovw  %k5,%ebp");
1498 
1499         asm volatile("kmovq  %k6,%k5");
1500         asm volatile("kmovq  (%ecx),%k5");
1501         asm volatile("kmovq  0x123(%eax,%ecx,8),%k5");
1502         asm volatile("kmovq  %k5,(%ecx)");
1503         asm volatile("kmovq  %k5,0x123(%eax,%ecx,8)");
1504 
1505         asm volatile("kmovb  %k6,%k5");
1506         asm volatile("kmovb  (%ecx),%k5");
1507         asm volatile("kmovb  0x123(%eax,%ecx,8),%k5");
1508         asm volatile("kmovb  %k5,(%ecx)");
1509         asm volatile("kmovb  %k5,0x123(%eax,%ecx,8)");
1510         asm volatile("kmovb  %eax,%k5");
1511         asm volatile("kmovb  %ebp,%k5");
1512         asm volatile("kmovb  %k5,%eax");
1513         asm volatile("kmovb  %k5,%ebp");
1514 
1515         asm volatile("kmovd  %k6,%k5");
1516         asm volatile("kmovd  (%ecx),%k5");
1517         asm volatile("kmovd  0x123(%eax,%ecx,8),%k5");
1518         asm volatile("kmovd  %k5,(%ecx)");
1519         asm volatile("kmovd  %k5,0x123(%eax,%ecx,8)");
1520         asm volatile("kmovd  %eax,%k5");
1521         asm volatile("kmovd  %ebp,%k5");
1522         asm volatile("kmovd  %k5,%eax");
1523         asm volatile("kmovd  %k5,%ebp");
1524 
1525         asm volatile("kortestw %k6,%k5");
1526         asm volatile("kortestq %k6,%k5");
1527         asm volatile("kortestb %k6,%k5");
1528         asm volatile("kortestd %k6,%k5");
1529 
1530         asm volatile("ktestw %k6,%k5");
1531         asm volatile("ktestq %k6,%k5");
1532         asm volatile("ktestb %k6,%k5");
1533         asm volatile("ktestd %k6,%k5");
1534 
1535         asm volatile("kshiftrw $0x12,%k6,%k5");
1536         asm volatile("kshiftrq $0x5b,%k6,%k5");
1537         asm volatile("kshiftlw $0x12,%k6,%k5");
1538         asm volatile("kshiftlq $0x5b,%k6,%k5");
1539 
1540         /* AVX-512: Op code 0f 5b */
1541         asm volatile("vcvtdq2ps %xmm5,%xmm6");
1542         asm volatile("vcvtqq2ps %zmm5,%ymm6{%k7}");
1543         asm volatile("vcvtps2dq %xmm5,%xmm6");
1544         asm volatile("vcvttps2dq %xmm5,%xmm6");
1545 
1546         /* AVX-512: Op code 0f 6f */
1547 
1548         asm volatile("movq   %mm0,%mm4");
1549         asm volatile("vmovdqa %ymm4,%ymm6");
1550         asm volatile("vmovdqa32 %zmm5,%zmm6");
1551         asm volatile("vmovdqa64 %zmm5,%zmm6");
1552         asm volatile("vmovdqu %ymm4,%ymm6");
1553         asm volatile("vmovdqu32 %zmm5,%zmm6");
1554         asm volatile("vmovdqu64 %zmm5,%zmm6");
1555         asm volatile("vmovdqu8 %zmm5,%zmm6");
1556         asm volatile("vmovdqu16 %zmm5,%zmm6");
1557 
1558         /* AVX-512: Op code 0f 78 */
1559 
1560         asm volatile("vmread %eax,%ebx");
1561         asm volatile("vcvttps2udq %zmm5,%zmm6");
1562         asm volatile("vcvttpd2udq %zmm5,%ymm6{%k7}");
1563         asm volatile("vcvttsd2usi %xmm6,%eax");
1564         asm volatile("vcvttss2usi %xmm6,%eax");
1565         asm volatile("vcvttps2uqq %ymm5,%zmm6{%k7}");
1566         asm volatile("vcvttpd2uqq %zmm5,%zmm6");
1567 
1568         /* AVX-512: Op code 0f 79 */
1569 
1570         asm volatile("vmwrite %eax,%ebx");
1571         asm volatile("vcvtps2udq %zmm5,%zmm6");
1572         asm volatile("vcvtpd2udq %zmm5,%ymm6{%k7}");
1573         asm volatile("vcvtsd2usi %xmm6,%eax");
1574         asm volatile("vcvtss2usi %xmm6,%eax");
1575         asm volatile("vcvtps2uqq %ymm5,%zmm6{%k7}");
1576         asm volatile("vcvtpd2uqq %zmm5,%zmm6");
1577 
1578         /* AVX-512: Op code 0f 7a */
1579 
1580         asm volatile("vcvtudq2pd %ymm5,%zmm6{%k7}");
1581         asm volatile("vcvtuqq2pd %zmm5,%zmm6");
1582         asm volatile("vcvtudq2ps %zmm5,%zmm6");
1583         asm volatile("vcvtuqq2ps %zmm5,%ymm6{%k7}");
1584         asm volatile("vcvttps2qq %ymm5,%zmm6{%k7}");
1585         asm volatile("vcvttpd2qq %zmm5,%zmm6");
1586 
1587         /* AVX-512: Op code 0f 7b */
1588 
1589         asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
1590         asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
1591         asm volatile("vcvtps2qq %ymm5,%zmm6{%k7}");
1592         asm volatile("vcvtpd2qq %zmm5,%zmm6");
1593 
1594         /* AVX-512: Op code 0f 7f */
1595 
1596         asm volatile("movq.s  %mm0,%mm4");
1597         asm volatile("vmovdqa.s %ymm5,%ymm6");
1598         asm volatile("vmovdqa32.s %zmm5,%zmm6");
1599         asm volatile("vmovdqa64.s %zmm5,%zmm6");
1600         asm volatile("vmovdqu.s %ymm5,%ymm6");
1601         asm volatile("vmovdqu32.s %zmm5,%zmm6");
1602         asm volatile("vmovdqu64.s %zmm5,%zmm6");
1603         asm volatile("vmovdqu8.s %zmm5,%zmm6");
1604         asm volatile("vmovdqu16.s %zmm5,%zmm6");
1605 
1606         /* AVX-512: Op code 0f db */
1607 
1608         asm volatile("pand  %mm1,%mm2");
1609         asm volatile("pand  %xmm1,%xmm2");
1610         asm volatile("vpand  %ymm4,%ymm6,%ymm2");
1611         asm volatile("vpandd %zmm4,%zmm5,%zmm6");
1612         asm volatile("vpandq %zmm4,%zmm5,%zmm6");
1613 
1614         /* AVX-512: Op code 0f df */
1615 
1616         asm volatile("pandn  %mm1,%mm2");
1617         asm volatile("pandn  %xmm1,%xmm2");
1618         asm volatile("vpandn %ymm4,%ymm6,%ymm2");
1619         asm volatile("vpandnd %zmm4,%zmm5,%zmm6");
1620         asm volatile("vpandnq %zmm4,%zmm5,%zmm6");
1621 
1622         /* AVX-512: Op code 0f e6 */
1623 
1624         asm volatile("vcvttpd2dq %xmm1,%xmm2");
1625         asm volatile("vcvtdq2pd %xmm5,%xmm6");
1626         asm volatile("vcvtdq2pd %ymm5,%zmm6{%k7}");
1627         asm volatile("vcvtqq2pd %zmm5,%zmm6");
1628         asm volatile("vcvtpd2dq %xmm1,%xmm2");
1629 
1630         /* AVX-512: Op code 0f eb */
1631 
1632         asm volatile("por   %mm4,%mm6");
1633         asm volatile("vpor   %ymm4,%ymm6,%ymm2");
1634         asm volatile("vpord  %zmm4,%zmm5,%zmm6");
1635         asm volatile("vporq  %zmm4,%zmm5,%zmm6");
1636 
1637         /* AVX-512: Op code 0f ef */
1638 
1639         asm volatile("pxor   %mm4,%mm6");
1640         asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
1641         asm volatile("vpxord %zmm4,%zmm5,%zmm6");
1642         asm volatile("vpxorq %zmm4,%zmm5,%zmm6");
1643 
1644         /* AVX-512: Op code 0f 38 10 */
1645 
1646         asm volatile("pblendvb %xmm1,%xmm0");
1647         asm volatile("vpsrlvw %zmm4,%zmm5,%zmm6");
1648         asm volatile("vpmovuswb %zmm5,%ymm6{%k7}");
1649 
1650         /* AVX-512: Op code 0f 38 11 */
1651 
1652         asm volatile("vpmovusdb %zmm5,%xmm6{%k7}");
1653         asm volatile("vpsravw %zmm4,%zmm5,%zmm6");
1654 
1655         /* AVX-512: Op code 0f 38 12 */
1656 
1657         asm volatile("vpmovusqb %zmm5,%xmm6{%k7}");
1658         asm volatile("vpsllvw %zmm4,%zmm5,%zmm6");
1659 
1660         /* AVX-512: Op code 0f 38 13 */
1661 
1662         asm volatile("vcvtph2ps %xmm3,%ymm5");
1663         asm volatile("vcvtph2ps %ymm5,%zmm6{%k7}");
1664         asm volatile("vpmovusdw %zmm5,%ymm6{%k7}");
1665 
1666         /* AVX-512: Op code 0f 38 14 */
1667 
1668         asm volatile("blendvps %xmm1,%xmm0");
1669         asm volatile("vpmovusqw %zmm5,%xmm6{%k7}");
1670         asm volatile("vprorvd %zmm4,%zmm5,%zmm6");
1671         asm volatile("vprorvq %zmm4,%zmm5,%zmm6");
1672 
1673         /* AVX-512: Op code 0f 38 15 */
1674 
1675         asm volatile("blendvpd %xmm1,%xmm0");
1676         asm volatile("vpmovusqd %zmm5,%ymm6{%k7}");
1677         asm volatile("vprolvd %zmm4,%zmm5,%zmm6");
1678         asm volatile("vprolvq %zmm4,%zmm5,%zmm6");
1679 
1680         /* AVX-512: Op code 0f 38 16 */
1681 
1682         asm volatile("vpermps %ymm4,%ymm6,%ymm2");
1683         asm volatile("vpermps %ymm4,%ymm6,%ymm2{%k7}");
1684         asm volatile("vpermpd %ymm4,%ymm6,%ymm2{%k7}");
1685 
1686         /* AVX-512: Op code 0f 38 19 */
1687 
1688         asm volatile("vbroadcastsd %xmm4,%ymm6");
1689         asm volatile("vbroadcastf32x2 %xmm7,%zmm6");
1690 
1691         /* AVX-512: Op code 0f 38 1a */
1692 
1693         asm volatile("vbroadcastf128 (%ecx),%ymm4");
1694         asm volatile("vbroadcastf32x4 (%ecx),%zmm6");
1695         asm volatile("vbroadcastf64x2 (%ecx),%zmm6");
1696 
1697         /* AVX-512: Op code 0f 38 1b */
1698 
1699         asm volatile("vbroadcastf32x8 (%ecx),%zmm6");
1700         asm volatile("vbroadcastf64x4 (%ecx),%zmm6");
1701 
1702         /* AVX-512: Op code 0f 38 1f */
1703 
1704         asm volatile("vpabsq %zmm4,%zmm6");
1705 
1706         /* AVX-512: Op code 0f 38 20 */
1707 
1708         asm volatile("vpmovsxbw %xmm4,%xmm5");
1709         asm volatile("vpmovswb %zmm5,%ymm6{%k7}");
1710 
1711         /* AVX-512: Op code 0f 38 21 */
1712 
1713         asm volatile("vpmovsxbd %xmm4,%ymm6");
1714         asm volatile("vpmovsdb %zmm5,%xmm6{%k7}");
1715 
1716         /* AVX-512: Op code 0f 38 22 */
1717 
1718         asm volatile("vpmovsxbq %xmm4,%ymm4");
1719         asm volatile("vpmovsqb %zmm5,%xmm6{%k7}");
1720 
1721         /* AVX-512: Op code 0f 38 23 */
1722 
1723         asm volatile("vpmovsxwd %xmm4,%ymm4");
1724         asm volatile("vpmovsdw %zmm5,%ymm6{%k7}");
1725 
1726         /* AVX-512: Op code 0f 38 24 */
1727 
1728         asm volatile("vpmovsxwq %xmm4,%ymm6");
1729         asm volatile("vpmovsqw %zmm5,%xmm6{%k7}");
1730 
1731         /* AVX-512: Op code 0f 38 25 */
1732 
1733         asm volatile("vpmovsxdq %xmm4,%ymm4");
1734         asm volatile("vpmovsqd %zmm5,%ymm6{%k7}");
1735 
1736         /* AVX-512: Op code 0f 38 26 */
1737 
1738         asm volatile("vptestmb %zmm5,%zmm6,%k5");
1739         asm volatile("vptestmw %zmm5,%zmm6,%k5");
1740         asm volatile("vptestnmb %zmm4,%zmm5,%k5");
1741         asm volatile("vptestnmw %zmm4,%zmm5,%k5");
1742 
1743         /* AVX-512: Op code 0f 38 27 */
1744 
1745         asm volatile("vptestmd %zmm5,%zmm6,%k5");
1746         asm volatile("vptestmq %zmm5,%zmm6,%k5");
1747         asm volatile("vptestnmd %zmm4,%zmm5,%k5");
1748         asm volatile("vptestnmq %zmm4,%zmm5,%k5");
1749 
1750         /* AVX-512: Op code 0f 38 28 */
1751 
1752         asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
1753         asm volatile("vpmovm2b %k5,%zmm6");
1754         asm volatile("vpmovm2w %k5,%zmm6");
1755 
1756         /* AVX-512: Op code 0f 38 29 */
1757 
1758         asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
1759         asm volatile("vpmovb2m %zmm6,%k5");
1760         asm volatile("vpmovw2m %zmm6,%k5");
1761 
1762         /* AVX-512: Op code 0f 38 2a */
1763 
1764         asm volatile("vmovntdqa (%ecx),%ymm4");
1765         asm volatile("vpbroadcastmb2q %k6,%zmm1");
1766 
1767         /* AVX-512: Op code 0f 38 2c */
1768 
1769         asm volatile("vmaskmovps (%ecx),%ymm4,%ymm6");
1770         asm volatile("vscalefps %zmm4,%zmm5,%zmm6");
1771         asm volatile("vscalefpd %zmm4,%zmm5,%zmm6");
1772 
1773         /* AVX-512: Op code 0f 38 2d */
1774 
1775         asm volatile("vmaskmovpd (%ecx),%ymm4,%ymm6");
1776         asm volatile("vscalefss %xmm4,%xmm5,%xmm6{%k7}");
1777         asm volatile("vscalefsd %xmm4,%xmm5,%xmm6{%k7}");
1778 
1779         /* AVX-512: Op code 0f 38 30 */
1780 
1781         asm volatile("vpmovzxbw %xmm4,%ymm4");
1782         asm volatile("vpmovwb %zmm5,%ymm6{%k7}");
1783 
1784         /* AVX-512: Op code 0f 38 31 */
1785 
1786         asm volatile("vpmovzxbd %xmm4,%ymm6");
1787         asm volatile("vpmovdb %zmm5,%xmm6{%k7}");
1788 
1789         /* AVX-512: Op code 0f 38 32 */
1790 
1791         asm volatile("vpmovzxbq %xmm4,%ymm4");
1792         asm volatile("vpmovqb %zmm5,%xmm6{%k7}");
1793 
1794         /* AVX-512: Op code 0f 38 33 */
1795 
1796         asm volatile("vpmovzxwd %xmm4,%ymm4");
1797         asm volatile("vpmovdw %zmm5,%ymm6{%k7}");
1798 
1799         /* AVX-512: Op code 0f 38 34 */
1800 
1801         asm volatile("vpmovzxwq %xmm4,%ymm6");
1802         asm volatile("vpmovqw %zmm5,%xmm6{%k7}");
1803 
1804         /* AVX-512: Op code 0f 38 35 */
1805 
1806         asm volatile("vpmovzxdq %xmm4,%ymm4");
1807         asm volatile("vpmovqd %zmm5,%ymm6{%k7}");
1808 
1809         /* AVX-512: Op code 0f 38 36 */
1810 
1811         asm volatile("vpermd %ymm4,%ymm6,%ymm2");
1812         asm volatile("vpermd %ymm4,%ymm6,%ymm2{%k7}");
1813         asm volatile("vpermq %ymm4,%ymm6,%ymm2{%k7}");
1814 
1815         /* AVX-512: Op code 0f 38 38 */
1816 
1817         asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
1818         asm volatile("vpmovm2d %k5,%zmm6");
1819         asm volatile("vpmovm2q %k5,%zmm6");
1820 
1821         /* AVX-512: Op code 0f 38 39 */
1822 
1823         asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
1824         asm volatile("vpminsd %zmm4,%zmm5,%zmm6");
1825         asm volatile("vpminsq %zmm4,%zmm5,%zmm6");
1826         asm volatile("vpmovd2m %zmm6,%k5");
1827         asm volatile("vpmovq2m %zmm6,%k5");
1828 
1829         /* AVX-512: Op code 0f 38 3a */
1830 
1831         asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
1832         asm volatile("vpbroadcastmw2d %k6,%zmm6");
1833 
1834         /* AVX-512: Op code 0f 38 3b */
1835 
1836         asm volatile("vpminud %ymm4,%ymm6,%ymm2");
1837         asm volatile("vpminud %zmm4,%zmm5,%zmm6");
1838         asm volatile("vpminuq %zmm4,%zmm5,%zmm6");
1839 
1840         /* AVX-512: Op code 0f 38 3d */
1841 
1842         asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
1843         asm volatile("vpmaxsd %zmm4,%zmm5,%zmm6");
1844         asm volatile("vpmaxsq %zmm4,%zmm5,%zmm6");
1845 
1846         /* AVX-512: Op code 0f 38 3f */
1847 
1848         asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
1849         asm volatile("vpmaxud %zmm4,%zmm5,%zmm6");
1850         asm volatile("vpmaxuq %zmm4,%zmm5,%zmm6");
1851 
1852         /* AVX-512: Op code 0f 38 40 */
1853 
1854         asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
1855         asm volatile("vpmulld %zmm4,%zmm5,%zmm6");
1856         asm volatile("vpmullq %zmm4,%zmm5,%zmm6");
1857 
1858         /* AVX-512: Op code 0f 38 42 */
1859 
1860         asm volatile("vgetexpps %zmm5,%zmm6");
1861         asm volatile("vgetexppd %zmm5,%zmm6");
1862 
1863         /* AVX-512: Op code 0f 38 43 */
1864 
1865         asm volatile("vgetexpss %xmm4,%xmm5,%xmm6{%k7}");
1866         asm volatile("vgetexpsd %xmm2,%xmm3,%xmm4{%k7}");
1867 
1868         /* AVX-512: Op code 0f 38 44 */
1869 
1870         asm volatile("vplzcntd %zmm5,%zmm6");
1871         asm volatile("vplzcntq %zmm5,%zmm6");
1872 
1873         /* AVX-512: Op code 0f 38 46 */
1874 
1875         asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
1876         asm volatile("vpsravd %zmm4,%zmm5,%zmm6");
1877         asm volatile("vpsravq %zmm4,%zmm5,%zmm6");
1878 
1879         /* AVX-512: Op code 0f 38 4c */
1880 
1881         asm volatile("vrcp14ps %zmm5,%zmm6");
1882         asm volatile("vrcp14pd %zmm5,%zmm6");
1883 
1884         /* AVX-512: Op code 0f 38 4d */
1885 
1886         asm volatile("vrcp14ss %xmm4,%xmm5,%xmm6{%k7}");
1887         asm volatile("vrcp14sd %xmm4,%xmm5,%xmm6{%k7}");
1888 
1889         /* AVX-512: Op code 0f 38 4e */
1890 
1891         asm volatile("vrsqrt14ps %zmm5,%zmm6");
1892         asm volatile("vrsqrt14pd %zmm5,%zmm6");
1893 
1894         /* AVX-512: Op code 0f 38 4f */
1895 
1896         asm volatile("vrsqrt14ss %xmm4,%xmm5,%xmm6{%k7}");
1897         asm volatile("vrsqrt14sd %xmm4,%xmm5,%xmm6{%k7}");
1898 
1899         /* AVX-512: Op code 0f 38 59 */
1900 
1901         asm volatile("vpbroadcastq %xmm4,%xmm6");
1902         asm volatile("vbroadcasti32x2 %xmm7,%zmm6");
1903 
1904         /* AVX-512: Op code 0f 38 5a */
1905 
1906         asm volatile("vbroadcasti128 (%ecx),%ymm4");
1907         asm volatile("vbroadcasti32x4 (%ecx),%zmm6");
1908         asm volatile("vbroadcasti64x2 (%ecx),%zmm6");
1909 
1910         /* AVX-512: Op code 0f 38 5b */
1911 
1912         asm volatile("vbroadcasti32x8 (%ecx),%zmm6");
1913         asm volatile("vbroadcasti64x4 (%ecx),%zmm6");
1914 
1915         /* AVX-512: Op code 0f 38 64 */
1916 
1917         asm volatile("vpblendmd %zmm4,%zmm5,%zmm6");
1918         asm volatile("vpblendmq %zmm4,%zmm5,%zmm6");
1919 
1920         /* AVX-512: Op code 0f 38 65 */
1921 
1922         asm volatile("vblendmps %zmm4,%zmm5,%zmm6");
1923         asm volatile("vblendmpd %zmm4,%zmm5,%zmm6");
1924 
1925         /* AVX-512: Op code 0f 38 66 */
1926 
1927         asm volatile("vpblendmb %zmm4,%zmm5,%zmm6");
1928         asm volatile("vpblendmw %zmm4,%zmm5,%zmm6");
1929 
1930         /* AVX-512: Op code 0f 38 75 */
1931 
1932         asm volatile("vpermi2b %zmm4,%zmm5,%zmm6");
1933         asm volatile("vpermi2w %zmm4,%zmm5,%zmm6");
1934 
1935         /* AVX-512: Op code 0f 38 76 */
1936 
1937         asm volatile("vpermi2d %zmm4,%zmm5,%zmm6");
1938         asm volatile("vpermi2q %zmm4,%zmm5,%zmm6");
1939 
1940         /* AVX-512: Op code 0f 38 77 */
1941 
1942         asm volatile("vpermi2ps %zmm4,%zmm5,%zmm6");
1943         asm volatile("vpermi2pd %zmm4,%zmm5,%zmm6");
1944 
1945         /* AVX-512: Op code 0f 38 7a */
1946 
1947         asm volatile("vpbroadcastb %eax,%xmm3");
1948 
1949         /* AVX-512: Op code 0f 38 7b */
1950 
1951         asm volatile("vpbroadcastw %eax,%xmm3");
1952 
1953         /* AVX-512: Op code 0f 38 7c */
1954 
1955         asm volatile("vpbroadcastd %eax,%xmm3");
1956 
1957         /* AVX-512: Op code 0f 38 7d */
1958 
1959         asm volatile("vpermt2b %zmm4,%zmm5,%zmm6");
1960         asm volatile("vpermt2w %zmm4,%zmm5,%zmm6");
1961 
1962         /* AVX-512: Op code 0f 38 7e */
1963 
1964         asm volatile("vpermt2d %zmm4,%zmm5,%zmm6");
1965         asm volatile("vpermt2q %zmm4,%zmm5,%zmm6");
1966 
1967         /* AVX-512: Op code 0f 38 7f */
1968 
1969         asm volatile("vpermt2ps %zmm4,%zmm5,%zmm6");
1970         asm volatile("vpermt2pd %zmm4,%zmm5,%zmm6");
1971 
1972         /* AVX-512: Op code 0f 38 83 */
1973 
1974         asm volatile("vpmultishiftqb %zmm4,%zmm5,%zmm6");
1975 
1976         /* AVX-512: Op code 0f 38 88 */
1977 
1978         asm volatile("vexpandps (%ecx),%zmm6");
1979         asm volatile("vexpandpd (%ecx),%zmm6");
1980 
1981         /* AVX-512: Op code 0f 38 89 */
1982 
1983         asm volatile("vpexpandd (%ecx),%zmm6");
1984         asm volatile("vpexpandq (%ecx),%zmm6");
1985 
1986         /* AVX-512: Op code 0f 38 8a */
1987 
1988         asm volatile("vcompressps %zmm6,(%ecx)");
1989         asm volatile("vcompresspd %zmm6,(%ecx)");
1990 
1991         /* AVX-512: Op code 0f 38 8b */
1992 
1993         asm volatile("vpcompressd %zmm6,(%ecx)");
1994         asm volatile("vpcompressq %zmm6,(%ecx)");
1995 
1996         /* AVX-512: Op code 0f 38 8d */
1997 
1998         asm volatile("vpermb %zmm4,%zmm5,%zmm6");
1999         asm volatile("vpermw %zmm4,%zmm5,%zmm6");
2000 
2001         /* AVX-512: Op code 0f 38 90 */
2002 
2003         asm volatile("vpgatherdd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2004         asm volatile("vpgatherdq %xmm2,0x04(%ebp,%xmm7,2),%xmm1");
2005         asm volatile("vpgatherdd 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
2006         asm volatile("vpgatherdq 0x7b(%ebp,%ymm7,8),%zmm6{%k1}");
2007 
2008         /* AVX-512: Op code 0f 38 91 */
2009 
2010         asm volatile("vpgatherqd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2011         asm volatile("vpgatherqq %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2012         asm volatile("vpgatherqd 0x7b(%ebp,%zmm7,8),%ymm6{%k1}");
2013         asm volatile("vpgatherqq 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
2014 
2015         /* AVX-512: Op code 0f 38 a0 */
2016 
2017         asm volatile("vpscatterdd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2018         asm volatile("vpscatterdq %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2019 
2020         /* AVX-512: Op code 0f 38 a1 */
2021 
2022         asm volatile("vpscatterqd %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2023         asm volatile("vpscatterqq %ymm6,0x7b(%ebp,%ymm7,8){%k1}");
2024 
2025         /* AVX-512: Op code 0f 38 a2 */
2026 
2027         asm volatile("vscatterdps %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2028         asm volatile("vscatterdpd %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2029 
2030         /* AVX-512: Op code 0f 38 a3 */
2031 
2032         asm volatile("vscatterqps %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2033         asm volatile("vscatterqpd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2034 
2035         /* AVX-512: Op code 0f 38 b4 */
2036 
2037         asm volatile("vpmadd52luq %zmm4,%zmm5,%zmm6");
2038 
2039         /* AVX-512: Op code 0f 38 b5 */
2040 
2041         asm volatile("vpmadd52huq %zmm4,%zmm5,%zmm6");
2042 
2043         /* AVX-512: Op code 0f 38 c4 */
2044 
2045         asm volatile("vpconflictd %zmm5,%zmm6");
2046         asm volatile("vpconflictq %zmm5,%zmm6");
2047 
2048         /* AVX-512: Op code 0f 38 c8 */
2049 
2050         asm volatile("vexp2ps %zmm6,%zmm7");
2051         asm volatile("vexp2pd %zmm6,%zmm7");
2052 
2053         /* AVX-512: Op code 0f 38 ca */
2054 
2055         asm volatile("vrcp28ps %zmm6,%zmm7");
2056         asm volatile("vrcp28pd %zmm6,%zmm7");
2057 
2058         /* AVX-512: Op code 0f 38 cb */
2059 
2060         asm volatile("vrcp28ss %xmm5,%xmm6,%xmm7{%k7}");
2061         asm volatile("vrcp28sd %xmm5,%xmm6,%xmm7{%k7}");
2062 
2063         /* AVX-512: Op code 0f 38 cc */
2064 
2065         asm volatile("vrsqrt28ps %zmm6,%zmm7");
2066         asm volatile("vrsqrt28pd %zmm6,%zmm7");
2067 
2068         /* AVX-512: Op code 0f 38 cd */
2069 
2070         asm volatile("vrsqrt28ss %xmm5,%xmm6,%xmm7{%k7}");
2071         asm volatile("vrsqrt28sd %xmm5,%xmm6,%xmm7{%k7}");
2072 
2073         /* AVX-512: Op code 0f 3a 03 */
2074 
2075         asm volatile("valignd $0x12,%zmm5,%zmm6,%zmm7");
2076         asm volatile("valignq $0x12,%zmm5,%zmm6,%zmm7");
2077 
2078         /* AVX-512: Op code 0f 3a 08 */
2079 
2080         asm volatile("vroundps $0x5,%ymm6,%ymm2");
2081         asm volatile("vrndscaleps $0x12,%zmm5,%zmm6");
2082 
2083         /* AVX-512: Op code 0f 3a 09 */
2084 
2085         asm volatile("vroundpd $0x5,%ymm6,%ymm2");
2086         asm volatile("vrndscalepd $0x12,%zmm5,%zmm6");
2087 
2088         /* AVX-512: Op code 0f 3a 0a */
2089 
2090         asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
2091         asm volatile("vrndscaless $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2092 
2093         /* AVX-512: Op code 0f 3a 0b */
2094 
2095         asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
2096         asm volatile("vrndscalesd $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2097 
2098         /* AVX-512: Op code 0f 3a 18 */
2099 
2100         asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
2101         asm volatile("vinsertf32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2102         asm volatile("vinsertf64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2103 
2104         /* AVX-512: Op code 0f 3a 19 */
2105 
2106         asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
2107         asm volatile("vextractf32x4 $0x12,%zmm5,%xmm6{%k7}");
2108         asm volatile("vextractf64x2 $0x12,%zmm5,%xmm6{%k7}");
2109 
2110         /* AVX-512: Op code 0f 3a 1a */
2111 
2112         asm volatile("vinsertf32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2113         asm volatile("vinsertf64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2114 
2115         /* AVX-512: Op code 0f 3a 1b */
2116 
2117         asm volatile("vextractf32x8 $0x12,%zmm6,%ymm7{%k7}");
2118         asm volatile("vextractf64x4 $0x12,%zmm6,%ymm7{%k7}");
2119 
2120         /* AVX-512: Op code 0f 3a 1e */
2121 
2122         asm volatile("vpcmpud $0x12,%zmm6,%zmm7,%k5");
2123         asm volatile("vpcmpuq $0x12,%zmm6,%zmm7,%k5");
2124 
2125         /* AVX-512: Op code 0f 3a 1f */
2126 
2127         asm volatile("vpcmpd $0x12,%zmm6,%zmm7,%k5");
2128         asm volatile("vpcmpq $0x12,%zmm6,%zmm7,%k5");
2129 
2130         /* AVX-512: Op code 0f 3a 23 */
2131 
2132         asm volatile("vshuff32x4 $0x12,%zmm5,%zmm6,%zmm7");
2133         asm volatile("vshuff64x2 $0x12,%zmm5,%zmm6,%zmm7");
2134 
2135         /* AVX-512: Op code 0f 3a 25 */
2136 
2137         asm volatile("vpternlogd $0x12,%zmm5,%zmm6,%zmm7");
2138         asm volatile("vpternlogq $0x12,%zmm5,%zmm6,%zmm7");
2139 
2140         /* AVX-512: Op code 0f 3a 26 */
2141 
2142         asm volatile("vgetmantps $0x12,%zmm6,%zmm7");
2143         asm volatile("vgetmantpd $0x12,%zmm6,%zmm7");
2144 
2145         /* AVX-512: Op code 0f 3a 27 */
2146 
2147         asm volatile("vgetmantss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2148         asm volatile("vgetmantsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2149 
2150         /* AVX-512: Op code 0f 3a 38 */
2151 
2152         asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
2153         asm volatile("vinserti32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2154         asm volatile("vinserti64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2155 
2156         /* AVX-512: Op code 0f 3a 39 */
2157 
2158         asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
2159         asm volatile("vextracti32x4 $0x12,%zmm5,%xmm6{%k7}");
2160         asm volatile("vextracti64x2 $0x12,%zmm5,%xmm6{%k7}");
2161 
2162         /* AVX-512: Op code 0f 3a 3a */
2163 
2164         asm volatile("vinserti32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2165         asm volatile("vinserti64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2166 
2167         /* AVX-512: Op code 0f 3a 3b */
2168 
2169         asm volatile("vextracti32x8 $0x12,%zmm6,%ymm7{%k7}");
2170         asm volatile("vextracti64x4 $0x12,%zmm6,%ymm7{%k7}");
2171 
2172         /* AVX-512: Op code 0f 3a 3e */
2173 
2174         asm volatile("vpcmpub $0x12,%zmm6,%zmm7,%k5");
2175         asm volatile("vpcmpuw $0x12,%zmm6,%zmm7,%k5");
2176 
2177         /* AVX-512: Op code 0f 3a 3f */
2178 
2179         asm volatile("vpcmpb $0x12,%zmm6,%zmm7,%k5");
2180         asm volatile("vpcmpw $0x12,%zmm6,%zmm7,%k5");
2181 
2182         /* AVX-512: Op code 0f 3a 42 */
2183 
2184         asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
2185         asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
2186 
2187         /* AVX-512: Op code 0f 3a 43 */
2188 
2189         asm volatile("vshufi32x4 $0x12,%zmm5,%zmm6,%zmm7");
2190         asm volatile("vshufi64x2 $0x12,%zmm5,%zmm6,%zmm7");
2191 
2192         /* AVX-512: Op code 0f 3a 50 */
2193 
2194         asm volatile("vrangeps $0x12,%zmm5,%zmm6,%zmm7");
2195         asm volatile("vrangepd $0x12,%zmm5,%zmm6,%zmm7");
2196 
2197         /* AVX-512: Op code 0f 3a 51 */
2198 
2199         asm volatile("vrangess $0x12,%xmm5,%xmm6,%xmm7");
2200         asm volatile("vrangesd $0x12,%xmm5,%xmm6,%xmm7");
2201 
2202         /* AVX-512: Op code 0f 3a 54 */
2203 
2204         asm volatile("vfixupimmps $0x12,%zmm5,%zmm6,%zmm7");
2205         asm volatile("vfixupimmpd $0x12,%zmm5,%zmm6,%zmm7");
2206 
2207         /* AVX-512: Op code 0f 3a 55 */
2208 
2209         asm volatile("vfixupimmss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2210         asm volatile("vfixupimmsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2211 
2212         /* AVX-512: Op code 0f 3a 56 */
2213 
2214         asm volatile("vreduceps $0x12,%zmm6,%zmm7");
2215         asm volatile("vreducepd $0x12,%zmm6,%zmm7");
2216 
2217         /* AVX-512: Op code 0f 3a 57 */
2218 
2219         asm volatile("vreducess $0x12,%xmm5,%xmm6,%xmm7");
2220         asm volatile("vreducesd $0x12,%xmm5,%xmm6,%xmm7");
2221 
2222         /* AVX-512: Op code 0f 3a 66 */
2223 
2224         asm volatile("vfpclassps $0x12,%zmm7,%k5");
2225         asm volatile("vfpclasspd $0x12,%zmm7,%k5");
2226 
2227         /* AVX-512: Op code 0f 3a 67 */
2228 
2229         asm volatile("vfpclassss $0x12,%xmm7,%k5");
2230         asm volatile("vfpclasssd $0x12,%xmm7,%k5");
2231 
2232         /* AVX-512: Op code 0f 72 (Grp13) */
2233 
2234         asm volatile("vprord $0x12,%zmm5,%zmm6");
2235         asm volatile("vprorq $0x12,%zmm5,%zmm6");
2236         asm volatile("vprold $0x12,%zmm5,%zmm6");
2237         asm volatile("vprolq $0x12,%zmm5,%zmm6");
2238         asm volatile("psrad  $0x2,%mm6");
2239         asm volatile("vpsrad $0x5,%ymm6,%ymm2");
2240         asm volatile("vpsrad $0x5,%zmm6,%zmm2");
2241         asm volatile("vpsraq $0x5,%zmm6,%zmm2");
2242 
2243         /* AVX-512: Op code 0f 38 c6 (Grp18) */
2244 
2245         asm volatile("vgatherpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
2246         asm volatile("vgatherpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
2247         asm volatile("vgatherpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
2248         asm volatile("vgatherpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
2249         asm volatile("vscatterpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
2250         asm volatile("vscatterpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
2251         asm volatile("vscatterpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
2252         asm volatile("vscatterpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
2253 
2254         /* AVX-512: Op code 0f 38 c7 (Grp19) */
2255 
2256         asm volatile("vgatherpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
2257         asm volatile("vgatherpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
2258         asm volatile("vgatherpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
2259         asm volatile("vgatherpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
2260         asm volatile("vscatterpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
2261         asm volatile("vscatterpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
2262         asm volatile("vscatterpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
2263         asm volatile("vscatterpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
2264 
2265         /* AVX-512: Examples */
2266 
2267         asm volatile("vaddpd %zmm4,%zmm5,%zmm6");
2268         asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}");
2269         asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}{z}");
2270         asm volatile("vaddpd {rn-sae},%zmm4,%zmm5,%zmm6");
2271         asm volatile("vaddpd {ru-sae},%zmm4,%zmm5,%zmm6");
2272         asm volatile("vaddpd {rd-sae},%zmm4,%zmm5,%zmm6");
2273         asm volatile("vaddpd {rz-sae},%zmm4,%zmm5,%zmm6");
2274         asm volatile("vaddpd (%ecx),%zmm5,%zmm6");
2275         asm volatile("vaddpd 0x123(%eax,%ecx,8),%zmm5,%zmm6");
2276         asm volatile("vaddpd (%ecx){1to8},%zmm5,%zmm6");
2277         asm volatile("vaddpd 0x1fc0(%edx),%zmm5,%zmm6");
2278         asm volatile("vaddpd 0x3f8(%edx){1to8},%zmm5,%zmm6");
2279         asm volatile("vcmpeq_uqps 0x1fc(%edx){1to16},%zmm6,%k5");
2280         asm volatile("vcmpltsd 0x123(%eax,%ecx,8),%xmm3,%k5{%k7}");
2281         asm volatile("vcmplesd {sae},%xmm4,%xmm5,%k5{%k7}");
2282         asm volatile("vgetmantss $0x5b,0x123(%eax,%ecx,8),%xmm4,%xmm5{%k7}");
2283 
2284         /* bndmk m32, bnd */
2285 
2286         asm volatile("bndmk (%eax), %bnd0");
2287         asm volatile("bndmk (0x12345678), %bnd0");
2288         asm volatile("bndmk (%eax), %bnd3");
2289         asm volatile("bndmk (%ecx,%eax,1), %bnd0");
2290         asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
2291         asm volatile("bndmk (%eax,%ecx,1), %bnd0");
2292         asm volatile("bndmk (%eax,%ecx,8), %bnd0");
2293         asm volatile("bndmk 0x12(%eax), %bnd0");
2294         asm volatile("bndmk 0x12(%ebp), %bnd0");
2295         asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
2296         asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
2297         asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
2298         asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
2299         asm volatile("bndmk 0x12345678(%eax), %bnd0");
2300         asm volatile("bndmk 0x12345678(%ebp), %bnd0");
2301         asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
2302         asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
2303         asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
2304         asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
2305 
2306         /* bndcl r/m32, bnd */
2307 
2308         asm volatile("bndcl (%eax), %bnd0");
2309         asm volatile("bndcl (0x12345678), %bnd0");
2310         asm volatile("bndcl (%eax), %bnd3");
2311         asm volatile("bndcl (%ecx,%eax,1), %bnd0");
2312         asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
2313         asm volatile("bndcl (%eax,%ecx,1), %bnd0");
2314         asm volatile("bndcl (%eax,%ecx,8), %bnd0");
2315         asm volatile("bndcl 0x12(%eax), %bnd0");
2316         asm volatile("bndcl 0x12(%ebp), %bnd0");
2317         asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
2318         asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
2319         asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
2320         asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
2321         asm volatile("bndcl 0x12345678(%eax), %bnd0");
2322         asm volatile("bndcl 0x12345678(%ebp), %bnd0");
2323         asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
2324         asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
2325         asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
2326         asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
2327         asm volatile("bndcl %eax, %bnd0");
2328 
2329         /* bndcu r/m32, bnd */
2330 
2331         asm volatile("bndcu (%eax), %bnd0");
2332         asm volatile("bndcu (0x12345678), %bnd0");
2333         asm volatile("bndcu (%eax), %bnd3");
2334         asm volatile("bndcu (%ecx,%eax,1), %bnd0");
2335         asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
2336         asm volatile("bndcu (%eax,%ecx,1), %bnd0");
2337         asm volatile("bndcu (%eax,%ecx,8), %bnd0");
2338         asm volatile("bndcu 0x12(%eax), %bnd0");
2339         asm volatile("bndcu 0x12(%ebp), %bnd0");
2340         asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
2341         asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
2342         asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
2343         asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
2344         asm volatile("bndcu 0x12345678(%eax), %bnd0");
2345         asm volatile("bndcu 0x12345678(%ebp), %bnd0");
2346         asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
2347         asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
2348         asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
2349         asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
2350         asm volatile("bndcu %eax, %bnd0");
2351 
2352         /* bndcn r/m32, bnd */
2353 
2354         asm volatile("bndcn (%eax), %bnd0");
2355         asm volatile("bndcn (0x12345678), %bnd0");
2356         asm volatile("bndcn (%eax), %bnd3");
2357         asm volatile("bndcn (%ecx,%eax,1), %bnd0");
2358         asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
2359         asm volatile("bndcn (%eax,%ecx,1), %bnd0");
2360         asm volatile("bndcn (%eax,%ecx,8), %bnd0");
2361         asm volatile("bndcn 0x12(%eax), %bnd0");
2362         asm volatile("bndcn 0x12(%ebp), %bnd0");
2363         asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
2364         asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
2365         asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
2366         asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
2367         asm volatile("bndcn 0x12345678(%eax), %bnd0");
2368         asm volatile("bndcn 0x12345678(%ebp), %bnd0");
2369         asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
2370         asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
2371         asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
2372         asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
2373         asm volatile("bndcn %eax, %bnd0");
2374 
2375         /* bndmov m64, bnd */
2376 
2377         asm volatile("bndmov (%eax), %bnd0");
2378         asm volatile("bndmov (0x12345678), %bnd0");
2379         asm volatile("bndmov (%eax), %bnd3");
2380         asm volatile("bndmov (%ecx,%eax,1), %bnd0");
2381         asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
2382         asm volatile("bndmov (%eax,%ecx,1), %bnd0");
2383         asm volatile("bndmov (%eax,%ecx,8), %bnd0");
2384         asm volatile("bndmov 0x12(%eax), %bnd0");
2385         asm volatile("bndmov 0x12(%ebp), %bnd0");
2386         asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
2387         asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
2388         asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
2389         asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
2390         asm volatile("bndmov 0x12345678(%eax), %bnd0");
2391         asm volatile("bndmov 0x12345678(%ebp), %bnd0");
2392         asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
2393         asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
2394         asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
2395         asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
2396 
2397         /* bndmov bnd, m64 */
2398 
2399         asm volatile("bndmov %bnd0, (%eax)");
2400         asm volatile("bndmov %bnd0, (0x12345678)");
2401         asm volatile("bndmov %bnd3, (%eax)");
2402         asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
2403         asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
2404         asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
2405         asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
2406         asm volatile("bndmov %bnd0, 0x12(%eax)");
2407         asm volatile("bndmov %bnd0, 0x12(%ebp)");
2408         asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
2409         asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
2410         asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
2411         asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
2412         asm volatile("bndmov %bnd0, 0x12345678(%eax)");
2413         asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
2414         asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
2415         asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
2416         asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
2417         asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
2418 
2419         /* bndmov bnd2, bnd1 */
2420 
2421         asm volatile("bndmov %bnd0, %bnd1");
2422         asm volatile("bndmov %bnd1, %bnd0");
2423 
2424         /* bndldx mib, bnd */
2425 
2426         asm volatile("bndldx (%eax), %bnd0");
2427         asm volatile("bndldx (0x12345678), %bnd0");
2428         asm volatile("bndldx (%eax), %bnd3");
2429         asm volatile("bndldx (%ecx,%eax,1), %bnd0");
2430         asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
2431         asm volatile("bndldx (%eax,%ecx,1), %bnd0");
2432         asm volatile("bndldx 0x12(%eax), %bnd0");
2433         asm volatile("bndldx 0x12(%ebp), %bnd0");
2434         asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
2435         asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
2436         asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
2437         asm volatile("bndldx 0x12345678(%eax), %bnd0");
2438         asm volatile("bndldx 0x12345678(%ebp), %bnd0");
2439         asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
2440         asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
2441         asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
2442 
2443         /* bndstx bnd, mib */
2444 
2445         asm volatile("bndstx %bnd0, (%eax)");
2446         asm volatile("bndstx %bnd0, (0x12345678)");
2447         asm volatile("bndstx %bnd3, (%eax)");
2448         asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
2449         asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
2450         asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
2451         asm volatile("bndstx %bnd0, 0x12(%eax)");
2452         asm volatile("bndstx %bnd0, 0x12(%ebp)");
2453         asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
2454         asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
2455         asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
2456         asm volatile("bndstx %bnd0, 0x12345678(%eax)");
2457         asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
2458         asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
2459         asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
2460         asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
2461 
2462         /* bnd prefix on call, ret, jmp and all jcc */
2463 
2464         asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
2465         asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
2466         asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
2467         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
2468         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
2469         asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
2470         asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
2471 
2472         /* sha1rnds4 imm8, xmm2/m128, xmm1 */
2473 
2474         asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
2475         asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
2476         asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
2477         asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
2478         asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
2479         asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
2480         asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
2481         asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
2482         asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
2483         asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
2484         asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
2485         asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
2486         asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
2487         asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
2488         asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
2489         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
2490         asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
2491         asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
2492         asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
2493         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
2494         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
2495 
2496         /* sha1nexte xmm2/m128, xmm1 */
2497 
2498         asm volatile("sha1nexte %xmm1, %xmm0");
2499         asm volatile("sha1nexte %xmm7, %xmm2");
2500         asm volatile("sha1nexte (%eax), %xmm0");
2501         asm volatile("sha1nexte (0x12345678), %xmm0");
2502         asm volatile("sha1nexte (%eax), %xmm3");
2503         asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
2504         asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
2505         asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
2506         asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
2507         asm volatile("sha1nexte 0x12(%eax), %xmm0");
2508         asm volatile("sha1nexte 0x12(%ebp), %xmm0");
2509         asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
2510         asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
2511         asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
2512         asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
2513         asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
2514         asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
2515         asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
2516         asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
2517         asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
2518         asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
2519 
2520         /* sha1msg1 xmm2/m128, xmm1 */
2521 
2522         asm volatile("sha1msg1 %xmm1, %xmm0");
2523         asm volatile("sha1msg1 %xmm7, %xmm2");
2524         asm volatile("sha1msg1 (%eax), %xmm0");
2525         asm volatile("sha1msg1 (0x12345678), %xmm0");
2526         asm volatile("sha1msg1 (%eax), %xmm3");
2527         asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
2528         asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
2529         asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
2530         asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
2531         asm volatile("sha1msg1 0x12(%eax), %xmm0");
2532         asm volatile("sha1msg1 0x12(%ebp), %xmm0");
2533         asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
2534         asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
2535         asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
2536         asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
2537         asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
2538         asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
2539         asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
2540         asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
2541         asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
2542         asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
2543 
2544         /* sha1msg2 xmm2/m128, xmm1 */
2545 
2546         asm volatile("sha1msg2 %xmm1, %xmm0");
2547         asm volatile("sha1msg2 %xmm7, %xmm2");
2548         asm volatile("sha1msg2 (%eax), %xmm0");
2549         asm volatile("sha1msg2 (0x12345678), %xmm0");
2550         asm volatile("sha1msg2 (%eax), %xmm3");
2551         asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
2552         asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
2553         asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
2554         asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
2555         asm volatile("sha1msg2 0x12(%eax), %xmm0");
2556         asm volatile("sha1msg2 0x12(%ebp), %xmm0");
2557         asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
2558         asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
2559         asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
2560         asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
2561         asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
2562         asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
2563         asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
2564         asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
2565         asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
2566         asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
2567 
2568         /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
2569         /* Note sha256rnds2 has an implicit operand 'xmm0' */
2570 
2571         asm volatile("sha256rnds2 %xmm4, %xmm1");
2572         asm volatile("sha256rnds2 %xmm7, %xmm2");
2573         asm volatile("sha256rnds2 (%eax), %xmm1");
2574         asm volatile("sha256rnds2 (0x12345678), %xmm1");
2575         asm volatile("sha256rnds2 (%eax), %xmm3");
2576         asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
2577         asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
2578         asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
2579         asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
2580         asm volatile("sha256rnds2 0x12(%eax), %xmm1");
2581         asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
2582         asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
2583         asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
2584         asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
2585         asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
2586         asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
2587         asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
2588         asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
2589         asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
2590         asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
2591         asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
2592 
2593         /* sha256msg1 xmm2/m128, xmm1 */
2594 
2595         asm volatile("sha256msg1 %xmm1, %xmm0");
2596         asm volatile("sha256msg1 %xmm7, %xmm2");
2597         asm volatile("sha256msg1 (%eax), %xmm0");
2598         asm volatile("sha256msg1 (0x12345678), %xmm0");
2599         asm volatile("sha256msg1 (%eax), %xmm3");
2600         asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
2601         asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
2602         asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
2603         asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
2604         asm volatile("sha256msg1 0x12(%eax), %xmm0");
2605         asm volatile("sha256msg1 0x12(%ebp), %xmm0");
2606         asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
2607         asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
2608         asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
2609         asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
2610         asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
2611         asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
2612         asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
2613         asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
2614         asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
2615         asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
2616 
2617         /* sha256msg2 xmm2/m128, xmm1 */
2618 
2619         asm volatile("sha256msg2 %xmm1, %xmm0");
2620         asm volatile("sha256msg2 %xmm7, %xmm2");
2621         asm volatile("sha256msg2 (%eax), %xmm0");
2622         asm volatile("sha256msg2 (0x12345678), %xmm0");
2623         asm volatile("sha256msg2 (%eax), %xmm3");
2624         asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
2625         asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
2626         asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
2627         asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
2628         asm volatile("sha256msg2 0x12(%eax), %xmm0");
2629         asm volatile("sha256msg2 0x12(%ebp), %xmm0");
2630         asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
2631         asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
2632         asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
2633         asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
2634         asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
2635         asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
2636         asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
2637         asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
2638         asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
2639         asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
2640 
2641         /* clflushopt m8 */
2642 
2643         asm volatile("clflushopt (%eax)");
2644         asm volatile("clflushopt (0x12345678)");
2645         asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
2646         /* Also check instructions in the same group encoding as clflushopt */
2647         asm volatile("clflush (%eax)");
2648         asm volatile("sfence");
2649 
2650         /* clwb m8 */
2651 
2652         asm volatile("clwb (%eax)");
2653         asm volatile("clwb (0x12345678)");
2654         asm volatile("clwb 0x12345678(%eax,%ecx,8)");
2655         /* Also check instructions in the same group encoding as clwb */
2656         asm volatile("xsaveopt (%eax)");
2657         asm volatile("mfence");
2658 
2659         /* xsavec mem */
2660 
2661         asm volatile("xsavec (%eax)");
2662         asm volatile("xsavec (0x12345678)");
2663         asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
2664 
2665         /* xsaves mem */
2666 
2667         asm volatile("xsaves (%eax)");
2668         asm volatile("xsaves (0x12345678)");
2669         asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
2670 
2671         /* xrstors mem */
2672 
2673         asm volatile("xrstors (%eax)");
2674         asm volatile("xrstors (0x12345678)");
2675         asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
2676 
2677         /* ptwrite */
2678 
2679         asm volatile("ptwrite (%eax)");
2680         asm volatile("ptwrite (0x12345678)");
2681         asm volatile("ptwrite 0x12345678(%eax,%ecx,8)");
2682 
2683         asm volatile("ptwritel (%eax)");
2684         asm volatile("ptwritel (0x12345678)");
2685         asm volatile("ptwritel 0x12345678(%eax,%ecx,8)");
2686 
2687 #endif /* #ifndef __x86_64__ */
2688 
2689         /* Following line is a marker for the awk script - do not change */
2690         asm volatile("rdtsc"); /* Stop here */
2691 
2692         return 0;
2693 }

/* [<][>][^][v][top][bottom][index][help] */