mirror of https://repo.or.cz/tinycc.git
x86asm: Add lzcnt/tzcnt support
We already support popcnt, add lzcnt and tzcnt as well. Signed-off-by: Mathias Krause <minipli@grsecurity.net>
This commit is contained in:
parent
079692016d
commit
9cfc8f60ce
|
@ -75,6 +75,9 @@ ALT(DEF_ASM_OP2(btcw, 0x0fba, 7, OPC_MODRM | OPC_WLX, OPT_IM8, OPT_REGW | OPT_EA
|
||||||
|
|
||||||
ALT(DEF_ASM_OP2(popcntw, 0xf30fb8, 0, OPC_MODRM | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))
|
ALT(DEF_ASM_OP2(popcntw, 0xf30fb8, 0, OPC_MODRM | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))
|
||||||
|
|
||||||
|
ALT(DEF_ASM_OP2(tzcntw, 0xf30fbc, 0, OPC_MODRM | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))
|
||||||
|
ALT(DEF_ASM_OP2(lzcntw, 0xf30fbd, 0, OPC_MODRM | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))
|
||||||
|
|
||||||
/* prefixes */
|
/* prefixes */
|
||||||
DEF_ASM_OP0(wait, 0x9b)
|
DEF_ASM_OP0(wait, 0x9b)
|
||||||
DEF_ASM_OP0(fwait, 0x9b)
|
DEF_ASM_OP0(fwait, 0x9b)
|
||||||
|
|
|
@ -269,6 +269,8 @@
|
||||||
DEF_WLX(btr)
|
DEF_WLX(btr)
|
||||||
DEF_WLX(btc)
|
DEF_WLX(btc)
|
||||||
DEF_WLX(popcnt)
|
DEF_WLX(popcnt)
|
||||||
|
DEF_WLX(tzcnt)
|
||||||
|
DEF_WLX(lzcnt)
|
||||||
|
|
||||||
DEF_WLX(lar)
|
DEF_WLX(lar)
|
||||||
DEF_WLX(lsl)
|
DEF_WLX(lsl)
|
||||||
|
|
|
@ -766,7 +766,29 @@ int $0x10
|
||||||
popcnt %rbx, %rdi
|
popcnt %rbx, %rdi
|
||||||
popcntq %rcx, %r8
|
popcntq %rcx, %r8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
lzcnt %cx, %ax
|
||||||
|
lzcntw %cx, %ax
|
||||||
|
lzcnt %edx, %ebx
|
||||||
|
lzcntl 8(%edi), %ecx
|
||||||
|
#ifdef __x86_64__
|
||||||
|
lzcnt %rdi, %rdx
|
||||||
|
lzcntq %r12, %r15
|
||||||
|
lzcnt 0x40(%rcx), %r11
|
||||||
|
lzcntq (%r8), %rsi
|
||||||
|
#endif
|
||||||
|
|
||||||
|
tzcnt %cx, %ax
|
||||||
|
tzcntw %cx, %ax
|
||||||
|
tzcnt %edx, %ebx
|
||||||
|
tzcntl -24(%edi), %ecx
|
||||||
|
#ifdef __x86_64__
|
||||||
|
tzcnt %rbp, %rdx
|
||||||
|
tzcntq %rax, %r15
|
||||||
|
tzcnt -8(%rbp), %rcx
|
||||||
|
tzcntq (%r8), %r12
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __i386__
|
#ifdef __i386__
|
||||||
boundl %edx, 0x10000
|
boundl %edx, 0x10000
|
||||||
boundw %bx, 0x1000
|
boundw %bx, 0x1000
|
||||||
|
|
|
@ -83,6 +83,9 @@ ALT(DEF_ASM_OP2(btcw, 0x0fba, 7, OPC_MODRM | OPC_WLX, OPT_IM8, OPT_REGW | OPT_EA
|
||||||
|
|
||||||
ALT(DEF_ASM_OP2(popcntw, 0xf30fb8, 0, OPC_MODRM | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))
|
ALT(DEF_ASM_OP2(popcntw, 0xf30fb8, 0, OPC_MODRM | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))
|
||||||
|
|
||||||
|
ALT(DEF_ASM_OP2(tzcntw, 0xf30fbc, 0, OPC_MODRM | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))
|
||||||
|
ALT(DEF_ASM_OP2(lzcntw, 0xf30fbd, 0, OPC_MODRM | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))
|
||||||
|
|
||||||
/* prefixes */
|
/* prefixes */
|
||||||
DEF_ASM_OP0(lock, 0xf0)
|
DEF_ASM_OP0(lock, 0xf0)
|
||||||
DEF_ASM_OP0(rep, 0xf3)
|
DEF_ASM_OP0(rep, 0xf3)
|
||||||
|
|
Loading…
Reference in New Issue