Changeset 104174 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
- Timestamp:
- Apr 5, 2024 10:21:30 AM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 162602
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r104156 r104174 3475 3475 IEM_MC_BEGIN(0, 0); 3476 3476 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3477 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);3478 3477 IEM_MC_LOCAL(X86XMMREG, Dst); 3479 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, pDst, Dst, 1);3480 IEM_MC_ARG(uint64_t, u64Src, 2);3478 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, pDst, Dst, 0); 3479 IEM_MC_ARG(uint64_t, u64Src, 1); 3481 3480 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 3482 3481 IEM_MC_MAYBE_RAISE_FPU_XCPT(); … … 3484 3483 IEM_MC_FPU_TO_MMX_MODE(); 3485 3484 3486 IEM_MC_REF_MXCSR(pfMxcsr);3487 3485 IEM_MC_FETCH_XREG_XMM(Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); /* Need it because the high quadword remains unchanged. */ 3488 3486 IEM_MC_FETCH_MREG_U64(u64Src, IEM_GET_MODRM_RM_8(bRm)); 3489 3487 3490 IEM_MC_CALL_ VOID_AIMPL_3(iemAImpl_cvtpi2ps_u128, pfMxcsr, pDst, u64Src);3488 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvtpi2ps_u128, pDst, u64Src); 3491 3489 IEM_MC_IF_MXCSR_XCPT_PENDING() { 3492 3490 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 3504 3502 */ 3505 3503 IEM_MC_BEGIN(0, 0); 3506 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);3507 3504 IEM_MC_LOCAL(X86XMMREG, Dst); 3508 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, pDst, Dst, 1);3509 IEM_MC_ARG(uint64_t, u64Src, 2);3505 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, pDst, Dst, 0); 3506 IEM_MC_ARG(uint64_t, u64Src, 1); 3510 3507 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3511 3508 … … 3518 3515 IEM_MC_PREPARE_FPU_USAGE(); 3519 3516 IEM_MC_FPU_TO_MMX_MODE(); 3520 IEM_MC_REF_MXCSR(pfMxcsr); 3521 3522 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_cvtpi2ps_u128, pfMxcsr, pDst, u64Src); 3517 3518 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvtpi2ps_u128, pDst, u64Src); 3523 3519 IEM_MC_IF_MXCSR_XCPT_PENDING() { 3524 3520 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 3545 3541 IEM_MC_BEGIN(0, 0); 3546 3542 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3547 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);3548 3543 IEM_MC_LOCAL(X86XMMREG, Dst); 3549 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, pDst, Dst, 1);3550 IEM_MC_ARG(uint64_t, u64Src, 2);3544 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, pDst, Dst, 0); 3545 IEM_MC_ARG(uint64_t, u64Src, 1); 3551 3546 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 3552 3547 IEM_MC_MAYBE_RAISE_FPU_XCPT(); … … 3554 3549 IEM_MC_FPU_TO_MMX_MODE(); 3555 3550 3556 IEM_MC_REF_MXCSR(pfMxcsr);3557 3551 IEM_MC_FETCH_MREG_U64(u64Src, IEM_GET_MODRM_RM_8(bRm)); 3558 3552 3559 IEM_MC_CALL_ VOID_AIMPL_3(iemAImpl_cvtpi2pd_u128, pfMxcsr, pDst, u64Src);3553 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvtpi2pd_u128, pDst, u64Src); 3560 3554 IEM_MC_IF_MXCSR_XCPT_PENDING() { 3561 3555 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 3573 3567 */ 3574 3568 IEM_MC_BEGIN(0, 0); 3575 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);3576 3569 IEM_MC_LOCAL(X86XMMREG, Dst); 3577 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, pDst, Dst, 1);3578 IEM_MC_ARG(uint64_t, u64Src, 2);3570 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, pDst, Dst, 0); 3571 IEM_MC_ARG(uint64_t, u64Src, 1); 3579 3572 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3580 3573 … … 3587 3580 /* Doesn't cause a transition to MMX mode. */ 3588 3581 IEM_MC_PREPARE_SSE_USAGE(); 3589 IEM_MC_REF_MXCSR(pfMxcsr); 3590 3591 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_cvtpi2pd_u128, pfMxcsr, pDst, u64Src); 3582 3583 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvtpi2pd_u128, pDst, u64Src); 3592 3584 IEM_MC_IF_MXCSR_XCPT_PENDING() { 3593 3585 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 3921 3913 IEM_MC_BEGIN(0, 0); 3922 3914 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3923 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);3924 3915 IEM_MC_LOCAL(uint64_t, u64Dst); 3925 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 1);3926 IEM_MC_ARG(uint64_t, u64Src, 2);3916 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 0); 3917 IEM_MC_ARG(uint64_t, u64Src, 1); 3927 3918 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 3928 3919 IEM_MC_PREPARE_FPU_USAGE(); 3929 3920 IEM_MC_FPU_TO_MMX_MODE(); 3930 3921 3931 IEM_MC_REF_MXCSR(pfMxcsr);3932 3922 IEM_MC_FETCH_XREG_U64(u64Src, IEM_GET_MODRM_RM(pVCpu, bRm), 0 /* a_iQword*/); 3933 3923 3934 IEM_MC_CALL_ VOID_AIMPL_3(iemAImpl_cvttps2pi_u128, pfMxcsr, pu64Dst, u64Src);3924 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvttps2pi_u128, pu64Dst, u64Src); 3935 3925 IEM_MC_IF_MXCSR_XCPT_PENDING() { 3936 3926 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 3948 3938 */ 3949 3939 IEM_MC_BEGIN(0, 0); 3950 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);3951 3940 IEM_MC_LOCAL(uint64_t, u64Dst); 3952 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 1);3953 IEM_MC_ARG(uint64_t, u64Src, 2);3941 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 0); 3942 IEM_MC_ARG(uint64_t, u64Src, 1); 3954 3943 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3955 3944 … … 3961 3950 IEM_MC_PREPARE_FPU_USAGE(); 3962 3951 IEM_MC_FPU_TO_MMX_MODE(); 3963 IEM_MC_REF_MXCSR(pfMxcsr); 3964 3965 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_cvttps2pi_u128, pfMxcsr, pu64Dst, u64Src); 3952 3953 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvttps2pi_u128, pu64Dst, u64Src); 3966 3954 IEM_MC_IF_MXCSR_XCPT_PENDING() { 3967 3955 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 3988 3976 IEM_MC_BEGIN(0, 0); 3989 3977 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3990 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);3991 3978 IEM_MC_LOCAL(uint64_t, u64Dst); 3992 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 1);3993 IEM_MC_ARG(PCX86XMMREG, pSrc, 2);3979 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 0); 3980 IEM_MC_ARG(PCX86XMMREG, pSrc, 1); 3994 3981 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 3995 3982 IEM_MC_PREPARE_FPU_USAGE(); 3996 3983 IEM_MC_FPU_TO_MMX_MODE(); 3997 3984 3998 IEM_MC_REF_MXCSR(pfMxcsr);3999 3985 IEM_MC_REF_XREG_XMM_CONST(pSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); 4000 3986 4001 IEM_MC_CALL_ VOID_AIMPL_3(iemAImpl_cvttpd2pi_u128, pfMxcsr, pu64Dst, pSrc);3987 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvttpd2pi_u128, pu64Dst, pSrc); 4002 3988 IEM_MC_IF_MXCSR_XCPT_PENDING() { 4003 3989 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 4015 4001 */ 4016 4002 IEM_MC_BEGIN(0, 0); 4017 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);4018 4003 IEM_MC_LOCAL(uint64_t, u64Dst); 4019 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 1);4004 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 0); 4020 4005 IEM_MC_LOCAL(X86XMMREG, uSrc); 4021 IEM_MC_ARG_LOCAL_REF(PCX86XMMREG, pSrc, uSrc, 2);4006 IEM_MC_ARG_LOCAL_REF(PCX86XMMREG, pSrc, uSrc, 1); 4022 4007 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4023 4008 … … 4030 4015 IEM_MC_FPU_TO_MMX_MODE(); 4031 4016 4032 IEM_MC_REF_MXCSR(pfMxcsr); 4033 4034 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_cvttpd2pi_u128, pfMxcsr, pu64Dst, pSrc); 4017 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvttpd2pi_u128, pu64Dst, pSrc); 4035 4018 IEM_MC_IF_MXCSR_XCPT_PENDING() { 4036 4019 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 4283 4266 IEM_MC_BEGIN(0, 0); 4284 4267 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4285 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);4286 4268 IEM_MC_LOCAL(uint64_t, u64Dst); 4287 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 1);4288 IEM_MC_ARG(uint64_t, u64Src, 2);4269 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 0); 4270 IEM_MC_ARG(uint64_t, u64Src, 1); 4289 4271 4290 4272 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 4292 4274 IEM_MC_FPU_TO_MMX_MODE(); 4293 4275 4294 IEM_MC_REF_MXCSR(pfMxcsr);4295 4276 IEM_MC_FETCH_XREG_U64(u64Src, IEM_GET_MODRM_RM(pVCpu, bRm), 0 /* a_iQword*/); 4296 4277 4297 IEM_MC_CALL_ VOID_AIMPL_3(iemAImpl_cvtps2pi_u128, pfMxcsr, pu64Dst, u64Src);4278 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvtps2pi_u128, pu64Dst, u64Src); 4298 4279 IEM_MC_IF_MXCSR_XCPT_PENDING() { 4299 4280 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 4311 4292 */ 4312 4293 IEM_MC_BEGIN(0, 0); 4313 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);4314 4294 IEM_MC_LOCAL(uint64_t, u64Dst); 4315 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 1);4316 IEM_MC_ARG(uint64_t, u64Src, 2);4295 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 0); 4296 IEM_MC_ARG(uint64_t, u64Src, 1); 4317 4297 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4318 4298 … … 4324 4304 IEM_MC_PREPARE_FPU_USAGE(); 4325 4305 IEM_MC_FPU_TO_MMX_MODE(); 4326 IEM_MC_REF_MXCSR(pfMxcsr); 4327 4328 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_cvtps2pi_u128, pfMxcsr, pu64Dst, u64Src); 4306 4307 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvtps2pi_u128, pu64Dst, u64Src); 4329 4308 IEM_MC_IF_MXCSR_XCPT_PENDING() { 4330 4309 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 4351 4330 IEM_MC_BEGIN(0, 0); 4352 4331 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4353 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);4354 4332 IEM_MC_LOCAL(uint64_t, u64Dst); 4355 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 1);4356 IEM_MC_ARG(PCX86XMMREG, pSrc, 2);4333 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 0); 4334 IEM_MC_ARG(PCX86XMMREG, pSrc, 1); 4357 4335 4358 4336 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 4360 4338 IEM_MC_FPU_TO_MMX_MODE(); 4361 4339 4362 IEM_MC_REF_MXCSR(pfMxcsr);4363 4340 IEM_MC_REF_XREG_XMM_CONST(pSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); 4364 4341 4365 IEM_MC_CALL_ VOID_AIMPL_3(iemAImpl_cvtpd2pi_u128, pfMxcsr, pu64Dst, pSrc);4342 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvtpd2pi_u128, pu64Dst, pSrc); 4366 4343 IEM_MC_IF_MXCSR_XCPT_PENDING() { 4367 4344 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); … … 4379 4356 */ 4380 4357 IEM_MC_BEGIN(0, 0); 4381 IEM_MC_ARG(uint32_t *, pfMxcsr, 0);4382 4358 IEM_MC_LOCAL(uint64_t, u64Dst); 4383 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 1);4359 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Dst, 0); 4384 4360 IEM_MC_LOCAL(X86XMMREG, uSrc); 4385 IEM_MC_ARG_LOCAL_REF(PCX86XMMREG, pSrc, uSrc, 2);4361 IEM_MC_ARG_LOCAL_REF(PCX86XMMREG, pSrc, uSrc, 1); 4386 4362 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4387 4363 … … 4394 4370 IEM_MC_FPU_TO_MMX_MODE(); 4395 4371 4396 IEM_MC_REF_MXCSR(pfMxcsr); 4397 4398 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_cvtpd2pi_u128, pfMxcsr, pu64Dst, pSrc); 4372 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_cvtpd2pi_u128, pu64Dst, pSrc); 4399 4373 IEM_MC_IF_MXCSR_XCPT_PENDING() { 4400 4374 IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
Note:
See TracChangeset
for help on using the changeset viewer.