linux/tools/perf/arch/x86/tests/insn-x86-dat-src.c
<<
>>
Prefs
   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
  18int 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 50 */
 514
 515        asm volatile("vpdpbusd %xmm1, %xmm2, %xmm3");
 516        asm volatile("vpdpbusd %ymm1, %ymm2, %ymm3");
 517        asm volatile("vpdpbusd %zmm1, %zmm2, %zmm3");
 518        asm volatile("vpdpbusd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 519        asm volatile("vpdpbusd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 520
 521        /* AVX-512: Op code 0f 38 51 */
 522
 523        asm volatile("vpdpbusds %xmm1, %xmm2, %xmm3");
 524        asm volatile("vpdpbusds %ymm1, %ymm2, %ymm3");
 525        asm volatile("vpdpbusds %zmm1, %zmm2, %zmm3");
 526        asm volatile("vpdpbusds 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 527        asm volatile("vpdpbusds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 528
 529        /* AVX-512: Op code 0f 38 52 */
 530
 531        asm volatile("vdpbf16ps %xmm1, %xmm2, %xmm3");
 532        asm volatile("vdpbf16ps %ymm1, %ymm2, %ymm3");
 533        asm volatile("vdpbf16ps %zmm1, %zmm2, %zmm3");
 534        asm volatile("vdpbf16ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 535        asm volatile("vdpbf16ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 536
 537        asm volatile("vpdpwssd %xmm1, %xmm2, %xmm3");
 538        asm volatile("vpdpwssd %ymm1, %ymm2, %ymm3");
 539        asm volatile("vpdpwssd %zmm1, %zmm2, %zmm3");
 540        asm volatile("vpdpwssd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 541        asm volatile("vpdpwssd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 542
 543        asm volatile("vp4dpwssd (%rax), %zmm0, %zmm4");
 544        asm volatile("vp4dpwssd (%eax), %zmm0, %zmm4");
 545        asm volatile("vp4dpwssd 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
 546        asm volatile("vp4dpwssd 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
 547
 548        /* AVX-512: Op code 0f 38 53 */
 549
 550        asm volatile("vpdpwssds %xmm1, %xmm2, %xmm3");
 551        asm volatile("vpdpwssds %ymm1, %ymm2, %ymm3");
 552        asm volatile("vpdpwssds %zmm1, %zmm2, %zmm3");
 553        asm volatile("vpdpwssds 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 554        asm volatile("vpdpwssds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 555
 556        asm volatile("vp4dpwssds (%rax), %zmm0, %zmm4");
 557        asm volatile("vp4dpwssds (%eax), %zmm0, %zmm4");
 558        asm volatile("vp4dpwssds 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
 559        asm volatile("vp4dpwssds 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
 560
 561        /* AVX-512: Op code 0f 38 54 */
 562
 563        asm volatile("vpopcntb %xmm1, %xmm2");
 564        asm volatile("vpopcntb %ymm1, %ymm2");
 565        asm volatile("vpopcntb %zmm1, %zmm2");
 566        asm volatile("vpopcntb 0x12345678(%rax,%rcx,8),%zmm2");
 567        asm volatile("vpopcntb 0x12345678(%eax,%ecx,8),%zmm2");
 568
 569        asm volatile("vpopcntw %xmm1, %xmm2");
 570        asm volatile("vpopcntw %ymm1, %ymm2");
 571        asm volatile("vpopcntw %zmm1, %zmm2");
 572        asm volatile("vpopcntw 0x12345678(%rax,%rcx,8),%zmm2");
 573        asm volatile("vpopcntw 0x12345678(%eax,%ecx,8),%zmm2");
 574
 575        /* AVX-512: Op code 0f 38 55 */
 576
 577        asm volatile("vpopcntd %xmm1, %xmm2");
 578        asm volatile("vpopcntd %ymm1, %ymm2");
 579        asm volatile("vpopcntd %zmm1, %zmm2");
 580        asm volatile("vpopcntd 0x12345678(%rax,%rcx,8),%zmm2");
 581        asm volatile("vpopcntd 0x12345678(%eax,%ecx,8),%zmm2");
 582
 583        asm volatile("vpopcntq %xmm1, %xmm2");
 584        asm volatile("vpopcntq %ymm1, %ymm2");
 585        asm volatile("vpopcntq %zmm1, %zmm2");
 586        asm volatile("vpopcntq 0x12345678(%rax,%rcx,8),%zmm2");
 587        asm volatile("vpopcntq 0x12345678(%eax,%ecx,8),%zmm2");
 588
 589        /* AVX-512: Op code 0f 38 59 */
 590
 591        asm volatile("vpbroadcastq %xmm4,%xmm6");
 592        asm volatile("vbroadcasti32x2 %xmm27,%zmm26");
 593
 594        /* AVX-512: Op code 0f 38 5a */
 595
 596        asm volatile("vbroadcasti128 (%rcx),%ymm4");
 597        asm volatile("vbroadcasti32x4 (%rcx),%zmm26");
 598        asm volatile("vbroadcasti64x2 (%rcx),%zmm26");
 599
 600        /* AVX-512: Op code 0f 38 5b */
 601
 602        asm volatile("vbroadcasti32x8 (%rcx),%zmm28");
 603        asm volatile("vbroadcasti64x4 (%rcx),%zmm26");
 604
 605        /* AVX-512: Op code 0f 38 62 */
 606
 607        asm volatile("vpexpandb %xmm1, %xmm2");
 608        asm volatile("vpexpandb %ymm1, %ymm2");
 609        asm volatile("vpexpandb %zmm1, %zmm2");
 610        asm volatile("vpexpandb 0x12345678(%rax,%rcx,8),%zmm2");
 611        asm volatile("vpexpandb 0x12345678(%eax,%ecx,8),%zmm2");
 612
 613        asm volatile("vpexpandw %xmm1, %xmm2");
 614        asm volatile("vpexpandw %ymm1, %ymm2");
 615        asm volatile("vpexpandw %zmm1, %zmm2");
 616        asm volatile("vpexpandw 0x12345678(%rax,%rcx,8),%zmm2");
 617        asm volatile("vpexpandw 0x12345678(%eax,%ecx,8),%zmm2");
 618
 619        /* AVX-512: Op code 0f 38 63 */
 620
 621        asm volatile("vpcompressb %xmm1, %xmm2");
 622        asm volatile("vpcompressb %ymm1, %ymm2");
 623        asm volatile("vpcompressb %zmm1, %zmm2");
 624        asm volatile("vpcompressb %zmm2,0x12345678(%rax,%rcx,8)");
 625        asm volatile("vpcompressb %zmm2,0x12345678(%eax,%ecx,8)");
 626
 627        asm volatile("vpcompressw %xmm1, %xmm2");
 628        asm volatile("vpcompressw %ymm1, %ymm2");
 629        asm volatile("vpcompressw %zmm1, %zmm2");
 630        asm volatile("vpcompressw %zmm2,0x12345678(%rax,%rcx,8)");
 631        asm volatile("vpcompressw %zmm2,0x12345678(%eax,%ecx,8)");
 632
 633        /* AVX-512: Op code 0f 38 64 */
 634
 635        asm volatile("vpblendmd %zmm26,%zmm27,%zmm28");
 636        asm volatile("vpblendmq %zmm26,%zmm27,%zmm28");
 637
 638        /* AVX-512: Op code 0f 38 65 */
 639
 640        asm volatile("vblendmps %zmm24,%zmm25,%zmm26");
 641        asm volatile("vblendmpd %zmm26,%zmm27,%zmm28");
 642
 643        /* AVX-512: Op code 0f 38 66 */
 644
 645        asm volatile("vpblendmb %zmm26,%zmm27,%zmm28");
 646        asm volatile("vpblendmw %zmm26,%zmm27,%zmm28");
 647
 648        /* AVX-512: Op code 0f 38 68 */
 649
 650        asm volatile("vp2intersectd %xmm1, %xmm2, %k3");
 651        asm volatile("vp2intersectd %ymm1, %ymm2, %k3");
 652        asm volatile("vp2intersectd %zmm1, %zmm2, %k3");
 653        asm volatile("vp2intersectd 0x12345678(%rax,%rcx,8),%zmm2,%k3");
 654        asm volatile("vp2intersectd 0x12345678(%eax,%ecx,8),%zmm2,%k3");
 655
 656        asm volatile("vp2intersectq %xmm1, %xmm2, %k3");
 657        asm volatile("vp2intersectq %ymm1, %ymm2, %k3");
 658        asm volatile("vp2intersectq %zmm1, %zmm2, %k3");
 659        asm volatile("vp2intersectq 0x12345678(%rax,%rcx,8),%zmm2,%k3");
 660        asm volatile("vp2intersectq 0x12345678(%eax,%ecx,8),%zmm2,%k3");
 661
 662        /* AVX-512: Op code 0f 38 70 */
 663
 664        asm volatile("vpshldvw %xmm1, %xmm2, %xmm3");
 665        asm volatile("vpshldvw %ymm1, %ymm2, %ymm3");
 666        asm volatile("vpshldvw %zmm1, %zmm2, %zmm3");
 667        asm volatile("vpshldvw 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 668        asm volatile("vpshldvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 669
 670        /* AVX-512: Op code 0f 38 71 */
 671
 672        asm volatile("vpshldvd %xmm1, %xmm2, %xmm3");
 673        asm volatile("vpshldvd %ymm1, %ymm2, %ymm3");
 674        asm volatile("vpshldvd %zmm1, %zmm2, %zmm3");
 675        asm volatile("vpshldvd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 676        asm volatile("vpshldvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 677
 678        asm volatile("vpshldvq %xmm1, %xmm2, %xmm3");
 679        asm volatile("vpshldvq %ymm1, %ymm2, %ymm3");
 680        asm volatile("vpshldvq %zmm1, %zmm2, %zmm3");
 681        asm volatile("vpshldvq 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 682        asm volatile("vpshldvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 683
 684        /* AVX-512: Op code 0f 38 72 */
 685
 686        asm volatile("vcvtne2ps2bf16 %xmm1, %xmm2, %xmm3");
 687        asm volatile("vcvtne2ps2bf16 %ymm1, %ymm2, %ymm3");
 688        asm volatile("vcvtne2ps2bf16 %zmm1, %zmm2, %zmm3");
 689        asm volatile("vcvtne2ps2bf16 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 690        asm volatile("vcvtne2ps2bf16 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 691
 692        asm volatile("vcvtneps2bf16 %xmm1, %xmm2");
 693        asm volatile("vcvtneps2bf16 %ymm1, %xmm2");
 694        asm volatile("vcvtneps2bf16 %zmm1, %ymm2");
 695        asm volatile("vcvtneps2bf16 0x12345678(%rax,%rcx,8),%ymm2");
 696        asm volatile("vcvtneps2bf16 0x12345678(%eax,%ecx,8),%ymm2");
 697
 698        asm volatile("vpshrdvw %xmm1, %xmm2, %xmm3");
 699        asm volatile("vpshrdvw %ymm1, %ymm2, %ymm3");
 700        asm volatile("vpshrdvw %zmm1, %zmm2, %zmm3");
 701        asm volatile("vpshrdvw 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 702        asm volatile("vpshrdvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 703
 704        /* AVX-512: Op code 0f 38 73 */
 705
 706        asm volatile("vpshrdvd %xmm1, %xmm2, %xmm3");
 707        asm volatile("vpshrdvd %ymm1, %ymm2, %ymm3");
 708        asm volatile("vpshrdvd %zmm1, %zmm2, %zmm3");
 709        asm volatile("vpshrdvd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 710        asm volatile("vpshrdvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 711
 712        asm volatile("vpshrdvq %xmm1, %xmm2, %xmm3");
 713        asm volatile("vpshrdvq %ymm1, %ymm2, %ymm3");
 714        asm volatile("vpshrdvq %zmm1, %zmm2, %zmm3");
 715        asm volatile("vpshrdvq 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 716        asm volatile("vpshrdvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 717
 718        /* AVX-512: Op code 0f 38 75 */
 719
 720        asm volatile("vpermi2b %zmm24,%zmm25,%zmm26");
 721        asm volatile("vpermi2w %zmm26,%zmm27,%zmm28");
 722
 723        /* AVX-512: Op code 0f 38 76 */
 724
 725        asm volatile("vpermi2d %zmm26,%zmm27,%zmm28");
 726        asm volatile("vpermi2q %zmm26,%zmm27,%zmm28");
 727
 728        /* AVX-512: Op code 0f 38 77 */
 729
 730        asm volatile("vpermi2ps %zmm26,%zmm27,%zmm28");
 731        asm volatile("vpermi2pd %zmm26,%zmm27,%zmm28");
 732
 733        /* AVX-512: Op code 0f 38 7a */
 734
 735        asm volatile("vpbroadcastb %eax,%xmm30");
 736
 737        /* AVX-512: Op code 0f 38 7b */
 738
 739        asm volatile("vpbroadcastw %eax,%xmm30");
 740
 741        /* AVX-512: Op code 0f 38 7c */
 742
 743        asm volatile("vpbroadcastd %eax,%xmm30");
 744        asm volatile("vpbroadcastq %rax,%zmm30");
 745
 746        /* AVX-512: Op code 0f 38 7d */
 747
 748        asm volatile("vpermt2b %zmm26,%zmm27,%zmm28");
 749        asm volatile("vpermt2w %zmm26,%zmm27,%zmm28");
 750
 751        /* AVX-512: Op code 0f 38 7e */
 752
 753        asm volatile("vpermt2d %zmm26,%zmm27,%zmm28");
 754        asm volatile("vpermt2q %zmm26,%zmm27,%zmm28");
 755
 756        /* AVX-512: Op code 0f 38 7f */
 757
 758        asm volatile("vpermt2ps %zmm26,%zmm27,%zmm28");
 759        asm volatile("vpermt2pd %zmm26,%zmm27,%zmm28");
 760
 761        /* AVX-512: Op code 0f 38 83 */
 762
 763        asm volatile("vpmultishiftqb %zmm26,%zmm27,%zmm28");
 764
 765        /* AVX-512: Op code 0f 38 88 */
 766
 767        asm volatile("vexpandps (%rcx),%zmm26");
 768        asm volatile("vexpandpd (%rcx),%zmm28");
 769
 770        /* AVX-512: Op code 0f 38 89 */
 771
 772        asm volatile("vpexpandd (%rcx),%zmm28");
 773        asm volatile("vpexpandq (%rcx),%zmm26");
 774
 775        /* AVX-512: Op code 0f 38 8a */
 776
 777        asm volatile("vcompressps %zmm28,(%rcx)");
 778        asm volatile("vcompresspd %zmm28,(%rcx)");
 779
 780        /* AVX-512: Op code 0f 38 8b */
 781
 782        asm volatile("vpcompressd %zmm28,(%rcx)");
 783        asm volatile("vpcompressq %zmm26,(%rcx)");
 784
 785        /* AVX-512: Op code 0f 38 8d */
 786
 787        asm volatile("vpermb %zmm26,%zmm27,%zmm28");
 788        asm volatile("vpermw %zmm26,%zmm27,%zmm28");
 789
 790        /* AVX-512: Op code 0f 38 8f */
 791
 792        asm volatile("vpshufbitqmb %xmm1, %xmm2, %k3");
 793        asm volatile("vpshufbitqmb %ymm1, %ymm2, %k3");
 794        asm volatile("vpshufbitqmb %zmm1, %zmm2, %k3");
 795        asm volatile("vpshufbitqmb 0x12345678(%rax,%rcx,8),%zmm2,%k3");
 796        asm volatile("vpshufbitqmb 0x12345678(%eax,%ecx,8),%zmm2,%k3");
 797
 798        /* AVX-512: Op code 0f 38 90 */
 799
 800        asm volatile("vpgatherdd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
 801        asm volatile("vpgatherdq %xmm2,0x04(%rbp,%xmm7,2),%xmm1");
 802        asm volatile("vpgatherdd 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
 803        asm volatile("vpgatherdq 0x7b(%rbp,%ymm27,8),%zmm26{%k1}");
 804
 805        /* AVX-512: Op code 0f 38 91 */
 806
 807        asm volatile("vpgatherqd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
 808        asm volatile("vpgatherqq %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
 809        asm volatile("vpgatherqd 0x7b(%rbp,%zmm27,8),%ymm26{%k1}");
 810        asm volatile("vpgatherqq 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
 811
 812        /* AVX-512: Op code 0f 38 9a */
 813
 814        asm volatile("vfmsub132ps %xmm1, %xmm2, %xmm3");
 815        asm volatile("vfmsub132ps %ymm1, %ymm2, %ymm3");
 816        asm volatile("vfmsub132ps %zmm1, %zmm2, %zmm3");
 817        asm volatile("vfmsub132ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 818        asm volatile("vfmsub132ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 819
 820        asm volatile("vfmsub132pd %xmm1, %xmm2, %xmm3");
 821        asm volatile("vfmsub132pd %ymm1, %ymm2, %ymm3");
 822        asm volatile("vfmsub132pd %zmm1, %zmm2, %zmm3");
 823        asm volatile("vfmsub132pd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 824        asm volatile("vfmsub132pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 825
 826        asm volatile("v4fmaddps (%rax), %zmm0, %zmm4");
 827        asm volatile("v4fmaddps (%eax), %zmm0, %zmm4");
 828        asm volatile("v4fmaddps 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
 829        asm volatile("v4fmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
 830
 831        /* AVX-512: Op code 0f 38 9b */
 832
 833        asm volatile("vfmsub132ss %xmm1, %xmm2, %xmm3");
 834        asm volatile("vfmsub132ss 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
 835        asm volatile("vfmsub132ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
 836
 837        asm volatile("vfmsub132sd %xmm1, %xmm2, %xmm3");
 838        asm volatile("vfmsub132sd 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
 839        asm volatile("vfmsub132sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
 840
 841        asm volatile("v4fmaddss (%rax), %xmm0, %xmm4");
 842        asm volatile("v4fmaddss (%eax), %xmm0, %xmm4");
 843        asm volatile("v4fmaddss 0x12345678(%rax,%rcx,8),%xmm0,%xmm4");
 844        asm volatile("v4fmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
 845
 846        /* AVX-512: Op code 0f 38 a0 */
 847
 848        asm volatile("vpscatterdd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
 849        asm volatile("vpscatterdq %zmm26,0x7b(%rbp,%ymm27,8){%k1}");
 850
 851        /* AVX-512: Op code 0f 38 a1 */
 852
 853        asm volatile("vpscatterqd %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
 854        asm volatile("vpscatterqq %ymm6,0x7b(%rbp,%ymm27,8){%k1}");
 855
 856        /* AVX-512: Op code 0f 38 a2 */
 857
 858        asm volatile("vscatterdps %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
 859        asm volatile("vscatterdpd %zmm28,0x7b(%rbp,%ymm27,8){%k1}");
 860
 861        /* AVX-512: Op code 0f 38 a3 */
 862
 863        asm volatile("vscatterqps %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
 864        asm volatile("vscatterqpd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
 865
 866        /* AVX-512: Op code 0f 38 aa */
 867
 868        asm volatile("vfmsub213ps %xmm1, %xmm2, %xmm3");
 869        asm volatile("vfmsub213ps %ymm1, %ymm2, %ymm3");
 870        asm volatile("vfmsub213ps %zmm1, %zmm2, %zmm3");
 871        asm volatile("vfmsub213ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 872        asm volatile("vfmsub213ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 873
 874        asm volatile("vfmsub213pd %xmm1, %xmm2, %xmm3");
 875        asm volatile("vfmsub213pd %ymm1, %ymm2, %ymm3");
 876        asm volatile("vfmsub213pd %zmm1, %zmm2, %zmm3");
 877        asm volatile("vfmsub213pd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 878        asm volatile("vfmsub213pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 879
 880        asm volatile("v4fnmaddps (%rax), %zmm0, %zmm4");
 881        asm volatile("v4fnmaddps (%eax), %zmm0, %zmm4");
 882        asm volatile("v4fnmaddps 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
 883        asm volatile("v4fnmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
 884
 885        /* AVX-512: Op code 0f 38 ab */
 886
 887        asm volatile("vfmsub213ss %xmm1, %xmm2, %xmm3");
 888        asm volatile("vfmsub213ss 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
 889        asm volatile("vfmsub213ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
 890
 891        asm volatile("vfmsub213sd %xmm1, %xmm2, %xmm3");
 892        asm volatile("vfmsub213sd 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
 893        asm volatile("vfmsub213sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
 894
 895        asm volatile("v4fnmaddss (%rax), %xmm0, %xmm4");
 896        asm volatile("v4fnmaddss (%eax), %xmm0, %xmm4");
 897        asm volatile("v4fnmaddss 0x12345678(%rax,%rcx,8),%xmm0,%xmm4");
 898        asm volatile("v4fnmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
 899
 900        /* AVX-512: Op code 0f 38 b4 */
 901
 902        asm volatile("vpmadd52luq %zmm26,%zmm27,%zmm28");
 903
 904        /* AVX-512: Op code 0f 38 b5 */
 905
 906        asm volatile("vpmadd52huq %zmm26,%zmm27,%zmm28");
 907
 908        /* AVX-512: Op code 0f 38 c4 */
 909
 910        asm volatile("vpconflictd %zmm26,%zmm27");
 911        asm volatile("vpconflictq %zmm26,%zmm27");
 912
 913        /* AVX-512: Op code 0f 38 c8 */
 914
 915        asm volatile("vexp2ps %zmm29,%zmm30");
 916        asm volatile("vexp2pd %zmm26,%zmm27");
 917
 918        /* AVX-512: Op code 0f 38 ca */
 919
 920        asm volatile("vrcp28ps %zmm29,%zmm30");
 921        asm volatile("vrcp28pd %zmm26,%zmm27");
 922
 923        /* AVX-512: Op code 0f 38 cb */
 924
 925        asm volatile("vrcp28ss %xmm28,%xmm29,%xmm30{%k7}");
 926        asm volatile("vrcp28sd %xmm25,%xmm26,%xmm27{%k7}");
 927
 928        /* AVX-512: Op code 0f 38 cc */
 929
 930        asm volatile("vrsqrt28ps %zmm29,%zmm30");
 931        asm volatile("vrsqrt28pd %zmm26,%zmm27");
 932
 933        /* AVX-512: Op code 0f 38 cd */
 934
 935        asm volatile("vrsqrt28ss %xmm28,%xmm29,%xmm30{%k7}");
 936        asm volatile("vrsqrt28sd %xmm25,%xmm26,%xmm27{%k7}");
 937
 938        /* AVX-512: Op code 0f 38 cf */
 939
 940        asm volatile("gf2p8mulb %xmm1, %xmm3");
 941        asm volatile("gf2p8mulb 0x12345678(%rax,%rcx,8),%xmm3");
 942        asm volatile("gf2p8mulb 0x12345678(%eax,%ecx,8),%xmm3");
 943
 944        asm volatile("vgf2p8mulb %xmm1, %xmm2, %xmm3");
 945        asm volatile("vgf2p8mulb %ymm1, %ymm2, %ymm3");
 946        asm volatile("vgf2p8mulb %zmm1, %zmm2, %zmm3");
 947        asm volatile("vgf2p8mulb 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 948        asm volatile("vgf2p8mulb 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 949
 950        /* AVX-512: Op code 0f 38 dc */
 951
 952        asm volatile("vaesenc %xmm1, %xmm2, %xmm3");
 953        asm volatile("vaesenc %ymm1, %ymm2, %ymm3");
 954        asm volatile("vaesenc %zmm1, %zmm2, %zmm3");
 955        asm volatile("vaesenc 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 956        asm volatile("vaesenc 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 957
 958        /* AVX-512: Op code 0f 38 dd */
 959
 960        asm volatile("vaesenclast %xmm1, %xmm2, %xmm3");
 961        asm volatile("vaesenclast %ymm1, %ymm2, %ymm3");
 962        asm volatile("vaesenclast %zmm1, %zmm2, %zmm3");
 963        asm volatile("vaesenclast 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 964        asm volatile("vaesenclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 965
 966        /* AVX-512: Op code 0f 38 de */
 967
 968        asm volatile("vaesdec %xmm1, %xmm2, %xmm3");
 969        asm volatile("vaesdec %ymm1, %ymm2, %ymm3");
 970        asm volatile("vaesdec %zmm1, %zmm2, %zmm3");
 971        asm volatile("vaesdec 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 972        asm volatile("vaesdec 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 973
 974        /* AVX-512: Op code 0f 38 df */
 975
 976        asm volatile("vaesdeclast %xmm1, %xmm2, %xmm3");
 977        asm volatile("vaesdeclast %ymm1, %ymm2, %ymm3");
 978        asm volatile("vaesdeclast %zmm1, %zmm2, %zmm3");
 979        asm volatile("vaesdeclast 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
 980        asm volatile("vaesdeclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
 981
 982        /* AVX-512: Op code 0f 3a 03 */
 983
 984        asm volatile("valignd $0x12,%zmm28,%zmm29,%zmm30");
 985        asm volatile("valignq $0x12,%zmm25,%zmm26,%zmm27");
 986
 987        /* AVX-512: Op code 0f 3a 08 */
 988
 989        asm volatile("vroundps $0x5,%ymm6,%ymm2");
 990        asm volatile("vrndscaleps $0x12,%zmm25,%zmm26");
 991
 992        /* AVX-512: Op code 0f 3a 09 */
 993
 994        asm volatile("vroundpd $0x5,%ymm6,%ymm2");
 995        asm volatile("vrndscalepd $0x12,%zmm25,%zmm26");
 996
 997        /* AVX-512: Op code 0f 3a 1a */
 998
 999        asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
1000        asm volatile("vrndscaless $0x12,%xmm24,%xmm25,%xmm26{%k7}");
1001
1002        /* AVX-512: Op code 0f 3a 0b */
1003
1004        asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
1005        asm volatile("vrndscalesd $0x12,%xmm24,%xmm25,%xmm26{%k7}");
1006
1007        /* AVX-512: Op code 0f 3a 18 */
1008
1009        asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
1010        asm volatile("vinsertf32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
1011        asm volatile("vinsertf64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
1012
1013        /* AVX-512: Op code 0f 3a 19 */
1014
1015        asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
1016        asm volatile("vextractf32x4 $0x12,%zmm25,%xmm26{%k7}");
1017        asm volatile("vextractf64x2 $0x12,%zmm25,%xmm26{%k7}");
1018
1019        /* AVX-512: Op code 0f 3a 1a */
1020
1021        asm volatile("vinsertf32x8 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
1022        asm volatile("vinsertf64x4 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
1023
1024        /* AVX-512: Op code 0f 3a 1b */
1025
1026        asm volatile("vextractf32x8 $0x12,%zmm29,%ymm30{%k7}");
1027        asm volatile("vextractf64x4 $0x12,%zmm26,%ymm27{%k7}");
1028
1029        /* AVX-512: Op code 0f 3a 1e */
1030
1031        asm volatile("vpcmpud $0x12,%zmm29,%zmm30,%k5");
1032        asm volatile("vpcmpuq $0x12,%zmm26,%zmm27,%k5");
1033
1034        /* AVX-512: Op code 0f 3a 1f */
1035
1036        asm volatile("vpcmpd $0x12,%zmm29,%zmm30,%k5");
1037        asm volatile("vpcmpq $0x12,%zmm26,%zmm27,%k5");
1038
1039        /* AVX-512: Op code 0f 3a 23 */
1040
1041        asm volatile("vshuff32x4 $0x12,%zmm28,%zmm29,%zmm30");
1042        asm volatile("vshuff64x2 $0x12,%zmm25,%zmm26,%zmm27");
1043
1044        /* AVX-512: Op code 0f 3a 25 */
1045
1046        asm volatile("vpternlogd $0x12,%zmm28,%zmm29,%zmm30");
1047        asm volatile("vpternlogq $0x12,%zmm28,%zmm29,%zmm30");
1048
1049        /* AVX-512: Op code 0f 3a 26 */
1050
1051        asm volatile("vgetmantps $0x12,%zmm26,%zmm27");
1052        asm volatile("vgetmantpd $0x12,%zmm29,%zmm30");
1053
1054        /* AVX-512: Op code 0f 3a 27 */
1055
1056        asm volatile("vgetmantss $0x12,%xmm25,%xmm26,%xmm27{%k7}");
1057        asm volatile("vgetmantsd $0x12,%xmm28,%xmm29,%xmm30{%k7}");
1058
1059        /* AVX-512: Op code 0f 3a 38 */
1060
1061        asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
1062        asm volatile("vinserti32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
1063        asm volatile("vinserti64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
1064
1065        /* AVX-512: Op code 0f 3a 39 */
1066
1067        asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
1068        asm volatile("vextracti32x4 $0x12,%zmm25,%xmm26{%k7}");
1069        asm volatile("vextracti64x2 $0x12,%zmm25,%xmm26{%k7}");
1070
1071        /* AVX-512: Op code 0f 3a 3a */
1072
1073        asm volatile("vinserti32x8 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
1074        asm volatile("vinserti64x4 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
1075
1076        /* AVX-512: Op code 0f 3a 3b */
1077
1078        asm volatile("vextracti32x8 $0x12,%zmm29,%ymm30{%k7}");
1079        asm volatile("vextracti64x4 $0x12,%zmm26,%ymm27{%k7}");
1080
1081        /* AVX-512: Op code 0f 3a 3e */
1082
1083        asm volatile("vpcmpub $0x12,%zmm29,%zmm30,%k5");
1084        asm volatile("vpcmpuw $0x12,%zmm26,%zmm27,%k5");
1085
1086        /* AVX-512: Op code 0f 3a 3f */
1087
1088        asm volatile("vpcmpb $0x12,%zmm29,%zmm30,%k5");
1089        asm volatile("vpcmpw $0x12,%zmm26,%zmm27,%k5");
1090
1091        /* AVX-512: Op code 0f 3a 43 */
1092
1093        asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
1094        asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
1095
1096        /* AVX-512: Op code 0f 3a 43 */
1097
1098        asm volatile("vshufi32x4 $0x12,%zmm25,%zmm26,%zmm27");
1099        asm volatile("vshufi64x2 $0x12,%zmm28,%zmm29,%zmm30");
1100
1101        /* AVX-512: Op code 0f 3a 44 */
1102
1103        asm volatile("vpclmulqdq $0x12,%xmm1,%xmm2,%xmm3");
1104        asm volatile("vpclmulqdq $0x12,%ymm1,%ymm2,%ymm3");
1105        asm volatile("vpclmulqdq $0x12,%zmm1,%zmm2,%zmm3");
1106        asm volatile("vpclmulqdq $0x12,%zmm25,%zmm26,%zmm27");
1107
1108        /* AVX-512: Op code 0f 3a 50 */
1109
1110        asm volatile("vrangeps $0x12,%zmm25,%zmm26,%zmm27");
1111        asm volatile("vrangepd $0x12,%zmm28,%zmm29,%zmm30");
1112
1113        /* AVX-512: Op code 0f 3a 51 */
1114
1115        asm volatile("vrangess $0x12,%xmm25,%xmm26,%xmm27");
1116        asm volatile("vrangesd $0x12,%xmm28,%xmm29,%xmm30");
1117
1118        /* AVX-512: Op code 0f 3a 54 */
1119
1120        asm volatile("vfixupimmps $0x12,%zmm28,%zmm29,%zmm30");
1121        asm volatile("vfixupimmpd $0x12,%zmm25,%zmm26,%zmm27");
1122
1123        /* AVX-512: Op code 0f 3a 55 */
1124
1125        asm volatile("vfixupimmss $0x12,%xmm28,%xmm29,%xmm30{%k7}");
1126        asm volatile("vfixupimmsd $0x12,%xmm25,%xmm26,%xmm27{%k7}");
1127
1128        /* AVX-512: Op code 0f 3a 56 */
1129
1130        asm volatile("vreduceps $0x12,%zmm26,%zmm27");
1131        asm volatile("vreducepd $0x12,%zmm29,%zmm30");
1132
1133        /* AVX-512: Op code 0f 3a 57 */
1134
1135        asm volatile("vreducess $0x12,%xmm25,%xmm26,%xmm27");
1136        asm volatile("vreducesd $0x12,%xmm28,%xmm29,%xmm30");
1137
1138        /* AVX-512: Op code 0f 3a 66 */
1139
1140        asm volatile("vfpclassps $0x12,%zmm27,%k5");
1141        asm volatile("vfpclasspd $0x12,%zmm30,%k5");
1142
1143        /* AVX-512: Op code 0f 3a 67 */
1144
1145        asm volatile("vfpclassss $0x12,%xmm27,%k5");
1146        asm volatile("vfpclasssd $0x12,%xmm30,%k5");
1147
1148        /* AVX-512: Op code 0f 3a 70 */
1149
1150        asm volatile("vpshldw $0x12,%xmm1,%xmm2,%xmm3");
1151        asm volatile("vpshldw $0x12,%ymm1,%ymm2,%ymm3");
1152        asm volatile("vpshldw $0x12,%zmm1,%zmm2,%zmm3");
1153        asm volatile("vpshldw $0x12,%zmm25,%zmm26,%zmm27");
1154
1155        /* AVX-512: Op code 0f 3a 71 */
1156
1157        asm volatile("vpshldd $0x12,%xmm1,%xmm2,%xmm3");
1158        asm volatile("vpshldd $0x12,%ymm1,%ymm2,%ymm3");
1159        asm volatile("vpshldd $0x12,%zmm1,%zmm2,%zmm3");
1160        asm volatile("vpshldd $0x12,%zmm25,%zmm26,%zmm27");
1161
1162        asm volatile("vpshldq $0x12,%xmm1,%xmm2,%xmm3");
1163        asm volatile("vpshldq $0x12,%ymm1,%ymm2,%ymm3");
1164        asm volatile("vpshldq $0x12,%zmm1,%zmm2,%zmm3");
1165        asm volatile("vpshldq $0x12,%zmm25,%zmm26,%zmm27");
1166
1167        /* AVX-512: Op code 0f 3a 72 */
1168
1169        asm volatile("vpshrdw $0x12,%xmm1,%xmm2,%xmm3");
1170        asm volatile("vpshrdw $0x12,%ymm1,%ymm2,%ymm3");
1171        asm volatile("vpshrdw $0x12,%zmm1,%zmm2,%zmm3");
1172        asm volatile("vpshrdw $0x12,%zmm25,%zmm26,%zmm27");
1173
1174        /* AVX-512: Op code 0f 3a 73 */
1175
1176        asm volatile("vpshrdd $0x12,%xmm1,%xmm2,%xmm3");
1177        asm volatile("vpshrdd $0x12,%ymm1,%ymm2,%ymm3");
1178        asm volatile("vpshrdd $0x12,%zmm1,%zmm2,%zmm3");
1179        asm volatile("vpshrdd $0x12,%zmm25,%zmm26,%zmm27");
1180
1181        asm volatile("vpshrdq $0x12,%xmm1,%xmm2,%xmm3");
1182        asm volatile("vpshrdq $0x12,%ymm1,%ymm2,%ymm3");
1183        asm volatile("vpshrdq $0x12,%zmm1,%zmm2,%zmm3");
1184        asm volatile("vpshrdq $0x12,%zmm25,%zmm26,%zmm27");
1185
1186        /* AVX-512: Op code 0f 3a ce */
1187
1188        asm volatile("gf2p8affineqb $0x12,%xmm1,%xmm3");
1189
1190        asm volatile("vgf2p8affineqb $0x12,%xmm1,%xmm2,%xmm3");
1191        asm volatile("vgf2p8affineqb $0x12,%ymm1,%ymm2,%ymm3");
1192        asm volatile("vgf2p8affineqb $0x12,%zmm1,%zmm2,%zmm3");
1193        asm volatile("vgf2p8affineqb $0x12,%zmm25,%zmm26,%zmm27");
1194
1195        /* AVX-512: Op code 0f 3a cf */
1196
1197        asm volatile("gf2p8affineinvqb $0x12,%xmm1,%xmm3");
1198
1199        asm volatile("vgf2p8affineinvqb $0x12,%xmm1,%xmm2,%xmm3");
1200        asm volatile("vgf2p8affineinvqb $0x12,%ymm1,%ymm2,%ymm3");
1201        asm volatile("vgf2p8affineinvqb $0x12,%zmm1,%zmm2,%zmm3");
1202        asm volatile("vgf2p8affineinvqb $0x12,%zmm25,%zmm26,%zmm27");
1203
1204        /* AVX-512: Op code 0f 72 (Grp13) */
1205
1206        asm volatile("vprord $0x12,%zmm25,%zmm26");
1207        asm volatile("vprorq $0x12,%zmm25,%zmm26");
1208        asm volatile("vprold $0x12,%zmm29,%zmm30");
1209        asm volatile("vprolq $0x12,%zmm29,%zmm30");
1210        asm volatile("psrad  $0x2,%mm6");
1211        asm volatile("vpsrad $0x5,%ymm6,%ymm2");
1212        asm volatile("vpsrad $0x5,%zmm26,%zmm22");
1213        asm volatile("vpsraq $0x5,%zmm26,%zmm22");
1214
1215        /* AVX-512: Op code 0f 38 c6 (Grp18) */
1216
1217        asm volatile("vgatherpf0dps 0x7b(%r14,%zmm31,8){%k1}");
1218        asm volatile("vgatherpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
1219        asm volatile("vgatherpf1dps 0x7b(%r14,%zmm31,8){%k1}");
1220        asm volatile("vgatherpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
1221        asm volatile("vscatterpf0dps 0x7b(%r14,%zmm31,8){%k1}");
1222        asm volatile("vscatterpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
1223        asm volatile("vscatterpf1dps 0x7b(%r14,%zmm31,8){%k1}");
1224        asm volatile("vscatterpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
1225
1226        /* AVX-512: Op code 0f 38 c7 (Grp19) */
1227
1228        asm volatile("vgatherpf0qps 0x7b(%r14,%zmm31,8){%k1}");
1229        asm volatile("vgatherpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
1230        asm volatile("vgatherpf1qps 0x7b(%r14,%zmm31,8){%k1}");
1231        asm volatile("vgatherpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
1232        asm volatile("vscatterpf0qps 0x7b(%r14,%zmm31,8){%k1}");
1233        asm volatile("vscatterpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
1234        asm volatile("vscatterpf1qps 0x7b(%r14,%zmm31,8){%k1}");
1235        asm volatile("vscatterpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
1236
1237        /* AVX-512: Examples */
1238
1239        asm volatile("vaddpd %zmm28,%zmm29,%zmm30");
1240        asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}");
1241        asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}{z}");
1242        asm volatile("vaddpd {rn-sae},%zmm28,%zmm29,%zmm30");
1243        asm volatile("vaddpd {ru-sae},%zmm28,%zmm29,%zmm30");
1244        asm volatile("vaddpd {rd-sae},%zmm28,%zmm29,%zmm30");
1245        asm volatile("vaddpd {rz-sae},%zmm28,%zmm29,%zmm30");
1246        asm volatile("vaddpd (%rcx),%zmm29,%zmm30");
1247        asm volatile("vaddpd 0x123(%rax,%r14,8),%zmm29,%zmm30");
1248        asm volatile("vaddpd (%rcx){1to8},%zmm29,%zmm30");
1249        asm volatile("vaddpd 0x1fc0(%rdx),%zmm29,%zmm30");
1250        asm volatile("vaddpd 0x3f8(%rdx){1to8},%zmm29,%zmm30");
1251        asm volatile("vcmpeq_uqps 0x1fc(%rdx){1to16},%zmm30,%k5");
1252        asm volatile("vcmpltsd 0x123(%rax,%r14,8),%xmm29,%k5{%k7}");
1253        asm volatile("vcmplesd {sae},%xmm28,%xmm29,%k5{%k7}");
1254        asm volatile("vgetmantss $0x5b,0x123(%rax,%r14,8),%xmm29,%xmm30{%k7}");
1255
1256        /* bndmk m64, bnd */
1257
1258        asm volatile("bndmk (%rax), %bnd0");
1259        asm volatile("bndmk (%r8), %bnd0");
1260        asm volatile("bndmk (0x12345678), %bnd0");
1261        asm volatile("bndmk (%rax), %bnd3");
1262        asm volatile("bndmk (%rcx,%rax,1), %bnd0");
1263        asm volatile("bndmk 0x12345678(,%rax,1), %bnd0");
1264        asm volatile("bndmk (%rax,%rcx,1), %bnd0");
1265        asm volatile("bndmk (%rax,%rcx,8), %bnd0");
1266        asm volatile("bndmk 0x12(%rax), %bnd0");
1267        asm volatile("bndmk 0x12(%rbp), %bnd0");
1268        asm volatile("bndmk 0x12(%rcx,%rax,1), %bnd0");
1269        asm volatile("bndmk 0x12(%rbp,%rax,1), %bnd0");
1270        asm volatile("bndmk 0x12(%rax,%rcx,1), %bnd0");
1271        asm volatile("bndmk 0x12(%rax,%rcx,8), %bnd0");
1272        asm volatile("bndmk 0x12345678(%rax), %bnd0");
1273        asm volatile("bndmk 0x12345678(%rbp), %bnd0");
1274        asm volatile("bndmk 0x12345678(%rcx,%rax,1), %bnd0");
1275        asm volatile("bndmk 0x12345678(%rbp,%rax,1), %bnd0");
1276        asm volatile("bndmk 0x12345678(%rax,%rcx,1), %bnd0");
1277        asm volatile("bndmk 0x12345678(%rax,%rcx,8), %bnd0");
1278
1279        /* bndcl r/m64, bnd */
1280
1281        asm volatile("bndcl (%rax), %bnd0");
1282        asm volatile("bndcl (%r8), %bnd0");
1283        asm volatile("bndcl (0x12345678), %bnd0");
1284        asm volatile("bndcl (%rax), %bnd3");
1285        asm volatile("bndcl (%rcx,%rax,1), %bnd0");
1286        asm volatile("bndcl 0x12345678(,%rax,1), %bnd0");
1287        asm volatile("bndcl (%rax,%rcx,1), %bnd0");
1288        asm volatile("bndcl (%rax,%rcx,8), %bnd0");
1289        asm volatile("bndcl 0x12(%rax), %bnd0");
1290        asm volatile("bndcl 0x12(%rbp), %bnd0");
1291        asm volatile("bndcl 0x12(%rcx,%rax,1), %bnd0");
1292        asm volatile("bndcl 0x12(%rbp,%rax,1), %bnd0");
1293        asm volatile("bndcl 0x12(%rax,%rcx,1), %bnd0");
1294        asm volatile("bndcl 0x12(%rax,%rcx,8), %bnd0");
1295        asm volatile("bndcl 0x12345678(%rax), %bnd0");
1296        asm volatile("bndcl 0x12345678(%rbp), %bnd0");
1297        asm volatile("bndcl 0x12345678(%rcx,%rax,1), %bnd0");
1298        asm volatile("bndcl 0x12345678(%rbp,%rax,1), %bnd0");
1299        asm volatile("bndcl 0x12345678(%rax,%rcx,1), %bnd0");
1300        asm volatile("bndcl 0x12345678(%rax,%rcx,8), %bnd0");
1301        asm volatile("bndcl %rax, %bnd0");
1302
1303        /* bndcu r/m64, bnd */
1304
1305        asm volatile("bndcu (%rax), %bnd0");
1306        asm volatile("bndcu (%r8), %bnd0");
1307        asm volatile("bndcu (0x12345678), %bnd0");
1308        asm volatile("bndcu (%rax), %bnd3");
1309        asm volatile("bndcu (%rcx,%rax,1), %bnd0");
1310        asm volatile("bndcu 0x12345678(,%rax,1), %bnd0");
1311        asm volatile("bndcu (%rax,%rcx,1), %bnd0");
1312        asm volatile("bndcu (%rax,%rcx,8), %bnd0");
1313        asm volatile("bndcu 0x12(%rax), %bnd0");
1314        asm volatile("bndcu 0x12(%rbp), %bnd0");
1315        asm volatile("bndcu 0x12(%rcx,%rax,1), %bnd0");
1316        asm volatile("bndcu 0x12(%rbp,%rax,1), %bnd0");
1317        asm volatile("bndcu 0x12(%rax,%rcx,1), %bnd0");
1318        asm volatile("bndcu 0x12(%rax,%rcx,8), %bnd0");
1319        asm volatile("bndcu 0x12345678(%rax), %bnd0");
1320        asm volatile("bndcu 0x12345678(%rbp), %bnd0");
1321        asm volatile("bndcu 0x12345678(%rcx,%rax,1), %bnd0");
1322        asm volatile("bndcu 0x12345678(%rbp,%rax,1), %bnd0");
1323        asm volatile("bndcu 0x12345678(%rax,%rcx,1), %bnd0");
1324        asm volatile("bndcu 0x12345678(%rax,%rcx,8), %bnd0");
1325        asm volatile("bndcu %rax, %bnd0");
1326
1327        /* bndcn r/m64, bnd */
1328
1329        asm volatile("bndcn (%rax), %bnd0");
1330        asm volatile("bndcn (%r8), %bnd0");
1331        asm volatile("bndcn (0x12345678), %bnd0");
1332        asm volatile("bndcn (%rax), %bnd3");
1333        asm volatile("bndcn (%rcx,%rax,1), %bnd0");
1334        asm volatile("bndcn 0x12345678(,%rax,1), %bnd0");
1335        asm volatile("bndcn (%rax,%rcx,1), %bnd0");
1336        asm volatile("bndcn (%rax,%rcx,8), %bnd0");
1337        asm volatile("bndcn 0x12(%rax), %bnd0");
1338        asm volatile("bndcn 0x12(%rbp), %bnd0");
1339        asm volatile("bndcn 0x12(%rcx,%rax,1), %bnd0");
1340        asm volatile("bndcn 0x12(%rbp,%rax,1), %bnd0");
1341        asm volatile("bndcn 0x12(%rax,%rcx,1), %bnd0");
1342        asm volatile("bndcn 0x12(%rax,%rcx,8), %bnd0");
1343        asm volatile("bndcn 0x12345678(%rax), %bnd0");
1344        asm volatile("bndcn 0x12345678(%rbp), %bnd0");
1345        asm volatile("bndcn 0x12345678(%rcx,%rax,1), %bnd0");
1346        asm volatile("bndcn 0x12345678(%rbp,%rax,1), %bnd0");
1347        asm volatile("bndcn 0x12345678(%rax,%rcx,1), %bnd0");
1348        asm volatile("bndcn 0x12345678(%rax,%rcx,8), %bnd0");
1349        asm volatile("bndcn %rax, %bnd0");
1350
1351        /* bndmov m128, bnd */
1352
1353        asm volatile("bndmov (%rax), %bnd0");
1354        asm volatile("bndmov (%r8), %bnd0");
1355        asm volatile("bndmov (0x12345678), %bnd0");
1356        asm volatile("bndmov (%rax), %bnd3");
1357        asm volatile("bndmov (%rcx,%rax,1), %bnd0");
1358        asm volatile("bndmov 0x12345678(,%rax,1), %bnd0");
1359        asm volatile("bndmov (%rax,%rcx,1), %bnd0");
1360        asm volatile("bndmov (%rax,%rcx,8), %bnd0");
1361        asm volatile("bndmov 0x12(%rax), %bnd0");
1362        asm volatile("bndmov 0x12(%rbp), %bnd0");
1363        asm volatile("bndmov 0x12(%rcx,%rax,1), %bnd0");
1364        asm volatile("bndmov 0x12(%rbp,%rax,1), %bnd0");
1365        asm volatile("bndmov 0x12(%rax,%rcx,1), %bnd0");
1366        asm volatile("bndmov 0x12(%rax,%rcx,8), %bnd0");
1367        asm volatile("bndmov 0x12345678(%rax), %bnd0");
1368        asm volatile("bndmov 0x12345678(%rbp), %bnd0");
1369        asm volatile("bndmov 0x12345678(%rcx,%rax,1), %bnd0");
1370        asm volatile("bndmov 0x12345678(%rbp,%rax,1), %bnd0");
1371        asm volatile("bndmov 0x12345678(%rax,%rcx,1), %bnd0");
1372        asm volatile("bndmov 0x12345678(%rax,%rcx,8), %bnd0");
1373
1374        /* bndmov bnd, m128 */
1375
1376        asm volatile("bndmov %bnd0, (%rax)");
1377        asm volatile("bndmov %bnd0, (%r8)");
1378        asm volatile("bndmov %bnd0, (0x12345678)");
1379        asm volatile("bndmov %bnd3, (%rax)");
1380        asm volatile("bndmov %bnd0, (%rcx,%rax,1)");
1381        asm volatile("bndmov %bnd0, 0x12345678(,%rax,1)");
1382        asm volatile("bndmov %bnd0, (%rax,%rcx,1)");
1383        asm volatile("bndmov %bnd0, (%rax,%rcx,8)");
1384        asm volatile("bndmov %bnd0, 0x12(%rax)");
1385        asm volatile("bndmov %bnd0, 0x12(%rbp)");
1386        asm volatile("bndmov %bnd0, 0x12(%rcx,%rax,1)");
1387        asm volatile("bndmov %bnd0, 0x12(%rbp,%rax,1)");
1388        asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,1)");
1389        asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,8)");
1390        asm volatile("bndmov %bnd0, 0x12345678(%rax)");
1391        asm volatile("bndmov %bnd0, 0x12345678(%rbp)");
1392        asm volatile("bndmov %bnd0, 0x12345678(%rcx,%rax,1)");
1393        asm volatile("bndmov %bnd0, 0x12345678(%rbp,%rax,1)");
1394        asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,1)");
1395        asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,8)");
1396
1397        /* bndmov bnd2, bnd1 */
1398
1399        asm volatile("bndmov %bnd0, %bnd1");
1400        asm volatile("bndmov %bnd1, %bnd0");
1401
1402        /* bndldx mib, bnd */
1403
1404        asm volatile("bndldx (%rax), %bnd0");
1405        asm volatile("bndldx (%r8), %bnd0");
1406        asm volatile("bndldx (0x12345678), %bnd0");
1407        asm volatile("bndldx (%rax), %bnd3");
1408        asm volatile("bndldx (%rcx,%rax,1), %bnd0");
1409        asm volatile("bndldx 0x12345678(,%rax,1), %bnd0");
1410        asm volatile("bndldx (%rax,%rcx,1), %bnd0");
1411        asm volatile("bndldx 0x12(%rax), %bnd0");
1412        asm volatile("bndldx 0x12(%rbp), %bnd0");
1413        asm volatile("bndldx 0x12(%rcx,%rax,1), %bnd0");
1414        asm volatile("bndldx 0x12(%rbp,%rax,1), %bnd0");
1415        asm volatile("bndldx 0x12(%rax,%rcx,1), %bnd0");
1416        asm volatile("bndldx 0x12345678(%rax), %bnd0");
1417        asm volatile("bndldx 0x12345678(%rbp), %bnd0");
1418        asm volatile("bndldx 0x12345678(%rcx,%rax,1), %bnd0");
1419        asm volatile("bndldx 0x12345678(%rbp,%rax,1), %bnd0");
1420        asm volatile("bndldx 0x12345678(%rax,%rcx,1), %bnd0");
1421
1422        /* bndstx bnd, mib */
1423
1424        asm volatile("bndstx %bnd0, (%rax)");
1425        asm volatile("bndstx %bnd0, (%r8)");
1426        asm volatile("bndstx %bnd0, (0x12345678)");
1427        asm volatile("bndstx %bnd3, (%rax)");
1428        asm volatile("bndstx %bnd0, (%rcx,%rax,1)");
1429        asm volatile("bndstx %bnd0, 0x12345678(,%rax,1)");
1430        asm volatile("bndstx %bnd0, (%rax,%rcx,1)");
1431        asm volatile("bndstx %bnd0, 0x12(%rax)");
1432        asm volatile("bndstx %bnd0, 0x12(%rbp)");
1433        asm volatile("bndstx %bnd0, 0x12(%rcx,%rax,1)");
1434        asm volatile("bndstx %bnd0, 0x12(%rbp,%rax,1)");
1435        asm volatile("bndstx %bnd0, 0x12(%rax,%rcx,1)");
1436        asm volatile("bndstx %bnd0, 0x12345678(%rax)");
1437        asm volatile("bndstx %bnd0, 0x12345678(%rbp)");
1438        asm volatile("bndstx %bnd0, 0x12345678(%rcx,%rax,1)");
1439        asm volatile("bndstx %bnd0, 0x12345678(%rbp,%rax,1)");
1440        asm volatile("bndstx %bnd0, 0x12345678(%rax,%rcx,1)");
1441
1442        /* bnd prefix on call, ret, jmp and all jcc */
1443
1444        asm volatile("bnd call label1");  /* Expecting: call unconditional 0 */
1445        asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
1446        asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
1447        asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1448        asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1449        asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
1450        asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0 */
1451
1452        /* sha1rnds4 imm8, xmm2/m128, xmm1 */
1453
1454        asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
1455        asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
1456        asm volatile("sha1rnds4 $0x91, %xmm8, %xmm0");
1457        asm volatile("sha1rnds4 $0x91, %xmm7, %xmm8");
1458        asm volatile("sha1rnds4 $0x91, %xmm15, %xmm8");
1459        asm volatile("sha1rnds4 $0x91, (%rax), %xmm0");
1460        asm volatile("sha1rnds4 $0x91, (%r8), %xmm0");
1461        asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
1462        asm volatile("sha1rnds4 $0x91, (%rax), %xmm3");
1463        asm volatile("sha1rnds4 $0x91, (%rcx,%rax,1), %xmm0");
1464        asm volatile("sha1rnds4 $0x91, 0x12345678(,%rax,1), %xmm0");
1465        asm volatile("sha1rnds4 $0x91, (%rax,%rcx,1), %xmm0");
1466        asm volatile("sha1rnds4 $0x91, (%rax,%rcx,8), %xmm0");
1467        asm volatile("sha1rnds4 $0x91, 0x12(%rax), %xmm0");
1468        asm volatile("sha1rnds4 $0x91, 0x12(%rbp), %xmm0");
1469        asm volatile("sha1rnds4 $0x91, 0x12(%rcx,%rax,1), %xmm0");
1470        asm volatile("sha1rnds4 $0x91, 0x12(%rbp,%rax,1), %xmm0");
1471        asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,1), %xmm0");
1472        asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,8), %xmm0");
1473        asm volatile("sha1rnds4 $0x91, 0x12345678(%rax), %xmm0");
1474        asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp), %xmm0");
1475        asm volatile("sha1rnds4 $0x91, 0x12345678(%rcx,%rax,1), %xmm0");
1476        asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp,%rax,1), %xmm0");
1477        asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,1), %xmm0");
1478        asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm0");
1479        asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm15");
1480
1481        /* sha1nexte xmm2/m128, xmm1 */
1482
1483        asm volatile("sha1nexte %xmm1, %xmm0");
1484        asm volatile("sha1nexte %xmm7, %xmm2");
1485        asm volatile("sha1nexte %xmm8, %xmm0");
1486        asm volatile("sha1nexte %xmm7, %xmm8");
1487        asm volatile("sha1nexte %xmm15, %xmm8");
1488        asm volatile("sha1nexte (%rax), %xmm0");
1489        asm volatile("sha1nexte (%r8), %xmm0");
1490        asm volatile("sha1nexte (0x12345678), %xmm0");
1491        asm volatile("sha1nexte (%rax), %xmm3");
1492        asm volatile("sha1nexte (%rcx,%rax,1), %xmm0");
1493        asm volatile("sha1nexte 0x12345678(,%rax,1), %xmm0");
1494        asm volatile("sha1nexte (%rax,%rcx,1), %xmm0");
1495        asm volatile("sha1nexte (%rax,%rcx,8), %xmm0");
1496        asm volatile("sha1nexte 0x12(%rax), %xmm0");
1497        asm volatile("sha1nexte 0x12(%rbp), %xmm0");
1498        asm volatile("sha1nexte 0x12(%rcx,%rax,1), %xmm0");
1499        asm volatile("sha1nexte 0x12(%rbp,%rax,1), %xmm0");
1500        asm volatile("sha1nexte 0x12(%rax,%rcx,1), %xmm0");
1501        asm volatile("sha1nexte 0x12(%rax,%rcx,8), %xmm0");
1502        asm volatile("sha1nexte 0x12345678(%rax), %xmm0");
1503        asm volatile("sha1nexte 0x12345678(%rbp), %xmm0");
1504        asm volatile("sha1nexte 0x12345678(%rcx,%rax,1), %xmm0");
1505        asm volatile("sha1nexte 0x12345678(%rbp,%rax,1), %xmm0");
1506        asm volatile("sha1nexte 0x12345678(%rax,%rcx,1), %xmm0");
1507        asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm0");
1508        asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm15");
1509
1510        /* sha1msg1 xmm2/m128, xmm1 */
1511
1512        asm volatile("sha1msg1 %xmm1, %xmm0");
1513        asm volatile("sha1msg1 %xmm7, %xmm2");
1514        asm volatile("sha1msg1 %xmm8, %xmm0");
1515        asm volatile("sha1msg1 %xmm7, %xmm8");
1516        asm volatile("sha1msg1 %xmm15, %xmm8");
1517        asm volatile("sha1msg1 (%rax), %xmm0");
1518        asm volatile("sha1msg1 (%r8), %xmm0");
1519        asm volatile("sha1msg1 (0x12345678), %xmm0");
1520        asm volatile("sha1msg1 (%rax), %xmm3");
1521        asm volatile("sha1msg1 (%rcx,%rax,1), %xmm0");
1522        asm volatile("sha1msg1 0x12345678(,%rax,1), %xmm0");
1523        asm volatile("sha1msg1 (%rax,%rcx,1), %xmm0");
1524        asm volatile("sha1msg1 (%rax,%rcx,8), %xmm0");
1525        asm volatile("sha1msg1 0x12(%rax), %xmm0");
1526        asm volatile("sha1msg1 0x12(%rbp), %xmm0");
1527        asm volatile("sha1msg1 0x12(%rcx,%rax,1), %xmm0");
1528        asm volatile("sha1msg1 0x12(%rbp,%rax,1), %xmm0");
1529        asm volatile("sha1msg1 0x12(%rax,%rcx,1), %xmm0");
1530        asm volatile("sha1msg1 0x12(%rax,%rcx,8), %xmm0");
1531        asm volatile("sha1msg1 0x12345678(%rax), %xmm0");
1532        asm volatile("sha1msg1 0x12345678(%rbp), %xmm0");
1533        asm volatile("sha1msg1 0x12345678(%rcx,%rax,1), %xmm0");
1534        asm volatile("sha1msg1 0x12345678(%rbp,%rax,1), %xmm0");
1535        asm volatile("sha1msg1 0x12345678(%rax,%rcx,1), %xmm0");
1536        asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm0");
1537        asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm15");
1538
1539        /* sha1msg2 xmm2/m128, xmm1 */
1540
1541        asm volatile("sha1msg2 %xmm1, %xmm0");
1542        asm volatile("sha1msg2 %xmm7, %xmm2");
1543        asm volatile("sha1msg2 %xmm8, %xmm0");
1544        asm volatile("sha1msg2 %xmm7, %xmm8");
1545        asm volatile("sha1msg2 %xmm15, %xmm8");
1546        asm volatile("sha1msg2 (%rax), %xmm0");
1547        asm volatile("sha1msg2 (%r8), %xmm0");
1548        asm volatile("sha1msg2 (0x12345678), %xmm0");
1549        asm volatile("sha1msg2 (%rax), %xmm3");
1550        asm volatile("sha1msg2 (%rcx,%rax,1), %xmm0");
1551        asm volatile("sha1msg2 0x12345678(,%rax,1), %xmm0");
1552        asm volatile("sha1msg2 (%rax,%rcx,1), %xmm0");
1553        asm volatile("sha1msg2 (%rax,%rcx,8), %xmm0");
1554        asm volatile("sha1msg2 0x12(%rax), %xmm0");
1555        asm volatile("sha1msg2 0x12(%rbp), %xmm0");
1556        asm volatile("sha1msg2 0x12(%rcx,%rax,1), %xmm0");
1557        asm volatile("sha1msg2 0x12(%rbp,%rax,1), %xmm0");
1558        asm volatile("sha1msg2 0x12(%rax,%rcx,1), %xmm0");
1559        asm volatile("sha1msg2 0x12(%rax,%rcx,8), %xmm0");
1560        asm volatile("sha1msg2 0x12345678(%rax), %xmm0");
1561        asm volatile("sha1msg2 0x12345678(%rbp), %xmm0");
1562        asm volatile("sha1msg2 0x12345678(%rcx,%rax,1), %xmm0");
1563        asm volatile("sha1msg2 0x12345678(%rbp,%rax,1), %xmm0");
1564        asm volatile("sha1msg2 0x12345678(%rax,%rcx,1), %xmm0");
1565        asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm0");
1566        asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm15");
1567
1568        /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
1569        /* Note sha256rnds2 has an implicit operand 'xmm0' */
1570
1571        asm volatile("sha256rnds2 %xmm4, %xmm1");
1572        asm volatile("sha256rnds2 %xmm7, %xmm2");
1573        asm volatile("sha256rnds2 %xmm8, %xmm1");
1574        asm volatile("sha256rnds2 %xmm7, %xmm8");
1575        asm volatile("sha256rnds2 %xmm15, %xmm8");
1576        asm volatile("sha256rnds2 (%rax), %xmm1");
1577        asm volatile("sha256rnds2 (%r8), %xmm1");
1578        asm volatile("sha256rnds2 (0x12345678), %xmm1");
1579        asm volatile("sha256rnds2 (%rax), %xmm3");
1580        asm volatile("sha256rnds2 (%rcx,%rax,1), %xmm1");
1581        asm volatile("sha256rnds2 0x12345678(,%rax,1), %xmm1");
1582        asm volatile("sha256rnds2 (%rax,%rcx,1), %xmm1");
1583        asm volatile("sha256rnds2 (%rax,%rcx,8), %xmm1");
1584        asm volatile("sha256rnds2 0x12(%rax), %xmm1");
1585        asm volatile("sha256rnds2 0x12(%rbp), %xmm1");
1586        asm volatile("sha256rnds2 0x12(%rcx,%rax,1), %xmm1");
1587        asm volatile("sha256rnds2 0x12(%rbp,%rax,1), %xmm1");
1588        asm volatile("sha256rnds2 0x12(%rax,%rcx,1), %xmm1");
1589        asm volatile("sha256rnds2 0x12(%rax,%rcx,8), %xmm1");
1590        asm volatile("sha256rnds2 0x12345678(%rax), %xmm1");
1591        asm volatile("sha256rnds2 0x12345678(%rbp), %xmm1");
1592        asm volatile("sha256rnds2 0x12345678(%rcx,%rax,1), %xmm1");
1593        asm volatile("sha256rnds2 0x12345678(%rbp,%rax,1), %xmm1");
1594        asm volatile("sha256rnds2 0x12345678(%rax,%rcx,1), %xmm1");
1595        asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm1");
1596        asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm15");
1597
1598        /* sha256msg1 xmm2/m128, xmm1 */
1599
1600        asm volatile("sha256msg1 %xmm1, %xmm0");
1601        asm volatile("sha256msg1 %xmm7, %xmm2");
1602        asm volatile("sha256msg1 %xmm8, %xmm0");
1603        asm volatile("sha256msg1 %xmm7, %xmm8");
1604        asm volatile("sha256msg1 %xmm15, %xmm8");
1605        asm volatile("sha256msg1 (%rax), %xmm0");
1606        asm volatile("sha256msg1 (%r8), %xmm0");
1607        asm volatile("sha256msg1 (0x12345678), %xmm0");
1608        asm volatile("sha256msg1 (%rax), %xmm3");
1609        asm volatile("sha256msg1 (%rcx,%rax,1), %xmm0");
1610        asm volatile("sha256msg1 0x12345678(,%rax,1), %xmm0");
1611        asm volatile("sha256msg1 (%rax,%rcx,1), %xmm0");
1612        asm volatile("sha256msg1 (%rax,%rcx,8), %xmm0");
1613        asm volatile("sha256msg1 0x12(%rax), %xmm0");
1614        asm volatile("sha256msg1 0x12(%rbp), %xmm0");
1615        asm volatile("sha256msg1 0x12(%rcx,%rax,1), %xmm0");
1616        asm volatile("sha256msg1 0x12(%rbp,%rax,1), %xmm0");
1617        asm volatile("sha256msg1 0x12(%rax,%rcx,1), %xmm0");
1618        asm volatile("sha256msg1 0x12(%rax,%rcx,8), %xmm0");
1619        asm volatile("sha256msg1 0x12345678(%rax), %xmm0");
1620        asm volatile("sha256msg1 0x12345678(%rbp), %xmm0");
1621        asm volatile("sha256msg1 0x12345678(%rcx,%rax,1), %xmm0");
1622        asm volatile("sha256msg1 0x12345678(%rbp,%rax,1), %xmm0");
1623        asm volatile("sha256msg1 0x12345678(%rax,%rcx,1), %xmm0");
1624        asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm0");
1625        asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm15");
1626
1627        /* sha256msg2 xmm2/m128, xmm1 */
1628
1629        asm volatile("sha256msg2 %xmm1, %xmm0");
1630        asm volatile("sha256msg2 %xmm7, %xmm2");
1631        asm volatile("sha256msg2 %xmm8, %xmm0");
1632        asm volatile("sha256msg2 %xmm7, %xmm8");
1633        asm volatile("sha256msg2 %xmm15, %xmm8");
1634        asm volatile("sha256msg2 (%rax), %xmm0");
1635        asm volatile("sha256msg2 (%r8), %xmm0");
1636        asm volatile("sha256msg2 (0x12345678), %xmm0");
1637        asm volatile("sha256msg2 (%rax), %xmm3");
1638        asm volatile("sha256msg2 (%rcx,%rax,1), %xmm0");
1639        asm volatile("sha256msg2 0x12345678(,%rax,1), %xmm0");
1640        asm volatile("sha256msg2 (%rax,%rcx,1), %xmm0");
1641        asm volatile("sha256msg2 (%rax,%rcx,8), %xmm0");
1642        asm volatile("sha256msg2 0x12(%rax), %xmm0");
1643        asm volatile("sha256msg2 0x12(%rbp), %xmm0");
1644        asm volatile("sha256msg2 0x12(%rcx,%rax,1), %xmm0");
1645        asm volatile("sha256msg2 0x12(%rbp,%rax,1), %xmm0");
1646        asm volatile("sha256msg2 0x12(%rax,%rcx,1), %xmm0");
1647        asm volatile("sha256msg2 0x12(%rax,%rcx,8), %xmm0");
1648        asm volatile("sha256msg2 0x12345678(%rax), %xmm0");
1649        asm volatile("sha256msg2 0x12345678(%rbp), %xmm0");
1650        asm volatile("sha256msg2 0x12345678(%rcx,%rax,1), %xmm0");
1651        asm volatile("sha256msg2 0x12345678(%rbp,%rax,1), %xmm0");
1652        asm volatile("sha256msg2 0x12345678(%rax,%rcx,1), %xmm0");
1653        asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm0");
1654        asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm15");
1655
1656        /* clflushopt m8 */
1657
1658        asm volatile("clflushopt (%rax)");
1659        asm volatile("clflushopt (%r8)");
1660        asm volatile("clflushopt (0x12345678)");
1661        asm volatile("clflushopt 0x12345678(%rax,%rcx,8)");
1662        asm volatile("clflushopt 0x12345678(%r8,%rcx,8)");
1663        /* Also check instructions in the same group encoding as clflushopt */
1664        asm volatile("clflush (%rax)");
1665        asm volatile("clflush (%r8)");
1666        asm volatile("sfence");
1667
1668        /* clwb m8 */
1669
1670        asm volatile("clwb (%rax)");
1671        asm volatile("clwb (%r8)");
1672        asm volatile("clwb (0x12345678)");
1673        asm volatile("clwb 0x12345678(%rax,%rcx,8)");
1674        asm volatile("clwb 0x12345678(%r8,%rcx,8)");
1675        /* Also check instructions in the same group encoding as clwb */
1676        asm volatile("xsaveopt (%rax)");
1677        asm volatile("xsaveopt (%r8)");
1678        asm volatile("mfence");
1679
1680        /* cldemote m8 */
1681
1682        asm volatile("cldemote (%rax)");
1683        asm volatile("cldemote (%r8)");
1684        asm volatile("cldemote (0x12345678)");
1685        asm volatile("cldemote 0x12345678(%rax,%rcx,8)");
1686        asm volatile("cldemote 0x12345678(%r8,%rcx,8)");
1687
1688        /* xsavec mem */
1689
1690        asm volatile("xsavec (%rax)");
1691        asm volatile("xsavec (%r8)");
1692        asm volatile("xsavec (0x12345678)");
1693        asm volatile("xsavec 0x12345678(%rax,%rcx,8)");
1694        asm volatile("xsavec 0x12345678(%r8,%rcx,8)");
1695
1696        /* xsaves mem */
1697
1698        asm volatile("xsaves (%rax)");
1699        asm volatile("xsaves (%r8)");
1700        asm volatile("xsaves (0x12345678)");
1701        asm volatile("xsaves 0x12345678(%rax,%rcx,8)");
1702        asm volatile("xsaves 0x12345678(%r8,%rcx,8)");
1703
1704        /* xrstors mem */
1705
1706        asm volatile("xrstors (%rax)");
1707        asm volatile("xrstors (%r8)");
1708        asm volatile("xrstors (0x12345678)");
1709        asm volatile("xrstors 0x12345678(%rax,%rcx,8)");
1710        asm volatile("xrstors 0x12345678(%r8,%rcx,8)");
1711
1712        /* ptwrite */
1713
1714        asm volatile("ptwrite (%rax)");
1715        asm volatile("ptwrite (%r8)");
1716        asm volatile("ptwrite (0x12345678)");
1717        asm volatile("ptwrite 0x12345678(%rax,%rcx,8)");
1718        asm volatile("ptwrite 0x12345678(%r8,%rcx,8)");
1719
1720        asm volatile("ptwritel (%rax)");
1721        asm volatile("ptwritel (%r8)");
1722        asm volatile("ptwritel (0x12345678)");
1723        asm volatile("ptwritel 0x12345678(%rax,%rcx,8)");
1724        asm volatile("ptwritel 0x12345678(%r8,%rcx,8)");
1725
1726        asm volatile("ptwriteq (%rax)");
1727        asm volatile("ptwriteq (%r8)");
1728        asm volatile("ptwriteq (0x12345678)");
1729        asm volatile("ptwriteq 0x12345678(%rax,%rcx,8)");
1730        asm volatile("ptwriteq 0x12345678(%r8,%rcx,8)");
1731
1732        /* tpause */
1733
1734        asm volatile("tpause %ebx");
1735        asm volatile("tpause %r8d");
1736
1737        /* umonitor */
1738
1739        asm volatile("umonitor %eax");
1740        asm volatile("umonitor %rax");
1741        asm volatile("umonitor %r8d");
1742
1743        /* umwait */
1744
1745        asm volatile("umwait %eax");
1746        asm volatile("umwait %r8d");
1747
1748        /* movdiri */
1749
1750        asm volatile("movdiri %rax,(%rbx)");
1751        asm volatile("movdiri %rcx,0x12345678(%rax)");
1752
1753        /* movdir64b */
1754
1755        asm volatile("movdir64b (%rax),%rbx");
1756        asm volatile("movdir64b 0x12345678(%rax),%rcx");
1757        asm volatile("movdir64b (%eax),%ebx");
1758        asm volatile("movdir64b 0x12345678(%eax),%ecx");
1759
1760        /* enqcmd */
1761
1762        asm volatile("enqcmd (%rax),%rbx");
1763        asm volatile("enqcmd 0x12345678(%rax),%rcx");
1764        asm volatile("enqcmd (%eax),%ebx");
1765        asm volatile("enqcmd 0x12345678(%eax),%ecx");
1766
1767        /* enqcmds */
1768
1769        asm volatile("enqcmds (%rax),%rbx");
1770        asm volatile("enqcmds 0x12345678(%rax),%rcx");
1771        asm volatile("enqcmds (%eax),%ebx");
1772        asm volatile("enqcmds 0x12345678(%eax),%ecx");
1773
1774        /* incsspd/q */
1775
1776        asm volatile("incsspd %eax");
1777        asm volatile("incsspd %r8d");
1778        asm volatile("incsspq %rax");
1779        asm volatile("incsspq %r8");
1780        /* Also check instructions in the same group encoding as incsspd/q */
1781        asm volatile("xrstor (%rax)");
1782        asm volatile("xrstor (%r8)");
1783        asm volatile("xrstor (0x12345678)");
1784        asm volatile("xrstor 0x12345678(%rax,%rcx,8)");
1785        asm volatile("xrstor 0x12345678(%r8,%rcx,8)");
1786        asm volatile("lfence");
1787
1788        /* rdsspd/q */
1789
1790        asm volatile("rdsspd %eax");
1791        asm volatile("rdsspd %r8d");
1792        asm volatile("rdsspq %rax");
1793        asm volatile("rdsspq %r8");
1794
1795        /* saveprevssp */
1796
1797        asm volatile("saveprevssp");
1798
1799        /* rstorssp */
1800
1801        asm volatile("rstorssp (%rax)");
1802        asm volatile("rstorssp (%r8)");
1803        asm volatile("rstorssp (0x12345678)");
1804        asm volatile("rstorssp 0x12345678(%rax,%rcx,8)");
1805        asm volatile("rstorssp 0x12345678(%r8,%rcx,8)");
1806
1807        /* wrssd/q */
1808
1809        asm volatile("wrssd %ecx,(%rax)");
1810        asm volatile("wrssd %edx,(%r8)");
1811        asm volatile("wrssd %edx,(0x12345678)");
1812        asm volatile("wrssd %edx,0x12345678(%rax,%rcx,8)");
1813        asm volatile("wrssd %edx,0x12345678(%r8,%rcx,8)");
1814        asm volatile("wrssq %rcx,(%rax)");
1815        asm volatile("wrssq %rdx,(%r8)");
1816        asm volatile("wrssq %rdx,(0x12345678)");
1817        asm volatile("wrssq %rdx,0x12345678(%rax,%rcx,8)");
1818        asm volatile("wrssq %rdx,0x12345678(%r8,%rcx,8)");
1819
1820        /* wrussd/q */
1821
1822        asm volatile("wrussd %ecx,(%rax)");
1823        asm volatile("wrussd %edx,(%r8)");
1824        asm volatile("wrussd %edx,(0x12345678)");
1825        asm volatile("wrussd %edx,0x12345678(%rax,%rcx,8)");
1826        asm volatile("wrussd %edx,0x12345678(%r8,%rcx,8)");
1827        asm volatile("wrussq %rcx,(%rax)");
1828        asm volatile("wrussq %rdx,(%r8)");
1829        asm volatile("wrussq %rdx,(0x12345678)");
1830        asm volatile("wrussq %rdx,0x12345678(%rax,%rcx,8)");
1831        asm volatile("wrussq %rdx,0x12345678(%r8,%rcx,8)");
1832
1833        /* setssbsy */
1834
1835        asm volatile("setssbsy");
1836        /* Also check instructions in the same group encoding as setssbsy */
1837        asm volatile("rdpkru");
1838        asm volatile("wrpkru");
1839
1840        /* clrssbsy */
1841
1842        asm volatile("clrssbsy (%rax)");
1843        asm volatile("clrssbsy (%r8)");
1844        asm volatile("clrssbsy (0x12345678)");
1845        asm volatile("clrssbsy 0x12345678(%rax,%rcx,8)");
1846        asm volatile("clrssbsy 0x12345678(%r8,%rcx,8)");
1847
1848        /* endbr32/64 */
1849
1850        asm volatile("endbr32");
1851        asm volatile("endbr64");
1852
1853        /* call with/without notrack prefix */
1854
1855        asm volatile("callq *%rax");                            /* Expecting: call indirect 0 */
1856        asm volatile("callq *(%rax)");                          /* Expecting: call indirect 0 */
1857        asm volatile("callq *(%r8)");                           /* Expecting: call indirect 0 */
1858        asm volatile("callq *(0x12345678)");                    /* Expecting: call indirect 0 */
1859        asm volatile("callq *0x12345678(%rax,%rcx,8)");         /* Expecting: call indirect 0 */
1860        asm volatile("callq *0x12345678(%r8,%rcx,8)");          /* Expecting: call indirect 0 */
1861
1862        asm volatile("bnd callq *%rax");                        /* Expecting: call indirect 0 */
1863        asm volatile("bnd callq *(%rax)");                      /* Expecting: call indirect 0 */
1864        asm volatile("bnd callq *(%r8)");                       /* Expecting: call indirect 0 */
1865        asm volatile("bnd callq *(0x12345678)");                /* Expecting: call indirect 0 */
1866        asm volatile("bnd callq *0x12345678(%rax,%rcx,8)");     /* Expecting: call indirect 0 */
1867        asm volatile("bnd callq *0x12345678(%r8,%rcx,8)");      /* Expecting: call indirect 0 */
1868
1869        asm volatile("notrack callq *%rax");                    /* Expecting: call indirect 0 */
1870        asm volatile("notrack callq *(%rax)");                  /* Expecting: call indirect 0 */
1871        asm volatile("notrack callq *(%r8)");                   /* Expecting: call indirect 0 */
1872        asm volatile("notrack callq *(0x12345678)");            /* Expecting: call indirect 0 */
1873        asm volatile("notrack callq *0x12345678(%rax,%rcx,8)"); /* Expecting: call indirect 0 */
1874        asm volatile("notrack callq *0x12345678(%r8,%rcx,8)");  /* Expecting: call indirect 0 */
1875
1876        asm volatile("notrack bnd callq *%rax");                /* Expecting: call indirect 0 */
1877        asm volatile("notrack bnd callq *(%rax)");              /* Expecting: call indirect 0 */
1878        asm volatile("notrack bnd callq *(%r8)");               /* Expecting: call indirect 0 */
1879        asm volatile("notrack bnd callq *(0x12345678)");        /* Expecting: call indirect 0 */
1880        asm volatile("notrack bnd callq *0x12345678(%rax,%rcx,8)");     /* Expecting: call indirect 0 */
1881        asm volatile("notrack bnd callq *0x12345678(%r8,%rcx,8)");      /* Expecting: call indirect 0 */
1882
1883        /* jmp with/without notrack prefix */
1884
1885        asm volatile("jmpq *%rax");                             /* Expecting: jmp indirect 0 */
1886        asm volatile("jmpq *(%rax)");                           /* Expecting: jmp indirect 0 */
1887        asm volatile("jmpq *(%r8)");                            /* Expecting: jmp indirect 0 */
1888        asm volatile("jmpq *(0x12345678)");                     /* Expecting: jmp indirect 0 */
1889        asm volatile("jmpq *0x12345678(%rax,%rcx,8)");          /* Expecting: jmp indirect 0 */
1890        asm volatile("jmpq *0x12345678(%r8,%rcx,8)");           /* Expecting: jmp indirect 0 */
1891
1892        asm volatile("bnd jmpq *%rax");                         /* Expecting: jmp indirect 0 */
1893        asm volatile("bnd jmpq *(%rax)");                       /* Expecting: jmp indirect 0 */
1894        asm volatile("bnd jmpq *(%r8)");                        /* Expecting: jmp indirect 0 */
1895        asm volatile("bnd jmpq *(0x12345678)");                 /* Expecting: jmp indirect 0 */
1896        asm volatile("bnd jmpq *0x12345678(%rax,%rcx,8)");      /* Expecting: jmp indirect 0 */
1897        asm volatile("bnd jmpq *0x12345678(%r8,%rcx,8)");       /* Expecting: jmp indirect 0 */
1898
1899        asm volatile("notrack jmpq *%rax");                     /* Expecting: jmp indirect 0 */
1900        asm volatile("notrack jmpq *(%rax)");                   /* Expecting: jmp indirect 0 */
1901        asm volatile("notrack jmpq *(%r8)");                    /* Expecting: jmp indirect 0 */
1902        asm volatile("notrack jmpq *(0x12345678)");             /* Expecting: jmp indirect 0 */
1903        asm volatile("notrack jmpq *0x12345678(%rax,%rcx,8)");  /* Expecting: jmp indirect 0 */
1904        asm volatile("notrack jmpq *0x12345678(%r8,%rcx,8)");   /* Expecting: jmp indirect 0 */
1905
1906        asm volatile("notrack bnd jmpq *%rax");                 /* Expecting: jmp indirect 0 */
1907        asm volatile("notrack bnd jmpq *(%rax)");               /* Expecting: jmp indirect 0 */
1908        asm volatile("notrack bnd jmpq *(%r8)");                /* Expecting: jmp indirect 0 */
1909        asm volatile("notrack bnd jmpq *(0x12345678)");         /* Expecting: jmp indirect 0 */
1910        asm volatile("notrack bnd jmpq *0x12345678(%rax,%rcx,8)");      /* Expecting: jmp indirect 0 */
1911        asm volatile("notrack bnd jmpq *0x12345678(%r8,%rcx,8)");       /* Expecting: jmp indirect 0 */
1912
1913#else  /* #ifdef __x86_64__ */
1914
1915        /* bound r32, mem (same op code as EVEX prefix) */
1916
1917        asm volatile("bound %eax, 0x12345678(%ecx)");
1918        asm volatile("bound %ecx, 0x12345678(%eax)");
1919        asm volatile("bound %edx, 0x12345678(%eax)");
1920        asm volatile("bound %ebx, 0x12345678(%eax)");
1921        asm volatile("bound %esp, 0x12345678(%eax)");
1922        asm volatile("bound %ebp, 0x12345678(%eax)");
1923        asm volatile("bound %esi, 0x12345678(%eax)");
1924        asm volatile("bound %edi, 0x12345678(%eax)");
1925        asm volatile("bound %ecx, (%eax)");
1926        asm volatile("bound %eax, (0x12345678)");
1927        asm volatile("bound %edx, (%ecx,%eax,1)");
1928        asm volatile("bound %edx, 0x12345678(,%eax,1)");
1929        asm volatile("bound %edx, (%eax,%ecx,1)");
1930        asm volatile("bound %edx, (%eax,%ecx,8)");
1931        asm volatile("bound %edx, 0x12(%eax)");
1932        asm volatile("bound %edx, 0x12(%ebp)");
1933        asm volatile("bound %edx, 0x12(%ecx,%eax,1)");
1934        asm volatile("bound %edx, 0x12(%ebp,%eax,1)");
1935        asm volatile("bound %edx, 0x12(%eax,%ecx,1)");
1936        asm volatile("bound %edx, 0x12(%eax,%ecx,8)");
1937        asm volatile("bound %edx, 0x12345678(%eax)");
1938        asm volatile("bound %edx, 0x12345678(%ebp)");
1939        asm volatile("bound %edx, 0x12345678(%ecx,%eax,1)");
1940        asm volatile("bound %edx, 0x12345678(%ebp,%eax,1)");
1941        asm volatile("bound %edx, 0x12345678(%eax,%ecx,1)");
1942        asm volatile("bound %edx, 0x12345678(%eax,%ecx,8)");
1943
1944        /* bound r16, mem (same op code as EVEX prefix) */
1945
1946        asm volatile("bound %ax, 0x12345678(%ecx)");
1947        asm volatile("bound %cx, 0x12345678(%eax)");
1948        asm volatile("bound %dx, 0x12345678(%eax)");
1949        asm volatile("bound %bx, 0x12345678(%eax)");
1950        asm volatile("bound %sp, 0x12345678(%eax)");
1951        asm volatile("bound %bp, 0x12345678(%eax)");
1952        asm volatile("bound %si, 0x12345678(%eax)");
1953        asm volatile("bound %di, 0x12345678(%eax)");
1954        asm volatile("bound %cx, (%eax)");
1955        asm volatile("bound %ax, (0x12345678)");
1956        asm volatile("bound %dx, (%ecx,%eax,1)");
1957        asm volatile("bound %dx, 0x12345678(,%eax,1)");
1958        asm volatile("bound %dx, (%eax,%ecx,1)");
1959        asm volatile("bound %dx, (%eax,%ecx,8)");
1960        asm volatile("bound %dx, 0x12(%eax)");
1961        asm volatile("bound %dx, 0x12(%ebp)");
1962        asm volatile("bound %dx, 0x12(%ecx,%eax,1)");
1963        asm volatile("bound %dx, 0x12(%ebp,%eax,1)");
1964        asm volatile("bound %dx, 0x12(%eax,%ecx,1)");
1965        asm volatile("bound %dx, 0x12(%eax,%ecx,8)");
1966        asm volatile("bound %dx, 0x12345678(%eax)");
1967        asm volatile("bound %dx, 0x12345678(%ebp)");
1968        asm volatile("bound %dx, 0x12345678(%ecx,%eax,1)");
1969        asm volatile("bound %dx, 0x12345678(%ebp,%eax,1)");
1970        asm volatile("bound %dx, 0x12345678(%eax,%ecx,1)");
1971        asm volatile("bound %dx, 0x12345678(%eax,%ecx,8)");
1972
1973        /* AVX-512: Instructions with the same op codes as Mask Instructions  */
1974
1975        asm volatile("cmovno %eax,%ebx");
1976        asm volatile("cmovno 0x12345678(%eax),%ecx");
1977        asm volatile("cmovno 0x12345678(%eax),%cx");
1978
1979        asm volatile("cmove  %eax,%ebx");
1980        asm volatile("cmove 0x12345678(%eax),%ecx");
1981        asm volatile("cmove 0x12345678(%eax),%cx");
1982
1983        asm volatile("seto    0x12345678(%eax)");
1984        asm volatile("setno   0x12345678(%eax)");
1985        asm volatile("setb    0x12345678(%eax)");
1986        asm volatile("setc    0x12345678(%eax)");
1987        asm volatile("setnae  0x12345678(%eax)");
1988        asm volatile("setae   0x12345678(%eax)");
1989        asm volatile("setnb   0x12345678(%eax)");
1990        asm volatile("setnc   0x12345678(%eax)");
1991        asm volatile("sets    0x12345678(%eax)");
1992        asm volatile("setns   0x12345678(%eax)");
1993
1994        /* AVX-512: Mask Instructions */
1995
1996        asm volatile("kandw  %k7,%k6,%k5");
1997        asm volatile("kandq  %k7,%k6,%k5");
1998        asm volatile("kandb  %k7,%k6,%k5");
1999        asm volatile("kandd  %k7,%k6,%k5");
2000
2001        asm volatile("kandnw  %k7,%k6,%k5");
2002        asm volatile("kandnq  %k7,%k6,%k5");
2003        asm volatile("kandnb  %k7,%k6,%k5");
2004        asm volatile("kandnd  %k7,%k6,%k5");
2005
2006        asm volatile("knotw  %k7,%k6");
2007        asm volatile("knotq  %k7,%k6");
2008        asm volatile("knotb  %k7,%k6");
2009        asm volatile("knotd  %k7,%k6");
2010
2011        asm volatile("korw  %k7,%k6,%k5");
2012        asm volatile("korq  %k7,%k6,%k5");
2013        asm volatile("korb  %k7,%k6,%k5");
2014        asm volatile("kord  %k7,%k6,%k5");
2015
2016        asm volatile("kxnorw  %k7,%k6,%k5");
2017        asm volatile("kxnorq  %k7,%k6,%k5");
2018        asm volatile("kxnorb  %k7,%k6,%k5");
2019        asm volatile("kxnord  %k7,%k6,%k5");
2020
2021        asm volatile("kxorw  %k7,%k6,%k5");
2022        asm volatile("kxorq  %k7,%k6,%k5");
2023        asm volatile("kxorb  %k7,%k6,%k5");
2024        asm volatile("kxord  %k7,%k6,%k5");
2025
2026        asm volatile("kaddw  %k7,%k6,%k5");
2027        asm volatile("kaddq  %k7,%k6,%k5");
2028        asm volatile("kaddb  %k7,%k6,%k5");
2029        asm volatile("kaddd  %k7,%k6,%k5");
2030
2031        asm volatile("kunpckbw %k7,%k6,%k5");
2032        asm volatile("kunpckwd %k7,%k6,%k5");
2033        asm volatile("kunpckdq %k7,%k6,%k5");
2034
2035        asm volatile("kmovw  %k6,%k5");
2036        asm volatile("kmovw  (%ecx),%k5");
2037        asm volatile("kmovw  0x123(%eax,%ecx,8),%k5");
2038        asm volatile("kmovw  %k5,(%ecx)");
2039        asm volatile("kmovw  %k5,0x123(%eax,%ecx,8)");
2040        asm volatile("kmovw  %eax,%k5");
2041        asm volatile("kmovw  %ebp,%k5");
2042        asm volatile("kmovw  %k5,%eax");
2043        asm volatile("kmovw  %k5,%ebp");
2044
2045        asm volatile("kmovq  %k6,%k5");
2046        asm volatile("kmovq  (%ecx),%k5");
2047        asm volatile("kmovq  0x123(%eax,%ecx,8),%k5");
2048        asm volatile("kmovq  %k5,(%ecx)");
2049        asm volatile("kmovq  %k5,0x123(%eax,%ecx,8)");
2050
2051        asm volatile("kmovb  %k6,%k5");
2052        asm volatile("kmovb  (%ecx),%k5");
2053        asm volatile("kmovb  0x123(%eax,%ecx,8),%k5");
2054        asm volatile("kmovb  %k5,(%ecx)");
2055        asm volatile("kmovb  %k5,0x123(%eax,%ecx,8)");
2056        asm volatile("kmovb  %eax,%k5");
2057        asm volatile("kmovb  %ebp,%k5");
2058        asm volatile("kmovb  %k5,%eax");
2059        asm volatile("kmovb  %k5,%ebp");
2060
2061        asm volatile("kmovd  %k6,%k5");
2062        asm volatile("kmovd  (%ecx),%k5");
2063        asm volatile("kmovd  0x123(%eax,%ecx,8),%k5");
2064        asm volatile("kmovd  %k5,(%ecx)");
2065        asm volatile("kmovd  %k5,0x123(%eax,%ecx,8)");
2066        asm volatile("kmovd  %eax,%k5");
2067        asm volatile("kmovd  %ebp,%k5");
2068        asm volatile("kmovd  %k5,%eax");
2069        asm volatile("kmovd  %k5,%ebp");
2070
2071        asm volatile("kortestw %k6,%k5");
2072        asm volatile("kortestq %k6,%k5");
2073        asm volatile("kortestb %k6,%k5");
2074        asm volatile("kortestd %k6,%k5");
2075
2076        asm volatile("ktestw %k6,%k5");
2077        asm volatile("ktestq %k6,%k5");
2078        asm volatile("ktestb %k6,%k5");
2079        asm volatile("ktestd %k6,%k5");
2080
2081        asm volatile("kshiftrw $0x12,%k6,%k5");
2082        asm volatile("kshiftrq $0x5b,%k6,%k5");
2083        asm volatile("kshiftlw $0x12,%k6,%k5");
2084        asm volatile("kshiftlq $0x5b,%k6,%k5");
2085
2086        /* AVX-512: Op code 0f 5b */
2087        asm volatile("vcvtdq2ps %xmm5,%xmm6");
2088        asm volatile("vcvtqq2ps %zmm5,%ymm6{%k7}");
2089        asm volatile("vcvtps2dq %xmm5,%xmm6");
2090        asm volatile("vcvttps2dq %xmm5,%xmm6");
2091
2092        /* AVX-512: Op code 0f 6f */
2093
2094        asm volatile("movq   %mm0,%mm4");
2095        asm volatile("vmovdqa %ymm4,%ymm6");
2096        asm volatile("vmovdqa32 %zmm5,%zmm6");
2097        asm volatile("vmovdqa64 %zmm5,%zmm6");
2098        asm volatile("vmovdqu %ymm4,%ymm6");
2099        asm volatile("vmovdqu32 %zmm5,%zmm6");
2100        asm volatile("vmovdqu64 %zmm5,%zmm6");
2101        asm volatile("vmovdqu8 %zmm5,%zmm6");
2102        asm volatile("vmovdqu16 %zmm5,%zmm6");
2103
2104        /* AVX-512: Op code 0f 78 */
2105
2106        asm volatile("vmread %eax,%ebx");
2107        asm volatile("vcvttps2udq %zmm5,%zmm6");
2108        asm volatile("vcvttpd2udq %zmm5,%ymm6{%k7}");
2109        asm volatile("vcvttsd2usi %xmm6,%eax");
2110        asm volatile("vcvttss2usi %xmm6,%eax");
2111        asm volatile("vcvttps2uqq %ymm5,%zmm6{%k7}");
2112        asm volatile("vcvttpd2uqq %zmm5,%zmm6");
2113
2114        /* AVX-512: Op code 0f 79 */
2115
2116        asm volatile("vmwrite %eax,%ebx");
2117        asm volatile("vcvtps2udq %zmm5,%zmm6");
2118        asm volatile("vcvtpd2udq %zmm5,%ymm6{%k7}");
2119        asm volatile("vcvtsd2usi %xmm6,%eax");
2120        asm volatile("vcvtss2usi %xmm6,%eax");
2121        asm volatile("vcvtps2uqq %ymm5,%zmm6{%k7}");
2122        asm volatile("vcvtpd2uqq %zmm5,%zmm6");
2123
2124        /* AVX-512: Op code 0f 7a */
2125
2126        asm volatile("vcvtudq2pd %ymm5,%zmm6{%k7}");
2127        asm volatile("vcvtuqq2pd %zmm5,%zmm6");
2128        asm volatile("vcvtudq2ps %zmm5,%zmm6");
2129        asm volatile("vcvtuqq2ps %zmm5,%ymm6{%k7}");
2130        asm volatile("vcvttps2qq %ymm5,%zmm6{%k7}");
2131        asm volatile("vcvttpd2qq %zmm5,%zmm6");
2132
2133        /* AVX-512: Op code 0f 7b */
2134
2135        asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
2136        asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
2137        asm volatile("vcvtps2qq %ymm5,%zmm6{%k7}");
2138        asm volatile("vcvtpd2qq %zmm5,%zmm6");
2139
2140        /* AVX-512: Op code 0f 7f */
2141
2142        asm volatile("movq.s  %mm0,%mm4");
2143        asm volatile("vmovdqa.s %ymm5,%ymm6");
2144        asm volatile("vmovdqa32.s %zmm5,%zmm6");
2145        asm volatile("vmovdqa64.s %zmm5,%zmm6");
2146        asm volatile("vmovdqu.s %ymm5,%ymm6");
2147        asm volatile("vmovdqu32.s %zmm5,%zmm6");
2148        asm volatile("vmovdqu64.s %zmm5,%zmm6");
2149        asm volatile("vmovdqu8.s %zmm5,%zmm6");
2150        asm volatile("vmovdqu16.s %zmm5,%zmm6");
2151
2152        /* AVX-512: Op code 0f db */
2153
2154        asm volatile("pand  %mm1,%mm2");
2155        asm volatile("pand  %xmm1,%xmm2");
2156        asm volatile("vpand  %ymm4,%ymm6,%ymm2");
2157        asm volatile("vpandd %zmm4,%zmm5,%zmm6");
2158        asm volatile("vpandq %zmm4,%zmm5,%zmm6");
2159
2160        /* AVX-512: Op code 0f df */
2161
2162        asm volatile("pandn  %mm1,%mm2");
2163        asm volatile("pandn  %xmm1,%xmm2");
2164        asm volatile("vpandn %ymm4,%ymm6,%ymm2");
2165        asm volatile("vpandnd %zmm4,%zmm5,%zmm6");
2166        asm volatile("vpandnq %zmm4,%zmm5,%zmm6");
2167
2168        /* AVX-512: Op code 0f e6 */
2169
2170        asm volatile("vcvttpd2dq %xmm1,%xmm2");
2171        asm volatile("vcvtdq2pd %xmm5,%xmm6");
2172        asm volatile("vcvtdq2pd %ymm5,%zmm6{%k7}");
2173        asm volatile("vcvtqq2pd %zmm5,%zmm6");
2174        asm volatile("vcvtpd2dq %xmm1,%xmm2");
2175
2176        /* AVX-512: Op code 0f eb */
2177
2178        asm volatile("por   %mm4,%mm6");
2179        asm volatile("vpor   %ymm4,%ymm6,%ymm2");
2180        asm volatile("vpord  %zmm4,%zmm5,%zmm6");
2181        asm volatile("vporq  %zmm4,%zmm5,%zmm6");
2182
2183        /* AVX-512: Op code 0f ef */
2184
2185        asm volatile("pxor   %mm4,%mm6");
2186        asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
2187        asm volatile("vpxord %zmm4,%zmm5,%zmm6");
2188        asm volatile("vpxorq %zmm4,%zmm5,%zmm6");
2189
2190        /* AVX-512: Op code 0f 38 10 */
2191
2192        asm volatile("pblendvb %xmm1,%xmm0");
2193        asm volatile("vpsrlvw %zmm4,%zmm5,%zmm6");
2194        asm volatile("vpmovuswb %zmm5,%ymm6{%k7}");
2195
2196        /* AVX-512: Op code 0f 38 11 */
2197
2198        asm volatile("vpmovusdb %zmm5,%xmm6{%k7}");
2199        asm volatile("vpsravw %zmm4,%zmm5,%zmm6");
2200
2201        /* AVX-512: Op code 0f 38 12 */
2202
2203        asm volatile("vpmovusqb %zmm5,%xmm6{%k7}");
2204        asm volatile("vpsllvw %zmm4,%zmm5,%zmm6");
2205
2206        /* AVX-512: Op code 0f 38 13 */
2207
2208        asm volatile("vcvtph2ps %xmm3,%ymm5");
2209        asm volatile("vcvtph2ps %ymm5,%zmm6{%k7}");
2210        asm volatile("vpmovusdw %zmm5,%ymm6{%k7}");
2211
2212        /* AVX-512: Op code 0f 38 14 */
2213
2214        asm volatile("blendvps %xmm1,%xmm0");
2215        asm volatile("vpmovusqw %zmm5,%xmm6{%k7}");
2216        asm volatile("vprorvd %zmm4,%zmm5,%zmm6");
2217        asm volatile("vprorvq %zmm4,%zmm5,%zmm6");
2218
2219        /* AVX-512: Op code 0f 38 15 */
2220
2221        asm volatile("blendvpd %xmm1,%xmm0");
2222        asm volatile("vpmovusqd %zmm5,%ymm6{%k7}");
2223        asm volatile("vprolvd %zmm4,%zmm5,%zmm6");
2224        asm volatile("vprolvq %zmm4,%zmm5,%zmm6");
2225
2226        /* AVX-512: Op code 0f 38 16 */
2227
2228        asm volatile("vpermps %ymm4,%ymm6,%ymm2");
2229        asm volatile("vpermps %ymm4,%ymm6,%ymm2{%k7}");
2230        asm volatile("vpermpd %ymm4,%ymm6,%ymm2{%k7}");
2231
2232        /* AVX-512: Op code 0f 38 19 */
2233
2234        asm volatile("vbroadcastsd %xmm4,%ymm6");
2235        asm volatile("vbroadcastf32x2 %xmm7,%zmm6");
2236
2237        /* AVX-512: Op code 0f 38 1a */
2238
2239        asm volatile("vbroadcastf128 (%ecx),%ymm4");
2240        asm volatile("vbroadcastf32x4 (%ecx),%zmm6");
2241        asm volatile("vbroadcastf64x2 (%ecx),%zmm6");
2242
2243        /* AVX-512: Op code 0f 38 1b */
2244
2245        asm volatile("vbroadcastf32x8 (%ecx),%zmm6");
2246        asm volatile("vbroadcastf64x4 (%ecx),%zmm6");
2247
2248        /* AVX-512: Op code 0f 38 1f */
2249
2250        asm volatile("vpabsq %zmm4,%zmm6");
2251
2252        /* AVX-512: Op code 0f 38 20 */
2253
2254        asm volatile("vpmovsxbw %xmm4,%xmm5");
2255        asm volatile("vpmovswb %zmm5,%ymm6{%k7}");
2256
2257        /* AVX-512: Op code 0f 38 21 */
2258
2259        asm volatile("vpmovsxbd %xmm4,%ymm6");
2260        asm volatile("vpmovsdb %zmm5,%xmm6{%k7}");
2261
2262        /* AVX-512: Op code 0f 38 22 */
2263
2264        asm volatile("vpmovsxbq %xmm4,%ymm4");
2265        asm volatile("vpmovsqb %zmm5,%xmm6{%k7}");
2266
2267        /* AVX-512: Op code 0f 38 23 */
2268
2269        asm volatile("vpmovsxwd %xmm4,%ymm4");
2270        asm volatile("vpmovsdw %zmm5,%ymm6{%k7}");
2271
2272        /* AVX-512: Op code 0f 38 24 */
2273
2274        asm volatile("vpmovsxwq %xmm4,%ymm6");
2275        asm volatile("vpmovsqw %zmm5,%xmm6{%k7}");
2276
2277        /* AVX-512: Op code 0f 38 25 */
2278
2279        asm volatile("vpmovsxdq %xmm4,%ymm4");
2280        asm volatile("vpmovsqd %zmm5,%ymm6{%k7}");
2281
2282        /* AVX-512: Op code 0f 38 26 */
2283
2284        asm volatile("vptestmb %zmm5,%zmm6,%k5");
2285        asm volatile("vptestmw %zmm5,%zmm6,%k5");
2286        asm volatile("vptestnmb %zmm4,%zmm5,%k5");
2287        asm volatile("vptestnmw %zmm4,%zmm5,%k5");
2288
2289        /* AVX-512: Op code 0f 38 27 */
2290
2291        asm volatile("vptestmd %zmm5,%zmm6,%k5");
2292        asm volatile("vptestmq %zmm5,%zmm6,%k5");
2293        asm volatile("vptestnmd %zmm4,%zmm5,%k5");
2294        asm volatile("vptestnmq %zmm4,%zmm5,%k5");
2295
2296        /* AVX-512: Op code 0f 38 28 */
2297
2298        asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
2299        asm volatile("vpmovm2b %k5,%zmm6");
2300        asm volatile("vpmovm2w %k5,%zmm6");
2301
2302        /* AVX-512: Op code 0f 38 29 */
2303
2304        asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
2305        asm volatile("vpmovb2m %zmm6,%k5");
2306        asm volatile("vpmovw2m %zmm6,%k5");
2307
2308        /* AVX-512: Op code 0f 38 2a */
2309
2310        asm volatile("vmovntdqa (%ecx),%ymm4");
2311        asm volatile("vpbroadcastmb2q %k6,%zmm1");
2312
2313        /* AVX-512: Op code 0f 38 2c */
2314
2315        asm volatile("vmaskmovps (%ecx),%ymm4,%ymm6");
2316        asm volatile("vscalefps %zmm4,%zmm5,%zmm6");
2317        asm volatile("vscalefpd %zmm4,%zmm5,%zmm6");
2318
2319        /* AVX-512: Op code 0f 38 2d */
2320
2321        asm volatile("vmaskmovpd (%ecx),%ymm4,%ymm6");
2322        asm volatile("vscalefss %xmm4,%xmm5,%xmm6{%k7}");
2323        asm volatile("vscalefsd %xmm4,%xmm5,%xmm6{%k7}");
2324
2325        /* AVX-512: Op code 0f 38 30 */
2326
2327        asm volatile("vpmovzxbw %xmm4,%ymm4");
2328        asm volatile("vpmovwb %zmm5,%ymm6{%k7}");
2329
2330        /* AVX-512: Op code 0f 38 31 */
2331
2332        asm volatile("vpmovzxbd %xmm4,%ymm6");
2333        asm volatile("vpmovdb %zmm5,%xmm6{%k7}");
2334
2335        /* AVX-512: Op code 0f 38 32 */
2336
2337        asm volatile("vpmovzxbq %xmm4,%ymm4");
2338        asm volatile("vpmovqb %zmm5,%xmm6{%k7}");
2339
2340        /* AVX-512: Op code 0f 38 33 */
2341
2342        asm volatile("vpmovzxwd %xmm4,%ymm4");
2343        asm volatile("vpmovdw %zmm5,%ymm6{%k7}");
2344
2345        /* AVX-512: Op code 0f 38 34 */
2346
2347        asm volatile("vpmovzxwq %xmm4,%ymm6");
2348        asm volatile("vpmovqw %zmm5,%xmm6{%k7}");
2349
2350        /* AVX-512: Op code 0f 38 35 */
2351
2352        asm volatile("vpmovzxdq %xmm4,%ymm4");
2353        asm volatile("vpmovqd %zmm5,%ymm6{%k7}");
2354
2355        /* AVX-512: Op code 0f 38 36 */
2356
2357        asm volatile("vpermd %ymm4,%ymm6,%ymm2");
2358        asm volatile("vpermd %ymm4,%ymm6,%ymm2{%k7}");
2359        asm volatile("vpermq %ymm4,%ymm6,%ymm2{%k7}");
2360
2361        /* AVX-512: Op code 0f 38 38 */
2362
2363        asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
2364        asm volatile("vpmovm2d %k5,%zmm6");
2365        asm volatile("vpmovm2q %k5,%zmm6");
2366
2367        /* AVX-512: Op code 0f 38 39 */
2368
2369        asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
2370        asm volatile("vpminsd %zmm4,%zmm5,%zmm6");
2371        asm volatile("vpminsq %zmm4,%zmm5,%zmm6");
2372        asm volatile("vpmovd2m %zmm6,%k5");
2373        asm volatile("vpmovq2m %zmm6,%k5");
2374
2375        /* AVX-512: Op code 0f 38 3a */
2376
2377        asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
2378        asm volatile("vpbroadcastmw2d %k6,%zmm6");
2379
2380        /* AVX-512: Op code 0f 38 3b */
2381
2382        asm volatile("vpminud %ymm4,%ymm6,%ymm2");
2383        asm volatile("vpminud %zmm4,%zmm5,%zmm6");
2384        asm volatile("vpminuq %zmm4,%zmm5,%zmm6");
2385
2386        /* AVX-512: Op code 0f 38 3d */
2387
2388        asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
2389        asm volatile("vpmaxsd %zmm4,%zmm5,%zmm6");
2390        asm volatile("vpmaxsq %zmm4,%zmm5,%zmm6");
2391
2392        /* AVX-512: Op code 0f 38 3f */
2393
2394        asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
2395        asm volatile("vpmaxud %zmm4,%zmm5,%zmm6");
2396        asm volatile("vpmaxuq %zmm4,%zmm5,%zmm6");
2397
2398        /* AVX-512: Op code 0f 38 40 */
2399
2400        asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
2401        asm volatile("vpmulld %zmm4,%zmm5,%zmm6");
2402        asm volatile("vpmullq %zmm4,%zmm5,%zmm6");
2403
2404        /* AVX-512: Op code 0f 38 42 */
2405
2406        asm volatile("vgetexpps %zmm5,%zmm6");
2407        asm volatile("vgetexppd %zmm5,%zmm6");
2408
2409        /* AVX-512: Op code 0f 38 43 */
2410
2411        asm volatile("vgetexpss %xmm4,%xmm5,%xmm6{%k7}");
2412        asm volatile("vgetexpsd %xmm2,%xmm3,%xmm4{%k7}");
2413
2414        /* AVX-512: Op code 0f 38 44 */
2415
2416        asm volatile("vplzcntd %zmm5,%zmm6");
2417        asm volatile("vplzcntq %zmm5,%zmm6");
2418
2419        /* AVX-512: Op code 0f 38 46 */
2420
2421        asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
2422        asm volatile("vpsravd %zmm4,%zmm5,%zmm6");
2423        asm volatile("vpsravq %zmm4,%zmm5,%zmm6");
2424
2425        /* AVX-512: Op code 0f 38 4c */
2426
2427        asm volatile("vrcp14ps %zmm5,%zmm6");
2428        asm volatile("vrcp14pd %zmm5,%zmm6");
2429
2430        /* AVX-512: Op code 0f 38 4d */
2431
2432        asm volatile("vrcp14ss %xmm4,%xmm5,%xmm6{%k7}");
2433        asm volatile("vrcp14sd %xmm4,%xmm5,%xmm6{%k7}");
2434
2435        /* AVX-512: Op code 0f 38 4e */
2436
2437        asm volatile("vrsqrt14ps %zmm5,%zmm6");
2438        asm volatile("vrsqrt14pd %zmm5,%zmm6");
2439
2440        /* AVX-512: Op code 0f 38 4f */
2441
2442        asm volatile("vrsqrt14ss %xmm4,%xmm5,%xmm6{%k7}");
2443        asm volatile("vrsqrt14sd %xmm4,%xmm5,%xmm6{%k7}");
2444
2445        /* AVX-512: Op code 0f 38 50 */
2446
2447        asm volatile("vpdpbusd %xmm1, %xmm2, %xmm3");
2448        asm volatile("vpdpbusd %ymm1, %ymm2, %ymm3");
2449        asm volatile("vpdpbusd %zmm1, %zmm2, %zmm3");
2450        asm volatile("vpdpbusd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2451
2452        /* AVX-512: Op code 0f 38 51 */
2453
2454        asm volatile("vpdpbusds %xmm1, %xmm2, %xmm3");
2455        asm volatile("vpdpbusds %ymm1, %ymm2, %ymm3");
2456        asm volatile("vpdpbusds %zmm1, %zmm2, %zmm3");
2457        asm volatile("vpdpbusds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2458
2459        /* AVX-512: Op code 0f 38 52 */
2460
2461        asm volatile("vdpbf16ps %xmm1, %xmm2, %xmm3");
2462        asm volatile("vdpbf16ps %ymm1, %ymm2, %ymm3");
2463        asm volatile("vdpbf16ps %zmm1, %zmm2, %zmm3");
2464        asm volatile("vdpbf16ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2465
2466        asm volatile("vpdpwssd %xmm1, %xmm2, %xmm3");
2467        asm volatile("vpdpwssd %ymm1, %ymm2, %ymm3");
2468        asm volatile("vpdpwssd %zmm1, %zmm2, %zmm3");
2469        asm volatile("vpdpwssd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2470
2471        asm volatile("vp4dpwssd (%eax), %zmm0, %zmm4");
2472        asm volatile("vp4dpwssd 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
2473
2474        /* AVX-512: Op code 0f 38 53 */
2475
2476        asm volatile("vpdpwssds %xmm1, %xmm2, %xmm3");
2477        asm volatile("vpdpwssds %ymm1, %ymm2, %ymm3");
2478        asm volatile("vpdpwssds %zmm1, %zmm2, %zmm3");
2479        asm volatile("vpdpwssds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2480
2481        asm volatile("vp4dpwssds (%eax), %zmm0, %zmm4");
2482        asm volatile("vp4dpwssds 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
2483
2484        /* AVX-512: Op code 0f 38 54 */
2485
2486        asm volatile("vpopcntb %xmm1, %xmm2");
2487        asm volatile("vpopcntb %ymm1, %ymm2");
2488        asm volatile("vpopcntb %zmm1, %zmm2");
2489        asm volatile("vpopcntb 0x12345678(%eax,%ecx,8),%zmm2");
2490
2491        asm volatile("vpopcntw %xmm1, %xmm2");
2492        asm volatile("vpopcntw %ymm1, %ymm2");
2493        asm volatile("vpopcntw %zmm1, %zmm2");
2494        asm volatile("vpopcntw 0x12345678(%eax,%ecx,8),%zmm2");
2495
2496        /* AVX-512: Op code 0f 38 55 */
2497
2498        asm volatile("vpopcntd %xmm1, %xmm2");
2499        asm volatile("vpopcntd %ymm1, %ymm2");
2500        asm volatile("vpopcntd %zmm1, %zmm2");
2501        asm volatile("vpopcntd 0x12345678(%eax,%ecx,8),%zmm2");
2502
2503        asm volatile("vpopcntq %xmm1, %xmm2");
2504        asm volatile("vpopcntq %ymm1, %ymm2");
2505        asm volatile("vpopcntq %zmm1, %zmm2");
2506        asm volatile("vpopcntq 0x12345678(%eax,%ecx,8),%zmm2");
2507
2508        /* AVX-512: Op code 0f 38 59 */
2509
2510        asm volatile("vpbroadcastq %xmm4,%xmm6");
2511        asm volatile("vbroadcasti32x2 %xmm7,%zmm6");
2512
2513        /* AVX-512: Op code 0f 38 5a */
2514
2515        asm volatile("vbroadcasti128 (%ecx),%ymm4");
2516        asm volatile("vbroadcasti32x4 (%ecx),%zmm6");
2517        asm volatile("vbroadcasti64x2 (%ecx),%zmm6");
2518
2519        /* AVX-512: Op code 0f 38 5b */
2520
2521        asm volatile("vbroadcasti32x8 (%ecx),%zmm6");
2522        asm volatile("vbroadcasti64x4 (%ecx),%zmm6");
2523
2524        /* AVX-512: Op code 0f 38 62 */
2525
2526        asm volatile("vpexpandb %xmm1, %xmm2");
2527        asm volatile("vpexpandb %ymm1, %ymm2");
2528        asm volatile("vpexpandb %zmm1, %zmm2");
2529        asm volatile("vpexpandb 0x12345678(%eax,%ecx,8),%zmm2");
2530
2531        asm volatile("vpexpandw %xmm1, %xmm2");
2532        asm volatile("vpexpandw %ymm1, %ymm2");
2533        asm volatile("vpexpandw %zmm1, %zmm2");
2534        asm volatile("vpexpandw 0x12345678(%eax,%ecx,8),%zmm2");
2535
2536        /* AVX-512: Op code 0f 38 63 */
2537
2538        asm volatile("vpcompressb %xmm1, %xmm2");
2539        asm volatile("vpcompressb %ymm1, %ymm2");
2540        asm volatile("vpcompressb %zmm1, %zmm2");
2541        asm volatile("vpcompressb %zmm2,0x12345678(%eax,%ecx,8)");
2542
2543        asm volatile("vpcompressw %xmm1, %xmm2");
2544        asm volatile("vpcompressw %ymm1, %ymm2");
2545        asm volatile("vpcompressw %zmm1, %zmm2");
2546        asm volatile("vpcompressw %zmm2,0x12345678(%eax,%ecx,8)");
2547
2548        /* AVX-512: Op code 0f 38 64 */
2549
2550        asm volatile("vpblendmd %zmm4,%zmm5,%zmm6");
2551        asm volatile("vpblendmq %zmm4,%zmm5,%zmm6");
2552
2553        /* AVX-512: Op code 0f 38 65 */
2554
2555        asm volatile("vblendmps %zmm4,%zmm5,%zmm6");
2556        asm volatile("vblendmpd %zmm4,%zmm5,%zmm6");
2557
2558        /* AVX-512: Op code 0f 38 66 */
2559
2560        asm volatile("vpblendmb %zmm4,%zmm5,%zmm6");
2561        asm volatile("vpblendmw %zmm4,%zmm5,%zmm6");
2562
2563        /* AVX-512: Op code 0f 38 68 */
2564
2565        asm volatile("vp2intersectd %xmm1, %xmm2, %k3");
2566        asm volatile("vp2intersectd %ymm1, %ymm2, %k3");
2567        asm volatile("vp2intersectd %zmm1, %zmm2, %k3");
2568        asm volatile("vp2intersectd 0x12345678(%eax,%ecx,8),%zmm2,%k3");
2569
2570        asm volatile("vp2intersectq %xmm1, %xmm2, %k3");
2571        asm volatile("vp2intersectq %ymm1, %ymm2, %k3");
2572        asm volatile("vp2intersectq %zmm1, %zmm2, %k3");
2573        asm volatile("vp2intersectq 0x12345678(%eax,%ecx,8),%zmm2,%k3");
2574
2575        /* AVX-512: Op code 0f 38 70 */
2576
2577        asm volatile("vpshldvw %xmm1, %xmm2, %xmm3");
2578        asm volatile("vpshldvw %ymm1, %ymm2, %ymm3");
2579        asm volatile("vpshldvw %zmm1, %zmm2, %zmm3");
2580        asm volatile("vpshldvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2581
2582        /* AVX-512: Op code 0f 38 71 */
2583
2584        asm volatile("vpshldvd %xmm1, %xmm2, %xmm3");
2585        asm volatile("vpshldvd %ymm1, %ymm2, %ymm3");
2586        asm volatile("vpshldvd %zmm1, %zmm2, %zmm3");
2587        asm volatile("vpshldvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2588
2589        asm volatile("vpshldvq %xmm1, %xmm2, %xmm3");
2590        asm volatile("vpshldvq %ymm1, %ymm2, %ymm3");
2591        asm volatile("vpshldvq %zmm1, %zmm2, %zmm3");
2592        asm volatile("vpshldvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2593
2594        /* AVX-512: Op code 0f 38 72 */
2595
2596        asm volatile("vcvtne2ps2bf16 %xmm1, %xmm2, %xmm3");
2597        asm volatile("vcvtne2ps2bf16 %ymm1, %ymm2, %ymm3");
2598        asm volatile("vcvtne2ps2bf16 %zmm1, %zmm2, %zmm3");
2599        asm volatile("vcvtne2ps2bf16 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2600
2601        asm volatile("vcvtneps2bf16 %xmm1, %xmm2");
2602        asm volatile("vcvtneps2bf16 %ymm1, %xmm2");
2603        asm volatile("vcvtneps2bf16 %zmm1, %ymm2");
2604        asm volatile("vcvtneps2bf16 0x12345678(%eax,%ecx,8),%ymm2");
2605
2606        asm volatile("vpshrdvw %xmm1, %xmm2, %xmm3");
2607        asm volatile("vpshrdvw %ymm1, %ymm2, %ymm3");
2608        asm volatile("vpshrdvw %zmm1, %zmm2, %zmm3");
2609        asm volatile("vpshrdvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2610
2611        /* AVX-512: Op code 0f 38 73 */
2612
2613        asm volatile("vpshrdvd %xmm1, %xmm2, %xmm3");
2614        asm volatile("vpshrdvd %ymm1, %ymm2, %ymm3");
2615        asm volatile("vpshrdvd %zmm1, %zmm2, %zmm3");
2616        asm volatile("vpshrdvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2617
2618        asm volatile("vpshrdvq %xmm1, %xmm2, %xmm3");
2619        asm volatile("vpshrdvq %ymm1, %ymm2, %ymm3");
2620        asm volatile("vpshrdvq %zmm1, %zmm2, %zmm3");
2621        asm volatile("vpshrdvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2622
2623        /* AVX-512: Op code 0f 38 75 */
2624
2625        asm volatile("vpermi2b %zmm4,%zmm5,%zmm6");
2626        asm volatile("vpermi2w %zmm4,%zmm5,%zmm6");
2627
2628        /* AVX-512: Op code 0f 38 76 */
2629
2630        asm volatile("vpermi2d %zmm4,%zmm5,%zmm6");
2631        asm volatile("vpermi2q %zmm4,%zmm5,%zmm6");
2632
2633        /* AVX-512: Op code 0f 38 77 */
2634
2635        asm volatile("vpermi2ps %zmm4,%zmm5,%zmm6");
2636        asm volatile("vpermi2pd %zmm4,%zmm5,%zmm6");
2637
2638        /* AVX-512: Op code 0f 38 7a */
2639
2640        asm volatile("vpbroadcastb %eax,%xmm3");
2641
2642        /* AVX-512: Op code 0f 38 7b */
2643
2644        asm volatile("vpbroadcastw %eax,%xmm3");
2645
2646        /* AVX-512: Op code 0f 38 7c */
2647
2648        asm volatile("vpbroadcastd %eax,%xmm3");
2649
2650        /* AVX-512: Op code 0f 38 7d */
2651
2652        asm volatile("vpermt2b %zmm4,%zmm5,%zmm6");
2653        asm volatile("vpermt2w %zmm4,%zmm5,%zmm6");
2654
2655        /* AVX-512: Op code 0f 38 7e */
2656
2657        asm volatile("vpermt2d %zmm4,%zmm5,%zmm6");
2658        asm volatile("vpermt2q %zmm4,%zmm5,%zmm6");
2659
2660        /* AVX-512: Op code 0f 38 7f */
2661
2662        asm volatile("vpermt2ps %zmm4,%zmm5,%zmm6");
2663        asm volatile("vpermt2pd %zmm4,%zmm5,%zmm6");
2664
2665        /* AVX-512: Op code 0f 38 83 */
2666
2667        asm volatile("vpmultishiftqb %zmm4,%zmm5,%zmm6");
2668
2669        /* AVX-512: Op code 0f 38 88 */
2670
2671        asm volatile("vexpandps (%ecx),%zmm6");
2672        asm volatile("vexpandpd (%ecx),%zmm6");
2673
2674        /* AVX-512: Op code 0f 38 89 */
2675
2676        asm volatile("vpexpandd (%ecx),%zmm6");
2677        asm volatile("vpexpandq (%ecx),%zmm6");
2678
2679        /* AVX-512: Op code 0f 38 8a */
2680
2681        asm volatile("vcompressps %zmm6,(%ecx)");
2682        asm volatile("vcompresspd %zmm6,(%ecx)");
2683
2684        /* AVX-512: Op code 0f 38 8b */
2685
2686        asm volatile("vpcompressd %zmm6,(%ecx)");
2687        asm volatile("vpcompressq %zmm6,(%ecx)");
2688
2689        /* AVX-512: Op code 0f 38 8d */
2690
2691        asm volatile("vpermb %zmm4,%zmm5,%zmm6");
2692        asm volatile("vpermw %zmm4,%zmm5,%zmm6");
2693
2694        /* AVX-512: Op code 0f 38 8f */
2695
2696        asm volatile("vpshufbitqmb %xmm1, %xmm2, %k3");
2697        asm volatile("vpshufbitqmb %ymm1, %ymm2, %k3");
2698        asm volatile("vpshufbitqmb %zmm1, %zmm2, %k3");
2699        asm volatile("vpshufbitqmb 0x12345678(%eax,%ecx,8),%zmm2,%k3");
2700
2701        /* AVX-512: Op code 0f 38 90 */
2702
2703        asm volatile("vpgatherdd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2704        asm volatile("vpgatherdq %xmm2,0x04(%ebp,%xmm7,2),%xmm1");
2705        asm volatile("vpgatherdd 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
2706        asm volatile("vpgatherdq 0x7b(%ebp,%ymm7,8),%zmm6{%k1}");
2707
2708        /* AVX-512: Op code 0f 38 91 */
2709
2710        asm volatile("vpgatherqd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2711        asm volatile("vpgatherqq %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2712        asm volatile("vpgatherqd 0x7b(%ebp,%zmm7,8),%ymm6{%k1}");
2713        asm volatile("vpgatherqq 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
2714
2715        /* AVX-512: Op code 0f 38 9a */
2716
2717        asm volatile("vfmsub132ps %xmm1, %xmm2, %xmm3");
2718        asm volatile("vfmsub132ps %ymm1, %ymm2, %ymm3");
2719        asm volatile("vfmsub132ps %zmm1, %zmm2, %zmm3");
2720        asm volatile("vfmsub132ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2721
2722        asm volatile("vfmsub132pd %xmm1, %xmm2, %xmm3");
2723        asm volatile("vfmsub132pd %ymm1, %ymm2, %ymm3");
2724        asm volatile("vfmsub132pd %zmm1, %zmm2, %zmm3");
2725        asm volatile("vfmsub132pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2726
2727        asm volatile("v4fmaddps (%eax), %zmm0, %zmm4");
2728        asm volatile("v4fmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
2729
2730        /* AVX-512: Op code 0f 38 9b */
2731
2732        asm volatile("vfmsub132ss %xmm1, %xmm2, %xmm3");
2733        asm volatile("vfmsub132ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
2734
2735        asm volatile("vfmsub132sd %xmm1, %xmm2, %xmm3");
2736        asm volatile("vfmsub132sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
2737
2738        asm volatile("v4fmaddss (%eax), %xmm0, %xmm4");
2739        asm volatile("v4fmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
2740
2741        /* AVX-512: Op code 0f 38 a0 */
2742
2743        asm volatile("vpscatterdd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2744        asm volatile("vpscatterdq %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2745
2746        /* AVX-512: Op code 0f 38 a1 */
2747
2748        asm volatile("vpscatterqd %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2749        asm volatile("vpscatterqq %ymm6,0x7b(%ebp,%ymm7,8){%k1}");
2750
2751        /* AVX-512: Op code 0f 38 a2 */
2752
2753        asm volatile("vscatterdps %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2754        asm volatile("vscatterdpd %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2755
2756        /* AVX-512: Op code 0f 38 a3 */
2757
2758        asm volatile("vscatterqps %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2759        asm volatile("vscatterqpd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2760
2761        /* AVX-512: Op code 0f 38 aa */
2762
2763        asm volatile("vfmsub213ps %xmm1, %xmm2, %xmm3");
2764        asm volatile("vfmsub213ps %ymm1, %ymm2, %ymm3");
2765        asm volatile("vfmsub213ps %zmm1, %zmm2, %zmm3");
2766        asm volatile("vfmsub213ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2767
2768        asm volatile("vfmsub213pd %xmm1, %xmm2, %xmm3");
2769        asm volatile("vfmsub213pd %ymm1, %ymm2, %ymm3");
2770        asm volatile("vfmsub213pd %zmm1, %zmm2, %zmm3");
2771        asm volatile("vfmsub213pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2772
2773        asm volatile("v4fnmaddps (%eax), %zmm0, %zmm4");
2774        asm volatile("v4fnmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
2775
2776        /* AVX-512: Op code 0f 38 ab */
2777
2778        asm volatile("vfmsub213ss %xmm1, %xmm2, %xmm3");
2779        asm volatile("vfmsub213ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
2780
2781        asm volatile("vfmsub213sd %xmm1, %xmm2, %xmm3");
2782        asm volatile("vfmsub213sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
2783
2784        asm volatile("v4fnmaddss (%eax), %xmm0, %xmm4");
2785        asm volatile("v4fnmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
2786
2787        /* AVX-512: Op code 0f 38 b4 */
2788
2789        asm volatile("vpmadd52luq %zmm4,%zmm5,%zmm6");
2790
2791        /* AVX-512: Op code 0f 38 b5 */
2792
2793        asm volatile("vpmadd52huq %zmm4,%zmm5,%zmm6");
2794
2795        /* AVX-512: Op code 0f 38 c4 */
2796
2797        asm volatile("vpconflictd %zmm5,%zmm6");
2798        asm volatile("vpconflictq %zmm5,%zmm6");
2799
2800        /* AVX-512: Op code 0f 38 c8 */
2801
2802        asm volatile("vexp2ps %zmm6,%zmm7");
2803        asm volatile("vexp2pd %zmm6,%zmm7");
2804
2805        /* AVX-512: Op code 0f 38 ca */
2806
2807        asm volatile("vrcp28ps %zmm6,%zmm7");
2808        asm volatile("vrcp28pd %zmm6,%zmm7");
2809
2810        /* AVX-512: Op code 0f 38 cb */
2811
2812        asm volatile("vrcp28ss %xmm5,%xmm6,%xmm7{%k7}");
2813        asm volatile("vrcp28sd %xmm5,%xmm6,%xmm7{%k7}");
2814
2815        /* AVX-512: Op code 0f 38 cc */
2816
2817        asm volatile("vrsqrt28ps %zmm6,%zmm7");
2818        asm volatile("vrsqrt28pd %zmm6,%zmm7");
2819
2820        /* AVX-512: Op code 0f 38 cd */
2821
2822        asm volatile("vrsqrt28ss %xmm5,%xmm6,%xmm7{%k7}");
2823        asm volatile("vrsqrt28sd %xmm5,%xmm6,%xmm7{%k7}");
2824
2825        /* AVX-512: Op code 0f 38 cf */
2826
2827        asm volatile("gf2p8mulb %xmm1, %xmm3");
2828        asm volatile("gf2p8mulb 0x12345678(%eax,%ecx,8),%xmm3");
2829
2830        asm volatile("vgf2p8mulb %xmm1, %xmm2, %xmm3");
2831        asm volatile("vgf2p8mulb %ymm1, %ymm2, %ymm3");
2832        asm volatile("vgf2p8mulb %zmm1, %zmm2, %zmm3");
2833        asm volatile("vgf2p8mulb 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2834
2835        /* AVX-512: Op code 0f 38 dc */
2836
2837        asm volatile("vaesenc %xmm1, %xmm2, %xmm3");
2838        asm volatile("vaesenc %ymm1, %ymm2, %ymm3");
2839        asm volatile("vaesenc %zmm1, %zmm2, %zmm3");
2840        asm volatile("vaesenc 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2841
2842        /* AVX-512: Op code 0f 38 dd */
2843
2844        asm volatile("vaesenclast %xmm1, %xmm2, %xmm3");
2845        asm volatile("vaesenclast %ymm1, %ymm2, %ymm3");
2846        asm volatile("vaesenclast %zmm1, %zmm2, %zmm3");
2847        asm volatile("vaesenclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2848
2849        /* AVX-512: Op code 0f 38 de */
2850
2851        asm volatile("vaesdec %xmm1, %xmm2, %xmm3");
2852        asm volatile("vaesdec %ymm1, %ymm2, %ymm3");
2853        asm volatile("vaesdec %zmm1, %zmm2, %zmm3");
2854        asm volatile("vaesdec 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2855
2856        /* AVX-512: Op code 0f 38 df */
2857
2858        asm volatile("vaesdeclast %xmm1, %xmm2, %xmm3");
2859        asm volatile("vaesdeclast %ymm1, %ymm2, %ymm3");
2860        asm volatile("vaesdeclast %zmm1, %zmm2, %zmm3");
2861        asm volatile("vaesdeclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2862
2863        /* AVX-512: Op code 0f 3a 03 */
2864
2865        asm volatile("valignd $0x12,%zmm5,%zmm6,%zmm7");
2866        asm volatile("valignq $0x12,%zmm5,%zmm6,%zmm7");
2867
2868        /* AVX-512: Op code 0f 3a 08 */
2869
2870        asm volatile("vroundps $0x5,%ymm6,%ymm2");
2871        asm volatile("vrndscaleps $0x12,%zmm5,%zmm6");
2872
2873        /* AVX-512: Op code 0f 3a 09 */
2874
2875        asm volatile("vroundpd $0x5,%ymm6,%ymm2");
2876        asm volatile("vrndscalepd $0x12,%zmm5,%zmm6");
2877
2878        /* AVX-512: Op code 0f 3a 0a */
2879
2880        asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
2881        asm volatile("vrndscaless $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2882
2883        /* AVX-512: Op code 0f 3a 0b */
2884
2885        asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
2886        asm volatile("vrndscalesd $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2887
2888        /* AVX-512: Op code 0f 3a 18 */
2889
2890        asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
2891        asm volatile("vinsertf32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2892        asm volatile("vinsertf64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2893
2894        /* AVX-512: Op code 0f 3a 19 */
2895
2896        asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
2897        asm volatile("vextractf32x4 $0x12,%zmm5,%xmm6{%k7}");
2898        asm volatile("vextractf64x2 $0x12,%zmm5,%xmm6{%k7}");
2899
2900        /* AVX-512: Op code 0f 3a 1a */
2901
2902        asm volatile("vinsertf32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2903        asm volatile("vinsertf64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2904
2905        /* AVX-512: Op code 0f 3a 1b */
2906
2907        asm volatile("vextractf32x8 $0x12,%zmm6,%ymm7{%k7}");
2908        asm volatile("vextractf64x4 $0x12,%zmm6,%ymm7{%k7}");
2909
2910        /* AVX-512: Op code 0f 3a 1e */
2911
2912        asm volatile("vpcmpud $0x12,%zmm6,%zmm7,%k5");
2913        asm volatile("vpcmpuq $0x12,%zmm6,%zmm7,%k5");
2914
2915        /* AVX-512: Op code 0f 3a 1f */
2916
2917        asm volatile("vpcmpd $0x12,%zmm6,%zmm7,%k5");
2918        asm volatile("vpcmpq $0x12,%zmm6,%zmm7,%k5");
2919
2920        /* AVX-512: Op code 0f 3a 23 */
2921
2922        asm volatile("vshuff32x4 $0x12,%zmm5,%zmm6,%zmm7");
2923        asm volatile("vshuff64x2 $0x12,%zmm5,%zmm6,%zmm7");
2924
2925        /* AVX-512: Op code 0f 3a 25 */
2926
2927        asm volatile("vpternlogd $0x12,%zmm5,%zmm6,%zmm7");
2928        asm volatile("vpternlogq $0x12,%zmm5,%zmm6,%zmm7");
2929
2930        /* AVX-512: Op code 0f 3a 26 */
2931
2932        asm volatile("vgetmantps $0x12,%zmm6,%zmm7");
2933        asm volatile("vgetmantpd $0x12,%zmm6,%zmm7");
2934
2935        /* AVX-512: Op code 0f 3a 27 */
2936
2937        asm volatile("vgetmantss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2938        asm volatile("vgetmantsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2939
2940        /* AVX-512: Op code 0f 3a 38 */
2941
2942        asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
2943        asm volatile("vinserti32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2944        asm volatile("vinserti64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2945
2946        /* AVX-512: Op code 0f 3a 39 */
2947
2948        asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
2949        asm volatile("vextracti32x4 $0x12,%zmm5,%xmm6{%k7}");
2950        asm volatile("vextracti64x2 $0x12,%zmm5,%xmm6{%k7}");
2951
2952        /* AVX-512: Op code 0f 3a 3a */
2953
2954        asm volatile("vinserti32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2955        asm volatile("vinserti64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2956
2957        /* AVX-512: Op code 0f 3a 3b */
2958
2959        asm volatile("vextracti32x8 $0x12,%zmm6,%ymm7{%k7}");
2960        asm volatile("vextracti64x4 $0x12,%zmm6,%ymm7{%k7}");
2961
2962        /* AVX-512: Op code 0f 3a 3e */
2963
2964        asm volatile("vpcmpub $0x12,%zmm6,%zmm7,%k5");
2965        asm volatile("vpcmpuw $0x12,%zmm6,%zmm7,%k5");
2966
2967        /* AVX-512: Op code 0f 3a 3f */
2968
2969        asm volatile("vpcmpb $0x12,%zmm6,%zmm7,%k5");
2970        asm volatile("vpcmpw $0x12,%zmm6,%zmm7,%k5");
2971
2972        /* AVX-512: Op code 0f 3a 42 */
2973
2974        asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
2975        asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
2976
2977        /* AVX-512: Op code 0f 3a 43 */
2978
2979        asm volatile("vshufi32x4 $0x12,%zmm5,%zmm6,%zmm7");
2980        asm volatile("vshufi64x2 $0x12,%zmm5,%zmm6,%zmm7");
2981
2982        /* AVX-512: Op code 0f 3a 44 */
2983
2984        asm volatile("vpclmulqdq $0x12,%xmm1,%xmm2,%xmm3");
2985        asm volatile("vpclmulqdq $0x12,%ymm1,%ymm2,%ymm3");
2986        asm volatile("vpclmulqdq $0x12,%zmm1,%zmm2,%zmm3");
2987
2988        /* AVX-512: Op code 0f 3a 50 */
2989
2990        asm volatile("vrangeps $0x12,%zmm5,%zmm6,%zmm7");
2991        asm volatile("vrangepd $0x12,%zmm5,%zmm6,%zmm7");
2992
2993        /* AVX-512: Op code 0f 3a 51 */
2994
2995        asm volatile("vrangess $0x12,%xmm5,%xmm6,%xmm7");
2996        asm volatile("vrangesd $0x12,%xmm5,%xmm6,%xmm7");
2997
2998        /* AVX-512: Op code 0f 3a 54 */
2999
3000        asm volatile("vfixupimmps $0x12,%zmm5,%zmm6,%zmm7");
3001        asm volatile("vfixupimmpd $0x12,%zmm5,%zmm6,%zmm7");
3002
3003        /* AVX-512: Op code 0f 3a 55 */
3004
3005        asm volatile("vfixupimmss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
3006        asm volatile("vfixupimmsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
3007
3008        /* AVX-512: Op code 0f 3a 56 */
3009
3010        asm volatile("vreduceps $0x12,%zmm6,%zmm7");
3011        asm volatile("vreducepd $0x12,%zmm6,%zmm7");
3012
3013        /* AVX-512: Op code 0f 3a 57 */
3014
3015        asm volatile("vreducess $0x12,%xmm5,%xmm6,%xmm7");
3016        asm volatile("vreducesd $0x12,%xmm5,%xmm6,%xmm7");
3017
3018        /* AVX-512: Op code 0f 3a 66 */
3019
3020        asm volatile("vfpclassps $0x12,%zmm7,%k5");
3021        asm volatile("vfpclasspd $0x12,%zmm7,%k5");
3022
3023        /* AVX-512: Op code 0f 3a 67 */
3024
3025        asm volatile("vfpclassss $0x12,%xmm7,%k5");
3026        asm volatile("vfpclasssd $0x12,%xmm7,%k5");
3027
3028        /* AVX-512: Op code 0f 3a 70 */
3029
3030        asm volatile("vpshldw $0x12,%xmm1,%xmm2,%xmm3");
3031        asm volatile("vpshldw $0x12,%ymm1,%ymm2,%ymm3");
3032        asm volatile("vpshldw $0x12,%zmm1,%zmm2,%zmm3");
3033
3034        /* AVX-512: Op code 0f 3a 71 */
3035
3036        asm volatile("vpshldd $0x12,%xmm1,%xmm2,%xmm3");
3037        asm volatile("vpshldd $0x12,%ymm1,%ymm2,%ymm3");
3038        asm volatile("vpshldd $0x12,%zmm1,%zmm2,%zmm3");
3039
3040        asm volatile("vpshldq $0x12,%xmm1,%xmm2,%xmm3");
3041        asm volatile("vpshldq $0x12,%ymm1,%ymm2,%ymm3");
3042        asm volatile("vpshldq $0x12,%zmm1,%zmm2,%zmm3");
3043
3044        /* AVX-512: Op code 0f 3a 72 */
3045
3046        asm volatile("vpshrdw $0x12,%xmm1,%xmm2,%xmm3");
3047        asm volatile("vpshrdw $0x12,%ymm1,%ymm2,%ymm3");
3048        asm volatile("vpshrdw $0x12,%zmm1,%zmm2,%zmm3");
3049
3050        /* AVX-512: Op code 0f 3a 73 */
3051
3052        asm volatile("vpshrdd $0x12,%xmm1,%xmm2,%xmm3");
3053        asm volatile("vpshrdd $0x12,%ymm1,%ymm2,%ymm3");
3054        asm volatile("vpshrdd $0x12,%zmm1,%zmm2,%zmm3");
3055
3056        asm volatile("vpshrdq $0x12,%xmm1,%xmm2,%xmm3");
3057        asm volatile("vpshrdq $0x12,%ymm1,%ymm2,%ymm3");
3058        asm volatile("vpshrdq $0x12,%zmm1,%zmm2,%zmm3");
3059
3060        /* AVX-512: Op code 0f 3a ce */
3061
3062        asm volatile("gf2p8affineqb $0x12,%xmm1,%xmm3");
3063
3064        asm volatile("vgf2p8affineqb $0x12,%xmm1,%xmm2,%xmm3");
3065        asm volatile("vgf2p8affineqb $0x12,%ymm1,%ymm2,%ymm3");
3066        asm volatile("vgf2p8affineqb $0x12,%zmm1,%zmm2,%zmm3");
3067
3068        /* AVX-512: Op code 0f 3a cf */
3069
3070        asm volatile("gf2p8affineinvqb $0x12,%xmm1,%xmm3");
3071
3072        asm volatile("vgf2p8affineinvqb $0x12,%xmm1,%xmm2,%xmm3");
3073        asm volatile("vgf2p8affineinvqb $0x12,%ymm1,%ymm2,%ymm3");
3074        asm volatile("vgf2p8affineinvqb $0x12,%zmm1,%zmm2,%zmm3");
3075
3076        /* AVX-512: Op code 0f 72 (Grp13) */
3077
3078        asm volatile("vprord $0x12,%zmm5,%zmm6");
3079        asm volatile("vprorq $0x12,%zmm5,%zmm6");
3080        asm volatile("vprold $0x12,%zmm5,%zmm6");
3081        asm volatile("vprolq $0x12,%zmm5,%zmm6");
3082        asm volatile("psrad  $0x2,%mm6");
3083        asm volatile("vpsrad $0x5,%ymm6,%ymm2");
3084        asm volatile("vpsrad $0x5,%zmm6,%zmm2");
3085        asm volatile("vpsraq $0x5,%zmm6,%zmm2");
3086
3087        /* AVX-512: Op code 0f 38 c6 (Grp18) */
3088
3089        asm volatile("vgatherpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
3090        asm volatile("vgatherpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
3091        asm volatile("vgatherpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
3092        asm volatile("vgatherpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
3093        asm volatile("vscatterpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
3094        asm volatile("vscatterpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
3095        asm volatile("vscatterpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
3096        asm volatile("vscatterpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
3097
3098        /* AVX-512: Op code 0f 38 c7 (Grp19) */
3099
3100        asm volatile("vgatherpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
3101        asm volatile("vgatherpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
3102        asm volatile("vgatherpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
3103        asm volatile("vgatherpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
3104        asm volatile("vscatterpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
3105        asm volatile("vscatterpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
3106        asm volatile("vscatterpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
3107        asm volatile("vscatterpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
3108
3109        /* AVX-512: Examples */
3110
3111        asm volatile("vaddpd %zmm4,%zmm5,%zmm6");
3112        asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}");
3113        asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}{z}");
3114        asm volatile("vaddpd {rn-sae},%zmm4,%zmm5,%zmm6");
3115        asm volatile("vaddpd {ru-sae},%zmm4,%zmm5,%zmm6");
3116        asm volatile("vaddpd {rd-sae},%zmm4,%zmm5,%zmm6");
3117        asm volatile("vaddpd {rz-sae},%zmm4,%zmm5,%zmm6");
3118        asm volatile("vaddpd (%ecx),%zmm5,%zmm6");
3119        asm volatile("vaddpd 0x123(%eax,%ecx,8),%zmm5,%zmm6");
3120        asm volatile("vaddpd (%ecx){1to8},%zmm5,%zmm6");
3121        asm volatile("vaddpd 0x1fc0(%edx),%zmm5,%zmm6");
3122        asm volatile("vaddpd 0x3f8(%edx){1to8},%zmm5,%zmm6");
3123        asm volatile("vcmpeq_uqps 0x1fc(%edx){1to16},%zmm6,%k5");
3124        asm volatile("vcmpltsd 0x123(%eax,%ecx,8),%xmm3,%k5{%k7}");
3125        asm volatile("vcmplesd {sae},%xmm4,%xmm5,%k5{%k7}");
3126        asm volatile("vgetmantss $0x5b,0x123(%eax,%ecx,8),%xmm4,%xmm5{%k7}");
3127
3128        /* bndmk m32, bnd */
3129
3130        asm volatile("bndmk (%eax), %bnd0");
3131        asm volatile("bndmk (0x12345678), %bnd0");
3132        asm volatile("bndmk (%eax), %bnd3");
3133        asm volatile("bndmk (%ecx,%eax,1), %bnd0");
3134        asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
3135        asm volatile("bndmk (%eax,%ecx,1), %bnd0");
3136        asm volatile("bndmk (%eax,%ecx,8), %bnd0");
3137        asm volatile("bndmk 0x12(%eax), %bnd0");
3138        asm volatile("bndmk 0x12(%ebp), %bnd0");
3139        asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
3140        asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
3141        asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
3142        asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
3143        asm volatile("bndmk 0x12345678(%eax), %bnd0");
3144        asm volatile("bndmk 0x12345678(%ebp), %bnd0");
3145        asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
3146        asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
3147        asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
3148        asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
3149
3150        /* bndcl r/m32, bnd */
3151
3152        asm volatile("bndcl (%eax), %bnd0");
3153        asm volatile("bndcl (0x12345678), %bnd0");
3154        asm volatile("bndcl (%eax), %bnd3");
3155        asm volatile("bndcl (%ecx,%eax,1), %bnd0");
3156        asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
3157        asm volatile("bndcl (%eax,%ecx,1), %bnd0");
3158        asm volatile("bndcl (%eax,%ecx,8), %bnd0");
3159        asm volatile("bndcl 0x12(%eax), %bnd0");
3160        asm volatile("bndcl 0x12(%ebp), %bnd0");
3161        asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
3162        asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
3163        asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
3164        asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
3165        asm volatile("bndcl 0x12345678(%eax), %bnd0");
3166        asm volatile("bndcl 0x12345678(%ebp), %bnd0");
3167        asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
3168        asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
3169        asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
3170        asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
3171        asm volatile("bndcl %eax, %bnd0");
3172
3173        /* bndcu r/m32, bnd */
3174
3175        asm volatile("bndcu (%eax), %bnd0");
3176        asm volatile("bndcu (0x12345678), %bnd0");
3177        asm volatile("bndcu (%eax), %bnd3");
3178        asm volatile("bndcu (%ecx,%eax,1), %bnd0");
3179        asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
3180        asm volatile("bndcu (%eax,%ecx,1), %bnd0");
3181        asm volatile("bndcu (%eax,%ecx,8), %bnd0");
3182        asm volatile("bndcu 0x12(%eax), %bnd0");
3183        asm volatile("bndcu 0x12(%ebp), %bnd0");
3184        asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
3185        asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
3186        asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
3187        asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
3188        asm volatile("bndcu 0x12345678(%eax), %bnd0");
3189        asm volatile("bndcu 0x12345678(%ebp), %bnd0");
3190        asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
3191        asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
3192        asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
3193        asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
3194        asm volatile("bndcu %eax, %bnd0");
3195
3196        /* bndcn r/m32, bnd */
3197
3198        asm volatile("bndcn (%eax), %bnd0");
3199        asm volatile("bndcn (0x12345678), %bnd0");
3200        asm volatile("bndcn (%eax), %bnd3");
3201        asm volatile("bndcn (%ecx,%eax,1), %bnd0");
3202        asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
3203        asm volatile("bndcn (%eax,%ecx,1), %bnd0");
3204        asm volatile("bndcn (%eax,%ecx,8), %bnd0");
3205        asm volatile("bndcn 0x12(%eax), %bnd0");
3206        asm volatile("bndcn 0x12(%ebp), %bnd0");
3207        asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
3208        asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
3209        asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
3210        asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
3211        asm volatile("bndcn 0x12345678(%eax), %bnd0");
3212        asm volatile("bndcn 0x12345678(%ebp), %bnd0");
3213        asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
3214        asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
3215        asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
3216        asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
3217        asm volatile("bndcn %eax, %bnd0");
3218
3219        /* bndmov m64, bnd */
3220
3221        asm volatile("bndmov (%eax), %bnd0");
3222        asm volatile("bndmov (0x12345678), %bnd0");
3223        asm volatile("bndmov (%eax), %bnd3");
3224        asm volatile("bndmov (%ecx,%eax,1), %bnd0");
3225        asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
3226        asm volatile("bndmov (%eax,%ecx,1), %bnd0");
3227        asm volatile("bndmov (%eax,%ecx,8), %bnd0");
3228        asm volatile("bndmov 0x12(%eax), %bnd0");
3229        asm volatile("bndmov 0x12(%ebp), %bnd0");
3230        asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
3231        asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
3232        asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
3233        asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
3234        asm volatile("bndmov 0x12345678(%eax), %bnd0");
3235        asm volatile("bndmov 0x12345678(%ebp), %bnd0");
3236        asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
3237        asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
3238        asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
3239        asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
3240
3241        /* bndmov bnd, m64 */
3242
3243        asm volatile("bndmov %bnd0, (%eax)");
3244        asm volatile("bndmov %bnd0, (0x12345678)");
3245        asm volatile("bndmov %bnd3, (%eax)");
3246        asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
3247        asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
3248        asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
3249        asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
3250        asm volatile("bndmov %bnd0, 0x12(%eax)");
3251        asm volatile("bndmov %bnd0, 0x12(%ebp)");
3252        asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
3253        asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
3254        asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
3255        asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
3256        asm volatile("bndmov %bnd0, 0x12345678(%eax)");
3257        asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
3258        asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
3259        asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
3260        asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
3261        asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
3262
3263        /* bndmov bnd2, bnd1 */
3264
3265        asm volatile("bndmov %bnd0, %bnd1");
3266        asm volatile("bndmov %bnd1, %bnd0");
3267
3268        /* bndldx mib, bnd */
3269
3270        asm volatile("bndldx (%eax), %bnd0");
3271        asm volatile("bndldx (0x12345678), %bnd0");
3272        asm volatile("bndldx (%eax), %bnd3");
3273        asm volatile("bndldx (%ecx,%eax,1), %bnd0");
3274        asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
3275        asm volatile("bndldx (%eax,%ecx,1), %bnd0");
3276        asm volatile("bndldx 0x12(%eax), %bnd0");
3277        asm volatile("bndldx 0x12(%ebp), %bnd0");
3278        asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
3279        asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
3280        asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
3281        asm volatile("bndldx 0x12345678(%eax), %bnd0");
3282        asm volatile("bndldx 0x12345678(%ebp), %bnd0");
3283        asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
3284        asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
3285        asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
3286
3287        /* bndstx bnd, mib */
3288
3289        asm volatile("bndstx %bnd0, (%eax)");
3290        asm volatile("bndstx %bnd0, (0x12345678)");
3291        asm volatile("bndstx %bnd3, (%eax)");
3292        asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
3293        asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
3294        asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
3295        asm volatile("bndstx %bnd0, 0x12(%eax)");
3296        asm volatile("bndstx %bnd0, 0x12(%ebp)");
3297        asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
3298        asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
3299        asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
3300        asm volatile("bndstx %bnd0, 0x12345678(%eax)");
3301        asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
3302        asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
3303        asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
3304        asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
3305
3306        /* bnd prefix on call, ret, jmp and all jcc */
3307
3308        asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
3309        asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
3310        asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
3311        asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
3312        asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
3313        asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
3314        asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
3315
3316        /* sha1rnds4 imm8, xmm2/m128, xmm1 */
3317
3318        asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
3319        asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
3320        asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
3321        asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
3322        asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
3323        asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
3324        asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
3325        asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
3326        asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
3327        asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
3328        asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
3329        asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
3330        asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
3331        asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
3332        asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
3333        asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
3334        asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
3335        asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
3336        asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
3337        asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
3338        asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
3339
3340        /* sha1nexte xmm2/m128, xmm1 */
3341
3342        asm volatile("sha1nexte %xmm1, %xmm0");
3343        asm volatile("sha1nexte %xmm7, %xmm2");
3344        asm volatile("sha1nexte (%eax), %xmm0");
3345        asm volatile("sha1nexte (0x12345678), %xmm0");
3346        asm volatile("sha1nexte (%eax), %xmm3");
3347        asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
3348        asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
3349        asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
3350        asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
3351        asm volatile("sha1nexte 0x12(%eax), %xmm0");
3352        asm volatile("sha1nexte 0x12(%ebp), %xmm0");
3353        asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
3354        asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
3355        asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
3356        asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
3357        asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
3358        asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
3359        asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
3360        asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
3361        asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
3362        asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
3363
3364        /* sha1msg1 xmm2/m128, xmm1 */
3365
3366        asm volatile("sha1msg1 %xmm1, %xmm0");
3367        asm volatile("sha1msg1 %xmm7, %xmm2");
3368        asm volatile("sha1msg1 (%eax), %xmm0");
3369        asm volatile("sha1msg1 (0x12345678), %xmm0");
3370        asm volatile("sha1msg1 (%eax), %xmm3");
3371        asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
3372        asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
3373        asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
3374        asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
3375        asm volatile("sha1msg1 0x12(%eax), %xmm0");
3376        asm volatile("sha1msg1 0x12(%ebp), %xmm0");
3377        asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
3378        asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
3379        asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
3380        asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
3381        asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
3382        asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
3383        asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
3384        asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
3385        asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
3386        asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
3387
3388        /* sha1msg2 xmm2/m128, xmm1 */
3389
3390        asm volatile("sha1msg2 %xmm1, %xmm0");
3391        asm volatile("sha1msg2 %xmm7, %xmm2");
3392        asm volatile("sha1msg2 (%eax), %xmm0");
3393        asm volatile("sha1msg2 (0x12345678), %xmm0");
3394        asm volatile("sha1msg2 (%eax), %xmm3");
3395        asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
3396        asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
3397        asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
3398        asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
3399        asm volatile("sha1msg2 0x12(%eax), %xmm0");
3400        asm volatile("sha1msg2 0x12(%ebp), %xmm0");
3401        asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
3402        asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
3403        asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
3404        asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
3405        asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
3406        asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
3407        asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
3408        asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
3409        asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
3410        asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
3411
3412        /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
3413        /* Note sha256rnds2 has an implicit operand 'xmm0' */
3414
3415        asm volatile("sha256rnds2 %xmm4, %xmm1");
3416        asm volatile("sha256rnds2 %xmm7, %xmm2");
3417        asm volatile("sha256rnds2 (%eax), %xmm1");
3418        asm volatile("sha256rnds2 (0x12345678), %xmm1");
3419        asm volatile("sha256rnds2 (%eax), %xmm3");
3420        asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
3421        asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
3422        asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
3423        asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
3424        asm volatile("sha256rnds2 0x12(%eax), %xmm1");
3425        asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
3426        asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
3427        asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
3428        asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
3429        asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
3430        asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
3431        asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
3432        asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
3433        asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
3434        asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
3435        asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
3436
3437        /* sha256msg1 xmm2/m128, xmm1 */
3438
3439        asm volatile("sha256msg1 %xmm1, %xmm0");
3440        asm volatile("sha256msg1 %xmm7, %xmm2");
3441        asm volatile("sha256msg1 (%eax), %xmm0");
3442        asm volatile("sha256msg1 (0x12345678), %xmm0");
3443        asm volatile("sha256msg1 (%eax), %xmm3");
3444        asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
3445        asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
3446        asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
3447        asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
3448        asm volatile("sha256msg1 0x12(%eax), %xmm0");
3449        asm volatile("sha256msg1 0x12(%ebp), %xmm0");
3450        asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
3451        asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
3452        asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
3453        asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
3454        asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
3455        asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
3456        asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
3457        asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
3458        asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
3459        asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
3460
3461        /* sha256msg2 xmm2/m128, xmm1 */
3462
3463        asm volatile("sha256msg2 %xmm1, %xmm0");
3464        asm volatile("sha256msg2 %xmm7, %xmm2");
3465        asm volatile("sha256msg2 (%eax), %xmm0");
3466        asm volatile("sha256msg2 (0x12345678), %xmm0");
3467        asm volatile("sha256msg2 (%eax), %xmm3");
3468        asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
3469        asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
3470        asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
3471        asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
3472        asm volatile("sha256msg2 0x12(%eax), %xmm0");
3473        asm volatile("sha256msg2 0x12(%ebp), %xmm0");
3474        asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
3475        asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
3476        asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
3477        asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
3478        asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
3479        asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
3480        asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
3481        asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
3482        asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
3483        asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
3484
3485        /* clflushopt m8 */
3486
3487        asm volatile("clflushopt (%eax)");
3488        asm volatile("clflushopt (0x12345678)");
3489        asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
3490        /* Also check instructions in the same group encoding as clflushopt */
3491        asm volatile("clflush (%eax)");
3492        asm volatile("sfence");
3493
3494        /* clwb m8 */
3495
3496        asm volatile("clwb (%eax)");
3497        asm volatile("clwb (0x12345678)");
3498        asm volatile("clwb 0x12345678(%eax,%ecx,8)");
3499        /* Also check instructions in the same group encoding as clwb */
3500        asm volatile("xsaveopt (%eax)");
3501        asm volatile("mfence");
3502
3503        /* cldemote m8 */
3504
3505        asm volatile("cldemote (%eax)");
3506        asm volatile("cldemote (0x12345678)");
3507        asm volatile("cldemote 0x12345678(%eax,%ecx,8)");
3508
3509        /* xsavec mem */
3510
3511        asm volatile("xsavec (%eax)");
3512        asm volatile("xsavec (0x12345678)");
3513        asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
3514
3515        /* xsaves mem */
3516
3517        asm volatile("xsaves (%eax)");
3518        asm volatile("xsaves (0x12345678)");
3519        asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
3520
3521        /* xrstors mem */
3522
3523        asm volatile("xrstors (%eax)");
3524        asm volatile("xrstors (0x12345678)");
3525        asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
3526
3527        /* ptwrite */
3528
3529        asm volatile("ptwrite (%eax)");
3530        asm volatile("ptwrite (0x12345678)");
3531        asm volatile("ptwrite 0x12345678(%eax,%ecx,8)");
3532
3533        asm volatile("ptwritel (%eax)");
3534        asm volatile("ptwritel (0x12345678)");
3535        asm volatile("ptwritel 0x12345678(%eax,%ecx,8)");
3536
3537        /* tpause */
3538
3539        asm volatile("tpause %ebx");
3540
3541        /* umonitor */
3542
3543        asm volatile("umonitor %ax");
3544        asm volatile("umonitor %eax");
3545
3546        /* umwait */
3547
3548        asm volatile("umwait %eax");
3549
3550        /* movdiri */
3551
3552        asm volatile("movdiri %eax,(%ebx)");
3553        asm volatile("movdiri %ecx,0x12345678(%eax)");
3554
3555        /* movdir64b */
3556
3557        asm volatile("movdir64b (%eax),%ebx");
3558        asm volatile("movdir64b 0x12345678(%eax),%ecx");
3559        asm volatile("movdir64b (%si),%bx");
3560        asm volatile("movdir64b 0x1234(%si),%cx");
3561
3562        /* enqcmd */
3563
3564        asm volatile("enqcmd (%eax),%ebx");
3565        asm volatile("enqcmd 0x12345678(%eax),%ecx");
3566        asm volatile("enqcmd (%si),%bx");
3567        asm volatile("enqcmd 0x1234(%si),%cx");
3568
3569        /* enqcmds */
3570
3571        asm volatile("enqcmds (%eax),%ebx");
3572        asm volatile("enqcmds 0x12345678(%eax),%ecx");
3573        asm volatile("enqcmds (%si),%bx");
3574        asm volatile("enqcmds 0x1234(%si),%cx");
3575
3576        /* incsspd */
3577
3578        asm volatile("incsspd %eax");
3579        /* Also check instructions in the same group encoding as incsspd */
3580        asm volatile("xrstor (%eax)");
3581        asm volatile("xrstor (0x12345678)");
3582        asm volatile("xrstor 0x12345678(%eax,%ecx,8)");
3583        asm volatile("lfence");
3584
3585        /* rdsspd */
3586
3587        asm volatile("rdsspd %eax");
3588
3589        /* saveprevssp */
3590
3591        asm volatile("saveprevssp");
3592
3593        /* rstorssp */
3594
3595        asm volatile("rstorssp (%eax)");
3596        asm volatile("rstorssp (0x12345678)");
3597        asm volatile("rstorssp 0x12345678(%eax,%ecx,8)");
3598
3599        /* wrssd */
3600
3601        asm volatile("wrssd %ecx,(%eax)");
3602        asm volatile("wrssd %edx,(0x12345678)");
3603        asm volatile("wrssd %edx,0x12345678(%eax,%ecx,8)");
3604
3605        /* wrussd */
3606
3607        asm volatile("wrussd %ecx,(%eax)");
3608        asm volatile("wrussd %edx,(0x12345678)");
3609        asm volatile("wrussd %edx,0x12345678(%eax,%ecx,8)");
3610
3611        /* setssbsy */
3612
3613        asm volatile("setssbsy");
3614        /* Also check instructions in the same group encoding as setssbsy */
3615        asm volatile("rdpkru");
3616        asm volatile("wrpkru");
3617
3618        /* clrssbsy */
3619
3620        asm volatile("clrssbsy (%eax)");
3621        asm volatile("clrssbsy (0x12345678)");
3622        asm volatile("clrssbsy 0x12345678(%eax,%ecx,8)");
3623
3624        /* endbr32/64 */
3625
3626        asm volatile("endbr32");
3627        asm volatile("endbr64");
3628
3629        /* call with/without notrack prefix */
3630
3631        asm volatile("call *%eax");                             /* Expecting: call indirect 0 */
3632        asm volatile("call *(%eax)");                           /* Expecting: call indirect 0 */
3633        asm volatile("call *(0x12345678)");                     /* Expecting: call indirect 0 */
3634        asm volatile("call *0x12345678(%eax,%ecx,8)");          /* Expecting: call indirect 0 */
3635
3636        asm volatile("bnd call *%eax");                         /* Expecting: call indirect 0 */
3637        asm volatile("bnd call *(%eax)");                       /* Expecting: call indirect 0 */
3638        asm volatile("bnd call *(0x12345678)");                 /* Expecting: call indirect 0 */
3639        asm volatile("bnd call *0x12345678(%eax,%ecx,8)");      /* Expecting: call indirect 0 */
3640
3641        asm volatile("notrack call *%eax");                     /* Expecting: call indirect 0 */
3642        asm volatile("notrack call *(%eax)");                   /* Expecting: call indirect 0 */
3643        asm volatile("notrack call *(0x12345678)");             /* Expecting: call indirect 0 */
3644        asm volatile("notrack call *0x12345678(%eax,%ecx,8)");  /* Expecting: call indirect 0 */
3645
3646        asm volatile("notrack bnd call *%eax");                 /* Expecting: call indirect 0 */
3647        asm volatile("notrack bnd call *(%eax)");               /* Expecting: call indirect 0 */
3648        asm volatile("notrack bnd call *(0x12345678)");         /* Expecting: call indirect 0 */
3649        asm volatile("notrack bnd call *0x12345678(%eax,%ecx,8)"); /* Expecting: call indirect 0 */
3650
3651        /* jmp with/without notrack prefix */
3652
3653        asm volatile("jmp *%eax");                              /* Expecting: jmp indirect 0 */
3654        asm volatile("jmp *(%eax)");                            /* Expecting: jmp indirect 0 */
3655        asm volatile("jmp *(0x12345678)");                      /* Expecting: jmp indirect 0 */
3656        asm volatile("jmp *0x12345678(%eax,%ecx,8)");           /* Expecting: jmp indirect 0 */
3657
3658        asm volatile("bnd jmp *%eax");                          /* Expecting: jmp indirect 0 */
3659        asm volatile("bnd jmp *(%eax)");                        /* Expecting: jmp indirect 0 */
3660        asm volatile("bnd jmp *(0x12345678)");                  /* Expecting: jmp indirect 0 */
3661        asm volatile("bnd jmp *0x12345678(%eax,%ecx,8)");       /* Expecting: jmp indirect 0 */
3662
3663        asm volatile("notrack jmp *%eax");                      /* Expecting: jmp indirect 0 */
3664        asm volatile("notrack jmp *(%eax)");                    /* Expecting: jmp indirect 0 */
3665        asm volatile("notrack jmp *(0x12345678)");              /* Expecting: jmp indirect 0 */
3666        asm volatile("notrack jmp *0x12345678(%eax,%ecx,8)");   /* Expecting: jmp indirect 0 */
3667
3668        asm volatile("notrack bnd jmp *%eax");                  /* Expecting: jmp indirect 0 */
3669        asm volatile("notrack bnd jmp *(%eax)");                /* Expecting: jmp indirect 0 */
3670        asm volatile("notrack bnd jmp *(0x12345678)");          /* Expecting: jmp indirect 0 */
3671        asm volatile("notrack bnd jmp *0x12345678(%eax,%ecx,8)"); /* Expecting: jmp indirect 0 */
3672
3673#endif /* #ifndef __x86_64__ */
3674
3675        /* SGX */
3676
3677        asm volatile("encls");
3678        asm volatile("enclu");
3679        asm volatile("enclv");
3680
3681        /* pconfig */
3682
3683        asm volatile("pconfig");
3684
3685        /* wbnoinvd */
3686
3687        asm volatile("wbnoinvd");
3688
3689        /* Following line is a marker for the awk script - do not change */
3690        asm volatile("rdtsc"); /* Stop here */
3691
3692        return 0;
3693}
3694