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