VirtualBox

Ignore:
Timestamp:
Jun 22, 2022 4:15:23 PM (2 years ago)
Author:
vboxsync
Message:

VMM/IEM: Implemented the PDEP and PEXT instructions. bugref:9898

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm

    r95343 r95345  
    638638;
    639639; @param        1       The instruction mnemonic.
    640 ;
    641 %macro IEMIMPL_VEX_BIN_OP_NOEFL 2
     640; @param        2       Fallback instruction if applicable.
     641; @param        3       Whether to emit fallback or not.
     642;
     643%macro IEMIMPL_VEX_BIN_OP_NOEFL 3
    642644BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u32, 12
    643645        PROLOGUE_3_ARGS
     
    647649ENDPROC iemAImpl_ %+ %1 %+ _u32
    648650
     651 %if %3
    649652BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u32_fallback, 12
    650653        PROLOGUE_3_ARGS
    651  %ifdef ASM_CALL64_GCC
     654  %ifdef ASM_CALL64_GCC
    652655        mov     cl, A2_8
    653656        %2      A1_32, cl
    654657        mov     [A0], A1_32
    655  %else
     658  %else
    656659        xchg    A2, A0
    657660        %2      A1_32, cl
    658661        mov     [A2], A1_32
    659  %endif
     662  %endif
    660663        EPILOGUE_3_ARGS
    661664ENDPROC iemAImpl_ %+ %1 %+ _u32_fallback
     665 %endif
    662666
    663667 %ifdef RT_ARCH_AMD64
     
    669673ENDPROC iemAImpl_ %+ %1 %+ _u64
    670674
     675 %if %3
    671676BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_fallback, 12
    672677        PROLOGUE_3_ARGS
    673  %ifdef ASM_CALL64_GCC
     678  %ifdef ASM_CALL64_GCC
    674679        mov     cl, A2_8
    675680        %2      A1, cl
    676681        mov     [A0], A1_32
    677  %else
     682  %else
    678683        xchg    A2, A0
    679684        %2      A1, cl
    680685        mov     [A2], A1_32
    681  %endif
     686  %endif
    682687        mov     [A0], A1
    683688        EPILOGUE_3_ARGS
    684689ENDPROC iemAImpl_ %+ %1 %+ _u64_fallback
     690  %endif
    685691 %endif ; RT_ARCH_AMD64
    686692%endmacro
    687693
    688 ;                           instr, fallback instr
    689 IEMIMPL_VEX_BIN_OP_NOEFL    sarx,  sar
    690 IEMIMPL_VEX_BIN_OP_NOEFL    shlx,  shl
    691 IEMIMPL_VEX_BIN_OP_NOEFL    shrx,  shr
     694;                           instr, fallback instr, emit fallback
     695IEMIMPL_VEX_BIN_OP_NOEFL    sarx,  sar,            1
     696IEMIMPL_VEX_BIN_OP_NOEFL    shlx,  shl,            1
     697IEMIMPL_VEX_BIN_OP_NOEFL    shrx,  shr,            1
     698IEMIMPL_VEX_BIN_OP_NOEFL    pdep,  nop,            0
     699IEMIMPL_VEX_BIN_OP_NOEFL    pext,  nop,            0
    692700
    693701
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette