VirtualBox

Changeset 107295 in vbox


Ignore:
Timestamp:
Dec 12, 2024 5:10:30 AM (7 weeks ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: fix IEM implementation of vcmpss, vcmpsd; bugref: 10822; jiraref:VBP-1476

These instructions were broken in 2 ways:

  1. checking for SSE rather than AVX execution preconditions
  2. passing wrong register ID to the 'fetch register pair' macros
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h

    r107218 r107295  
    58525852        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              uSrc);
    58535853        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    puSrc,         uSrc,    1);
    5854         IEM_MC_FETCH_XREG_PAIR_XMM(uSrc, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
     5854        IEM_MC_FETCH_XREG_PAIR_XMM(uSrc, IEM_GET_EFFECTIVE_VVVV(pVCpu), IEM_GET_MODRM_RM(pVCpu, bRm));
    58555855        IEM_MC_LOCAL(X86XMMREG,                     uDst);
    58565856        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            puDst,         uDst,    0);
     
    58745874        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    58755875        IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    5876         IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     5876        IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
    58775877        IEM_MC_PREPARE_AVX_USAGE();
    58785878
    58795879        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              uSrc);
    58805880        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    puSrc,         uSrc,    1);
    5881         IEM_MC_FETCH_MEM_XMM_U32_AND_XREG_XMM(uSrc, IEM_GET_MODRM_REG(pVCpu, bRm),
     5881        IEM_MC_FETCH_MEM_XMM_U32_AND_XREG_XMM(uSrc, IEM_GET_EFFECTIVE_VVVV(pVCpu),
    58825882                                              0 /*a_iDword*/, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    58835883        IEM_MC_LOCAL(X86XMMREG,                     uDst);
     
    59125912        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              uSrc);
    59135913        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    puSrc,         uSrc,    1);
    5914         IEM_MC_FETCH_XREG_PAIR_XMM(uSrc, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
     5914        IEM_MC_FETCH_XREG_PAIR_XMM(uSrc, IEM_GET_EFFECTIVE_VVVV(pVCpu), IEM_GET_MODRM_RM(pVCpu, bRm));
    59155915        IEM_MC_LOCAL(X86XMMREG,                     uDst);
    59165916        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            puDst,         uDst,    0);
     
    59345934        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    59355935        IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    5936         IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     5936        IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
    59375937        IEM_MC_PREPARE_AVX_USAGE();
    59385938
    59395939        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              uSrc);
    59405940        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    puSrc,         uSrc,    1);
    5941         IEM_MC_FETCH_MEM_XMM_U64_AND_XREG_XMM(uSrc, IEM_GET_MODRM_REG(pVCpu, bRm),
     5941        IEM_MC_FETCH_MEM_XMM_U64_AND_XREG_XMM(uSrc, IEM_GET_EFFECTIVE_VVVV(pVCpu),
    59425942                                              0 /*a_iQword*/, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    59435943        IEM_MC_LOCAL(X86XMMREG,                     uDst);
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