Some new opcodes and some aliases: ljmp[wl], prefetch{nta,t0,t1,t2}, bswap[lq], sysretq, swapgs.
Unified · Split
| @@ -287,6 +287,8 @@ ljmp $0x100, $0x1000 · 286 unmodified lines | ||
| 287 | 287 | #else |
| 288 | 288 | ljmp *0x100 |
| 289 | 289 | ljmp *(%rdi) |
| 290 | +ljmpl *(%esi) | |
| 291 | +ljmpw *(%esi) | |
| 290 | 292 | #endif |
| 291 | 293 | |
| 292 | 294 | ret |
| @@ -484,6 +486,7 @@ L3: · 191 unmodified lines | ||
| 484 | 486 | fwait |
| 485 | 487 | |
| 486 | 488 | bswap %edx |
| 489 | +bswapl %ecx | |
| 487 | 490 | xadd %ecx, %edx |
| 488 | 491 | xaddb %dl, 0x1000 |
| 489 | 492 | xaddw %ax, 0x1000 |
| @@ -515,6 +518,7 @@ fucomip %st(5), %st · 25 unmodified lines | ||
| 515 | 518 | cmovns %edx, %edi |
| 516 | 519 | cmovne %ax, %si |
| 517 | 520 | #ifdef __x86_64__ |
| 521 | + bswapq %rsi | |
| 518 | 522 | cmovz %rdi,%rbx |
| 519 | 523 | #endif |
| 520 | 524 | |
| @@ -610,9 +614,14 @@ int $0x10 · 89 unmodified lines | ||
| 610 | 614 | #ifdef __x86_64__ |
| 611 | 615 | syscall |
| 612 | 616 | sysret |
| 617 | + sysretq | |
| 613 | 618 | lfence |
| 614 | 619 | mfence |
| 615 | 620 | sfence |
| 621 | + prefetchnta 0x18(%rdx) | |
| 622 | + prefetcht0 (%rcx) | |
| 623 | + prefetcht1 (%rsi) | |
| 624 | + prefetcht2 (%rdi) | |
| 616 | 625 | clflush 0x1000(%rax,%rcx) |
| 617 | 626 | fxsaveq (%rdx) |
| 618 | 627 | fxrstorq (%rcx) |
| @@ -680,6 +689,8 @@ int $0x10 · 61 unmodified lines | ||
| 680 | 689 | lidtq 0x1000 |
| 681 | 690 | sgdtq 0x1000 |
| 682 | 691 | sidtq 0x1000 |
| 692 | + | |
| 693 | + swapgs | |
| 683 | 694 | #endif |
| 684 | 695 | |
| 685 | 696 | lmsw 0x1000 |
| @@ -91,6 +91,7 @@ ALT(DEF_ASM_OP2(btcw, 0x0fba, 7, OPC_MODRM | OPC_WLX, OPT_IM8, OPT_REGW | OPT_EA · 90 unmodified lines | ||
| 91 | 91 | |
| 92 | 92 | DEF_ASM_OP0(syscall, 0x0f05) |
| 93 | 93 | DEF_ASM_OP0(sysret, 0x0f07) |
| 94 | + DEF_ASM_OP0L(sysretq, 0x480f07, 0, 0) | |
| 94 | 95 | DEF_ASM_OP0(ud2, 0x0f0b) |
| 95 | 96 | |
| 96 | 97 | /* NOTE: we took the same order as gas opcode definition order */ |
| @@ -216,6 +217,8 @@ ALT(DEF_ASM_OP1(jmp, 0xeb, 0, 0, OPT_DISP8)) · 119 unmodified lines | ||
| 216 | 217 | |
| 217 | 218 | ALT(DEF_ASM_OP1(lcall, 0xff, 3, OPC_MODRM, OPT_EA)) |
| 218 | 219 | ALT(DEF_ASM_OP1(ljmp, 0xff, 5, OPC_MODRM, OPT_EA)) |
| 220 | + DEF_ASM_OP1(ljmpw, 0x66ff, 5, OPC_MODRM, OPT_EA) | |
| 221 | + DEF_ASM_OP1(ljmpl, 0xff, 5, OPC_MODRM, OPT_EA) | |
| 219 | 222 | |
| 220 | 223 | ALT(DEF_ASM_OP1(int, 0xcd, 0, 0, OPT_IM8)) |
| 221 | 224 | ALT(DEF_ASM_OP1(seto, 0x0f90, 0, OPC_MODRM | OPC_TEST, OPT_REG8 | OPT_EA)) |
| @@ -374,9 +377,14 @@ ALT(DEF_ASM_OP2(lslw, 0x0f03, 0, OPC_MODRM | OPC_WLX, OPT_EA | OPT_REG, OPT_REG) · 152 unmodified lines | ||
| 374 | 377 | DEF_ASM_OP1(str, 0x0f00, 1, OPC_MODRM, OPT_REG16| OPT_EA) |
| 375 | 378 | DEF_ASM_OP1(verr, 0x0f00, 4, OPC_MODRM, OPT_REG | OPT_EA) |
| 376 | 379 | DEF_ASM_OP1(verw, 0x0f00, 5, OPC_MODRM, OPT_REG | OPT_EA) |
| 380 | + DEF_ASM_OP0L(swapgs, 0x0f01, 7, OPC_MODRM) | |
| 377 | 381 | |
| 378 | 382 | /* 486 */ |
| 383 | + /* bswap can't be applied to 16bit regs */ | |
| 379 | 384 | DEF_ASM_OP1(bswap, 0x0fc8, 0, OPC_REG, OPT_REG32 ) |
| 385 | + DEF_ASM_OP1(bswapl, 0x0fc8, 0, OPC_REG, OPT_REG32 ) | |
| 386 | + DEF_ASM_OP1(bswapq, 0x480fc8, 0, OPC_REG, OPT_REG64 ) | |
| 387 | + | |
| 380 | 388 | ALT(DEF_ASM_OP2(xaddb, 0x0fc0, 0, OPC_MODRM | OPC_BWLX, OPT_REG, OPT_REG | OPT_EA )) |
| 381 | 389 | ALT(DEF_ASM_OP2(cmpxchgb, 0x0fb0, 0, OPC_MODRM | OPC_BWLX, OPT_REG, OPT_REG | OPT_EA )) |
| 382 | 390 | DEF_ASM_OP1(invlpg, 0x0f01, 7, OPC_MODRM, OPT_EA ) |
| @@ -495,6 +503,10 @@ ALT(DEF_ASM_OP2(movhps, 0x0f17, 0, OPC_MODRM, OPT_SSE, OPT_EA | OPT_REG32 )) · 112 unmodified lines | ||
| 495 | 503 | DEF_ASM_OP2(sqrtps, 0x0f51, 0, OPC_MODRM, OPT_EA | OPT_SSE, OPT_SSE ) |
| 496 | 504 | DEF_ASM_OP2(subps, 0x0f5c, 0, OPC_MODRM, OPT_EA | OPT_SSE, OPT_SSE ) |
| 497 | 505 | |
| 506 | + DEF_ASM_OP1(prefetchnta, 0x0f18, 0, OPC_MODRM, OPT_EA) | |
| 507 | + DEF_ASM_OP1(prefetcht0, 0x0f18, 1, OPC_MODRM, OPT_EA) | |
| 508 | + DEF_ASM_OP1(prefetcht1, 0x0f18, 2, OPC_MODRM, OPT_EA) | |
| 509 | + DEF_ASM_OP1(prefetcht2, 0x0f18, 3, OPC_MODRM, OPT_EA) | |
| 498 | 510 | DEF_ASM_OP0L(lfence, 0x0fae, 5, OPC_MODRM) |
| 499 | 511 | DEF_ASM_OP0L(mfence, 0x0fae, 6, OPC_MODRM) |
| 500 | 512 | DEF_ASM_OP0L(sfence, 0x0fae, 7, OPC_MODRM) |