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