Changeset 66314 in vbox
- Timestamp:
- Mar 28, 2017 9:28:34 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 114243
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/x86.h
r66227 r66314 2564 2564 typedef union X86XMMREG 2565 2565 { 2566 /** XMM Register view *. */2566 /** XMM Register view. */ 2567 2567 uint128_t xmm; 2568 2568 /** 8-bit view. */ … … 2576 2576 /** 128-bit view. (yeah, very helpful) */ 2577 2577 uint128_t au128[1]; 2578 /** Confusing nested 128-bit union view (this is what xmm should've been). */ 2579 RTUINT128U uXmm; 2578 2580 } X86XMMREG; 2579 2581 #ifndef VBOX_FOR_DTRACE_LIB -
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r66309 r66314 9178 9178 * @param GCPtrMem The address of the guest memory. 9179 9179 */ 9180 IEM_STATIC VBOXSTRICTRC iemMemFetchDataU128(PVMCPU pVCpu, uint128_t *pu128Dst, uint8_t iSegReg, RTGCPTR GCPtrMem)9180 IEM_STATIC VBOXSTRICTRC iemMemFetchDataU128(PVMCPU pVCpu, PRTUINT128U pu128Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) 9181 9181 { 9182 9182 /* The lazy approach for now... */ 9183 uint128_t const *pu128Src;9183 PCRTUINT128U pu128Src; 9184 9184 VBOXSTRICTRC rc = iemMemMap(pVCpu, (void **)&pu128Src, sizeof(*pu128Src), iSegReg, GCPtrMem, IEM_ACCESS_DATA_R); 9185 9185 if (rc == VINF_SUCCESS) 9186 9186 { 9187 *pu128Dst = *pu128Src; 9187 pu128Dst->au64[0] = pu128Src->au64[0]; 9188 pu128Dst->au64[1] = pu128Src->au64[1]; 9188 9189 rc = iemMemCommitAndUnmap(pVCpu, (void *)pu128Src, IEM_ACCESS_DATA_R); 9189 9190 } … … 9202 9203 * @param GCPtrMem The address of the guest memory. 9203 9204 */ 9204 IEM_STATIC void iemMemFetchDataU128Jmp(PVMCPU pVCpu, uint128_t *pu128Dst, uint8_t iSegReg, RTGCPTR GCPtrMem)9205 IEM_STATIC void iemMemFetchDataU128Jmp(PVMCPU pVCpu, PRTUINT128U pu128Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) 9205 9206 { 9206 9207 /* The lazy approach for now... */ 9207 uint128_t const *pu128Src = (uint128_t const *)iemMemMapJmp(pVCpu, sizeof(*pu128Src), iSegReg, GCPtrMem, IEM_ACCESS_DATA_R); 9208 *pu128Dst = *pu128Src; 9208 PCRTUINT128U pu128Src = (PCRTUINT128U)iemMemMapJmp(pVCpu, sizeof(*pu128Src), iSegReg, GCPtrMem, IEM_ACCESS_DATA_R); 9209 pu128Dst->au64[0] = pu128Src->au64[0]; 9210 pu128Dst->au64[1] = pu128Src->au64[1]; 9209 9211 iemMemCommitAndUnmapJmp(pVCpu, (void *)pu128Src, IEM_ACCESS_DATA_R); 9210 9212 } … … 9225 9227 * @param GCPtrMem The address of the guest memory. 9226 9228 */ 9227 IEM_STATIC VBOXSTRICTRC iemMemFetchDataU128AlignedSse(PVMCPU pVCpu, uint128_t *pu128Dst, uint8_t iSegReg, RTGCPTR GCPtrMem)9229 IEM_STATIC VBOXSTRICTRC iemMemFetchDataU128AlignedSse(PVMCPU pVCpu, PRTUINT128U pu128Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) 9228 9230 { 9229 9231 /* The lazy approach for now... */ … … 9233 9235 return iemRaiseGeneralProtectionFault0(pVCpu); 9234 9236 9235 uint128_t const *pu128Src;9237 PCRTUINT128U pu128Src; 9236 9238 VBOXSTRICTRC rc = iemMemMap(pVCpu, (void **)&pu128Src, sizeof(*pu128Src), iSegReg, GCPtrMem, IEM_ACCESS_DATA_R); 9237 9239 if (rc == VINF_SUCCESS) 9238 9240 { 9239 *pu128Dst = *pu128Src; 9241 pu128Dst->au64[0] = pu128Src->au64[0]; 9242 pu128Dst->au64[1] = pu128Src->au64[1]; 9240 9243 rc = iemMemCommitAndUnmap(pVCpu, (void *)pu128Src, IEM_ACCESS_DATA_R); 9241 9244 } … … 9257 9260 * @param GCPtrMem The address of the guest memory. 9258 9261 */ 9259 DECL_NO_INLINE(IEM_STATIC, void) iemMemFetchDataU128AlignedSseJmp(PVMCPU pVCpu, uint128_t *pu128Dst, uint8_t iSegReg, RTGCPTR GCPtrMem)9262 DECL_NO_INLINE(IEM_STATIC, void) iemMemFetchDataU128AlignedSseJmp(PVMCPU pVCpu, PRTUINT128U pu128Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) 9260 9263 { 9261 9264 /* The lazy approach for now... */ … … 9264 9267 || (IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.MXCSR & X86_MXSCR_MM)) /** @todo should probably check this *after* applying seg.u64Base... Check real HW. */ 9265 9268 { 9266 uint128_t const *pu128Src = (uint128_t const *)iemMemMapJmp(pVCpu, sizeof(*pu128Src), iSegReg, GCPtrMem,9267 IEM_ACCESS_DATA_R);9268 *pu128Dst = *pu128Src;9269 PCRTUINT128U pu128Src = (PCRTUINT128U)iemMemMapJmp(pVCpu, sizeof(*pu128Src), iSegReg, GCPtrMem, IEM_ACCESS_DATA_R); 9270 pu128Dst->au64[0] = pu128Src->au64[0]; 9271 pu128Dst->au64[1] = pu128Src->au64[1]; 9269 9272 iemMemCommitAndUnmapJmp(pVCpu, (void *)pu128Src, IEM_ACCESS_DATA_R); 9270 9273 return; … … 9537 9540 * @param u128Value The value to store. 9538 9541 */ 9539 IEM_STATIC VBOXSTRICTRC iemMemStoreDataU128(PVMCPU pVCpu, uint8_t iSegReg, RTGCPTR GCPtrMem, uint128_tu128Value)9542 IEM_STATIC VBOXSTRICTRC iemMemStoreDataU128(PVMCPU pVCpu, uint8_t iSegReg, RTGCPTR GCPtrMem, RTUINT128U u128Value) 9540 9543 { 9541 9544 /* The lazy approach for now... */ 9542 uint128_t *pu128Dst;9545 PRTUINT128U pu128Dst; 9543 9546 VBOXSTRICTRC rc = iemMemMap(pVCpu, (void **)&pu128Dst, sizeof(*pu128Dst), iSegReg, GCPtrMem, IEM_ACCESS_DATA_W); 9544 9547 if (rc == VINF_SUCCESS) 9545 9548 { 9546 *pu128Dst = u128Value; 9549 pu128Dst->au64[0] = u128Value.au64[0]; 9550 pu128Dst->au64[1] = u128Value.au64[1]; 9547 9551 rc = iemMemCommitAndUnmap(pVCpu, pu128Dst, IEM_ACCESS_DATA_W); 9548 9552 } … … 9561 9565 * @param u128Value The value to store. 9562 9566 */ 9563 IEM_STATIC void iemMemStoreDataU128Jmp(PVMCPU pVCpu, uint8_t iSegReg, RTGCPTR GCPtrMem, uint128_tu128Value)9567 IEM_STATIC void iemMemStoreDataU128Jmp(PVMCPU pVCpu, uint8_t iSegReg, RTGCPTR GCPtrMem, RTUINT128U u128Value) 9564 9568 { 9565 9569 /* The lazy approach for now... */ 9566 uint128_t *pu128Dst = (uint128_t *)iemMemMapJmp(pVCpu, sizeof(*pu128Dst), iSegReg, GCPtrMem, IEM_ACCESS_DATA_W); 9567 *pu128Dst = u128Value; 9570 PRTUINT128U pu128Dst = (PRTUINT128U)iemMemMapJmp(pVCpu, sizeof(*pu128Dst), iSegReg, GCPtrMem, IEM_ACCESS_DATA_W); 9571 pu128Dst->au64[0] = u128Value.au64[0]; 9572 pu128Dst->au64[1] = u128Value.au64[1]; 9568 9573 iemMemCommitAndUnmapJmp(pVCpu, pu128Dst, IEM_ACCESS_DATA_W); 9569 9574 } … … 9581 9586 * @param u128Value The value to store. 9582 9587 */ 9583 IEM_STATIC VBOXSTRICTRC iemMemStoreDataU128AlignedSse(PVMCPU pVCpu, uint8_t iSegReg, RTGCPTR GCPtrMem, uint128_tu128Value)9588 IEM_STATIC VBOXSTRICTRC iemMemStoreDataU128AlignedSse(PVMCPU pVCpu, uint8_t iSegReg, RTGCPTR GCPtrMem, RTUINT128U u128Value) 9584 9589 { 9585 9590 /* The lazy approach for now... */ … … 9588 9593 return iemRaiseGeneralProtectionFault0(pVCpu); 9589 9594 9590 uint128_t *pu128Dst;9595 PRTUINT128U pu128Dst; 9591 9596 VBOXSTRICTRC rc = iemMemMap(pVCpu, (void **)&pu128Dst, sizeof(*pu128Dst), iSegReg, GCPtrMem, IEM_ACCESS_DATA_W); 9592 9597 if (rc == VINF_SUCCESS) 9593 9598 { 9594 *pu128Dst = u128Value; 9599 pu128Dst->au64[0] = u128Value.au64[0]; 9600 pu128Dst->au64[1] = u128Value.au64[1]; 9595 9601 rc = iemMemCommitAndUnmap(pVCpu, pu128Dst, IEM_ACCESS_DATA_W); 9596 9602 } … … 9611 9617 */ 9612 9618 DECL_NO_INLINE(IEM_STATIC, void) 9613 iemMemStoreDataU128AlignedSseJmp(PVMCPU pVCpu, uint8_t iSegReg, RTGCPTR GCPtrMem, uint128_tu128Value)9619 iemMemStoreDataU128AlignedSseJmp(PVMCPU pVCpu, uint8_t iSegReg, RTGCPTR GCPtrMem, RTUINT128U u128Value) 9614 9620 { 9615 9621 /* The lazy approach for now... */ … … 9617 9623 || (IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.MXCSR & X86_MXSCR_MM)) /** @todo should probably check this *after* applying seg.u64Base... Check real HW. */ 9618 9624 { 9619 uint128_t *pu128Dst = (uint128_t *)iemMemMapJmp(pVCpu, sizeof(*pu128Dst), iSegReg, GCPtrMem, IEM_ACCESS_DATA_W); 9620 *pu128Dst = u128Value; 9625 PRTUINT128U pu128Dst = (PRTUINT128U)iemMemMapJmp(pVCpu, sizeof(*pu128Dst), iSegReg, GCPtrMem, IEM_ACCESS_DATA_W); 9626 pu128Dst->au64[0] = u128Value.au64[0]; 9627 pu128Dst->au64[1] = u128Value.au64[1]; 9621 9628 iemMemCommitAndUnmapJmp(pVCpu, pu128Dst, IEM_ACCESS_DATA_W); 9622 9629 return; … … 10533 10540 if ((pVCpu)->iem.s.CTX_SUFF(pCtx)->CTX_SUFF(pXState)->x87.FSW & X86_FSW_ES) \ 10534 10541 return iemRaiseMathFault(pVCpu); \ 10542 } while (0) 10543 #define IEM_MC_MAYBE_RAISE_SSE3_RELATED_XCPT() \ 10544 do { \ 10545 if ( (IEM_GET_CTX(pVCpu)->cr0 & X86_CR0_EM) \ 10546 || !(IEM_GET_CTX(pVCpu)->cr4 & X86_CR4_OSFXSR) \ 10547 || !IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fSse3) \ 10548 return iemRaiseUndefinedOpcode(pVCpu); \ 10549 if (IEM_GET_CTX(pVCpu)->cr0 & X86_CR0_TS) \ 10550 return iemRaiseDeviceNotAvailable(pVCpu); \ 10535 10551 } while (0) 10536 10552 #define IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT() \ … … 10754 10770 10755 10771 #define IEM_MC_FETCH_XREG_U128(a_u128Value, a_iXReg) \ 10756 do { (a_u128Value) = IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].xmm; } while (0) 10772 do { (a_u128Value).au64[0] = IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0]; \ 10773 (a_u128Value).au64[1] = IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[1]; \ 10774 } while (0) 10757 10775 #define IEM_MC_FETCH_XREG_U64(a_u64Value, a_iXReg) \ 10758 10776 do { (a_u64Value) = IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0]; } while (0) … … 10762 10780 do { (a_u64Value) = IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[1]; } while (0) 10763 10781 #define IEM_MC_STORE_XREG_U128(a_iXReg, a_u128Value) \ 10764 do { IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].xmm = (a_u128Value); } while (0) 10782 do { IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0] = (a_u128Value).au64[0]; \ 10783 IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[1] = (a_u128Value).au64[1]; \ 10784 } while (0) 10765 10785 #define IEM_MC_STORE_XREG_U64(a_iXReg, a_u64Value) \ 10766 10786 do { IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0] = (a_u64Value); } while (0) … … 10776 10796 } while (0) 10777 10797 #define IEM_MC_REF_XREG_U128(a_pu128Dst, a_iXReg) \ 10778 (a_pu128Dst) = (&IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)]. xmm)10798 (a_pu128Dst) = (&IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].uXmm) 10779 10799 #define IEM_MC_REF_XREG_U128_CONST(a_pu128Dst, a_iXReg) \ 10780 (a_pu128Dst) = (( uint128_t const *)&IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].xmm)10800 (a_pu128Dst) = ((PCRTUINT128U)&IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].uXmm) 10781 10801 #define IEM_MC_REF_XREG_U64_CONST(a_pu64Dst, a_iXReg) \ 10782 10802 (a_pu64Dst) = ((uint64_t const *)&IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0]) 10783 10803 #define IEM_MC_COPY_XREG_U128(a_iXRegDst, a_iXRegSrc) \ 10784 do { IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXRegDst)].xmm \ 10785 = IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXRegSrc)].xmm; } while (0) 10804 do { IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXRegDst)].au64[0] \ 10805 = IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXRegSrc)].au64[0]; \ 10806 IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXRegDst)].au64[1] \ 10807 = IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXRegSrc)].au64[1]; \ 10808 } while (0) 10786 10809 10787 10810 #ifndef IEM_WITH_SETJMP -
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r65634 r66314 1371 1371 } 1372 1372 1373 1374 IEM_DECL_IMPL_DEF(void, iemAImpl_movsldup,(PCX86FXSTATE pFpuState, PRTUINT128U puDst, PCRTUINT128U puSrc)) 1375 { 1376 RT_NOREF(pFpuState); 1377 puDst->au32[0] = puSrc->au32[0]; 1378 puDst->au32[1] = puSrc->au32[0]; 1379 puDst->au32[2] = puSrc->au32[2]; 1380 puDst->au32[3] = puSrc->au32[2]; 1381 } 1382 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
r66313 r66314 165 165 'Wps': ( 'IDX_UseModRM', 'rm', '%Wps', 'Wps', ), 166 166 'Wpd': ( 'IDX_UseModRM', 'rm', '%Wpd', 'Wpd', ), 167 'Wdq': ( 'IDX_UseModRM', 'rm', '%Wdq', 'Wdq', ), 167 168 168 169 # ModR/M.rm - register only. … … 183 184 'Vpd': ( 'IDX_UseModRM', 'reg', '%Vpd', 'Vpd', ), 184 185 'Vq': ( 'IDX_UseModRM', 'reg', '%Vq', 'Vq', ), 186 'Vdq': ( 'IDX_UseModRM', 'reg', '%Vpd', 'Vpd', ), 185 187 186 188 # Immediate values. -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r66313 r66314 1109 1109 */ 1110 1110 IEM_MC_BEGIN(0, 2); 1111 IEM_MC_LOCAL( uint128_t,uSrc); /** @todo optimize this one day... */1111 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 1112 1112 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1113 1113 … … 1160 1160 */ 1161 1161 IEM_MC_BEGIN(0, 2); 1162 IEM_MC_LOCAL( uint128_t,uSrc); /** @todo optimize this one day... */1162 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 1163 1163 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1164 1164 … … 1397 1397 } 1398 1398 1399 1400 /** Opcode 0xf3 0x0f 0x12. */ 1399 #if 0 1401 1400 FNIEMOP_STUB(iemOp_vmovsldup_Vx_Wx); //NEXT 1401 #else 1402 /** 1403 * opcode 0x12 1404 * opcodesub !11 mr/reg 1405 * oppfx 0xf3 1406 * opcpuid sse3 1407 * opgroup og_sse3_pcksclr_datamove 1408 * opxcpttype 4 1409 * optest op1=-1 op2=0xdddddddd00000002eeeeeeee00000001 -> 1410 * op1=0x00000002000000020000000100000001 1411 */ 1412 FNIEMOP_DEF(iemOp_vmovsldup_Vx_Wx) 1413 { 1414 IEMOP_MNEMONIC2(RM, MOVSLDUP, movsldup, Vdq, Wdq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 1415 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1416 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 1417 { 1418 /* 1419 * Register, register. 1420 */ 1421 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1422 IEM_MC_BEGIN(2, 0); 1423 IEM_MC_ARG(PRTUINT128U, puDst, 0); 1424 IEM_MC_ARG(PCRTUINT128U, puSrc, 1); 1425 1426 IEM_MC_MAYBE_RAISE_SSE3_RELATED_XCPT(); 1427 IEM_MC_PREPARE_SSE_USAGE(); 1428 1429 IEM_MC_REF_XREG_U128_CONST(puSrc, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB); 1430 IEM_MC_REF_XREG_U128(puDst, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 1431 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_movsldup, puDst, puSrc); 1432 1433 IEM_MC_ADVANCE_RIP(); 1434 IEM_MC_END(); 1435 } 1436 else 1437 { 1438 /* 1439 * Register, memory. 1440 */ 1441 IEM_MC_BEGIN(2, 2); 1442 IEM_MC_LOCAL(RTUINT128U, uSrc); 1443 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1444 IEM_MC_ARG(PRTUINT128U, puDst, 0); 1445 IEM_MC_ARG_LOCAL_REF(PCRTUINT128U, puSrc, uSrc, 1); 1446 1447 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 1448 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1449 IEM_MC_MAYBE_RAISE_SSE3_RELATED_XCPT(); 1450 IEM_MC_PREPARE_SSE_USAGE(); 1451 1452 IEM_MC_FETCH_MEM_U128(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 1453 IEM_MC_REF_XREG_U128(puDst, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 1454 IEM_MC_CALL_SSE_AIMPL_2(iemAImpl_movsldup, puDst, puSrc); 1455 1456 IEM_MC_ADVANCE_RIP(); 1457 IEM_MC_END(); 1458 } 1459 return VINF_SUCCESS; 1460 1461 } 1462 #endif 1402 1463 1403 1464 /** Opcode 0xf2 0x0f 0x12. */ … … 1686 1747 */ 1687 1748 IEM_MC_BEGIN(0, 2); 1688 IEM_MC_LOCAL( uint128_t,uSrc); /** @todo optimize this one day... */1749 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 1689 1750 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1690 1751 … … 1728 1789 */ 1729 1790 IEM_MC_BEGIN(0, 2); 1730 IEM_MC_LOCAL( uint128_t,uSrc); /** @todo optimize this one day... */1791 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 1731 1792 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1732 1793 … … 1773 1834 */ 1774 1835 IEM_MC_BEGIN(0, 2); 1775 IEM_MC_LOCAL( uint128_t,uSrc); /** @todo optimize this one day... */1836 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 1776 1837 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1777 1838 … … 1815 1876 */ 1816 1877 IEM_MC_BEGIN(0, 2); 1817 IEM_MC_LOCAL( uint128_t,uSrc); /** @todo optimize this one day... */1878 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 1818 1879 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1819 1880 … … 1857 1918 */ 1858 1919 IEM_MC_BEGIN(0, 2); 1859 IEM_MC_LOCAL( uint128_t,uSrc); /** @todo optimize this one day... */1920 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 1860 1921 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1861 1922 … … 1888 1949 */ 1889 1950 IEM_MC_BEGIN(0, 2); 1890 IEM_MC_LOCAL( uint128_t,uSrc); /** @todo optimize this one day... */1951 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 1891 1952 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1892 1953 … … 2365 2426 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2366 2427 IEM_MC_BEGIN(2, 0); 2367 IEM_MC_ARG( uint128_t *, pDst, 0);2428 IEM_MC_ARG(PRTUINT128U, pDst, 0); 2368 2429 IEM_MC_ARG(uint64_t const *, pSrc, 1); 2369 2430 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); … … 2381 2442 */ 2382 2443 IEM_MC_BEGIN(2, 2); 2383 IEM_MC_ARG( uint128_t *, pDst, 0);2444 IEM_MC_ARG(PRTUINT128U, pDst, 0); 2384 2445 IEM_MC_LOCAL(uint64_t, uSrc); 2385 2446 IEM_MC_ARG_LOCAL_REF(uint64_t const *, pSrc, uSrc, 1); … … 2626 2687 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2627 2688 IEM_MC_BEGIN(2, 0); 2628 IEM_MC_ARG( uint128_t *, pDst, 0);2629 IEM_MC_ARG( uint128_t const *,pSrc, 1);2689 IEM_MC_ARG(PRTUINT128U, pDst, 0); 2690 IEM_MC_ARG(PCRTUINT128U, pSrc, 1); 2630 2691 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 2631 2692 IEM_MC_PREPARE_SSE_USAGE(); … … 2642 2703 */ 2643 2704 IEM_MC_BEGIN(2, 2); 2644 IEM_MC_ARG( uint128_t *, pDst, 0);2645 IEM_MC_LOCAL( uint128_t,uSrc);2646 IEM_MC_ARG_LOCAL_REF( uint128_t const *,pSrc, uSrc, 1);2705 IEM_MC_ARG(PRTUINT128U, pDst, 0); 2706 IEM_MC_LOCAL(RTUINT128U, uSrc); 2707 IEM_MC_ARG_LOCAL_REF(PCRTUINT128U, pSrc, uSrc, 1); 2647 2708 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2648 2709 … … 2924 2985 */ 2925 2986 IEM_MC_BEGIN(0, 2); 2926 IEM_MC_LOCAL( uint128_t,u128Tmp);2987 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 2927 2988 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2928 2989 … … 2965 3026 */ 2966 3027 IEM_MC_BEGIN(0, 2); 2967 IEM_MC_LOCAL( uint128_t,u128Tmp);3028 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 2968 3029 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2969 3030 … … 3049 3110 3050 3111 IEM_MC_BEGIN(3, 0); 3051 IEM_MC_ARG( uint128_t *, pDst, 0);3052 IEM_MC_ARG( uint128_t const *,pSrc, 1);3112 IEM_MC_ARG(PRTUINT128U, pDst, 0); 3113 IEM_MC_ARG(PCRTUINT128U, pSrc, 1); 3053 3114 IEM_MC_ARG_CONST(uint8_t, bEvilArg, /*=*/ bEvil, 2); 3054 3115 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); … … 3066 3127 */ 3067 3128 IEM_MC_BEGIN(3, 2); 3068 IEM_MC_ARG( uint128_t *, pDst, 0);3069 IEM_MC_LOCAL( uint128_t,uSrc);3070 IEM_MC_ARG_LOCAL_REF( uint128_t const *,pSrc, uSrc, 1);3129 IEM_MC_ARG(PRTUINT128U, pDst, 0); 3130 IEM_MC_LOCAL(RTUINT128U, uSrc); 3131 IEM_MC_ARG_LOCAL_REF(PCRTUINT128U, pSrc, uSrc, 1); 3071 3132 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3072 3133 … … 3102 3163 3103 3164 IEM_MC_BEGIN(3, 0); 3104 IEM_MC_ARG( uint128_t *, pDst, 0);3105 IEM_MC_ARG( uint128_t const *,pSrc, 1);3165 IEM_MC_ARG(PRTUINT128U, pDst, 0); 3166 IEM_MC_ARG(PCRTUINT128U, pSrc, 1); 3106 3167 IEM_MC_ARG_CONST(uint8_t, bEvilArg, /*=*/ bEvil, 2); 3107 3168 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); … … 3119 3180 */ 3120 3181 IEM_MC_BEGIN(3, 2); 3121 IEM_MC_ARG( uint128_t *, pDst, 0);3122 IEM_MC_LOCAL( uint128_t,uSrc);3123 IEM_MC_ARG_LOCAL_REF( uint128_t const *,pSrc, uSrc, 1);3182 IEM_MC_ARG(PRTUINT128U, pDst, 0); 3183 IEM_MC_LOCAL(RTUINT128U, uSrc); 3184 IEM_MC_ARG_LOCAL_REF(PCRTUINT128U, pSrc, uSrc, 1); 3124 3185 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3125 3186 … … 3155 3216 3156 3217 IEM_MC_BEGIN(3, 0); 3157 IEM_MC_ARG( uint128_t *, pDst, 0);3158 IEM_MC_ARG( uint128_t const *,pSrc, 1);3218 IEM_MC_ARG(PRTUINT128U, pDst, 0); 3219 IEM_MC_ARG(PCRTUINT128U, pSrc, 1); 3159 3220 IEM_MC_ARG_CONST(uint8_t, bEvilArg, /*=*/ bEvil, 2); 3160 3221 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); … … 3172 3233 */ 3173 3234 IEM_MC_BEGIN(3, 2); 3174 IEM_MC_ARG( uint128_t *, pDst, 0);3175 IEM_MC_LOCAL( uint128_t,uSrc);3176 IEM_MC_ARG_LOCAL_REF( uint128_t const *,pSrc, uSrc, 1);3235 IEM_MC_ARG(PRTUINT128U, pDst, 0); 3236 IEM_MC_LOCAL(RTUINT128U, uSrc); 3237 IEM_MC_ARG_LOCAL_REF(PCRTUINT128U, pSrc, uSrc, 1); 3177 3238 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3178 3239 … … 3407 3468 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3408 3469 IEM_MC_BEGIN(2, 0); 3409 IEM_MC_ARG( uint128_t *, pDst, 0);3410 IEM_MC_ARG( uint128_t const *,pSrc, 1);3470 IEM_MC_ARG(PRTUINT128U, pDst, 0); 3471 IEM_MC_ARG(PCRTUINT128U, pSrc, 1); 3411 3472 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 3412 3473 IEM_MC_PREPARE_SSE_USAGE(); … … 3423 3484 */ 3424 3485 IEM_MC_BEGIN(2, 2); 3425 IEM_MC_ARG( uint128_t *, pDst, 0);3426 IEM_MC_LOCAL( uint128_t,uSrc);3427 IEM_MC_ARG_LOCAL_REF( uint128_t const *,pSrc, uSrc, 1);3486 IEM_MC_ARG(PRTUINT128U, pDst, 0); 3487 IEM_MC_LOCAL(RTUINT128U, uSrc); 3488 IEM_MC_ARG_LOCAL_REF(PCRTUINT128U, pSrc, uSrc, 1); 3428 3489 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3429 3490 … … 3731 3792 */ 3732 3793 IEM_MC_BEGIN(0, 2); 3733 IEM_MC_LOCAL( uint128_t,u128Tmp);3794 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 3734 3795 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3735 3796 … … 3773 3834 */ 3774 3835 IEM_MC_BEGIN(0, 2); 3775 IEM_MC_LOCAL( uint128_t,u128Tmp);3836 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 3776 3837 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3777 3838 … … 7454 7515 IEM_MC_BEGIN(2, 0); 7455 7516 IEM_MC_ARG(uint64_t *, pDst, 0); 7456 IEM_MC_ARG( uint128_t const *,pSrc, 1);7517 IEM_MC_ARG(PCRTUINT128U, pSrc, 1); 7457 7518 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 7458 7519 IEM_MC_PREPARE_SSE_USAGE(); … … 7531 7592 IEM_MC_BEGIN(2, 0); 7532 7593 IEM_MC_ARG(uint64_t *, pDst, 0); 7533 IEM_MC_ARG( uint128_t const *,pSrc, 1);7594 IEM_MC_ARG(PCRTUINT128U, pSrc, 1); 7534 7595 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 7535 7596 IEM_MC_PREPARE_SSE_USAGE(); … … 7692 7753 IEMOP_MNEMONIC(vmovntdq_Mx_Vx, "vmovntdq Mx,Vx"); 7693 7754 IEM_MC_BEGIN(0, 2); 7694 IEM_MC_LOCAL( uint128_t,uSrc);7755 IEM_MC_LOCAL(RTUINT128U, uSrc); 7695 7756 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7696 7757 -
trunk/src/VBox/VMM/include/IEMInternal.h
r66160 r66314 1508 1508 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF2U64,(PCX86FXSTATE pFpuState, uint64_t *pu64Dst, uint64_t const *pu64Src)); 1509 1509 typedef FNIEMAIMPLMEDIAF2U64 *PFNIEMAIMPLMEDIAF2U64; 1510 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF2U128,(PCX86FXSTATE pFpuState, uint128_t *pu128Dst, uint128_t const *pu128Src));1510 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF2U128,(PCX86FXSTATE pFpuState, PRTUINT128U pu128Dst, PCRTUINT128U pu128Src)); 1511 1511 typedef FNIEMAIMPLMEDIAF2U128 *PFNIEMAIMPLMEDIAF2U128; 1512 1512 FNIEMAIMPLMEDIAF2U64 iemAImpl_pxor_u64, iemAImpl_pcmpeqb_u64, iemAImpl_pcmpeqw_u64, iemAImpl_pcmpeqd_u64; … … 1518 1518 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF1L1U64,(PCX86FXSTATE pFpuState, uint64_t *pu64Dst, uint32_t const *pu32Src)); 1519 1519 typedef FNIEMAIMPLMEDIAF1L1U64 *PFNIEMAIMPLMEDIAF1L1U64; 1520 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF1L1U128,(PCX86FXSTATE pFpuState, uint128_t *pu128Dst, uint64_t const *pu64Src));1520 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF1L1U128,(PCX86FXSTATE pFpuState, PRTUINT128U pu128Dst, uint64_t const *pu64Src)); 1521 1521 typedef FNIEMAIMPLMEDIAF1L1U128 *PFNIEMAIMPLMEDIAF1L1U128; 1522 1522 FNIEMAIMPLMEDIAF1L1U64 iemAImpl_punpcklbw_u64, iemAImpl_punpcklwd_u64, iemAImpl_punpckldq_u64; … … 1528 1528 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF1H1U64,(PCX86FXSTATE pFpuState, uint64_t *pu64Dst, uint64_t const *pu64Src)); 1529 1529 typedef FNIEMAIMPLMEDIAF2U64 *PFNIEMAIMPLMEDIAF1H1U64; 1530 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF1H1U128,(PCX86FXSTATE pFpuState, uint128_t *pu128Dst, uint128_t const *pu128Src));1530 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF1H1U128,(PCX86FXSTATE pFpuState, PRTUINT128U pu128Dst, PCRTUINT128U pu128Src)); 1531 1531 typedef FNIEMAIMPLMEDIAF2U128 *PFNIEMAIMPLMEDIAF1H1U128; 1532 1532 FNIEMAIMPLMEDIAF1H1U64 iemAImpl_punpckhbw_u64, iemAImpl_punpckhwd_u64, iemAImpl_punpckhdq_u64; … … 1536 1536 /** @name Media (SSE/MMX/AVX) operation: Packed Shuffle Stuff (evil) 1537 1537 * @{ */ 1538 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAPSHUF,(PCX86FXSTATE pFpuState, uint128_t *pu128Dst,1539 uint128_t const *pu128Src, uint8_t bEvil));1538 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAPSHUF,(PCX86FXSTATE pFpuState, PRTUINT128U pu128Dst, 1539 PCRTUINT128U pu128Src, uint8_t bEvil)); 1540 1540 typedef FNIEMAIMPLMEDIAPSHUF *PFNIEMAIMPLMEDIAPSHUF; 1541 1541 FNIEMAIMPLMEDIAPSHUF iemAImpl_pshufhw, iemAImpl_pshuflw, iemAImpl_pshufd; … … 1546 1546 * @{ */ 1547 1547 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovmskb_u64,(PCX86FXSTATE pFpuState, uint64_t *pu64Dst, uint64_t const *pu64Src)); 1548 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovmskb_u128,(PCX86FXSTATE pFpuState, uint64_t *pu64Dst, uint128_t const *pu128Src)); 1549 /** @} */ 1550 1548 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovmskb_u128,(PCX86FXSTATE pFpuState, uint64_t *pu64Dst, PCRTUINT128U pu128Src)); 1549 /** @} */ 1550 1551 /** @name Media (SSE/MMX/AVX) operation: Sort this later 1552 * @{ */ 1553 IEM_DECL_IMPL_DEF(void, iemAImpl_movsldup,(PCX86FXSTATE pFpuState, PRTUINT128U puDst, PCRTUINT128U puSrc)); 1554 /** @} */ 1551 1555 1552 1556 -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r66309 r66314 37 37 bool volatile g_fRandom; 38 38 uint8_t volatile g_bRandom; 39 uint128_tg_u128Zero;39 RTUINT128U g_u128Zero; 40 40 41 41 … … 345 345 #define IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT() do {} while (0) 346 346 #define IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT() do {} while (0) 347 #define IEM_MC_MAYBE_RAISE_SSE3_RELATED_XCPT() do {} while (0) 347 348 #define IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO() do {} while (0) 348 349 #define IEM_MC_RAISE_GP0_IF_EFF_ADDR_UNALIGNED(a_EffAddr, a_cbAlign) \ … … 495 496 #define IEM_MC_REF_MREG_U32_CONST(a_pu32Dst, a_iMReg) do { (a_pu32Dst) = (uint32_t const *)((uintptr_t)0); CHK_PTYPE(uint32_t const *, a_pu32Dst); (void)fFpuWrite; } while (0) 496 497 497 #define IEM_MC_FETCH_XREG_U128(a_u128Value, a_iXReg) do { (a_u128Value) = g_u128Zero; CHK_TYPE( uint128_t, a_u128Value); (void)fSseRead; } while (0)498 #define IEM_MC_FETCH_XREG_U128(a_u128Value, a_iXReg) do { (a_u128Value) = g_u128Zero; CHK_TYPE(RTUINT128U, a_u128Value); (void)fSseRead; } while (0) 498 499 #define IEM_MC_FETCH_XREG_U64(a_u64Value, a_iXReg) do { (a_u64Value) = 0; CHK_TYPE(uint64_t, a_u64Value); (void)fSseRead; } while (0) 499 500 #define IEM_MC_FETCH_XREG_U32(a_u32Value, a_iXReg) do { (a_u32Value) = 0; CHK_TYPE(uint32_t, a_u32Value); (void)fSseRead; } while (0) 500 501 #define IEM_MC_FETCH_XREG_HI_U64(a_u64Value, a_iXReg) do { (a_u64Value) = 0; CHK_TYPE(uint64_t, a_u64Value); (void)fSseRead; } while (0) 501 #define IEM_MC_STORE_XREG_U128(a_iXReg, a_u128Value) do { CHK_TYPE( uint128_t, a_u128Value); (void)fSseWrite; } while (0)502 #define IEM_MC_STORE_XREG_U128(a_iXReg, a_u128Value) do { CHK_TYPE(RTUINT128U, a_u128Value); (void)fSseWrite; } while (0) 502 503 #define IEM_MC_STORE_XREG_U64(a_iXReg, a_u64Value) do { CHK_TYPE(uint64_t, a_u64Value); (void)fSseWrite; } while (0) 503 504 #define IEM_MC_STORE_XREG_U64_ZX_U128(a_iXReg, a_u64Value) do { CHK_TYPE(uint64_t, a_u64Value); (void)fSseWrite; } while (0) 504 505 #define IEM_MC_STORE_XREG_U32(a_iXReg, a_u32Value) do { CHK_TYPE(uint32_t, a_u32Value); (void)fSseWrite; } while (0) 505 506 #define IEM_MC_STORE_XREG_U32_ZX_U128(a_iXReg, a_u32Value) do { CHK_TYPE(uint32_t, a_u32Value); (void)fSseWrite; } while (0) 506 #define IEM_MC_REF_XREG_U128(a_pu128Dst, a_iXReg) do { (a_pu128Dst) = ( uint128_t *)((uintptr_t)0); CHK_PTYPE(uint128_t *, a_pu128Dst); (void)fSseWrite; } while (0)507 #define IEM_MC_REF_XREG_U128_CONST(a_pu128Dst, a_iXReg) do { (a_pu128Dst) = ( uint128_t const *)((uintptr_t)0); CHK_PTYPE(uint128_t const *, a_pu128Dst); (void)fSseWrite; } while (0)507 #define IEM_MC_REF_XREG_U128(a_pu128Dst, a_iXReg) do { (a_pu128Dst) = (PRTUINT128U)((uintptr_t)0); CHK_PTYPE(PRTUINT128U, a_pu128Dst); (void)fSseWrite; } while (0) 508 #define IEM_MC_REF_XREG_U128_CONST(a_pu128Dst, a_iXReg) do { (a_pu128Dst) = (PCRTUINT128U)((uintptr_t)0); CHK_PTYPE(PCRTUINT128U, a_pu128Dst); (void)fSseWrite; } while (0) 508 509 #define IEM_MC_REF_XREG_U64_CONST(a_pu64Dst, a_iXReg) do { (a_pu64Dst) = (uint64_t const *)((uintptr_t)0); CHK_PTYPE(uint64_t const *, a_pu64Dst); (void)fSseWrite; } while (0) 509 510 #define IEM_MC_COPY_XREG_U128(a_iXRegDst, a_iXRegSrc) do { (void)fSseWrite; } while (0) … … 545 546 #define IEM_MC_FETCH_MEM_R64(a_r64Dst, a_iSeg, a_GCPtrMem) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE(RTFLOAT64U, a_r64Dst);} while (0) 546 547 #define IEM_MC_FETCH_MEM_R80(a_r80Dst, a_iSeg, a_GCPtrMem) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE(RTFLOAT80U, a_r80Dst);} while (0) 547 #define IEM_MC_FETCH_MEM_U128(a_u128Dst, a_iSeg, a_GCPtrMem) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE( uint128_t, a_u128Dst);} while (0)548 #define IEM_MC_FETCH_MEM_U128_ALIGN_SSE(a_u128Dst, a_iSeg, a_GCPtrMem) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE( uint128_t, a_u128Dst);} while (0)548 #define IEM_MC_FETCH_MEM_U128(a_u128Dst, a_iSeg, a_GCPtrMem) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE(RTUINT128U, a_u128Dst);} while (0) 549 #define IEM_MC_FETCH_MEM_U128_ALIGN_SSE(a_u128Dst, a_iSeg, a_GCPtrMem) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE(RTUINT128U, a_u128Dst);} while (0) 549 550 550 551 #define IEM_MC_STORE_MEM_U8(a_iSeg, a_GCPtrMem, a_u8Value) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE(uint8_t, a_u8Value); CHK_SEG_IDX(a_iSeg); } while (0) … … 563 564 #define IEM_MC_STORE_MEM_NEG_QNAN_R64_BY_REF(a_pr64Dst) do { CHK_TYPE(PRTFLOAT64U, a_pr64Dst); } while (0) 564 565 #define IEM_MC_STORE_MEM_NEG_QNAN_R80_BY_REF(a_pr80Dst) do { CHK_TYPE(PRTFLOAT80U, a_pr80Dst); } while (0) 565 #define IEM_MC_STORE_MEM_U128(a_iSeg, a_GCPtrMem, a_u128Dst) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE( uint128_t, a_u128Dst); CHK_SEG_IDX(a_iSeg);} while (0)566 #define IEM_MC_STORE_MEM_U128_ALIGN_SSE(a_iSeg, a_GCPtrMem, a_u128Dst) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE( uint128_t, a_u128Dst); CHK_SEG_IDX(a_iSeg);} while (0)566 #define IEM_MC_STORE_MEM_U128(a_iSeg, a_GCPtrMem, a_u128Dst) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE(RTUINT128U, a_u128Dst); CHK_SEG_IDX(a_iSeg);} while (0) 567 #define IEM_MC_STORE_MEM_U128_ALIGN_SSE(a_iSeg, a_GCPtrMem, a_u128Dst) do { CHK_GCPTR(a_GCPtrMem); CHK_TYPE(RTUINT128U, a_u128Dst); CHK_SEG_IDX(a_iSeg);} while (0) 567 568 568 569 #define IEM_MC_PUSH_U16(a_u16Value) do {} while (0)
Note:
See TracChangeset
for help on using the changeset viewer.