Changeset 96115 in vbox
- Timestamp:
- Aug 8, 2022 8:04:00 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 152917
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r96109 r96115 4343 4343 ENDPROC iemAImpl_vptest_u256 4344 4344 4345 4346 ;; 4347 ; Template for the [v]pmov{s,z}x* instructions 4348 ; 4349 ; @param 1 The instruction 4350 ; 4351 ; @param A0 Pointer to the destination media register size operand (output). 4352 ; @param A1 The source operand value (input). 4353 ; 4354 %macro IEMIMPL_V_PMOV_SZ_X 1 4355 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u128, 12 4356 PROLOGUE_2_ARGS 4357 IEMIMPL_AVX_PROLOGUE 4358 4359 movd xmm0, A1 4360 %1 xmm0, xmm0 4361 vmovdqu [A0], xmm0 4362 4363 IEMIMPL_AVX_PROLOGUE 4364 EPILOGUE_2_ARGS 4365 ENDPROC iemAImpl_ %+ %1 %+ _u128 4366 4367 BEGINPROC_FASTCALL iemAImpl_v %+ %1 %+ _u128, 12 4368 PROLOGUE_2_ARGS 4369 IEMIMPL_AVX_PROLOGUE 4370 4371 movd xmm0, A1 4372 v %+ %1 xmm0, xmm0 4373 vmovdqu [A0], xmm0 4374 4375 IEMIMPL_AVX_PROLOGUE 4376 EPILOGUE_2_ARGS 4377 ENDPROC iemAImpl_v %+ %1 %+ _u128 4378 4379 BEGINPROC_FASTCALL iemAImpl_v %+ %1 %+ _u256, 12 4380 PROLOGUE_2_ARGS 4381 IEMIMPL_AVX_PROLOGUE 4382 4383 movd xmm0, A1 4384 v %+ %1 ymm0, xmm0 4385 vmovdqu [A0], ymm0 4386 4387 IEMIMPL_AVX_PROLOGUE 4388 EPILOGUE_2_ARGS 4389 ENDPROC iemAImpl_v %+ %1 %+ _u256 4390 %endmacro 4391 4392 IEMIMPL_V_PMOV_SZ_X pmovsxbw 4393 IEMIMPL_V_PMOV_SZ_X pmovsxbd 4394 IEMIMPL_V_PMOV_SZ_X pmovsxbq 4395 IEMIMPL_V_PMOV_SZ_X pmovsxwd 4396 IEMIMPL_V_PMOV_SZ_X pmovsxwq 4397 IEMIMPL_V_PMOV_SZ_X pmovsxdq 4398 4399 IEMIMPL_V_PMOV_SZ_X pmovzxbw 4400 IEMIMPL_V_PMOV_SZ_X pmovzxbd 4401 IEMIMPL_V_PMOV_SZ_X pmovzxbq 4402 IEMIMPL_V_PMOV_SZ_X pmovzxwd 4403 IEMIMPL_V_PMOV_SZ_X pmovzxwq 4404 IEMIMPL_V_PMOV_SZ_X pmovzxdq 4405 -
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r96109 r96115 13470 13470 } 13471 13471 13472 13473 /* 13474 * PMOVSXBW / VPMOVSXBW 13475 */ 13476 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbw_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)) 13477 { 13478 RTUINT64U uSrc1 = { uSrc }; 13479 puDst->ai16[0] = uSrc1.ai8[0]; 13480 puDst->ai16[1] = uSrc1.ai8[1]; 13481 puDst->ai16[2] = uSrc1.ai8[2]; 13482 puDst->ai16[3] = uSrc1.ai8[3]; 13483 puDst->ai16[4] = uSrc1.ai8[4]; 13484 puDst->ai16[5] = uSrc1.ai8[5]; 13485 puDst->ai16[6] = uSrc1.ai8[6]; 13486 puDst->ai16[7] = uSrc1.ai8[7]; 13487 } 13488 13489 13490 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbw_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13491 { 13492 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13493 puDst->ai16[ 0] = uSrc1.ai8[ 0]; 13494 puDst->ai16[ 1] = uSrc1.ai8[ 1]; 13495 puDst->ai16[ 2] = uSrc1.ai8[ 2]; 13496 puDst->ai16[ 3] = uSrc1.ai8[ 3]; 13497 puDst->ai16[ 4] = uSrc1.ai8[ 4]; 13498 puDst->ai16[ 5] = uSrc1.ai8[ 5]; 13499 puDst->ai16[ 6] = uSrc1.ai8[ 6]; 13500 puDst->ai16[ 7] = uSrc1.ai8[ 7]; 13501 puDst->ai16[ 8] = uSrc1.ai8[ 8]; 13502 puDst->ai16[ 9] = uSrc1.ai8[ 9]; 13503 puDst->ai16[10] = uSrc1.ai8[10]; 13504 puDst->ai16[11] = uSrc1.ai8[11]; 13505 puDst->ai16[12] = uSrc1.ai8[12]; 13506 puDst->ai16[13] = uSrc1.ai8[13]; 13507 puDst->ai16[14] = uSrc1.ai8[14]; 13508 puDst->ai16[15] = uSrc1.ai8[15]; 13509 } 13510 13511 13512 /* 13513 * PMOVSXBD / VPMOVSXBD 13514 */ 13515 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbd_u128_fallback,(PRTUINT128U puDst, uint32_t uSrc)) 13516 { 13517 RTUINT32U uSrc1 = { uSrc }; 13518 puDst->ai32[0] = uSrc1.ai8[0]; 13519 puDst->ai32[1] = uSrc1.ai8[1]; 13520 puDst->ai32[2] = uSrc1.ai8[2]; 13521 puDst->ai32[3] = uSrc1.ai8[3]; 13522 } 13523 13524 13525 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbd_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13526 { 13527 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13528 puDst->ai32[0] = uSrc1.ai8[0]; 13529 puDst->ai32[1] = uSrc1.ai8[1]; 13530 puDst->ai32[2] = uSrc1.ai8[2]; 13531 puDst->ai32[3] = uSrc1.ai8[3]; 13532 puDst->ai32[4] = uSrc1.ai8[4]; 13533 puDst->ai32[5] = uSrc1.ai8[5]; 13534 puDst->ai32[6] = uSrc1.ai8[6]; 13535 puDst->ai32[7] = uSrc1.ai8[7]; 13536 } 13537 13538 13539 /* 13540 * PMOVSXBQ / VPMOVSXBQ 13541 */ 13542 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbq_u128_fallback,(PRTUINT128U puDst, uint16_t uSrc)) 13543 { 13544 RTUINT16U uSrc1 = { uSrc }; 13545 puDst->ai64[0] = uSrc1.ai8[0]; 13546 puDst->ai64[1] = uSrc1.ai8[1]; 13547 } 13548 13549 13550 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13551 { 13552 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13553 puDst->ai64[0] = uSrc1.ai8[0]; 13554 puDst->ai64[1] = uSrc1.ai8[1]; 13555 puDst->ai64[2] = uSrc1.ai8[2]; 13556 puDst->ai64[3] = uSrc1.ai8[3]; 13557 } 13558 13559 13560 /* 13561 * PMOVSXWD / VPMOVSXWD 13562 */ 13563 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwd_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)) 13564 { 13565 RTUINT64U uSrc1 = { uSrc }; 13566 puDst->ai32[0] = uSrc1.ai16[0]; 13567 puDst->ai32[1] = uSrc1.ai16[1]; 13568 puDst->ai32[2] = uSrc1.ai16[2]; 13569 puDst->ai32[3] = uSrc1.ai16[3]; 13570 } 13571 13572 13573 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwd_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13574 { 13575 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13576 puDst->ai32[0] = uSrc1.ai16[0]; 13577 puDst->ai32[1] = uSrc1.ai16[1]; 13578 puDst->ai32[2] = uSrc1.ai16[2]; 13579 puDst->ai32[3] = uSrc1.ai16[3]; 13580 puDst->ai32[4] = uSrc1.ai16[4]; 13581 puDst->ai32[5] = uSrc1.ai16[5]; 13582 puDst->ai32[6] = uSrc1.ai16[6]; 13583 puDst->ai32[7] = uSrc1.ai16[7]; 13584 } 13585 13586 13587 /* 13588 * PMOVSXWQ / VPMOVSXWQ 13589 */ 13590 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwq_u128_fallback,(PRTUINT128U puDst, uint32_t uSrc)) 13591 { 13592 RTUINT32U uSrc1 = { uSrc }; 13593 puDst->ai64[0] = uSrc1.ai16[0]; 13594 puDst->ai64[1] = uSrc1.ai16[1]; 13595 } 13596 13597 13598 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13599 { 13600 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13601 puDst->ai64[0] = uSrc1.ai16[0]; 13602 puDst->ai64[1] = uSrc1.ai16[1]; 13603 puDst->ai64[2] = uSrc1.ai16[2]; 13604 puDst->ai64[3] = uSrc1.ai16[3]; 13605 } 13606 13607 13608 /* 13609 * PMOVSXDQ / VPMOVSXDQ 13610 */ 13611 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxdq_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)) 13612 { 13613 RTUINT64U uSrc1 = { uSrc }; 13614 puDst->ai64[0] = uSrc1.ai32[0]; 13615 puDst->ai64[1] = uSrc1.ai32[1]; 13616 } 13617 13618 13619 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxdq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13620 { 13621 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13622 puDst->ai64[0] = uSrc1.ai32[0]; 13623 puDst->ai64[1] = uSrc1.ai32[1]; 13624 puDst->ai64[2] = uSrc1.ai32[2]; 13625 puDst->ai64[3] = uSrc1.ai32[3]; 13626 } 13627 13628 13629 /* 13630 * PMOVZXBW / VPMOVZXBW 13631 */ 13632 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbw_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)) 13633 { 13634 RTUINT64U uSrc1 = { uSrc }; 13635 puDst->au16[0] = uSrc1.au8[0]; 13636 puDst->au16[1] = uSrc1.au8[1]; 13637 puDst->au16[2] = uSrc1.au8[2]; 13638 puDst->au16[3] = uSrc1.au8[3]; 13639 puDst->au16[4] = uSrc1.au8[4]; 13640 puDst->au16[5] = uSrc1.au8[5]; 13641 puDst->au16[6] = uSrc1.au8[6]; 13642 puDst->au16[7] = uSrc1.au8[7]; 13643 } 13644 13645 13646 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbw_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13647 { 13648 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13649 puDst->au16[ 0] = uSrc1.au8[ 0]; 13650 puDst->au16[ 1] = uSrc1.au8[ 1]; 13651 puDst->au16[ 2] = uSrc1.au8[ 2]; 13652 puDst->au16[ 3] = uSrc1.au8[ 3]; 13653 puDst->au16[ 4] = uSrc1.au8[ 4]; 13654 puDst->au16[ 5] = uSrc1.au8[ 5]; 13655 puDst->au16[ 6] = uSrc1.au8[ 6]; 13656 puDst->au16[ 7] = uSrc1.au8[ 7]; 13657 puDst->au16[ 8] = uSrc1.au8[ 8]; 13658 puDst->au16[ 9] = uSrc1.au8[ 9]; 13659 puDst->au16[10] = uSrc1.au8[10]; 13660 puDst->au16[11] = uSrc1.au8[11]; 13661 puDst->au16[12] = uSrc1.au8[12]; 13662 puDst->au16[13] = uSrc1.au8[13]; 13663 puDst->au16[14] = uSrc1.au8[14]; 13664 puDst->au16[15] = uSrc1.au8[15]; 13665 } 13666 13667 13668 /* 13669 * PMOVZXBD / VPMOVZXBD 13670 */ 13671 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbd_u128_fallback,(PRTUINT128U puDst, uint32_t uSrc)) 13672 { 13673 RTUINT32U uSrc1 = { uSrc }; 13674 puDst->au32[0] = uSrc1.au8[0]; 13675 puDst->au32[1] = uSrc1.au8[1]; 13676 puDst->au32[2] = uSrc1.au8[2]; 13677 puDst->au32[3] = uSrc1.au8[3]; 13678 } 13679 13680 13681 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbd_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13682 { 13683 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13684 puDst->au32[0] = uSrc1.au8[0]; 13685 puDst->au32[1] = uSrc1.au8[1]; 13686 puDst->au32[2] = uSrc1.au8[2]; 13687 puDst->au32[3] = uSrc1.au8[3]; 13688 puDst->au32[4] = uSrc1.au8[4]; 13689 puDst->au32[5] = uSrc1.au8[5]; 13690 puDst->au32[6] = uSrc1.au8[6]; 13691 puDst->au32[7] = uSrc1.au8[7]; 13692 } 13693 13694 13695 /* 13696 * PMOVZXBQ / VPMOVZXBQ 13697 */ 13698 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbq_u128_fallback,(PRTUINT128U puDst, uint16_t uSrc)) 13699 { 13700 RTUINT16U uSrc1 = { uSrc }; 13701 puDst->au64[0] = uSrc1.au8[0]; 13702 puDst->au64[1] = uSrc1.au8[1]; 13703 } 13704 13705 13706 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13707 { 13708 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13709 puDst->au64[0] = uSrc1.au8[0]; 13710 puDst->au64[1] = uSrc1.au8[1]; 13711 puDst->au64[2] = uSrc1.au8[2]; 13712 puDst->au64[3] = uSrc1.au8[3]; 13713 } 13714 13715 13716 /* 13717 * PMOVZXWD / VPMOVZXWD 13718 */ 13719 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwd_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)) 13720 { 13721 RTUINT64U uSrc1 = { uSrc }; 13722 puDst->au32[0] = uSrc1.au16[0]; 13723 puDst->au32[1] = uSrc1.au16[1]; 13724 puDst->au32[2] = uSrc1.au16[2]; 13725 puDst->au32[3] = uSrc1.au16[3]; 13726 } 13727 13728 13729 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwd_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13730 { 13731 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13732 puDst->au32[0] = uSrc1.au16[0]; 13733 puDst->au32[1] = uSrc1.au16[1]; 13734 puDst->au32[2] = uSrc1.au16[2]; 13735 puDst->au32[3] = uSrc1.au16[3]; 13736 puDst->au32[4] = uSrc1.au16[4]; 13737 puDst->au32[5] = uSrc1.au16[5]; 13738 puDst->au32[6] = uSrc1.au16[6]; 13739 puDst->au32[7] = uSrc1.au16[7]; 13740 } 13741 13742 13743 /* 13744 * PMOVZXWQ / VPMOVZXWQ 13745 */ 13746 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwq_u128_fallback,(PRTUINT128U puDst, uint32_t uSrc)) 13747 { 13748 RTUINT32U uSrc1 = { uSrc }; 13749 puDst->au64[0] = uSrc1.au16[0]; 13750 puDst->au64[1] = uSrc1.au16[1]; 13751 } 13752 13753 13754 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13755 { 13756 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13757 puDst->au64[0] = uSrc1.au16[0]; 13758 puDst->au64[1] = uSrc1.au16[1]; 13759 puDst->au64[2] = uSrc1.au16[2]; 13760 puDst->au64[3] = uSrc1.au16[3]; 13761 } 13762 13763 13764 /* 13765 * PMOVZXDQ / VPMOVZXDQ 13766 */ 13767 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxdq_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)) 13768 { 13769 RTUINT64U uSrc1 = { uSrc }; 13770 puDst->au64[0] = uSrc1.au32[0]; 13771 puDst->au64[1] = uSrc1.au32[1]; 13772 } 13773 13774 13775 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxdq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)) 13776 { 13777 RTUINT128U uSrc1 = *puSrc; /* puDst could overlap */ 13778 puDst->au64[0] = uSrc1.au32[0]; 13779 puDst->au64[1] = uSrc1.au32[1]; 13780 puDst->au64[2] = uSrc1.au32[2]; 13781 puDst->au64[3] = uSrc1.au32[3]; 13782 } 13783 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsThree0f38.cpp.h
r96099 r96115 655 655 656 656 657 /** Body for the pmov{s,z}x* instructions. */ 658 #define IEMOP_BODY_PMOV_S_Z(a_Instr, a_SrcWidth) \ 659 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); \ 660 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 661 { \ 662 /* \ 663 * Register, register. \ 664 */ \ 665 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 666 IEM_MC_BEGIN(2, 0); \ 667 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ 668 IEM_MC_ARG(uint64_t, uSrc, 1); \ 669 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); \ 670 IEM_MC_PREPARE_SSE_USAGE(); \ 671 IEM_MC_FETCH_XREG_U64(uSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 672 IEM_MC_REF_XREG_U128(puDst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 673 IEM_MC_CALL_VOID_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fSse41, \ 674 iemAImpl_ ## a_Instr ## _u128, \ 675 iemAImpl_v ## a_Instr ## _u128_fallback), \ 676 puDst, uSrc); \ 677 IEM_MC_ADVANCE_RIP(); \ 678 IEM_MC_END(); \ 679 } \ 680 else \ 681 { \ 682 /* \ 683 * Register, memory. \ 684 */ \ 685 IEM_MC_BEGIN(2, 2); \ 686 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 687 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ 688 IEM_MC_ARG(uint ## a_SrcWidth ## _t, uSrc, 1); \ 689 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); \ 690 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 691 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); \ 692 IEM_MC_PREPARE_SSE_USAGE(); \ 693 IEM_MC_FETCH_MEM_U## a_SrcWidth (uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); \ 694 IEM_MC_REF_XREG_U128(puDst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 695 IEM_MC_CALL_VOID_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fSse41, \ 696 iemAImpl_ ## a_Instr ## _u128, \ 697 iemAImpl_v ## a_Instr ## _u128_fallback), \ 698 puDst, uSrc); \ 699 IEM_MC_ADVANCE_RIP(); \ 700 IEM_MC_END(); \ 701 } \ 702 return VINF_SUCCESS 703 704 657 705 /** Opcode 0x66 0x0f 0x38 0x20. */ 658 FNIEMOP_STUB(iemOp_pmovsxbw_Vx_UxMq); 706 FNIEMOP_DEF(iemOp_pmovsxbw_Vx_UxMq) 707 { 708 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 709 IEMOP_MNEMONIC2(RM, PMOVSXBW, pmovsxbw, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 710 IEMOP_BODY_PMOV_S_Z(pmovsxbw, 64); 711 } 712 713 659 714 /** Opcode 0x66 0x0f 0x38 0x21. */ 660 FNIEMOP_STUB(iemOp_pmovsxbd_Vx_UxMd); 715 FNIEMOP_DEF(iemOp_pmovsxbd_Vx_UxMd) 716 { 717 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 718 IEMOP_MNEMONIC2(RM, PMOVSXBD, pmovsxbd, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 719 IEMOP_BODY_PMOV_S_Z(pmovsxbd, 32); 720 } 721 722 661 723 /** Opcode 0x66 0x0f 0x38 0x22. */ 662 FNIEMOP_STUB(iemOp_pmovsxbq_Vx_UxMw); 724 FNIEMOP_DEF(iemOp_pmovsxbq_Vx_UxMw) 725 { 726 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 727 IEMOP_MNEMONIC2(RM, PMOVSXBQ, pmovsxbq, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 728 IEMOP_BODY_PMOV_S_Z(pmovsxbq, 16); 729 } 730 731 663 732 /** Opcode 0x66 0x0f 0x38 0x23. */ 664 FNIEMOP_STUB(iemOp_pmovsxwd_Vx_UxMq); 733 FNIEMOP_DEF(iemOp_pmovsxwd_Vx_UxMq) 734 { 735 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 736 IEMOP_MNEMONIC2(RM, PMOVSXWD, pmovsxwd, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 737 IEMOP_BODY_PMOV_S_Z(pmovsxwd, 64); 738 } 739 740 665 741 /** Opcode 0x66 0x0f 0x38 0x24. */ 666 FNIEMOP_STUB(iemOp_pmovsxwq_Vx_UxMd); 742 FNIEMOP_DEF(iemOp_pmovsxwq_Vx_UxMd) 743 { 744 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 745 IEMOP_MNEMONIC2(RM, PMOVSXWQ, pmovsxwq, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 746 IEMOP_BODY_PMOV_S_Z(pmovsxwq, 32); 747 } 748 749 667 750 /** Opcode 0x66 0x0f 0x38 0x25. */ 668 FNIEMOP_STUB(iemOp_pmovsxdq_Vx_UxMq); 751 FNIEMOP_DEF(iemOp_pmovsxdq_Vx_UxMq) 752 { 753 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 754 IEMOP_MNEMONIC2(RM, PMOVSXDQ, pmovsxdq, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 755 IEMOP_BODY_PMOV_S_Z(pmovsxdq, 64); 756 } 757 758 669 759 /* Opcode 0x66 0x0f 0x38 0x26 - invalid */ 670 760 /* Opcode 0x66 0x0f 0x38 0x27 - invalid */ … … 751 841 752 842 /** Opcode 0x66 0x0f 0x38 0x30. */ 753 FNIEMOP_STUB(iemOp_pmovzxbw_Vx_UxMq); 843 FNIEMOP_DEF(iemOp_pmovzxbw_Vx_UxMq) 844 { 845 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 846 IEMOP_MNEMONIC2(RM, PMOVZXBW, pmovzxbw, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 847 IEMOP_BODY_PMOV_S_Z(pmovzxbw, 64); 848 } 849 850 754 851 /** Opcode 0x66 0x0f 0x38 0x31. */ 755 FNIEMOP_STUB(iemOp_pmovzxbd_Vx_UxMd); 852 FNIEMOP_DEF(iemOp_pmovzxbd_Vx_UxMd) 853 { 854 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 855 IEMOP_MNEMONIC2(RM, PMOVZXBD, pmovzxbd, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 856 IEMOP_BODY_PMOV_S_Z(pmovzxbd, 32); 857 } 858 859 756 860 /** Opcode 0x66 0x0f 0x38 0x32. */ 757 FNIEMOP_STUB(iemOp_pmovzxbq_Vx_UxMw); 861 FNIEMOP_DEF(iemOp_pmovzxbq_Vx_UxMw) 862 { 863 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 864 IEMOP_MNEMONIC2(RM, PMOVZXBQ, pmovzxbq, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 865 IEMOP_BODY_PMOV_S_Z(pmovzxbq, 16); 866 } 867 868 758 869 /** Opcode 0x66 0x0f 0x38 0x33. */ 759 FNIEMOP_STUB(iemOp_pmovzxwd_Vx_UxMq); 870 FNIEMOP_DEF(iemOp_pmovzxwd_Vx_UxMq) 871 { 872 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 873 IEMOP_MNEMONIC2(RM, PMOVZXWD, pmovzxwd, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 874 IEMOP_BODY_PMOV_S_Z(pmovzxwd, 64); 875 } 876 877 760 878 /** Opcode 0x66 0x0f 0x38 0x34. */ 761 FNIEMOP_STUB(iemOp_pmovzxwq_Vx_UxMd); 879 FNIEMOP_DEF(iemOp_pmovzxwq_Vx_UxMd) 880 { 881 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 882 IEMOP_MNEMONIC2(RM, PMOVZXWQ, pmovzxwq, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 883 IEMOP_BODY_PMOV_S_Z(pmovzxwq, 32); 884 } 885 886 762 887 /** Opcode 0x66 0x0f 0x38 0x35. */ 763 FNIEMOP_STUB(iemOp_pmovzxdq_Vx_UxMq); 888 FNIEMOP_DEF(iemOp_pmovzxdq_Vx_UxMq) 889 { 890 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 891 IEMOP_MNEMONIC2(RM, PMOVZXDQ, pmovzxdq, Vx, Wq, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES); 892 IEMOP_BODY_PMOV_S_Z(pmovzxdq, 64); 893 } 894 895 764 896 /* Opcode 0x66 0x0f 0x38 0x36 - invalid (vex only). */ 765 897 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap2.cpp.h
r96099 r96115 352 352 353 353 354 /** Body for the vpmov{s,z}x* instructions. */ 355 #define IEMOP_BODY_VPMOV_S_Z(a_Instr, a_SrcWidth) \ 356 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); \ 357 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 358 { \ 359 /* \ 360 * Register, register. \ 361 */ \ 362 if (pVCpu->iem.s.uVexLength) \ 363 { \ 364 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); \ 365 IEM_MC_BEGIN(2, 1); \ 366 IEM_MC_LOCAL(RTUINT256U, uDst); \ 367 IEM_MC_ARG_LOCAL_REF(PRTUINT256U, puDst, uDst, 0); \ 368 IEM_MC_ARG(PCRTUINT128U, puSrc, 1); \ 369 IEM_MC_MAYBE_RAISE_AVX2_RELATED_XCPT(); \ 370 IEM_MC_PREPARE_AVX_USAGE(); \ 371 IEM_MC_REF_XREG_U128_CONST(puSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 372 IEM_MC_CALL_VOID_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fAvx2, iemAImpl_ ## a_Instr ## _u256, \ 373 iemAImpl_ ## a_Instr ## _u256_fallback), \ 374 puDst, puSrc); \ 375 IEM_MC_STORE_YREG_U256_ZX_VLMAX(IEM_GET_MODRM_REG(pVCpu, bRm), uDst); \ 376 IEM_MC_ADVANCE_RIP(); \ 377 IEM_MC_END(); \ 378 } \ 379 else \ 380 { \ 381 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); \ 382 IEM_MC_BEGIN(2, 0); \ 383 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ 384 IEM_MC_ARG(uint64_t, uSrc, 1); \ 385 IEM_MC_MAYBE_RAISE_AVX2_RELATED_XCPT(); \ 386 IEM_MC_PREPARE_AVX_USAGE(); \ 387 IEM_MC_REF_XREG_U128(puDst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 388 IEM_MC_FETCH_XREG_U64(uSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 389 IEM_MC_CALL_VOID_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fAvx2, iemAImpl_ ## a_Instr ## _u128, \ 390 iemAImpl_## a_Instr ## _u128_fallback), \ 391 puDst, uSrc); \ 392 IEM_MC_CLEAR_YREG_128_UP( IEM_GET_MODRM_REG(pVCpu, bRm)); \ 393 IEM_MC_ADVANCE_RIP(); \ 394 IEM_MC_END(); \ 395 } \ 396 } \ 397 else \ 398 { \ 399 /* \ 400 * Register, memory. \ 401 */ \ 402 if (pVCpu->iem.s.uVexLength) \ 403 { \ 404 IEM_MC_BEGIN(2, 3); \ 405 IEM_MC_LOCAL(RTUINT256U, uDst); \ 406 IEM_MC_LOCAL(RTUINT128U, uSrc); \ 407 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 408 IEM_MC_ARG_LOCAL_REF(PRTUINT256U, puDst, uDst, 0); \ 409 IEM_MC_ARG_LOCAL_REF(PCRTUINT128U, puSrc, uSrc, 1); \ 410 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); \ 411 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); \ 412 IEM_MC_MAYBE_RAISE_AVX2_RELATED_XCPT(); \ 413 IEM_MC_PREPARE_AVX_USAGE(); \ 414 IEM_MC_FETCH_MEM_U128(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); \ 415 IEM_MC_CALL_VOID_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fAvx2, iemAImpl_ ## a_Instr ## _u256, \ 416 iemAImpl_ ## a_Instr ## _u256_fallback), \ 417 puDst, puSrc); \ 418 IEM_MC_STORE_YREG_U256_ZX_VLMAX( IEM_GET_MODRM_REG(pVCpu, bRm), uDst); \ 419 IEM_MC_ADVANCE_RIP(); \ 420 IEM_MC_END(); \ 421 } \ 422 else \ 423 { \ 424 IEM_MC_BEGIN(2, 1); \ 425 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 426 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ 427 IEM_MC_ARG(uint ## a_SrcWidth ##_t, uSrc, 1); \ 428 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); \ 429 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); \ 430 IEM_MC_MAYBE_RAISE_AVX2_RELATED_XCPT(); \ 431 IEM_MC_PREPARE_AVX_USAGE(); \ 432 IEM_MC_REF_XREG_U128(puDst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 433 IEM_MC_FETCH_MEM_U ## a_SrcWidth (uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); \ 434 IEM_MC_CALL_VOID_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fAvx2, iemAImpl_ ## a_Instr ## _u128, \ 435 iemAImpl_ ## a_Instr ## _u128_fallback), \ 436 puDst, uSrc); \ 437 IEM_MC_CLEAR_YREG_128_UP( IEM_GET_MODRM_REG(pVCpu, bRm)); \ 438 IEM_MC_ADVANCE_RIP(); \ 439 IEM_MC_END(); \ 440 } \ 441 } \ 442 return VINF_SUCCESS \ 443 354 444 /** Opcode VEX.66.0F38 0x20. */ 355 FNIEMOP_STUB(iemOp_vpmovsxbw_Vx_UxMq); 445 FNIEMOP_DEF(iemOp_vpmovsxbw_Vx_UxMq) 446 { 447 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 448 IEMOP_MNEMONIC2(VEX_RM, VPMOVSXBW, vpmovsxbw, Vx, Wq, DISOPTYPE_HARMLESS, 0); 449 IEMOP_BODY_VPMOV_S_Z(vpmovsxbw, 64); 450 } 451 452 356 453 /** Opcode VEX.66.0F38 0x21. */ 357 FNIEMOP_STUB(iemOp_vpmovsxbd_Vx_UxMd); 454 FNIEMOP_DEF(iemOp_vpmovsxbd_Vx_UxMd) 455 { 456 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 457 IEMOP_MNEMONIC2(VEX_RM, VPMOVSXBD, vpmovsxbd, Vx, Wq, DISOPTYPE_HARMLESS, 0); 458 IEMOP_BODY_VPMOV_S_Z(vpmovsxbd, 32); 459 } 460 461 358 462 /** Opcode VEX.66.0F38 0x22. */ 359 FNIEMOP_STUB(iemOp_vpmovsxbq_Vx_UxMw); 463 FNIEMOP_DEF(iemOp_vpmovsxbq_Vx_UxMw) 464 { 465 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 466 IEMOP_MNEMONIC2(VEX_RM, VPMOVSXBQ, vpmovsxbq, Vx, Wq, DISOPTYPE_HARMLESS, 0); 467 IEMOP_BODY_VPMOV_S_Z(vpmovsxbq, 16); 468 } 469 470 360 471 /** Opcode VEX.66.0F38 0x23. */ 361 FNIEMOP_STUB(iemOp_vpmovsxwd_Vx_UxMq); 472 FNIEMOP_DEF(iemOp_vpmovsxwd_Vx_UxMq) 473 { 474 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 475 IEMOP_MNEMONIC2(VEX_RM, VPMOVSXWD, vpmovsxwd, Vx, Wq, DISOPTYPE_HARMLESS, 0); 476 IEMOP_BODY_VPMOV_S_Z(vpmovsxwd, 64); 477 } 478 479 362 480 /** Opcode VEX.66.0F38 0x24. */ 363 FNIEMOP_STUB(iemOp_vpmovsxwq_Vx_UxMd); 481 FNIEMOP_DEF(iemOp_vpmovsxwq_Vx_UxMd) 482 { 483 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 484 IEMOP_MNEMONIC2(VEX_RM, VPMOVSXWQ, vpmovsxwq, Vx, Wq, DISOPTYPE_HARMLESS, 0); 485 IEMOP_BODY_VPMOV_S_Z(vpmovsxwq, 32); 486 } 487 488 364 489 /** Opcode VEX.66.0F38 0x25. */ 365 FNIEMOP_STUB(iemOp_vpmovsxdq_Vx_UxMq); 490 FNIEMOP_DEF(iemOp_vpmovsxdq_Vx_UxMq) 491 { 492 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 493 IEMOP_MNEMONIC2(VEX_RM, VPMOVSXDQ, vpmovsxdq, Vx, Wq, DISOPTYPE_HARMLESS, 0); 494 IEMOP_BODY_VPMOV_S_Z(vpmovsxdq, 64); 495 } 496 497 366 498 /* Opcode VEX.66.0F38 0x26 - invalid */ 367 499 /* Opcode VEX.66.0F38 0x27 - invalid */ … … 488 620 FNIEMOP_STUB(iemOp_vmaskmovpd_Mx_Hx_Vx); 489 621 622 490 623 /** Opcode VEX.66.0F38 0x30. */ 491 FNIEMOP_STUB(iemOp_vpmovzxbw_Vx_UxMq); 624 FNIEMOP_DEF(iemOp_vpmovzxbw_Vx_UxMq) 625 { 626 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 627 IEMOP_MNEMONIC2(VEX_RM, VPMOVZXBW, vpmovzxbw, Vx, Wq, DISOPTYPE_HARMLESS, 0); 628 IEMOP_BODY_VPMOV_S_Z(vpmovzxbw, 64); 629 } 630 631 492 632 /** Opcode VEX.66.0F38 0x31. */ 493 FNIEMOP_STUB(iemOp_vpmovzxbd_Vx_UxMd); 633 FNIEMOP_DEF(iemOp_vpmovzxbd_Vx_UxMd) 634 { 635 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 636 IEMOP_MNEMONIC2(VEX_RM, VPMOVZXBD, vpmovzxbd, Vx, Wq, DISOPTYPE_HARMLESS, 0); 637 IEMOP_BODY_VPMOV_S_Z(vpmovzxbd, 32); 638 } 639 640 494 641 /** Opcode VEX.66.0F38 0x32. */ 495 FNIEMOP_STUB(iemOp_vpmovzxbq_Vx_UxMw); 642 FNIEMOP_DEF(iemOp_vpmovzxbq_Vx_UxMw) 643 { 644 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 645 IEMOP_MNEMONIC2(VEX_RM, VPMOVZXBQ, vpmovzxbq, Vx, Wq, DISOPTYPE_HARMLESS, 0); 646 IEMOP_BODY_VPMOV_S_Z(vpmovzxbq, 16); 647 } 648 649 496 650 /** Opcode VEX.66.0F38 0x33. */ 497 FNIEMOP_STUB(iemOp_vpmovzxwd_Vx_UxMq); 651 FNIEMOP_DEF(iemOp_vpmovzxwd_Vx_UxMq) 652 { 653 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 654 IEMOP_MNEMONIC2(VEX_RM, VPMOVZXWD, vpmovzxwd, Vx, Wq, DISOPTYPE_HARMLESS, 0); 655 IEMOP_BODY_VPMOV_S_Z(vpmovzxwd, 64); 656 } 657 658 498 659 /** Opcode VEX.66.0F38 0x34. */ 499 FNIEMOP_STUB(iemOp_vpmovzxwq_Vx_UxMd); 660 FNIEMOP_DEF(iemOp_vpmovzxwq_Vx_UxMd) 661 { 662 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 663 IEMOP_MNEMONIC2(VEX_RM, VPMOVZXWQ, vpmovzxwq, Vx, Wq, DISOPTYPE_HARMLESS, 0); 664 IEMOP_BODY_VPMOV_S_Z(vpmovzxwq, 32); 665 } 666 667 500 668 /** Opcode VEX.66.0F38 0x35. */ 501 FNIEMOP_STUB(iemOp_vpmovzxdq_Vx_UxMq); 669 FNIEMOP_DEF(iemOp_vpmovzxdq_Vx_UxMq) 670 { 671 /** @todo r=aeichner Review code, the naming of this function and the parameter type specifiers. */ 672 IEMOP_MNEMONIC2(VEX_RM, VPMOVZXDQ, vpmovzxdq, Vx, Wq, DISOPTYPE_HARMLESS, 0); 673 IEMOP_BODY_VPMOV_S_Z(vpmovzxdq, 64); 674 } 675 676 502 677 /* Opcode VEX.66.0F38 0x36. */ 503 678 FNIEMOP_STUB(iemOp_vpermd_Vqq_Hqq_Wqq); -
trunk/src/VBox/VMM/include/IEMInternal.h
r96109 r96115 2077 2077 IEM_DECL_IMPL_DEF(void, iemAImpl_vmovddup_256_rr,(PX86XSAVEAREA pXState, uint8_t iYRegDst, uint8_t iYRegSrc)); 2078 2078 IEM_DECL_IMPL_DEF(void, iemAImpl_vmovddup_256_rm,(PX86XSAVEAREA pXState, uint8_t iYRegDst, PCRTUINT256U pSrc)); 2079 2080 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovsxbw_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2081 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbw_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2082 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbw_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)); 2083 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbw_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2084 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbw_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2085 2086 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovsxbd_u128,(PRTUINT128U puDst, uint32_t uSrc)); 2087 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbd_u128,(PRTUINT128U puDst, uint32_t uSrc)); 2088 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbd_u128_fallback,(PRTUINT128U puDst, uint32_t uSrc)); 2089 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbd_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2090 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbd_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2091 2092 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovsxbq_u128,(PRTUINT128U puDst, uint16_t uSrc)); 2093 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbq_u128,(PRTUINT128U puDst, uint16_t uSrc)); 2094 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbq_u128_fallback,(PRTUINT128U puDst, uint16_t uSrc)); 2095 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbq_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2096 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxbq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2097 2098 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovsxwd_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2099 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwd_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2100 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwd_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)); 2101 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwd_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2102 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwd_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2103 2104 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovsxwq_u128,(PRTUINT128U puDst, uint32_t uSrc)); 2105 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwq_u128,(PRTUINT128U puDst, uint32_t uSrc)); 2106 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwq_u128_fallback,(PRTUINT128U puDst, uint32_t uSrc)); 2107 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwq_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2108 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxwq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2109 2110 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovsxdq_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2111 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxdq_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2112 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxdq_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)); 2113 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxdq_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2114 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovsxdq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2115 2116 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovzxbw_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2117 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbw_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2118 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbw_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)); 2119 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbw_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2120 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbw_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2121 2122 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovzxbd_u128,(PRTUINT128U puDst, uint32_t uSrc)); 2123 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbd_u128,(PRTUINT128U puDst, uint32_t uSrc)); 2124 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbd_u128_fallback,(PRTUINT128U puDst, uint32_t uSrc)); 2125 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbd_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2126 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbd_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2127 2128 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovzxbq_u128,(PRTUINT128U puDst, uint16_t uSrc)); 2129 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbq_u128,(PRTUINT128U puDst, uint16_t uSrc)); 2130 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbq_u128_fallback,(PRTUINT128U puDst, uint16_t uSrc)); 2131 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbq_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2132 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxbq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2133 2134 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovzxwd_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2135 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwd_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2136 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwd_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)); 2137 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwd_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2138 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwd_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2139 2140 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovzxwq_u128,(PRTUINT128U puDst, uint32_t uSrc)); 2141 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwq_u128,(PRTUINT128U puDst, uint32_t uSrc)); 2142 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwq_u128_fallback,(PRTUINT128U puDst, uint32_t uSrc)); 2143 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwq_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2144 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxwq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2145 2146 IEM_DECL_IMPL_DEF(void, iemAImpl_pmovzxdq_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2147 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxdq_u128,(PRTUINT128U puDst, uint64_t uSrc)); 2148 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxdq_u128_fallback,(PRTUINT128U puDst, uint64_t uSrc)); 2149 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxdq_u256,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2150 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmovzxdq_u256_fallback,(PRTUINT256U puDst, PCRTUINT128U puSrc)); 2079 2151 2080 2152 /** @} */
Note:
See TracChangeset
for help on using the changeset viewer.