1 #include "l.h" 2 3 uchar ynone[] = 4 { 5 Ynone, Ynone, Zlit, 1, 6 0 7 }; 8 uchar ytext[] = 9 { 10 Ymb, Yi32, Zpseudo,1, 11 0 12 }; 13 uchar ynop[] = 14 { 15 Ynone, Ynone, Zpseudo,1, 16 Ynone, Yml, Zpseudo,1, 17 Ynone, Yrf, Zpseudo,1, 18 Yml, Ynone, Zpseudo,1, 19 Yrf, Ynone, Zpseudo,1, 20 0 21 }; 22 uchar yxorb[] = 23 { 24 Yi32, Yal, Zib_, 1, 25 Yi32, Ymb, Zibo_m, 2, 26 Yrb, Ymb, Zr_m, 1, 27 Ymb, Yrb, Zm_r, 1, 28 0 29 }; 30 uchar yxorl[] = 31 { 32 Yi8, Yml, Zibo_m, 2, 33 Yi32, Yax, Zil_, 1, 34 Yi32, Yml, Zilo_m, 2, 35 Yrl, Yml, Zr_m, 1, 36 Yml, Yrl, Zm_r, 1, 37 0 38 }; 39 uchar yaddl[] = 40 { 41 Yi8, Yml, Zibo_m, 2, 42 Yi32, Yax, Zil_, 1, 43 Yi32, Yml, Zilo_m, 2, 44 Yrl, Yml, Zr_m, 1, 45 Yml, Yrl, Zm_r, 1, 46 0 47 }; 48 uchar yincb[] = 49 { 50 Ynone, Ymb, Zo_m, 2, 51 0 52 }; 53 uchar yincw[] = 54 { 55 Ynone, Yml, Zo_m, 2, 56 0 57 }; 58 uchar yincl[] = 59 { 60 Ynone, Yml, Zo_m, 2, 61 0 62 }; 63 uchar ycmpb[] = 64 { 65 Yal, Yi32, Z_ib, 1, 66 Ymb, Yi32, Zm_ibo, 2, 67 Ymb, Yrb, Zm_r, 1, 68 Yrb, Ymb, Zr_m, 1, 69 0 70 }; 71 uchar ycmpl[] = 72 { 73 Yml, Yi8, Zm_ibo, 2, 74 Yax, Yi32, Z_il, 1, 75 Yml, Yi32, Zm_ilo, 2, 76 Yml, Yrl, Zm_r, 1, 77 Yrl, Yml, Zr_m, 1, 78 0 79 }; 80 uchar yshb[] = 81 { 82 Yi1, Ymb, Zo_m, 2, 83 Yi32, Ymb, Zibo_m, 2, 84 Ycx, Ymb, Zo_m, 2, 85 0 86 }; 87 uchar yshl[] = 88 { 89 Yi1, Yml, Zo_m, 2, 90 Yi32, Yml, Zibo_m, 2, 91 Ycl, Yml, Zo_m, 2, 92 Ycx, Yml, Zo_m, 2, 93 0 94 }; 95 uchar ytestb[] = 96 { 97 Yi32, Yal, Zib_, 1, 98 Yi32, Ymb, Zibo_m, 2, 99 Yrb, Ymb, Zr_m, 1, 100 Ymb, Yrb, Zm_r, 1, 101 0 102 }; 103 uchar ytestl[] = 104 { 105 Yi32, Yax, Zil_, 1, 106 Yi32, Yml, Zilo_m, 2, 107 Yrl, Yml, Zr_m, 1, 108 Yml, Yrl, Zm_r, 1, 109 0 110 }; 111 uchar ymovb[] = 112 { 113 Yrb, Ymb, Zr_m, 1, 114 Ymb, Yrb, Zm_r, 1, 115 Yi32, Yrb, Zib_rp, 1, 116 Yi32, Ymb, Zibo_m, 2, 117 0 118 }; 119 uchar ymbs[] = 120 { 121 Ymb, Ynone, Zm_o, 2, 122 0 123 }; 124 uchar ybtl[] = 125 { 126 Yi8, Yml, Zibo_m, 2, 127 Yrl, Yml, Zr_m, 1, 128 0 129 }; 130 uchar ymovw[] = 131 { 132 Yrl, Yml, Zr_m, 1, 133 Yml, Yrl, Zm_r, 1, 134 Yi0, Yrl, Zclr, 1, 135 Yi32, Yrl, Zil_rp, 1, 136 Yi32, Yml, Zilo_m, 2, 137 Yiauto, Yrl, Zaut_r, 2, 138 0 139 }; 140 uchar ymovl[] = 141 { 142 Yrl, Yml, Zr_m, 1, 143 Yml, Yrl, Zm_r, 1, 144 Yi0, Yrl, Zclr, 1, 145 Yi32, Yrl, Zil_rp, 1, 146 Yi32, Yml, Zilo_m, 2, 147 Yml, Ymr, Zm_r_xm, 1, // MMX MOVD 148 Ymr, Yml, Zr_m_xm, 1, // MMX MOVD 149 Yml, Yxr, Zm_r_xm, 2, // XMM MOVD (32 bit) 150 Yxr, Yml, Zr_m_xm, 2, // XMM MOVD (32 bit) 151 Yiauto, Yrl, Zaut_r, 2, 152 0 153 }; 154 uchar yret[] = 155 { 156 Ynone, Ynone, Zo_iw, 1, 157 Yi32, Ynone, Zo_iw, 1, 158 0 159 }; 160 uchar ymovq[] = 161 { 162 Yrl, Yml, Zr_m, 1, // 0x89 163 Yml, Yrl, Zm_r, 1, // 0x8b 164 Yi0, Yrl, Zclr, 1, // 0x31 165 Ys32, Yrl, Zilo_m, 2, // 32 bit signed 0xc7,(0) 166 Yi64, Yrl, Ziq_rp, 1, // 0xb8 -- 32/64 bit immediate 167 Yi32, Yml, Zilo_m, 2, // 0xc7,(0) 168 Ym, Ymr, Zm_r_xm_nr, 1, // MMX MOVQ (shorter encoding) 169 Ymr, Ym, Zr_m_xm_nr, 1, // MMX MOVQ 170 Ymm, Ymr, Zm_r_xm, 1, // MMX MOVD 171 Ymr, Ymm, Zr_m_xm, 1, // MMX MOVD 172 Yxr, Ymr, Zm_r_xm_nr, 2, // MOVDQ2Q 173 Yxr, Ym, Zr_m_xm_nr, 2, // MOVQ xmm store 174 Yml, Yxr, Zm_r_xm, 2, // MOVD xmm load 175 Yxr, Yml, Zr_m_xm, 2, // MOVD xmm store 176 Yiauto, Yrl, Zaut_r, 2, // built-in LEAQ 177 0 178 }; 179 uchar ym_rl[] = 180 { 181 Ym, Yrl, Zm_r, 1, 182 0 183 }; 184 uchar yrl_m[] = 185 { 186 Yrl, Ym, Zr_m, 1, 187 0 188 }; 189 uchar ymb_rl[] = 190 { 191 Ymb, Yrl, Zmb_r, 1, 192 0 193 }; 194 uchar yml_rl[] = 195 { 196 Yml, Yrl, Zm_r, 1, 197 0 198 }; 199 uchar yrl_ml[] = 200 { 201 Yrl, Yml, Zr_m, 1, 202 0 203 }; 204 uchar yml_mb[] = 205 { 206 Yrb, Ymb, Zr_m, 1, 207 Ymb, Yrb, Zm_r, 1, 208 0 209 }; 210 uchar yrb_mb[] = 211 { 212 Yrb, Ymb, Zr_m, 1, 213 0 214 }; 215 uchar yml_ml[] = 216 { 217 Yrl, Yml, Zr_m, 1, 218 Yml, Yrl, Zm_r, 1, 219 0 220 }; 221 uchar ydivl[] = 222 { 223 Yml, Ynone, Zm_o, 2, 224 0 225 }; 226 uchar ydivb[] = 227 { 228 Ymb, Ynone, Zm_o, 2, 229 0 230 }; 231 uchar yimul[] = 232 { 233 Yml, Ynone, Zm_o, 2, 234 Yi8, Yrl, Zib_rr, 1, 235 Yi32, Yrl, Zil_rr, 1, 236 Yml, Yrl, Zm_r, 2, 237 0 238 }; 239 uchar ybyte[] = 240 { 241 Yi64, Ynone, Zbyte, 1, 242 0 243 }; 244 uchar yin[] = 245 { 246 Yi32, Ynone, Zib_, 1, 247 Ynone, Ynone, Zlit, 1, 248 0 249 }; 250 uchar yint[] = 251 { 252 Yi32, Ynone, Zib_, 1, 253 0 254 }; 255 uchar ypushl[] = 256 { 257 Yrl, Ynone, Zrp_, 1, 258 Ym, Ynone, Zm_o, 2, 259 Yi8, Ynone, Zib_, 1, 260 Yi32, Ynone, Zil_, 1, 261 0 262 }; 263 uchar ypopl[] = 264 { 265 Ynone, Yrl, Z_rp, 1, 266 Ynone, Ym, Zo_m, 2, 267 0 268 }; 269 uchar yscond[] = 270 { 271 Ynone, Ymb, Zo_m, 2, 272 0 273 }; 274 uchar yjcond[] = 275 { 276 Ynone, Ybr, Zbr, 1, 277 0 278 }; 279 uchar yloop[] = 280 { 281 Ynone, Ybr, Zloop, 1, 282 0 283 }; 284 uchar ycall[] = 285 { 286 Ynone, Yml, Zo_m64, 2, 287 Ynone, Ybr, Zcall, 1, 288 0 289 }; 290 uchar yjmp[] = 291 { 292 Ynone, Yml, Zo_m64, 2, 293 Ynone, Ybr, Zjmp, 1, 294 0 295 }; 296 297 uchar yfmvd[] = 298 { 299 Ym, Yf0, Zm_o, 2, 300 Yf0, Ym, Zo_m, 2, 301 Yrf, Yf0, Zm_o, 2, 302 Yf0, Yrf, Zo_m, 2, 303 0 304 }; 305 uchar yfmvdp[] = 306 { 307 Yf0, Ym, Zo_m, 2, 308 Yf0, Yrf, Zo_m, 2, 309 0 310 }; 311 uchar yfmvf[] = 312 { 313 Ym, Yf0, Zm_o, 2, 314 Yf0, Ym, Zo_m, 2, 315 0 316 }; 317 uchar yfmvx[] = 318 { 319 Ym, Yf0, Zm_o, 2, 320 0 321 }; 322 uchar yfmvp[] = 323 { 324 Yf0, Ym, Zo_m, 2, 325 0 326 }; 327 uchar yfadd[] = 328 { 329 Ym, Yf0, Zm_o, 2, 330 Yrf, Yf0, Zm_o, 2, 331 Yf0, Yrf, Zo_m, 2, 332 0 333 }; 334 uchar yfaddp[] = 335 { 336 Yf0, Yrf, Zo_m, 2, 337 0 338 }; 339 uchar yfxch[] = 340 { 341 Yf0, Yrf, Zo_m, 2, 342 Yrf, Yf0, Zm_o, 2, 343 0 344 }; 345 uchar ycompp[] = 346 { 347 Yf0, Yrf, Zo_m, 2, /* botch is really f0,f1 */ 348 0 349 }; 350 uchar ystsw[] = 351 { 352 Ynone, Ym, Zo_m, 2, 353 Ynone, Yax, Zlit, 1, 354 0 355 }; 356 uchar ystcw[] = 357 { 358 Ynone, Ym, Zo_m, 2, 359 Ym, Ynone, Zm_o, 2, 360 0 361 }; 362 uchar ysvrs[] = 363 { 364 Ynone, Ym, Zo_m, 2, 365 Ym, Ynone, Zm_o, 2, 366 0 367 }; 368 uchar ymm[] = 369 { 370 Ymm, Ymr, Zm_r_xm, 1, 371 Yxm, Yxr, Zm_r_xm, 2, 372 0 373 }; 374 uchar yxm[] = 375 { 376 Yxm, Yxr, Zm_r_xm, 1, 377 0 378 }; 379 uchar yxcvm1[] = 380 { 381 Yxm, Yxr, Zm_r_xm, 2, 382 Yxm, Ymr, Zm_r_xm, 2, 383 0 384 }; 385 uchar yxcvm2[] = 386 { 387 Yxm, Yxr, Zm_r_xm, 2, 388 Ymm, Yxr, Zm_r_xm, 2, 389 0 390 }; 391 uchar yxmq[] = 392 { 393 Yxm, Yxr, Zm_r_xm, 2, 394 0 395 }; 396 uchar yxr[] = 397 { 398 Yxr, Yxr, Zm_r_xm, 1, 399 0 400 }; 401 uchar yxr_ml[] = 402 { 403 Yxr, Yml, Zr_m_xm, 1, 404 0 405 }; 406 uchar ymr[] = 407 { 408 Ymr, Ymr, Zm_r, 1, 409 0 410 }; 411 uchar ymr_ml[] = 412 { 413 Ymr, Yml, Zr_m_xm, 1, 414 0 415 }; 416 uchar yxcmp[] = 417 { 418 Yxm, Yxr, Zm_r_xm, 1, 419 0 420 }; 421 uchar yxcmpi[] = 422 { 423 Yxm, Yxr, Zm_r_i_xm, 2, 424 0 425 }; 426 uchar yxmov[] = 427 { 428 Yxm, Yxr, Zm_r_xm, 1, 429 Yxr, Yxm, Zr_m_xm, 1, 430 0 431 }; 432 uchar yxcvfl[] = 433 { 434 Yxm, Yrl, Zm_r_xm, 1, 435 0 436 }; 437 uchar yxcvlf[] = 438 { 439 Yml, Yxr, Zm_r_xm, 1, 440 0 441 }; 442 uchar yxcvfq[] = 443 { 444 Yxm, Yrl, Zm_r_xm, 2, 445 0 446 }; 447 uchar yxcvqf[] = 448 { 449 Yml, Yxr, Zm_r_xm, 2, 450 0 451 }; 452 uchar yps[] = 453 { 454 Ymm, Ymr, Zm_r_xm, 1, 455 Yi8, Ymr, Zibo_m_xm, 2, 456 Yxm, Yxr, Zm_r_xm, 2, 457 Yi8, Yxr, Zibo_m_xm, 3, 458 0 459 }; 460 uchar yxrrl[] = 461 { 462 Yxr, Yrl, Zm_r, 1, 463 0 464 }; 465 uchar ymfp[] = 466 { 467 Ymm, Ymr, Zm_r_3d, 1, 468 0, 469 }; 470 uchar ymrxr[] = 471 { 472 Ymr, Yxr, Zm_r, 1, 473 Yxm, Yxr, Zm_r_xm, 1, 474 0 475 }; 476 uchar ymshuf[] = 477 { 478 Ymm, Ymr, Zibm_r, 1, 479 0 480 }; 481 uchar yxshuf[] = 482 { 483 Yxm, Yxr, Zibm_r, 1, 484 0 485 }; 486 uchar yextrw[] = 487 { 488 Yxr, Yrl, Zibm_r, 1, 489 0 490 }; 491 uchar ypsdq[] = 492 { 493 Yi8, Yxr, Zibo_m, 2, 494 0 495 }; 496 uchar ymskb[] = 497 { 498 Yxr, Yrl, Zm_r_xm, 2, 499 Ymr, Yrl, Zm_r_xm, 1, 500 0 501 }; 502 503 Optab optab[] = 504 /* as, ytab, andproto, opcode */ 505 { 506 { AXXX }, 507 { AAAA, ynone, P32, 0x37 }, 508 { AAAD, ynone, P32, 0xd5,0x0a }, 509 { AAAM, ynone, P32, 0xd4,0x0a }, 510 { AAAS, ynone, P32, 0x3f }, 511 { AADCB, yxorb, Pb, 0x14,0x80,(02),0x10,0x10 }, 512 { AADCL, yxorl, Px, 0x83,(02),0x15,0x81,(02),0x11,0x13 }, 513 { AADCQ, yxorl, Pw, 0x83,(02),0x15,0x81,(02),0x11,0x13 }, 514 { AADCW, yxorl, Pe, 0x83,(02),0x15,0x81,(02),0x11,0x13 }, 515 { AADDB, yxorb, Pb, 0x04,0x80,(00),0x00,0x02 }, 516 { AADDL, yaddl, Px, 0x83,(00),0x05,0x81,(00),0x01,0x03 }, 517 { AADDPD, yxm, Pq, 0x58 }, 518 { AADDPS, yxm, Pm, 0x58 }, 519 { AADDQ, yaddl, Pw, 0x83,(00),0x05,0x81,(00),0x01,0x03 }, 520 { AADDSD, yxm, Pf2, 0x58 }, 521 { AADDSS, yxm, Pf3, 0x58 }, 522 { AADDW, yaddl, Pe, 0x83,(00),0x05,0x81,(00),0x01,0x03 }, 523 { AADJSP }, 524 { AANDB, yxorb, Pb, 0x24,0x80,(04),0x20,0x22 }, 525 { AANDL, yxorl, Px, 0x83,(04),0x25,0x81,(04),0x21,0x23 }, 526 { AANDNPD, yxm, Pq, 0x55 }, 527 { AANDNPS, yxm, Pm, 0x55 }, 528 { AANDPD, yxm, Pq, 0x54 }, 529 { AANDPS, yxm, Pq, 0x54 }, 530 { AANDQ, yxorl, Pw, 0x83,(04),0x25,0x81,(04),0x21,0x23 }, 531 { AANDW, yxorl, Pe, 0x83,(04),0x25,0x81,(04),0x21,0x23 }, 532 { AARPL, yrl_ml, P32, 0x63 }, 533 { ABOUNDL, yrl_m, P32, 0x62 }, 534 { ABOUNDW, yrl_m, Pe, 0x62 }, 535 { ABSFL, yml_rl, Pm, 0xbc }, 536 { ABSFQ, yml_rl, Pw, 0x0f,0xbc }, 537 { ABSFW, yml_rl, Pq, 0xbc }, 538 { ABSRL, yml_rl, Pm, 0xbd }, 539 { ABSRQ, yml_rl, Pw, 0x0f,0xbd }, 540 { ABSRW, yml_rl, Pq, 0xbd }, 541 { ABTCL, ybtl, Pm, 0xba,(07),0xbb }, 542 { ABTCQ, ybtl, Pw, 0x0f,0xba,(07),0x0f,0xbb }, 543 { ABTCW, ybtl, Pq, 0xba,(07),0xbb }, 544 { ABTL, ybtl, Pm, 0xba,(04),0xa3 }, 545 { ABTQ, ybtl, Pw, 0x0f,0xba,(04),0x0f,0xa3}, 546 { ABTRL, ybtl, Pm, 0xba,(06),0xb3 }, 547 { ABTRQ, ybtl, Pw, 0x0f,0xba,(06),0x0f,0xb3 }, 548 { ABTRW, ybtl, Pq, 0xba,(06),0xb3 }, 549 { ABTSL, ybtl, Pm, 0xba,(05),0xab }, 550 { ABTSQ, ybtl, Pw, 0x0f,0xba,(05),0x0f,0xab }, 551 { ABTSW, ybtl, Pq, 0xba,(05),0xab }, 552 { ABTW, ybtl, Pq, 0xba,(04),0xa3 }, 553 { ABYTE, ybyte, Px, 1 }, 554 { ACALL, ycall, Px, 0xff,(02),0xe8 }, 555 { ACDQ, ynone, Px, 0x99 }, 556 { ACLC, ynone, Px, 0xf8 }, 557 { ACLD, ynone, Px, 0xfc }, 558 { ACLI, ynone, Px, 0xfa }, 559 { ACLTS, ynone, Pm, 0x06 }, 560 { ACMC, ynone, Px, 0xf5 }, 561 { ACMOVLCC, yml_rl, Pm, 0x43 }, 562 { ACMOVLCS, yml_rl, Pm, 0x42 }, 563 { ACMOVLEQ, yml_rl, Pm, 0x44 }, 564 { ACMOVLGE, yml_rl, Pm, 0x4d }, 565 { ACMOVLGT, yml_rl, Pm, 0x4f }, 566 { ACMOVLHI, yml_rl, Pm, 0x47 }, 567 { ACMOVLLE, yml_rl, Pm, 0x4e }, 568 { ACMOVLLS, yml_rl, Pm, 0x46 }, 569 { ACMOVLLT, yml_rl, Pm, 0x4c }, 570 { ACMOVLMI, yml_rl, Pm, 0x48 }, 571 { ACMOVLNE, yml_rl, Pm, 0x45 }, 572 { ACMOVLOC, yml_rl, Pm, 0x41 }, 573 { ACMOVLOS, yml_rl, Pm, 0x40 }, 574 { ACMOVLPC, yml_rl, Pm, 0x4b }, 575 { ACMOVLPL, yml_rl, Pm, 0x49 }, 576 { ACMOVLPS, yml_rl, Pm, 0x4a }, 577 { ACMOVQCC, yml_rl, Pw, 0x0f,0x43 }, 578 { ACMOVQCS, yml_rl, Pw, 0x0f,0x42 }, 579 { ACMOVQEQ, yml_rl, Pw, 0x0f,0x44 }, 580 { ACMOVQGE, yml_rl, Pw, 0x0f,0x4d }, 581 { ACMOVQGT, yml_rl, Pw, 0x0f,0x4f }, 582 { ACMOVQHI, yml_rl, Pw, 0x0f,0x47 }, 583 { ACMOVQLE, yml_rl, Pw, 0x0f,0x4e }, 584 { ACMOVQLS, yml_rl, Pw, 0x0f,0x46 }, 585 { ACMOVQLT, yml_rl, Pw, 0x0f,0x4c }, 586 { ACMOVQMI, yml_rl, Pw, 0x0f,0x48 }, 587 { ACMOVQNE, yml_rl, Pw, 0x0f,0x45 }, 588 { ACMOVQOC, yml_rl, Pw, 0x0f,0x41 }, 589 { ACMOVQOS, yml_rl, Pw, 0x0f,0x40 }, 590 { ACMOVQPC, yml_rl, Pw, 0x0f,0x4b }, 591 { ACMOVQPL, yml_rl, Pw, 0x0f,0x49 }, 592 { ACMOVQPS, yml_rl, Pw, 0x0f,0x4a }, 593 { ACMOVWCC, yml_rl, Pq, 0x43 }, 594 { ACMOVWCS, yml_rl, Pq, 0x42 }, 595 { ACMOVWEQ, yml_rl, Pq, 0x44 }, 596 { ACMOVWGE, yml_rl, Pq, 0x4d }, 597 { ACMOVWGT, yml_rl, Pq, 0x4f }, 598 { ACMOVWHI, yml_rl, Pq, 0x47 }, 599 { ACMOVWLE, yml_rl, Pq, 0x4e }, 600 { ACMOVWLS, yml_rl, Pq, 0x46 }, 601 { ACMOVWLT, yml_rl, Pq, 0x4c }, 602 { ACMOVWMI, yml_rl, Pq, 0x48 }, 603 { ACMOVWNE, yml_rl, Pq, 0x45 }, 604 { ACMOVWOC, yml_rl, Pq, 0x41 }, 605 { ACMOVWOS, yml_rl, Pq, 0x40 }, 606 { ACMOVWPC, yml_rl, Pq, 0x4b }, 607 { ACMOVWPL, yml_rl, Pq, 0x49 }, 608 { ACMOVWPS, yml_rl, Pq, 0x4a }, 609 { ACMPB, ycmpb, Pb, 0x3c,0x80,(07),0x38,0x3a }, 610 { ACMPL, ycmpl, Px, 0x83,(07),0x3d,0x81,(07),0x39,0x3b }, 611 { ACMPPD, yxcmpi, Px, Pe,0xc2 }, 612 { ACMPPS, yxcmpi, Pm, 0xc2,0 }, 613 { ACMPQ, ycmpl, Pw, 0x83,(07),0x3d,0x81,(07),0x39,0x3b }, 614 { ACMPSB, ynone, Pb, 0xa6 }, 615 { ACMPSD, yxcmpi, Px, Pf2,0xc2 }, 616 { ACMPSL, ynone, Px, 0xa7 }, 617 { ACMPSQ, ynone, Pw, 0xa7 }, 618 { ACMPSS, yxcmpi, Px, Pf3,0xc2 }, 619 { ACMPSW, ynone, Pe, 0xa7 }, 620 { ACMPW, ycmpl, Pe, 0x83,(07),0x3d,0x81,(07),0x39,0x3b }, 621 { ACOMISD, yxcmp, Pe, 0x2f }, 622 { ACOMISS, yxcmp, Pm, 0x2f }, 623 { ACPUID, ynone, Pm, 0xa2 }, 624 { ACVTPL2PD, yxcvm2, Px, Pf3,0xe6,Pe,0x2a }, 625 { ACVTPL2PS, yxcvm2, Pm, 0x5b,0,0x2a,0, }, 626 { ACVTPD2PL, yxcvm1, Px, Pf2,0xe6,Pe,0x2d }, 627 { ACVTPD2PS, yxm, Pe, 0x5a }, 628 { ACVTPS2PL, yxcvm1, Px, Pe,0x5b,Pm,0x2d }, 629 { ACVTPS2PD, yxm, Pm, 0x5a }, 630 { API2FW, ymfp, Px, 0x0c }, 631 { ACVTSD2SL, yxcvfl, Pf2, 0x2d }, 632 { ACVTSD2SQ, yxcvfq, Pw, Pf2,0x2d }, 633 { ACVTSD2SS, yxm, Pf2, 0x5a }, 634 { ACVTSL2SD, yxcvlf, Pf2, 0x2a }, 635 { ACVTSQ2SD, yxcvqf, Pw, Pf2,0x2a }, 636 { ACVTSL2SS, yxcvlf, Pf3, 0x2a }, 637 { ACVTSQ2SS, yxcvqf, Pw, Pf3,0x2a }, 638 { ACVTSS2SD, yxm, Pf3, 0x5a }, 639 { ACVTSS2SL, yxcvfl, Pf3, 0x2d }, 640 { ACVTSS2SQ, yxcvfq, Pw, Pf3,0x2d }, 641 { ACVTTPD2PL, yxcvm1, Px, Pe,0xe6,Pe,0x2c }, 642 { ACVTTPS2PL, yxcvm1, Px, Pf3,0x5b,Pm,0x2c }, 643 { ACVTTSD2SL, yxcvfl, Pf2, 0x2c }, 644 { ACVTTSD2SQ, yxcvfq, Pw, Pf2,0x2c }, 645 { ACVTTSS2SL, yxcvfl, Pf3, 0x2c }, 646 { ACVTTSS2SQ, yxcvfq, Pw, Pf3,0x2c }, 647 { ACWD, ynone, Pe, 0x99 }, 648 { ACQO, ynone, Pw, 0x99 }, 649 { ADAA, ynone, P32, 0x27 }, 650 { ADAS, ynone, P32, 0x2f }, 651 { ADATA }, 652 { ADECB, yincb, Pb, 0xfe,(01) }, 653 { ADECL, yincl, Px, 0xff,(01) }, 654 { ADECQ, yincl, Pw, 0xff,(01) }, 655 { ADECW, yincw, Pe, 0xff,(01) }, 656 { ADIVB, ydivb, Pb, 0xf6,(06) }, 657 { ADIVL, ydivl, Px, 0xf7,(06) }, 658 { ADIVPD, yxm, Pe, 0x5e }, 659 { ADIVPS, yxm, Pm, 0x5e }, 660 { ADIVQ, ydivl, Pw, 0xf7,(06) }, 661 { ADIVSD, yxm, Pf2, 0x5e }, 662 { ADIVSS, yxm, Pf3, 0x5e }, 663 { ADIVW, ydivl, Pe, 0xf7,(06) }, 664 { AEMMS, ynone, Pm, 0x77 }, 665 { AENTER }, /* botch */ 666 { AFXRSTOR, ysvrs, Pm, 0xae,(01),0xae,(01) }, 667 { AFXSAVE, ysvrs, Pm, 0xae,(00),0xae,(00) }, 668 { AFXRSTOR64, ysvrs, Pw, 0x0f,0xae,(01),0x0f,0xae,(01) }, 669 { AFXSAVE64, ysvrs, Pw, 0x0f,0xae,(00),0x0f,0xae,(00) }, 670 { AGLOBL }, 671 { AGOK }, 672 { AHISTORY }, 673 { AHLT, ynone, Px, 0xf4 }, 674 { AIDIVB, ydivb, Pb, 0xf6,(07) }, 675 { AIDIVL, ydivl, Px, 0xf7,(07) }, 676 { AIDIVQ, ydivl, Pw, 0xf7,(07) }, 677 { AIDIVW, ydivl, Pe, 0xf7,(07) }, 678 { AIMULB, ydivb, Pb, 0xf6,(05) }, 679 { AIMULL, yimul, Px, 0xf7,(05),0x6b,0x69,Pm,0xaf }, 680 { AIMULQ, yimul, Pw, 0xf7,(05),0x6b,0x69,Pm,0xaf }, 681 { AIMULW, yimul, Pe, 0xf7,(05),0x6b,0x69,Pm,0xaf }, 682 { AINB, yin, Pb, 0xe4,0xec }, 683 { AINCB, yincb, Pb, 0xfe,(00) }, 684 { AINCL, yincl, Px, 0xff,(00) }, 685 { AINCQ, yincl, Pw, 0xff,(00) }, 686 { AINCW, yincw, Pe, 0xff,(00) }, 687 { AINL, yin, Px, 0xe5,0xed }, 688 { AINSB, ynone, Pb, 0x6c }, 689 { AINSL, ynone, Px, 0x6d }, 690 { AINSW, ynone, Pe, 0x6d }, 691 { AINT, yint, Px, 0xcd }, 692 { AINTO, ynone, P32, 0xce }, 693 { AINW, yin, Pe, 0xe5,0xed }, 694 { AIRETL, ynone, Px, 0xcf }, 695 { AIRETQ, ynone, Pw, 0xcf }, 696 { AIRETW, ynone, Pe, 0xcf }, 697 { AJCC, yjcond, Px, 0x73,0x83,(00) }, 698 { AJCS, yjcond, Px, 0x72,0x82 }, 699 { AJCXZ, yloop, Px, 0xe3 }, 700 { AJEQ, yjcond, Px, 0x74,0x84 }, 701 { AJGE, yjcond, Px, 0x7d,0x8d }, 702 { AJGT, yjcond, Px, 0x7f,0x8f }, 703 { AJHI, yjcond, Px, 0x77,0x87 }, 704 { AJLE, yjcond, Px, 0x7e,0x8e }, 705 { AJLS, yjcond, Px, 0x76,0x86 }, 706 { AJLT, yjcond, Px, 0x7c,0x8c }, 707 { AJMI, yjcond, Px, 0x78,0x88 }, 708 { AJMP, yjmp, Px, 0xff,(04),0xeb,0xe9 }, 709 { AJNE, yjcond, Px, 0x75,0x85 }, 710 { AJOC, yjcond, Px, 0x71,0x81,(00) }, 711 { AJOS, yjcond, Px, 0x70,0x80,(00) }, 712 { AJPC, yjcond, Px, 0x7b,0x8b }, 713 { AJPL, yjcond, Px, 0x79,0x89 }, 714 { AJPS, yjcond, Px, 0x7a,0x8a }, 715 { ALAHF, ynone, Px, 0x9f }, 716 { ALARL, yml_rl, Pm, 0x02 }, 717 { ALARW, yml_rl, Pq, 0x02 }, 718 { ALDMXCSR, ysvrs, Pm, 0xae,(02),0xae,(02) }, 719 { ALEAL, ym_rl, Px, 0x8d }, 720 { ALEAQ, ym_rl, Pw, 0x8d }, 721 { ALEAVEL, ynone, P32, 0xc9 }, 722 { ALEAVEQ, ynone, Py, 0xc9 }, 723 { ALEAVEW, ynone, Pe, 0xc9 }, 724 { ALEAW, ym_rl, Pe, 0x8d }, 725 { ALOCK, ynone, Px, 0xf0 }, 726 { ALODSB, ynone, Pb, 0xac }, 727 { ALODSL, ynone, Px, 0xad }, 728 { ALODSQ, ynone, Pw, 0xad }, 729 { ALODSW, ynone, Pe, 0xad }, 730 { ALONG, ybyte, Px, 4 }, 731 { ALOOP, yloop, Px, 0xe2 }, 732 { ALOOPEQ, yloop, Px, 0xe1 }, 733 { ALOOPNE, yloop, Px, 0xe0 }, 734 { ALSLL, yml_rl, Pm, 0x03 }, 735 { ALSLW, yml_rl, Pq, 0x03 }, 736 { AMASKMOVOU, yxr, Pe, 0xf7 }, 737 { AMASKMOVQ, ymr, Pm, 0xf7 }, 738 { AMAXPD, yxm, Pe, 0x5f }, 739 { AMAXPS, yxm, Pm, 0x5f }, 740 { AMAXSD, yxm, Pf2, 0x5f }, 741 { AMAXSS, yxm, Pf3, 0x5f }, 742 { AMINPD, yxm, Pe, 0x5d }, 743 { AMINPS, yxm, Pm, 0x5d }, 744 { AMINSD, yxm, Pf2, 0x5d }, 745 { AMINSS, yxm, Pf3, 0x5d }, 746 { AMOVAPD, yxmov, Pe, 0x28,0x29 }, 747 { AMOVAPS, yxmov, Pm, 0x28,0x29 }, 748 { AMOVB, ymovb, Pb, 0x88,0x8a,0xb0,0xc6,(00) }, 749 { AMOVBLSX, ymb_rl, Pm, 0xbe }, 750 { AMOVBLZX, ymb_rl, Pm, 0xb6 }, 751 { AMOVBQSX, ymb_rl, Pw, 0x0f,0xbe }, 752 { AMOVBQZX, ymb_rl, Pw, 0x0f,0xb6 }, 753 { AMOVBWSX, ymb_rl, Pq, 0xbe }, 754 { AMOVBWZX, ymb_rl, Pq, 0xb6 }, 755 { AMOVO, yxmov, Pe, 0x6f,0x7f }, 756 { AMOVOU, yxmov, Pf2, 0x6f,0x7f }, 757 { AMOVHLPS, yxr, Pm, 0x12 }, 758 { AMOVHPD, yxmov, Pe, 0x16,0x17 }, 759 { AMOVHPS, yxmov, Pm, 0x16,0x17 }, 760 { AMOVL, ymovl, Px, 0x89,0x8b,0x31,0xb8,0xc7,(00),0x6e,0x7e,Pe,0x6e,Pe,0x7e }, 761 { AMOVLHPS, yxr, Pm, 0x16 }, 762 { AMOVLPD, yxmov, Pe, 0x12,0x13 }, 763 { AMOVLPS, yxmov, Pm, 0x12,0x13 }, 764 { AMOVLQSX, yml_rl, Pw, 0x63 }, 765 { AMOVLQZX, yml_rl, Px, 0x63 }, 766 { AMOVMSKPD, yxrrl, Pq, 0x50 }, 767 { AMOVMSKPS, yxrrl, Pm, 0x50 }, 768 { AMOVNTO, yxr_ml, Pe, 0xe7 }, 769 { AMOVNTPD, yxr_ml, Pe, 0x2b }, 770 { AMOVNTPS, yxr_ml, Pm, 0x2b }, 771 { AMOVNTQ, ymr_ml, Pm, 0xe7 }, 772 { AMOVQ, ymovq, Pw, 0x89,0x8b,0x31,0xc7,(00),0xb8,0xc7,(00),0x6f,0x7f,0x6e,0x7e,Pf2,0xd6,Pe,0xd6,Pe,0x6e,Pe,0x7e }, 773 { AMOVQOZX, ymrxr, Pf3, 0xd6,0x7e }, 774 { AMOVSB, ynone, Pb, 0xa4 }, 775 { AMOVSD, yxmov, Pf2, 0x10,0x11 }, 776 { AMOVSL, ynone, Px, 0xa5 }, 777 { AMOVSQ, ynone, Pw, 0xa5 }, 778 { AMOVSS, yxmov, Pf3, 0x10,0x11 }, 779 { AMOVSW, ynone, Pe, 0xa5 }, 780 { AMOVUPD, yxmov, Pe, 0x10,0x11 }, 781 { AMOVUPS, yxmov, Pm, 0x10,0x11 }, 782 { AMOVW, ymovw, Pe, 0x89,0x8b,0x31,0xb8,0xc7,(00) }, 783 { AMOVWLSX, yml_rl, Pm, 0xbf }, 784 { AMOVWLZX, yml_rl, Pm, 0xb7 }, 785 { AMOVWQSX, yml_rl, Pw, 0x0f,0xbf }, 786 { AMOVWQZX, yml_rl, Pw, 0x0f,0xb7 }, 787 { AMULB, ydivb, Pb, 0xf6,(04) }, 788 { AMULL, ydivl, Px, 0xf7,(04) }, 789 { AMULPD, yxm, Pe, 0x59 }, 790 { AMULPS, yxm, Ym, 0x59 }, 791 { AMULQ, ydivl, Pw, 0xf7,(04) }, 792 { AMULSD, yxm, Pf2, 0x59 }, 793 { AMULSS, yxm, Pf3, 0x59 }, 794 { AMULW, ydivl, Pe, 0xf7,(04) }, 795 { ANAME }, 796 { ANEGB, yscond, Pb, 0xf6,(03) }, 797 { ANEGL, yscond, Px, 0xf7,(03) }, 798 { ANEGQ, yscond, Pw, 0xf7,(03) }, 799 { ANEGW, yscond, Pe, 0xf7,(03) }, 800 { ANOP, ynop, Px, 0,0 }, 801 { ANOTB, yscond, Pb, 0xf6,(02) }, 802 { ANOTL, yscond, Px, 0xf7,(02) }, 803 { ANOTQ, yscond, Pw, 0xf7,(02) }, 804 { ANOTW, yscond, Pe, 0xf7,(02) }, 805 { AORB, yxorb, Pb, 0x0c,0x80,(01),0x08,0x0a }, 806 { AORL, yxorl, Px, 0x83,(01),0x0d,0x81,(01),0x09,0x0b }, 807 { AORPD, yxm, Pq, 0x56 }, 808 { AORPS, yxm, Pm, 0x56 }, 809 { AORQ, yxorl, Pw, 0x83,(01),0x0d,0x81,(01),0x09,0x0b }, 810 { AORW, yxorl, Pe, 0x83,(01),0x0d,0x81,(01),0x09,0x0b }, 811 { AOUTB, yin, Pb, 0xe6,0xee }, 812 { AOUTL, yin, Px, 0xe7,0xef }, 813 { AOUTSB, ynone, Pb, 0x6e }, 814 { AOUTSL, ynone, Px, 0x6f }, 815 { AOUTSW, ynone, Pe, 0x6f }, 816 { AOUTW, yin, Pe, 0xe7,0xef }, 817 { APACKSSLW, ymm, Py, 0x6b,Pe,0x6b }, 818 { APACKSSWB, ymm, Py, 0x63,Pe,0x63 }, 819 { APACKUSWB, ymm, Py, 0x67,Pe,0x67 }, 820 { APADDB, ymm, Py, 0xfc,Pe,0xfc }, 821 { APADDL, ymm, Py, 0xfe,Pe,0xfe }, 822 { APADDQ, yxm, Pe, 0xd4 }, 823 { APADDSB, ymm, Py, 0xec,Pe,0xec }, 824 { APADDSW, ymm, Py, 0xed,Pe,0xed }, 825 { APADDUSB, ymm, Py, 0xdc,Pe,0xdc }, 826 { APADDUSW, ymm, Py, 0xdd,Pe,0xdd }, 827 { APADDW, ymm, Py, 0xfd,Pe,0xfd }, 828 { APAND, ymm, Py, 0xdb,Pe,0xdb }, 829 { APANDN, ymm, Py, 0xdf,Pe,0xdf }, 830 { APAVGB, ymm, Py, 0xe0,Pe,0xe0 }, 831 { APAVGW, ymm, Py, 0xe3,Pe,0xe3 }, 832 { APCMPEQB, ymm, Py, 0x74,Pe,0x74 }, 833 { APCMPEQL, ymm, Py, 0x76,Pe,0x76 }, 834 { APCMPEQW, ymm, Py, 0x75,Pe,0x75 }, 835 { APCMPGTB, ymm, Py, 0x64,Pe,0x64 }, 836 { APCMPGTL, ymm, Py, 0x66,Pe,0x66 }, 837 { APCMPGTW, ymm, Py, 0x65,Pe,0x65 }, 838 { APEXTRW, yextrw, Pq, 0xc5 }, 839 { APF2IL, ymfp, Px, 0x1d }, 840 { APF2IW, ymfp, Px, 0x1c }, 841 { API2FL, ymfp, Px, 0x0d }, 842 { APFACC, ymfp, Px, 0xae }, 843 { APFADD, ymfp, Px, 0x9e }, 844 { APFCMPEQ, ymfp, Px, 0xb0 }, 845 { APFCMPGE, ymfp, Px, 0x90 }, 846 { APFCMPGT, ymfp, Px, 0xa0 }, 847 { APFMAX, ymfp, Px, 0xa4 }, 848 { APFMIN, ymfp, Px, 0x94 }, 849 { APFMUL, ymfp, Px, 0xb4 }, 850 { APFNACC, ymfp, Px, 0x8a }, 851 { APFPNACC, ymfp, Px, 0x8e }, 852 { APFRCP, ymfp, Px, 0x96 }, 853 { APFRCPIT1, ymfp, Px, 0xa6 }, 854 { APFRCPI2T, ymfp, Px, 0xb6 }, 855 { APFRSQIT1, ymfp, Px, 0xa7 }, 856 { APFRSQRT, ymfp, Px, 0x97 }, 857 { APFSUB, ymfp, Px, 0x9a }, 858 { APFSUBR, ymfp, Px, 0xaa }, 859 { APINSRW, yextrw, Pq, 0xc4 }, 860 { APMADDWL, ymm, Py, 0xf5,Pe,0xf5 }, 861 { APMAXSW, yxm, Pe, 0xee }, 862 { APMAXUB, yxm, Pe, 0xde }, 863 { APMINSW, yxm, Pe, 0xea }, 864 { APMINUB, yxm, Pe, 0xda }, 865 { APMOVMSKB, ymskb, Px, Pe,0xd7,0xd7 }, 866 { APMULHRW, ymfp, Px, 0xb7 }, 867 { APMULHUW, ymm, Py, 0xe4,Pe,0xe4 }, 868 { APMULHW, ymm, Py, 0xe5,Pe,0xe5 }, 869 { APMULLW, ymm, Py, 0xd5,Pe,0xd5 }, 870 { APMULULQ, ymm, Py, 0xf4,Pe,0xf4 }, 871 { APOPAL, ynone, P32, 0x61 }, 872 { APOPAW, ynone, Pe, 0x61 }, 873 { APOPFL, ynone, P32, 0x9d }, 874 { APOPFQ, ynone, Py, 0x9d }, 875 { APOPFW, ynone, Pe, 0x9d }, 876 { APOPL, ypopl, P32, 0x58,0x8f,(00) }, 877 { APOPQ, ypopl, Py, 0x58,0x8f,(00) }, 878 { APOPW, ypopl, Pe, 0x58,0x8f,(00) }, 879 { APOR, ymm, Py, 0xeb,Pe,0xeb }, 880 { APSADBW, yxm, Pw, Pe,0xf6 }, 881 { APSHUFHW, yxshuf, Pf3, 0x70 }, 882 { APSHUFL, yxm, Pw, Pe,0x70 }, 883 { APSHUFLW, yxshuf, Pf2, 0x70 }, 884 { APSHUFW, ymshuf, Pm, 0x70 }, 885 { APSLLO, ypsdq, Pq, 0x73,(07) }, 886 { APSLLL, yps, Py, 0xf2, 0x72,(06), Pe,0xf2, Pe,0x72,(06) }, 887 { APSLLQ, yps, Py, 0xf3, 0x73,(06), Pe,0xf3, Pe,0x7e,(06) }, 888 { APSLLW, yps, Py, 0xf1, 0x71,(06), Pe,0xf1, Pe,0x71,(06) }, 889 { APSRAL, yps, Py, 0xe2, 0x72,(04), Pe,0xe2, Pe,0x72,(04) }, 890 { APSRAW, yps, Py, 0xe1, 0x71,(04), Pe,0xe1, Pe,0x71,(04) }, 891 { APSRLO, ypsdq, Pq, 0x73,(03) }, 892 { APSRLL, yps, Py, 0xd2, 0x72,(02), Pe,0xd2, Pe,0x72,(02) }, 893 { APSRLQ, yps, Py, 0xd3, 0x73,(02), Pe,0xd3, Pe,0x73,(02) }, 894 { APSRLW, yps, Py, 0xd1, 0x71,(02), Pe,0xe1, Pe,0x71,(02) }, 895 { APSUBB, yxm, Pe, 0xf8 }, 896 { APSUBL, yxm, Pe, 0xfa }, 897 { APSUBQ, yxm, Pe, 0xfb }, 898 { APSUBSB, yxm, Pe, 0xe8 }, 899 { APSUBSW, yxm, Pe, 0xe9 }, 900 { APSUBUSB, yxm, Pe, 0xd8 }, 901 { APSUBUSW, yxm, Pe, 0xd9 }, 902 { APSUBW, yxm, Pe, 0xf9 }, 903 { APSWAPL, ymfp, Px, 0xbb }, 904 { APUNPCKHBW, ymm, Py, 0x68,Pe,0x68 }, 905 { APUNPCKHLQ, ymm, Py, 0x6a,Pe,0x6a }, 906 { APUNPCKHQDQ, yxm, Pe, 0x6d }, 907 { APUNPCKHWL, ymm, Py, 0x69,Pe,0x69 }, 908 { APUNPCKLBW, ymm, Py, 0x60,Pe,0x60 }, 909 { APUNPCKLLQ, ymm, Py, 0x62,Pe,0x62 }, 910 { APUNPCKLQDQ, yxm, Pe, 0x6c }, 911 { APUNPCKLWL, ymm, Py, 0x61,Pe,0x61 }, 912 { APUSHAL, ynone, P32, 0x60 }, 913 { APUSHAW, ynone, Pe, 0x60 }, 914 { APUSHFL, ynone, P32, 0x9c }, 915 { APUSHFQ, ynone, Py, 0x9c }, 916 { APUSHFW, ynone, Pe, 0x9c }, 917 { APUSHL, ypushl, P32, 0x50,0xff,(06),0x6a,0x68 }, 918 { APUSHQ, ypushl, Py, 0x50,0xff,(06),0x6a,0x68 }, 919 { APUSHW, ypushl, Pe, 0x50,0xff,(06),0x6a,0x68 }, 920 { APXOR, ymm, Py, 0xef,Pe,0xef }, 921 { AQUAD, ybyte, Px, 8 }, 922 { ARCLB, yshb, Pb, 0xd0,(02),0xc0,(02),0xd2,(02) }, 923 { ARCLL, yshl, Px, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) }, 924 { ARCLQ, yshl, Pw, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) }, 925 { ARCLW, yshl, Pe, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) }, 926 { ARCPPS, yxm, Pm, 0x53 }, 927 { ARCPSS, yxm, Pf3, 0x53 }, 928 { ARCRB, yshb, Pb, 0xd0,(03),0xc0,(03),0xd2,(03) }, 929 { ARCRL, yshl, Px, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) }, 930 { ARCRQ, yshl, Pw, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) }, 931 { ARCRW, yshl, Pe, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) }, 932 { AREP, ynone, Px, 0xf3 }, 933 { AREPN, ynone, Px, 0xf2 }, 934 { ARET, ynone, Px, 0xc3 }, 935 { ARETFW, yret, Pe, 0xcb,0xca }, 936 { ARETFL, yret, Px, 0xcb,0xca }, 937 { ARETFQ, yret, Pw, 0xcb,0xca }, 938 { AROLB, yshb, Pb, 0xd0,(00),0xc0,(00),0xd2,(00) }, 939 { AROLL, yshl, Px, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) }, 940 { AROLQ, yshl, Pw, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) }, 941 { AROLW, yshl, Pe, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) }, 942 { ARORB, yshb, Pb, 0xd0,(01),0xc0,(01),0xd2,(01) }, 943 { ARORL, yshl, Px, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) }, 944 { ARORQ, yshl, Pw, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) }, 945 { ARORW, yshl, Pe, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) }, 946 { ARSQRTPS, yxm, Pm, 0x52 }, 947 { ARSQRTSS, yxm, Pf3, 0x52 }, 948 { ASAHF, ynone, Px, 0x86,0xe0,0x50,0x9d }, /* XCHGB AH,AL; PUSH AX; POPFL */ 949 { ASALB, yshb, Pb, 0xd0,(04),0xc0,(04),0xd2,(04) }, 950 { ASALL, yshl, Px, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) }, 951 { ASALQ, yshl, Pw, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) }, 952 { ASALW, yshl, Pe, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) }, 953 { ASARB, yshb, Pb, 0xd0,(07),0xc0,(07),0xd2,(07) }, 954 { ASARL, yshl, Px, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) }, 955 { ASARQ, yshl, Pw, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) }, 956 { ASARW, yshl, Pe, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) }, 957 { ASBBB, yxorb, Pb, 0x1c,0x80,(03),0x18,0x1a }, 958 { ASBBL, yxorl, Px, 0x83,(03),0x1d,0x81,(03),0x19,0x1b }, 959 { ASBBQ, yxorl, Pw, 0x83,(03),0x1d,0x81,(03),0x19,0x1b }, 960 { ASBBW, yxorl, Pe, 0x83,(03),0x1d,0x81,(03),0x19,0x1b }, 961 { ASCASB, ynone, Pb, 0xae }, 962 { ASCASL, ynone, Px, 0xaf }, 963 { ASCASQ, ynone, Pw, 0xaf }, 964 { ASCASW, ynone, Pe, 0xaf }, 965 { ASETCC, yscond, Pm, 0x93,(00) }, 966 { ASETCS, yscond, Pm, 0x92,(00) }, 967 { ASETEQ, yscond, Pm, 0x94,(00) }, 968 { ASETGE, yscond, Pm, 0x9d,(00) }, 969 { ASETGT, yscond, Pm, 0x9f,(00) }, 970 { ASETHI, yscond, Pm, 0x97,(00) }, 971 { ASETLE, yscond, Pm, 0x9e,(00) }, 972 { ASETLS, yscond, Pm, 0x96,(00) }, 973 { ASETLT, yscond, Pm, 0x9c,(00) }, 974 { ASETMI, yscond, Pm, 0x98,(00) }, 975 { ASETNE, yscond, Pm, 0x95,(00) }, 976 { ASETOC, yscond, Pm, 0x91,(00) }, 977 { ASETOS, yscond, Pm, 0x90,(00) }, 978 { ASETPC, yscond, Pm, 0x96,(00) }, 979 { ASETPL, yscond, Pm, 0x99,(00) }, 980 { ASETPS, yscond, Pm, 0x9a,(00) }, 981 { ASHLB, yshb, Pb, 0xd0,(04),0xc0,(04),0xd2,(04) }, 982 { ASHLL, yshl, Px, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) }, 983 { ASHLQ, yshl, Pw, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) }, 984 { ASHLW, yshl, Pe, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) }, 985 { ASHRB, yshb, Pb, 0xd0,(05),0xc0,(05),0xd2,(05) }, 986 { ASHRL, yshl, Px, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) }, 987 { ASHRQ, yshl, Pw, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) }, 988 { ASHRW, yshl, Pe, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) }, 989 { ASHUFPD, yxshuf, Pq, 0xc6 }, 990 { ASHUFPS, yxshuf, Pm, 0xc6 }, 991 { ASQRTPD, yxm, Pe, 0x51 }, 992 { ASQRTPS, yxm, Pm, 0x51 }, 993 { ASQRTSD, yxm, Pf2, 0x51 }, 994 { ASQRTSS, yxm, Pf3, 0x51 }, 995 { ASTC, ynone, Px, 0xf9 }, 996 { ASTD, ynone, Px, 0xfd }, 997 { ASTI, ynone, Px, 0xfb }, 998 { ASTMXCSR, ysvrs, Pm, 0xae,(03),0xae,(03) }, 999 { ASTOSB, ynone, Pb, 0xaa }, 1000 { ASTOSL, ynone, Px, 0xab }, 1001 { ASTOSQ, ynone, Pw, 0xab }, 1002 { ASTOSW, ynone, Pe, 0xab }, 1003 { ASUBB, yxorb, Pb, 0x2c,0x80,(05),0x28,0x2a }, 1004 { ASUBL, yaddl, Px, 0x83,(05),0x2d,0x81,(05),0x29,0x2b }, 1005 { ASUBPD, yxm, Pe, 0x5c }, 1006 { ASUBPS, yxm, Pm, 0x5c }, 1007 { ASUBQ, yaddl, Pw, 0x83,(05),0x2d,0x81,(05),0x29,0x2b }, 1008 { ASUBSD, yxm, Pf2, 0x5c }, 1009 { ASUBSS, yxm, Pf3, 0x5c }, 1010 { ASUBW, yaddl, Pe, 0x83,(05),0x2d,0x81,(05),0x29,0x2b }, 1011 { ASWAPGS, ynone, Pm, 0x01,0xf8 }, 1012 { ASYSCALL, ynone, Px, 0x0f,0x05 }, /* fast syscall */ 1013 { ATESTB, ytestb, Pb, 0xa8,0xf6,(00),0x84,0x84 }, 1014 { ATESTL, ytestl, Px, 0xa9,0xf7,(00),0x85,0x85 }, 1015 { ATESTQ, ytestl, Pw, 0xa9,0xf7,(00),0x85,0x85 }, 1016 { ATESTW, ytestl, Pe, 0xa9,0xf7,(00),0x85,0x85 }, 1017 { ATEXT, ytext, Px }, 1018 { AUCOMISD, yxcmp, Pe, 0x2e }, 1019 { AUCOMISS, yxcmp, Pm, 0x2e }, 1020 { AUNPCKHPD, yxm, Pe, 0x15 }, 1021 { AUNPCKHPS, yxm, Pm, 0x15 }, 1022 { AUNPCKLPD, yxm, Pe, 0x14 }, 1023 { AUNPCKLPS, yxm, Pm, 0x14 }, 1024 { AVERR, ydivl, Pm, 0x00,(04) }, 1025 { AVERW, ydivl, Pm, 0x00,(05) }, 1026 { AWAIT, ynone, Px, 0x9b }, 1027 { AWORD, ybyte, Px, 2 }, 1028 { AXCHGB, yml_mb, Pb, 0x86,0x86 }, 1029 { AXCHGL, yml_ml, Px, 0x87,0x87 }, 1030 { AXCHGQ, yml_ml, Pw, 0x87,0x87 }, 1031 { AXCHGW, yml_ml, Pe, 0x87,0x87 }, 1032 { AXLAT, ynone, Px, 0xd7 }, 1033 { AXORB, yxorb, Pb, 0x34,0x80,(06),0x30,0x32 }, 1034 { AXORL, yxorl, Px, 0x83,(06),0x35,0x81,(06),0x31,0x33 }, 1035 { AXORPD, yxm, Pe, 0x57 }, 1036 { AXORPS, yxm, Pm, 0x57 }, 1037 { AXORQ, yxorl, Pw, 0x83,(06),0x35,0x81,(06),0x31,0x33 }, 1038 { AXORW, yxorl, Pe, 0x83,(06),0x35,0x81,(06),0x31,0x33 }, 1039 1040 { AFMOVB, yfmvx, Px, 0xdf,(04) }, 1041 { AFMOVBP, yfmvp, Px, 0xdf,(06) }, 1042 { AFMOVD, yfmvd, Px, 0xdd,(00),0xdd,(02),0xd9,(00),0xdd,(02) }, 1043 { AFMOVDP, yfmvdp, Px, 0xdd,(03),0xdd,(03) }, 1044 { AFMOVF, yfmvf, Px, 0xd9,(00),0xd9,(02) }, 1045 { AFMOVFP, yfmvp, Px, 0xd9,(03) }, 1046 { AFMOVL, yfmvf, Px, 0xdb,(00),0xdb,(02) }, 1047 { AFMOVLP, yfmvp, Px, 0xdb,(03) }, 1048 { AFMOVV, yfmvx, Px, 0xdf,(05) }, 1049 { AFMOVVP, yfmvp, Px, 0xdf,(07) }, 1050 { AFMOVW, yfmvf, Px, 0xdf,(00),0xdf,(02) }, 1051 { AFMOVWP, yfmvp, Px, 0xdf,(03) }, 1052 { AFMOVX, yfmvx, Px, 0xdb,(05) }, 1053 { AFMOVXP, yfmvp, Px, 0xdb,(07) }, 1054 1055 { AFCOMB }, 1056 { AFCOMBP }, 1057 { AFCOMD, yfadd, Px, 0xdc,(02),0xd8,(02),0xdc,(02) }, /* botch */ 1058 { AFCOMDP, yfadd, Px, 0xdc,(03),0xd8,(03),0xdc,(03) }, /* botch */ 1059 { AFCOMDPP, ycompp, Px, 0xde,(03) }, 1060 { AFCOMF, yfmvx, Px, 0xd8,(02) }, 1061 { AFCOMFP, yfmvx, Px, 0xd8,(03) }, 1062 { AFCOML, yfmvx, Px, 0xda,(02) }, 1063 { AFCOMLP, yfmvx, Px, 0xda,(03) }, 1064 { AFCOMW, yfmvx, Px, 0xde,(02) }, 1065 { AFCOMWP, yfmvx, Px, 0xde,(03) }, 1066 1067 { AFUCOM, ycompp, Px, 0xdd,(04) }, 1068 { AFUCOMP, ycompp, Px, 0xdd,(05) }, 1069 { AFUCOMPP, ycompp, Px, 0xda,(13) }, 1070 1071 { AFADDDP, yfaddp, Px, 0xde,(00) }, 1072 { AFADDW, yfmvx, Px, 0xde,(00) }, 1073 { AFADDL, yfmvx, Px, 0xda,(00) }, 1074 { AFADDF, yfmvx, Px, 0xd8,(00) }, 1075 { AFADDD, yfadd, Px, 0xdc,(00),0xd8,(00),0xdc,(00) }, 1076 1077 { AFMULDP, yfaddp, Px, 0xde,(01) }, 1078 { AFMULW, yfmvx, Px, 0xde,(01) }, 1079 { AFMULL, yfmvx, Px, 0xda,(01) }, 1080 { AFMULF, yfmvx, Px, 0xd8,(01) }, 1081 { AFMULD, yfadd, Px, 0xdc,(01),0xd8,(01),0xdc,(01) }, 1082 1083 { AFSUBDP, yfaddp, Px, 0xde,(05) }, 1084 { AFSUBW, yfmvx, Px, 0xde,(04) }, 1085 { AFSUBL, yfmvx, Px, 0xda,(04) }, 1086 { AFSUBF, yfmvx, Px, 0xd8,(04) }, 1087 { AFSUBD, yfadd, Px, 0xdc,(04),0xd8,(04),0xdc,(05) }, 1088 1089 { AFSUBRDP, yfaddp, Px, 0xde,(04) }, 1090 { AFSUBRW, yfmvx, Px, 0xde,(05) }, 1091 { AFSUBRL, yfmvx, Px, 0xda,(05) }, 1092 { AFSUBRF, yfmvx, Px, 0xd8,(05) }, 1093 { AFSUBRD, yfadd, Px, 0xdc,(05),0xd8,(05),0xdc,(04) }, 1094 1095 { AFDIVDP, yfaddp, Px, 0xde,(07) }, 1096 { AFDIVW, yfmvx, Px, 0xde,(06) }, 1097 { AFDIVL, yfmvx, Px, 0xda,(06) }, 1098 { AFDIVF, yfmvx, Px, 0xd8,(06) }, 1099 { AFDIVD, yfadd, Px, 0xdc,(06),0xd8,(06),0xdc,(07) }, 1100 1101 { AFDIVRDP, yfaddp, Px, 0xde,(06) }, 1102 { AFDIVRW, yfmvx, Px, 0xde,(07) }, 1103 { AFDIVRL, yfmvx, Px, 0xda,(07) }, 1104 { AFDIVRF, yfmvx, Px, 0xd8,(07) }, 1105 { AFDIVRD, yfadd, Px, 0xdc,(07),0xd8,(07),0xdc,(06) }, 1106 1107 { AFXCHD, yfxch, Px, 0xd9,(01),0xd9,(01) }, 1108 { AFFREE }, 1109 { AFLDCW, ystcw, Px, 0xd9,(05),0xd9,(05) }, 1110 { AFLDENV, ystcw, Px, 0xd9,(04),0xd9,(04) }, 1111 { AFRSTOR, ysvrs, Px, 0xdd,(04),0xdd,(04) }, 1112 { AFSAVE, ysvrs, Px, 0xdd,(06),0xdd,(06) }, 1113 { AFSTCW, ystcw, Px, 0xd9,(07),0xd9,(07) }, 1114 { AFSTENV, ystcw, Px, 0xd9,(06),0xd9,(06) }, 1115 { AFSTSW, ystsw, Px, 0xdd,(07),0xdf,0xe0 }, 1116 { AF2XM1, ynone, Px, 0xd9, 0xf0 }, 1117 { AFABS, ynone, Px, 0xd9, 0xe1 }, 1118 { AFCHS, ynone, Px, 0xd9, 0xe0 }, 1119 { AFCLEX, ynone, Px, 0xdb, 0xe2 }, 1120 { AFCOS, ynone, Px, 0xd9, 0xff }, 1121 { AFDECSTP, ynone, Px, 0xd9, 0xf6 }, 1122 { AFINCSTP, ynone, Px, 0xd9, 0xf7 }, 1123 { AFINIT, ynone, Px, 0xdb, 0xe3 }, 1124 { AFLD1, ynone, Px, 0xd9, 0xe8 }, 1125 { AFLDL2E, ynone, Px, 0xd9, 0xea }, 1126 { AFLDL2T, ynone, Px, 0xd9, 0xe9 }, 1127 { AFLDLG2, ynone, Px, 0xd9, 0xec }, 1128 { AFLDLN2, ynone, Px, 0xd9, 0xed }, 1129 { AFLDPI, ynone, Px, 0xd9, 0xeb }, 1130 { AFLDZ, ynone, Px, 0xd9, 0xee }, 1131 { AFNOP, ynone, Px, 0xd9, 0xd0 }, 1132 { AFPATAN, ynone, Px, 0xd9, 0xf3 }, 1133 { AFPREM, ynone, Px, 0xd9, 0xf8 }, 1134 { AFPREM1, ynone, Px, 0xd9, 0xf5 }, 1135 { AFPTAN, ynone, Px, 0xd9, 0xf2 }, 1136 { AFRNDINT, ynone, Px, 0xd9, 0xfc }, 1137 { AFSCALE, ynone, Px, 0xd9, 0xfd }, 1138 { AFSIN, ynone, Px, 0xd9, 0xfe }, 1139 { AFSINCOS, ynone, Px, 0xd9, 0xfb }, 1140 { AFSQRT, ynone, Px, 0xd9, 0xfa }, 1141 { AFTST, ynone, Px, 0xd9, 0xe4 }, 1142 { AFXAM, ynone, Px, 0xd9, 0xe5 }, 1143 { AFXTRACT, ynone, Px, 0xd9, 0xf4 }, 1144 { AFYL2X, ynone, Px, 0xd9, 0xf1 }, 1145 { AFYL2XP1, ynone, Px, 0xd9, 0xf9 }, 1146 1147 { ACMPXCHGB, yrb_mb, Pb, 0x0f,0xb0 }, 1148 { ACMPXCHGL, yrl_ml, Px, 0x0f,0xb1 }, 1149 { ACMPXCHGW, yrl_ml, Pe, 0x0f,0xb1 }, 1150 { ACMPXCHGQ, yrl_ml, Pw, 0x0f,0xb1 }, 1151 { ACMPXCHG8B, yscond, Pm, 0xc7,(01) }, 1152 { AINVD, ynone, Pm, 0x08 }, 1153 { AINVLPG, ymbs, Pm, 0x01,(07) }, 1154 { ALFENCE, ynone, Pm, 0xae,0xe8 }, 1155 { AMFENCE, ynone, Pm, 0xae,0xf0 }, 1156 { AMOVNTIL, yrl_ml, Pm, 0xc3 }, 1157 { AMOVNTIQ, yrl_ml, Pw, 0x0f,0xc3 }, 1158 { ARDMSR, ynone, Pm, 0x32 }, 1159 { ARDPMC, ynone, Pm, 0x33 }, 1160 { ARDTSC, ynone, Pm, 0x31 }, 1161 { ARSM, ynone, Pm, 0xaa }, 1162 { ASFENCE, ynone, Pm, 0xae,0xf8 }, 1163 { ASYSRET, ynone, Pm, 0x07 }, 1164 { AWBINVD, ynone, Pm, 0x09 }, 1165 { AWRMSR, ynone, Pm, 0x30 }, 1166 1167 { AXADDB, yrb_mb, Pb, 0x0f,0xc0 }, 1168 { AXADDL, yrl_ml, Px, 0x0f,0xc1 }, 1169 { AXADDQ, yrl_ml, Pw, 0x0f,0xc1 }, 1170 { AXADDW, yrl_ml, Pe, 0x0f,0xc1 }, 1171 1172 { AEND }, 1173 0 1174 }; 1175 1176 Optab* opindex[ALAST+1]; 1177 1178 /* 1179 AMOVD 0f 6e/r mmx,reg/mem32[mem64-rex?] 1180 AMOVD 0f 7e/r reg/mem32[64],mmx STORE 1181 AMOVQ 0f 6f/r mmx1,mmx2/mem64 1182 AMOVQ 0f 7f/r mmx1/mem64,mmx2 1183 */ 1184