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