VirtualBox

Changeset 104156 in vbox for trunk


Ignore:
Timestamp:
Apr 4, 2024 12:05:54 PM (10 months ago)
Author:
vboxsync
Message:

VMM/IEM: Rework microcode of cmpss/cmpsd/cmpps/cmppd/roundss/roundsd/roundps/roundpd/dpps/dppd to use IEM_MC_CALL_SSE_AIMPL_3 and don't reference the MXCSR explicitely, bugref:10641

Location:
trunk/src/VBox/VMM
Files:
6 edited

Legend:

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

    r104150 r104156  
    63856385; CMPPS (SSE)
    63866386;
    6387 ; @param    A0      Pointer to the MXCSR value (input/output).
     6387; @return   R0_32   The new MXCSR value of the guest.
     6388; @param    A0_32   The guest's MXCSR register value to use (input).
    63886389; @param    A1      Pointer to the first media register size operand (output).
    63896390; @param    A2      Pointer to the two media register sized inputs - IEMMEDIAF2XMMSRC (input).
     
    63936394        PROLOGUE_4_ARGS
    63946395        IEMIMPL_SSE_PROLOGUE
    6395         SSE_LD_FXSTATE_MXCSR_ONLY A0
     6396        SSE_AVX_LD_MXCSR A0_32
    63966397
    63976398        movzx   A3, A3_8                ; must clear top bits
     
    64096410        movdqu  [A1], xmm0
    64106411
    6411         SSE_ST_FXSTATE_MXCSR_ONLY_NO_FXSTATE A0
     6412        SSE_AVX_ST_MXCSR R0_32, A0_32
    64126413        IEMIMPL_SSE_EPILOGUE
    64136414        EPILOGUE_4_ARGS
     
    64316432; @param    1       The instruction name.
    64326433;
    6433 ; @param    A0      Pointer to the MXCSR value (input/output).
     6434; @return   R0_32   The new MXCSR value of the guest.
     6435; @param    A0_32   The guest's MXCSR register value to use (input).
    64346436; @param    A1      Pointer to the first media register size operand (output).
    64356437; @param    A2      Pointer to the two media register sized inputs - IEMMEDIAF2XMMSRC (input).
     
    64406442        PROLOGUE_4_ARGS
    64416443        IEMIMPL_SSE_PROLOGUE
    6442         SSE_LD_FXSTATE_MXCSR_ONLY A0
     6444        SSE_AVX_LD_MXCSR A0_32
    64436445
    64446446        movzx   A3, A3_8                ; must clear top bits
     
    64566458        movdqu  [A1], xmm0
    64576459
    6458         SSE_ST_FXSTATE_MXCSR_ONLY_NO_FXSTATE A0
     6460        SSE_AVX_ST_MXCSR R0_32, A0_32
    64596461        IEMIMPL_SSE_EPILOGUE
    64606462        EPILOGUE_4_ARGS
     
    64836485; @param    1       The instruction name.
    64846486;
    6485 ; @param    A0      Pointer to the MXCSR value (input/output).
     6487; @return   R0_32   The new MXCSR value of the guest.
     6488; @param    A0_32   The guest's MXCSR register value to use (input).
    64866489; @param    A1      Pointer to the first media register size operand (output).
    64876490; @param    A2      Pointer to the two media register sized inputs - IEMMEDIAF2XMMSRC (input).
     
    64926495        PROLOGUE_4_ARGS
    64936496        IEMIMPL_SSE_PROLOGUE
    6494         SSE_LD_FXSTATE_MXCSR_ONLY A0
     6497        SSE_AVX_LD_MXCSR A0_32
    64956498
    64966499        movzx   A3, A3_8                ; must clear top bits
     
    65086511        movdqu  [A1], xmm0
    65096512
    6510         SSE_ST_FXSTATE_MXCSR_ONLY_NO_FXSTATE A0
     6513        SSE_AVX_ST_MXCSR R0_32, A0_32
    65116514        IEMIMPL_SSE_EPILOGUE
    65126515        EPILOGUE_4_ARGS
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r104150 r104156  
    1847518475
    1847618476
    18477 IEM_DECL_IMPL_DEF(void, iemAImpl_cmpps_u128,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bEvil))
     18477IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_cmpps_u128,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bEvil))
    1847818478{
    1847918479    for (uint8_t i = 0; i < RT_ELEMENTS(puDst->ar32); i++)
    1848018480    {
    18481         if (iemAImpl_cmp_worker_r32(pfMxcsr, &pSrc->uSrc1.ar32[i], &pSrc->uSrc2.ar32[i], bEvil & 0x7))
     18481        if (iemAImpl_cmp_worker_r32(&uMxCsrIn, &pSrc->uSrc1.ar32[i], &pSrc->uSrc2.ar32[i], bEvil & 0x7))
    1848218482            puDst->au32[i] = UINT32_MAX;
    1848318483        else
    1848418484            puDst->au32[i] = 0;
    1848518485    }
    18486 }
    18487 
    18488 
    18489 IEM_DECL_IMPL_DEF(void, iemAImpl_cmppd_u128,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bEvil))
     18486
     18487    return uMxCsrIn;
     18488}
     18489
     18490
     18491IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_cmppd_u128,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bEvil))
    1849018492{
    1849118493    for (uint8_t i = 0; i < RT_ELEMENTS(puDst->ar64); i++)
    1849218494    {
    18493         if (iemAImpl_cmp_worker_r64(pfMxcsr, &pSrc->uSrc1.ar64[i], &pSrc->uSrc2.ar64[i], bEvil & 0x7))
     18495        if (iemAImpl_cmp_worker_r64(&uMxCsrIn, &pSrc->uSrc1.ar64[i], &pSrc->uSrc2.ar64[i], bEvil & 0x7))
    1849418496            puDst->au64[i] = UINT64_MAX;
    1849518497        else
    1849618498            puDst->au64[i] = 0;
    1849718499    }
    18498 }
    18499 
    18500 
    18501 IEM_DECL_IMPL_DEF(void, iemAImpl_cmpss_u128,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bEvil))
    18502 {
    18503     if (iemAImpl_cmp_worker_r32(pfMxcsr, &pSrc->uSrc1.ar32[0], &pSrc->uSrc2.ar32[0], bEvil & 0x7))
     18500
     18501    return uMxCsrIn;
     18502}
     18503
     18504
     18505IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_cmpss_u128,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bEvil))
     18506{
     18507    if (iemAImpl_cmp_worker_r32(&uMxCsrIn, &pSrc->uSrc1.ar32[0], &pSrc->uSrc2.ar32[0], bEvil & 0x7))
    1850418508        puDst->au32[0] = UINT32_MAX;
    1850518509    else
     
    1850818512    puDst->au32[1] = pSrc->uSrc1.au32[1];
    1850918513    puDst->au64[1] = pSrc->uSrc1.au64[1];
    18510 }
    18511 
    18512 
    18513 IEM_DECL_IMPL_DEF(void, iemAImpl_cmpsd_u128,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bEvil))
    18514 {
    18515     if (iemAImpl_cmp_worker_r64(pfMxcsr, &pSrc->uSrc1.ar64[0], &pSrc->uSrc2.ar64[0], bEvil & 0x7))
     18514    return uMxCsrIn;
     18515}
     18516
     18517
     18518IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_cmpsd_u128,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bEvil))
     18519{
     18520    if (iemAImpl_cmp_worker_r64(&uMxCsrIn, &pSrc->uSrc1.ar64[0], &pSrc->uSrc2.ar64[0], bEvil & 0x7))
    1851618521        puDst->au64[0] = UINT64_MAX;
    1851718522    else
     
    1851918524
    1852018525    puDst->au64[1] = pSrc->uSrc1.au64[1];
     18526    return uMxCsrIn;
    1852118527}
    1852218528#endif
     
    1857218578
    1857318579#ifdef IEM_WITHOUT_ASSEMBLY
    18574 IEM_DECL_IMPL_DEF(void, iemAImpl_roundss_u128,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
    18575 {
    18576     puDst->ar32[0] = iemAImpl_round_worker_r32(pfMxcsr, &pSrc->uSrc2.ar32[0], bImm & X86_SSE_ROUNDXX_IMM_MASK);
     18580IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_roundss_u128,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
     18581{
     18582    puDst->ar32[0] = iemAImpl_round_worker_r32(&uMxCsrIn, &pSrc->uSrc2.ar32[0], bImm & X86_SSE_ROUNDXX_IMM_MASK);
    1857718583    puDst->au32[1] = pSrc->uSrc1.au32[1];
    1857818584    puDst->au64[1] = pSrc->uSrc1.au64[1];
    18579 }
    18580 
    18581 
    18582 IEM_DECL_IMPL_DEF(void, iemAImpl_roundsd_u128,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
    18583 {
    18584     puDst->ar64[0] = iemAImpl_round_worker_r64(pfMxcsr, &pSrc->uSrc2.ar64[0], bImm & X86_SSE_ROUNDXX_IMM_MASK);
     18585    return uMxCsrIn;
     18586}
     18587
     18588
     18589IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_roundsd_u128,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
     18590{
     18591    puDst->ar64[0] = iemAImpl_round_worker_r64(&uMxCsrIn, &pSrc->uSrc2.ar64[0], bImm & X86_SSE_ROUNDXX_IMM_MASK);
    1858518592    puDst->au64[1] = pSrc->uSrc1.au64[1];
    18586 }
    18587 #endif
    18588 
    18589 IEM_DECL_IMPL_DEF(void, iemAImpl_roundps_u128_fallback,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
     18593    return uMxCsrIn;
     18594}
     18595#endif
     18596
     18597IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_roundps_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
    1859018598{
    1859118599    for (uint8_t i = 0; i < RT_ELEMENTS(puDst->ar32); i++)
    1859218600    {
    18593         puDst->ar32[i] = iemAImpl_round_worker_r32(pfMxcsr, &pSrc->uSrc2.ar32[i], bImm & X86_SSE_ROUNDXX_IMM_MASK);
    18594     }
    18595 }
    18596 
    18597 
    18598 IEM_DECL_IMPL_DEF(void, iemAImpl_roundpd_u128_fallback,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
     18601        puDst->ar32[i] = iemAImpl_round_worker_r32(&uMxCsrIn, &pSrc->uSrc2.ar32[i], bImm & X86_SSE_ROUNDXX_IMM_MASK);
     18602    }
     18603
     18604    return uMxCsrIn;
     18605}
     18606
     18607
     18608IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_roundpd_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
    1859918609{
    1860018610    for (uint8_t i = 0; i < RT_ELEMENTS(puDst->ar64); i++)
    1860118611    {
    18602         puDst->ar64[i] = iemAImpl_round_worker_r64(pfMxcsr, &pSrc->uSrc2.ar64[i], bImm & X86_SSE_ROUNDXX_IMM_MASK);
    18603     }
     18612        puDst->ar64[i] = iemAImpl_round_worker_r64(&uMxCsrIn, &pSrc->uSrc2.ar64[i], bImm & X86_SSE_ROUNDXX_IMM_MASK);
     18613    }
     18614
     18615    return uMxCsrIn;
    1860418616}
    1860518617
     
    1924819260 * DPPS
    1924919261 */
    19250 IEM_DECL_IMPL_DEF(void, iemAImpl_dpps_u128_fallback,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
    19251 {
    19252     RT_NOREF(pfMxcsr, puDst, pSrc, bImm);
     19262IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_dpps_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
     19263{
     19264    RT_NOREF(puDst, pSrc, bImm);
    1925319265    AssertReleaseFailed();
     19266    return uMxCsrIn;
    1925419267}
    1925519268
     
    1925819271 * DPPD
    1925919272 */
    19260 IEM_DECL_IMPL_DEF(void, iemAImpl_dppd_u128_fallback,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
    19261 {
    19262     RT_NOREF(pfMxcsr, puDst, pSrc, bImm);
     19273IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_dppd_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
     19274{
     19275    RT_NOREF(puDst, pSrc, bImm);
    1926319276    AssertReleaseFailed();
    19264 }
     19277    return uMxCsrIn;
     19278}
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f3a.cpp.h

    r104018 r104156  
    175175        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    176176        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    177         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    178         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    179         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
    180         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
    181         IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    182         IEM_MC_PREPARE_SSE_USAGE();
    183         IEM_MC_REF_MXCSR(pfMxcsr);
     177        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     178        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
     179        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
     180        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     181        IEM_MC_PREPARE_SSE_USAGE();
    184182
    185183        IEM_MC_FETCH_XREG_PAIR_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
    186         IEM_MC_CALL_VOID_AIMPL_4(pfnU128, pfMxcsr, pDst, pSrc, bImmArg);
     184        IEM_MC_CALL_SSE_AIMPL_3(pfnU128, pDst, pSrc, bImmArg);
    187185        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    188186        IEM_MC_STORE_XREG_XMM(IEM_GET_MODRM_REG(pVCpu, bRm), Dst);
     
    199197        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    200198        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    201         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    202         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    203         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
     199        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     200        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
    204201        IEM_MC_LOCAL(RTGCPTR,                       GCPtrEffSrc);
    205202
    206203        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
    207204        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    208         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     205        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    209206        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    210207        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    212209
    213210        IEM_MC_FETCH_MEM_XMM_ALIGN_SSE_AND_XREG_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    214         IEM_MC_REF_MXCSR(pfMxcsr);
    215         IEM_MC_CALL_VOID_AIMPL_4(pfnU128, pfMxcsr, pDst, pSrc, bImmArg);
     211        IEM_MC_CALL_SSE_AIMPL_3(pfnU128, pDst, pSrc, bImmArg);
    216212        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    217213        IEM_MC_STORE_XREG_XMM(IEM_GET_MODRM_REG(pVCpu, bRm), Dst);
     
    326322        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    327323        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    328         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    329         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    330         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
    331         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
    332         IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    333         IEM_MC_PREPARE_SSE_USAGE();
    334         IEM_MC_REF_MXCSR(pfMxcsr);
     324        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     325        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
     326        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
     327        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     328        IEM_MC_PREPARE_SSE_USAGE();
    335329        IEM_MC_FETCH_XREG_PAIR_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
    336         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_roundss_u128, pfMxcsr, pDst, pSrc, bImmArg);
     330        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_roundss_u128, pDst, pSrc, bImmArg);
    337331        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    338332        IEM_MC_STORE_XREG_XMM_U32(IEM_GET_MODRM_REG(pVCpu, bRm), 0 /*a_iDword*/, Dst);
     
    349343        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    350344        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    351         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    352         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    353         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
     345        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     346        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
    354347        IEM_MC_LOCAL(RTGCPTR,                       GCPtrEffSrc);
    355348
    356349        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
    357350        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    358         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     351        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    359352        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    360353        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    363356        IEM_MC_FETCH_MEM_XMM_U32_AND_XREG_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm),
    364357                                              0 /*a_iDword*/, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    365         IEM_MC_REF_MXCSR(pfMxcsr);
    366         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_roundss_u128, pfMxcsr, pDst, pSrc, bImmArg);
     358        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_roundss_u128, pDst, pSrc, bImmArg);
    367359        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    368360        IEM_MC_STORE_XREG_XMM_U32(IEM_GET_MODRM_REG(pVCpu, bRm), 0 /*a_iDword*/, Dst);
     
    390382        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    391383        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    392         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    393         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    394         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
    395         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
    396         IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    397         IEM_MC_PREPARE_SSE_USAGE();
    398         IEM_MC_REF_MXCSR(pfMxcsr);
     384        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     385        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
     386        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
     387        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     388        IEM_MC_PREPARE_SSE_USAGE();
    399389        IEM_MC_FETCH_XREG_PAIR_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
    400         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_roundsd_u128, pfMxcsr, pDst, pSrc, bImmArg);
     390        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_roundsd_u128, pDst, pSrc, bImmArg);
    401391        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    402392        IEM_MC_STORE_XREG_XMM_U64(IEM_GET_MODRM_REG(pVCpu, bRm), 0 /*a_iQword*/, Dst);
     
    413403        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    414404        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    415         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    416         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    417         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
     405        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     406        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
    418407        IEM_MC_LOCAL(RTGCPTR,                       GCPtrEffSrc);
    419408
    420409        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
    421410        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    422         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     411        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    423412        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    424413        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    427416        IEM_MC_FETCH_MEM_XMM_U64_AND_XREG_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm),
    428417                                              0 /*a_iQword */, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    429         IEM_MC_REF_MXCSR(pfMxcsr);
    430         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_roundsd_u128, pfMxcsr, pDst, pSrc, bImmArg);
     418        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_roundsd_u128, pDst, pSrc, bImmArg);
    431419        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    432420        IEM_MC_STORE_XREG_XMM_U64(IEM_GET_MODRM_REG(pVCpu, bRm), 0 /*a_iQword*/, Dst);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h

    r104150 r104156  
    1181111811        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1181211812        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    11813         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    11814         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    11815         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
    11816         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     11813        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     11814        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
     11815        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    1181711816        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    1181811817        IEM_MC_PREPARE_SSE_USAGE();
    11819         IEM_MC_REF_MXCSR(pfMxcsr);
    1182011818        IEM_MC_FETCH_XREG_PAIR_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
    11821         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_cmpps_u128, pfMxcsr, pDst, pSrc, bImmArg);
     11819        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_cmpps_u128, pDst, pSrc, bImmArg);
    1182211820        IEM_MC_IF_MXCSR_XCPT_PENDING() {
    1182311821            IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     
    1183711835        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1183811836        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    11839         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    11840         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    11841         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
     11837        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     11838        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
    1184211839        IEM_MC_LOCAL(RTGCPTR,                       GCPtrEffSrc);
    1184311840
    1184411841        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
    1184511842        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    11846         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     11843        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    1184711844        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    1184811845        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    1185011847
    1185111848        IEM_MC_FETCH_MEM_XMM_ALIGN_SSE_AND_XREG_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    11852         IEM_MC_REF_MXCSR(pfMxcsr);
    11853         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_cmpps_u128, pfMxcsr, pDst, pSrc, bImmArg);
     11849        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_cmpps_u128, pDst, pSrc, bImmArg);
    1185411850        IEM_MC_IF_MXCSR_XCPT_PENDING() {
    1185511851            IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     
    1188011876        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1188111877        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    11882         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    11883         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    11884         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
    11885         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     11878        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     11879        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
     11880        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    1188611881        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    1188711882        IEM_MC_PREPARE_SSE_USAGE();
    11888         IEM_MC_REF_MXCSR(pfMxcsr);
    1188911883        IEM_MC_FETCH_XREG_PAIR_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
    11890         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_cmppd_u128, pfMxcsr, pDst, pSrc, bImmArg);
     11884        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_cmppd_u128, pDst, pSrc, bImmArg);
    1189111885        IEM_MC_IF_MXCSR_XCPT_PENDING() {
    1189211886            IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     
    1190611900        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1190711901        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    11908         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    11909         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    11910         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
     11902        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     11903        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
    1191111904        IEM_MC_LOCAL(RTGCPTR,                       GCPtrEffSrc);
    1191211905
    1191311906        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
    1191411907        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    11915         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     11908        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    1191611909        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    1191711910        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    1191811911        IEM_MC_PREPARE_SSE_USAGE();
    1191911912
    11920         IEM_MC_REF_MXCSR(pfMxcsr);
    1192111913        IEM_MC_FETCH_MEM_XMM_ALIGN_SSE_AND_XREG_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    11922         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_cmppd_u128, pfMxcsr, pDst, pSrc, bImmArg);
     11914        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_cmppd_u128, pDst, pSrc, bImmArg);
    1192311915        IEM_MC_IF_MXCSR_XCPT_PENDING() {
    1192411916            IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     
    1194911941        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1195011942        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    11951         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    11952         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    11953         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
    11954         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     11943        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     11944        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
     11945        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    1195511946        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    1195611947        IEM_MC_PREPARE_SSE_USAGE();
    11957         IEM_MC_REF_MXCSR(pfMxcsr);
    1195811948        IEM_MC_FETCH_XREG_PAIR_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
    11959         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_cmpss_u128, pfMxcsr, pDst, pSrc, bImmArg);
     11949        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_cmpss_u128, pDst, pSrc, bImmArg);
    1196011950        IEM_MC_IF_MXCSR_XCPT_PENDING() {
    1196111951            IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     
    1197511965        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1197611966        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    11977         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    11978         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    11979         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
     11967        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     11968        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
    1198011969        IEM_MC_LOCAL(RTGCPTR,                       GCPtrEffSrc);
    1198111970
    1198211971        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
    1198311972        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    11984         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     11973        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    1198511974        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    1198611975        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    1198911978        IEM_MC_FETCH_MEM_XMM_U32_AND_XREG_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm),
    1199011979                                              0 /*a_iDword*/, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    11991         IEM_MC_REF_MXCSR(pfMxcsr);
    11992         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_cmpss_u128, pfMxcsr, pDst, pSrc, bImmArg);
     11980        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_cmpss_u128, pDst, pSrc, bImmArg);
    1199311981        IEM_MC_IF_MXCSR_XCPT_PENDING() {
    1199411982            IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     
    1201912007        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1202012008        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    12021         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    12022         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    12023         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
    12024         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     12009        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     12010        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
     12011        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    1202512012        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    1202612013        IEM_MC_PREPARE_SSE_USAGE();
    12027         IEM_MC_REF_MXCSR(pfMxcsr);
    1202812014        IEM_MC_FETCH_XREG_PAIR_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm), IEM_GET_MODRM_RM(pVCpu, bRm));
    12029         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_cmpsd_u128, pfMxcsr, pDst, pSrc, bImmArg);
     12015        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_cmpsd_u128, pDst, pSrc, bImmArg);
    1203012016        IEM_MC_IF_MXCSR_XCPT_PENDING() {
    1203112017            IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     
    1204512031        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1204612032        IEM_MC_LOCAL(X86XMMREG,                     Dst);
    12047         IEM_MC_ARG(uint32_t *,                      pfMxcsr,                0);
    12048         IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    1);
    12049         IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    2);
     12033        IEM_MC_ARG_LOCAL_REF(PX86XMMREG,            pDst,           Dst,    0);
     12034        IEM_MC_ARG_LOCAL_REF(PCIEMMEDIAF2XMMSRC,    pSrc,           Src,    1);
    1205012035        IEM_MC_LOCAL(RTGCPTR,                       GCPtrEffSrc);
    1205112036
    1205212037        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
    1205312038        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    12054         IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    3);
     12039        IEM_MC_ARG_CONST(uint8_t,                   bImmArg, /*=*/ bImm,    2);
    1205512040        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    1205612041        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    1205712042        IEM_MC_PREPARE_SSE_USAGE();
    1205812043
    12059         IEM_MC_REF_MXCSR(pfMxcsr);
    1206012044        IEM_MC_FETCH_MEM_XMM_U64_AND_XREG_XMM(Src, IEM_GET_MODRM_REG(pVCpu, bRm),
    1206112045                                              0 /*a_iQword */, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    12062         IEM_MC_CALL_VOID_AIMPL_4(iemAImpl_cmpsd_u128, pfMxcsr, pDst, pSrc, bImmArg);
     12046        IEM_MC_CALL_SSE_AIMPL_3(iemAImpl_cmpsd_u128, pDst, pSrc, bImmArg);
    1206312047        IEM_MC_IF_MXCSR_XCPT_PENDING() {
    1206412048            IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r104151 r104156  
    39113911typedef const IEMMEDIAF2XMMSRC *PCIEMMEDIAF2XMMSRC;
    39123912
    3913 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMXCSRF2XMMIMM8,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC puSrc, uint8_t bEvil));
     3913typedef IEM_DECL_IMPL_TYPE(uint32_t, FNIEMAIMPLMXCSRF2XMMIMM8,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC puSrc, uint8_t bEvil));
    39143914typedef FNIEMAIMPLMXCSRF2XMMIMM8 *PFNIEMAIMPLMXCSRF2XMMIMM8;
    39153915
  • trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp

    r104150 r104156  
    79187918                                              | (iFz  ? X86_MXCSR_FZ  : 0)
    79197919                                              | X86_MXCSR_XCPT_MASK;
    7920                             uint32_t fMxcsrM  = fMxcsrIn;
    79217920                            X86XMMREG ResM;
    7922                             pfn(&fMxcsrM, &ResM, &Src, bImm);
     7921                            uint32_t fMxcsrM    = pfn(fMxcsrIn, &ResM, &Src, bImm);
    79237922                            TestData.fMxcsrIn   = fMxcsrIn;
    79247923                            TestData.fMxcsrOut  = fMxcsrM;
     
    79287927
    79297928                            fMxcsrIn &= ~X86_MXCSR_XCPT_MASK;
    7930                             uint32_t fMxcsrU  = fMxcsrIn;
    79317929                            X86XMMREG ResU;
    7932                             pfn(&fMxcsrU, &ResU, &Src, bImm);
     7930                            uint32_t fMxcsrU    = pfn(fMxcsrIn, &ResU, &Src, bImm);
    79337931                            TestData.fMxcsrIn   = fMxcsrIn;
    79347932                            TestData.fMxcsrOut  = fMxcsrU;
     
    79417939                            {
    79427940                                fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | fXcpt;
    7943                                 uint32_t fMxcsr1  = fMxcsrIn;
    79447941                                X86XMMREG Res1;
    7945                                 pfn(&fMxcsr1, &Res1, &Src, bImm);
     7942                                uint32_t fMxcsr1    = pfn(fMxcsrIn, &Res1, &Src, bImm);
    79467943                                TestData.fMxcsrIn   = fMxcsrIn;
    79477944                                TestData.fMxcsrOut  = fMxcsr1;
     
    79547951                                    fXcpt |= fMxcsr1 & X86_MXCSR_XCPT_FLAGS;
    79557952                                    fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | (fXcpt << X86_MXCSR_XCPT_MASK_SHIFT);
    7956                                     uint32_t fMxcsr2  = fMxcsrIn;
    79577953                                    X86XMMREG Res2;
    7958                                     pfn(&fMxcsr2, &Res2, &Src, bImm);
     7954                                    uint32_t fMxcsr2    = pfn(fMxcsrIn, &Res2, &Src, bImm);
    79597955                                    TestData.fMxcsrIn   = fMxcsrIn;
    79607956                                    TestData.fMxcsrOut  = fMxcsr2;
     
    79687964                                        {
    79697965                                            fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | ((fXcpt & ~fUnmasked) << X86_MXCSR_XCPT_MASK_SHIFT);
    7970                                             uint32_t fMxcsr3  = fMxcsrIn;
    79717966                                            X86XMMREG Res3;
    7972                                             pfn(&fMxcsr3, &Res3, &Src, bImm);
     7967                                            uint32_t fMxcsr3    = pfn(fMxcsrIn, &Res3, &Src, bImm);
    79737968                                            TestData.fMxcsrIn   = fMxcsrIn;
    79747969                                            TestData.fMxcsrOut  = fMxcsr3;
     
    80088003                Src.uSrc1 = paTests[iTest].InVal1;
    80098004                Src.uSrc2 = paTests[iTest].InVal2;
    8010                 uint32_t fMxcsr = paTests[iTest].fMxcsrIn;
    8011                 pfn(&fMxcsr, &ValOut, &Src, paTests[iTest].bImm);
     8005                uint32_t fMxcsr = pfn(paTests[iTest].fMxcsrIn, &ValOut, &Src, paTests[iTest].bImm);
    80128006                if (   fMxcsr != paTests[iTest].fMxcsrOut
    80138007                    || ValOut.au32[0] != paTests[iTest].OutVal.au32[0]
     
    81158109                                              | (iFz  ? X86_MXCSR_FZ  : 0)
    81168110                                              | X86_MXCSR_XCPT_MASK;
    8117                             uint32_t fMxcsrM  = fMxcsrIn;
    81188111                            X86XMMREG ResM;
    8119                             pfn(&fMxcsrM, &ResM, &Src, bImm);
     8112                            uint32_t fMxcsrM    = pfn(fMxcsrIn, &ResM, &Src, bImm);
    81208113                            TestData.fMxcsrIn   = fMxcsrIn;
    81218114                            TestData.fMxcsrOut  = fMxcsrM;
     
    81258118
    81268119                            fMxcsrIn &= ~X86_MXCSR_XCPT_MASK;
    8127                             uint32_t fMxcsrU  = fMxcsrIn;
    81288120                            X86XMMREG ResU;
    8129                             pfn(&fMxcsrU, &ResU, &Src, bImm);
     8121                            uint32_t fMxcsrU    = pfn(fMxcsrIn, &ResU, &Src, bImm);
    81308122                            TestData.fMxcsrIn   = fMxcsrIn;
    81318123                            TestData.fMxcsrOut  = fMxcsrU;
     
    81388130                            {
    81398131                                fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | fXcpt;
    8140                                 uint32_t fMxcsr1  = fMxcsrIn;
    81418132                                X86XMMREG Res1;
    8142                                 pfn(&fMxcsr1, &Res1, &Src, bImm);
     8133                                uint32_t fMxcsr1    = pfn(fMxcsrIn, &Res1, &Src, bImm);
    81438134                                TestData.fMxcsrIn   = fMxcsrIn;
    81448135                                TestData.fMxcsrOut  = fMxcsr1;
     
    81518142                                    fXcpt |= fMxcsr1 & X86_MXCSR_XCPT_FLAGS;
    81528143                                    fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | (fXcpt << X86_MXCSR_XCPT_MASK_SHIFT);
    8153                                     uint32_t fMxcsr2  = fMxcsrIn;
    81548144                                    X86XMMREG Res2;
    8155                                     pfn(&fMxcsr2, &Res2, &Src, bImm);
     8145                                    uint32_t fMxcsr2    = pfn(fMxcsrIn, &Res2, &Src, bImm);
    81568146                                    TestData.fMxcsrIn   = fMxcsrIn;
    81578147                                    TestData.fMxcsrOut  = fMxcsr2;
     
    81658155                                        {
    81668156                                            fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | ((fXcpt & ~fUnmasked) << X86_MXCSR_XCPT_MASK_SHIFT);
    8167                                             uint32_t fMxcsr3  = fMxcsrIn;
    81688157                                            X86XMMREG Res3;
    8169                                             pfn(&fMxcsr3, &Res3, &Src, bImm);
     8158                                            uint32_t fMxcsr3    = pfn(fMxcsrIn, &Res3, &Src, bImm);
    81708159                                            TestData.fMxcsrIn   = fMxcsrIn;
    81718160                                            TestData.fMxcsrOut  = fMxcsr3;
     
    82058194                Src.uSrc1 = paTests[iTest].InVal1;
    82068195                Src.uSrc2 = paTests[iTest].InVal2;
    8207                 uint32_t fMxcsr = paTests[iTest].fMxcsrIn;
    8208                 pfn(&fMxcsr, &ValOut, &Src, paTests[iTest].bImm);
     8196                uint32_t fMxcsr = pfn(paTests[iTest].fMxcsrIn, &ValOut, &Src, paTests[iTest].bImm);
    82098197                if (   fMxcsr != paTests[iTest].fMxcsrOut
    82108198                    || ValOut.au64[0] != paTests[iTest].OutVal.au64[0]
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