Changeset 104103 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
- Timestamp:
- Mar 28, 2024 10:54:21 AM (8 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r104076 r104103 39 39 * Common worker for MMX instructions on the form: 40 40 * pxxx mm1, mm2/mem64 41 */ 42 FNIEMOP_DEF_1(iemOpCommonMmx_FullFull_To_Full, PFNIEMAIMPLMEDIAF2U64, pfnU64) 41 * 42 * The @a pfnU64 worker function takes no FXSAVE state, just the operands. 43 */ 44 FNIEMOP_DEF_1(iemOpCommonMmxOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64) 43 45 { 44 46 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); … … 60 62 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 61 63 IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm)); 62 IEM_MC_CALL_ MMX_AIMPL_2(pfnU64, pDst, pSrc);64 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc); 63 65 IEM_MC_MODIFIED_MREG_BY_REF(pDst); 64 66 … … 86 88 87 89 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 88 IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc);89 IEM_MC_MODIFIED_MREG_BY_REF(pDst);90 91 IEM_MC_ADVANCE_RIP_AND_FINISH();92 IEM_MC_END();93 }94 }95 96 97 /**98 * Common worker for MMX instructions on the form:99 * pxxx mm1, mm2/mem64100 *101 * Unlike iemOpCommonMmx_FullFull_To_Full, the @a pfnU64 worker function takes102 * no FXSAVE state, just the operands.103 */104 FNIEMOP_DEF_1(iemOpCommonMmxOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64)105 {106 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);107 if (IEM_IS_MODRM_REG_MODE(bRm))108 {109 /*110 * MMX, MMX.111 */112 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */113 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */114 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);115 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);116 IEM_MC_ARG(uint64_t *, pDst, 0);117 IEM_MC_ARG(uint64_t const *, pSrc, 1);118 IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();119 IEM_MC_PREPARE_FPU_USAGE();120 IEM_MC_FPU_TO_MMX_MODE();121 122 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));123 IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm));124 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);125 IEM_MC_MODIFIED_MREG_BY_REF(pDst);126 127 IEM_MC_ADVANCE_RIP_AND_FINISH();128 IEM_MC_END();129 }130 else131 {132 /*133 * MMX, [mem64].134 */135 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);136 IEM_MC_ARG(uint64_t *, pDst, 0);137 IEM_MC_LOCAL(uint64_t, uSrc);138 IEM_MC_ARG_LOCAL_REF(uint64_t const *, pSrc, uSrc, 1);139 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);140 141 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);142 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);143 IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();144 IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);145 146 IEM_MC_PREPARE_FPU_USAGE();147 IEM_MC_FPU_TO_MMX_MODE();148 149 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));150 90 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc); 151 91 IEM_MC_MODIFIED_MREG_BY_REF(pDst); … … 161 101 * pxxx mm1, mm2/mem64 162 102 * for instructions introduced with SSE. 163 */ 164 FNIEMOP_DEF_1(iemOpCommonMmxSse_FullFull_To_Full, PFNIEMAIMPLMEDIAF2U64, pfnU64) 103 * 104 * The @a pfnU64 worker function takes no FXSAVE state, just the operands. 105 */ 106 FNIEMOP_DEF_1(iemOpCommonMmxSseOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64) 165 107 { 166 108 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); … … 182 124 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 183 125 IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm)); 184 IEM_MC_CALL_ MMX_AIMPL_2(pfnU64, pDst, pSrc);126 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc); 185 127 IEM_MC_MODIFIED_MREG_BY_REF(pDst); 186 128 … … 208 150 209 151 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 210 IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc);211 IEM_MC_MODIFIED_MREG_BY_REF(pDst);212 213 IEM_MC_ADVANCE_RIP_AND_FINISH();214 IEM_MC_END();215 }216 }217 218 219 /**220 * Common worker for MMX instructions on the form:221 * pxxx mm1, mm2/mem64222 * for instructions introduced with SSE.223 *224 * Unlike iemOpCommonMmxSse_FullFull_To_Full, the @a pfnU64 worker function takes225 * no FXSAVE state, just the operands.226 */227 FNIEMOP_DEF_1(iemOpCommonMmxSseOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64)228 {229 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);230 if (IEM_IS_MODRM_REG_MODE(bRm))231 {232 /*233 * MMX, MMX.234 */235 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */236 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */237 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);238 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);239 IEM_MC_ARG(uint64_t *, pDst, 0);240 IEM_MC_ARG(uint64_t const *, pSrc, 1);241 IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();242 IEM_MC_PREPARE_FPU_USAGE();243 IEM_MC_FPU_TO_MMX_MODE();244 245 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));246 IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm));247 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);248 IEM_MC_MODIFIED_MREG_BY_REF(pDst);249 250 IEM_MC_ADVANCE_RIP_AND_FINISH();251 IEM_MC_END();252 }253 else254 {255 /*256 * MMX, [mem64].257 */258 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);259 IEM_MC_ARG(uint64_t *, pDst, 0);260 IEM_MC_LOCAL(uint64_t, uSrc);261 IEM_MC_ARG_LOCAL_REF(uint64_t const *, pSrc, uSrc, 1);262 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);263 264 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);265 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);266 IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();267 IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);268 269 IEM_MC_PREPARE_FPU_USAGE();270 IEM_MC_FPU_TO_MMX_MODE();271 272 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));273 152 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc); 274 153 IEM_MC_MODIFIED_MREG_BY_REF(pDst); … … 285 164 * that was introduced with SSE2. 286 165 */ 287 FNIEMOP_DEF_1(iemOpCommonMmx _FullFull_To_Full_Sse2, PFNIEMAIMPLMEDIAF2U64, pfnU64)166 FNIEMOP_DEF_1(iemOpCommonMmxOpt_FullFull_To_Full_Sse2, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64) 288 167 { 289 168 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); … … 305 184 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 306 185 IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm)); 307 IEM_MC_CALL_ MMX_AIMPL_2(pfnU64, pDst, pSrc);186 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc); 308 187 IEM_MC_MODIFIED_MREG_BY_REF(pDst); 309 188 … … 331 210 332 211 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 333 IEM_MC_CALL_ MMX_AIMPL_2(pfnU64, pDst, pSrc);212 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc); 334 213 IEM_MC_MODIFIED_MREG_BY_REF(pDst); 335 214 … … 347 226 * SSE cpuid checks. No SIMD FP exceptions. 348 227 * 228 * The @a pfnU128 worker function takes no FXSAVE state, just the operands. 229 * 349 230 * @sa iemOpCommonSse2_FullFull_To_Full 350 231 */ 351 FNIEMOP_DEF_1(iemOpCommonSse _FullFull_To_Full, PFNIEMAIMPLMEDIAF2U128, pfnU128)232 FNIEMOP_DEF_1(iemOpCommonSseOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U128, pfnU128) 352 233 { 353 234 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); … … 365 246 IEM_MC_REF_XREG_U128(pDst, IEM_GET_MODRM_REG(pVCpu, bRm)); 366 247 IEM_MC_REF_XREG_U128_CONST(pSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); 367 IEM_MC_CALL_ SSE_AIMPL_2(pfnU128, pDst, pSrc);248 IEM_MC_CALL_VOID_AIMPL_2(pfnU128, pDst, pSrc); 368 249 IEM_MC_ADVANCE_RIP_AND_FINISH(); 369 250 IEM_MC_END(); … … 387 268 IEM_MC_PREPARE_SSE_USAGE(); 388 269 IEM_MC_REF_XREG_U128(pDst, IEM_GET_MODRM_REG(pVCpu, bRm)); 389 IEM_MC_CALL_ SSE_AIMPL_2(pfnU128, pDst, pSrc);270 IEM_MC_CALL_VOID_AIMPL_2(pfnU128, pDst, pSrc); 390 271 391 272 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 402 283 * Exceptions type 4. SSE2 cpuid checks. 403 284 * 404 * @sa iemOpCommonSse41_FullFull_To_Full, iemOpCommonSse2_FullFull_To_Full 405 */ 406 FNIEMOP_DEF_1(iemOpCommonSse2_FullFull_To_Full, PFNIEMAIMPLMEDIAF2U128, pfnU128) 407 { 408 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 409 if (IEM_IS_MODRM_REG_MODE(bRm)) 410 { 411 /* 412 * XMM, XMM. 413 */ 414 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 415 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 416 IEM_MC_ARG(PRTUINT128U, pDst, 0); 417 IEM_MC_ARG(PCRTUINT128U, pSrc, 1); 418 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 419 IEM_MC_PREPARE_SSE_USAGE(); 420 IEM_MC_REF_XREG_U128(pDst, IEM_GET_MODRM_REG(pVCpu, bRm)); 421 IEM_MC_REF_XREG_U128_CONST(pSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); 422 IEM_MC_CALL_SSE_AIMPL_2(pfnU128, pDst, pSrc); 423 IEM_MC_ADVANCE_RIP_AND_FINISH(); 424 IEM_MC_END(); 425 } 426 else 427 { 428 /* 429 * XMM, [mem128]. 430 */ 431 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 432 IEM_MC_ARG(PRTUINT128U, pDst, 0); 433 IEM_MC_LOCAL(RTUINT128U, uSrc); 434 IEM_MC_ARG_LOCAL_REF(PCRTUINT128U, pSrc, uSrc, 1); 435 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 436 437 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 438 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 439 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 440 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 441 442 IEM_MC_PREPARE_SSE_USAGE(); 443 IEM_MC_REF_XREG_U128(pDst, IEM_GET_MODRM_REG(pVCpu, bRm)); 444 IEM_MC_CALL_SSE_AIMPL_2(pfnU128, pDst, pSrc); 445 446 IEM_MC_ADVANCE_RIP_AND_FINISH(); 447 IEM_MC_END(); 448 } 449 } 450 451 452 /** 453 * Common worker for SSE2 instructions on the forms: 454 * pxxx xmm1, xmm2/mem128 455 * 456 * Proper alignment of the 128-bit operand is enforced. 457 * Exceptions type 4. SSE2 cpuid checks. 458 * 459 * Unlike iemOpCommonSse2_FullFull_To_Full, the @a pfnU128 worker function takes 460 * no FXSAVE state, just the operands. 285 * The @a pfnU128 worker function takes no FXSAVE state, just the operands. 461 286 * 462 287 * @sa iemOpCommonSse41_FullFull_To_Full, iemOpCommonSse2_FullFull_To_Full … … 5709 5534 { 5710 5535 IEMOP_MNEMONIC2(RM, ANDPS, andps, Vps, Wps, DISOPTYPE_HARMLESS, 0); 5711 return FNIEMOP_CALL_1(iemOpCommonSse _FullFull_To_Full, iemAImpl_pand_u128);5536 return FNIEMOP_CALL_1(iemOpCommonSseOpt_FullFull_To_Full, iemAImpl_pand_u128); 5712 5537 } 5713 5538 … … 5717 5542 { 5718 5543 IEMOP_MNEMONIC2(RM, ANDPD, andpd, Vpd, Wpd, DISOPTYPE_HARMLESS, 0); 5719 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pand_u128);5544 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pand_u128); 5720 5545 } 5721 5546 … … 5729 5554 { 5730 5555 IEMOP_MNEMONIC2(RM, ANDNPS, andnps, Vps, Wps, DISOPTYPE_HARMLESS, 0); 5731 return FNIEMOP_CALL_1(iemOpCommonSse _FullFull_To_Full, iemAImpl_pandn_u128);5556 return FNIEMOP_CALL_1(iemOpCommonSseOpt_FullFull_To_Full, iemAImpl_pandn_u128); 5732 5557 } 5733 5558 … … 5737 5562 { 5738 5563 IEMOP_MNEMONIC2(RM, ANDNPD, andnpd, Vpd, Wpd, DISOPTYPE_HARMLESS, 0); 5739 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pandn_u128);5564 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pandn_u128); 5740 5565 } 5741 5566 … … 5749 5574 { 5750 5575 IEMOP_MNEMONIC2(RM, ORPS, orps, Vps, Wps, DISOPTYPE_HARMLESS, 0); 5751 return FNIEMOP_CALL_1(iemOpCommonSse _FullFull_To_Full, iemAImpl_por_u128);5576 return FNIEMOP_CALL_1(iemOpCommonSseOpt_FullFull_To_Full, iemAImpl_por_u128); 5752 5577 } 5753 5578 … … 5757 5582 { 5758 5583 IEMOP_MNEMONIC2(RM, ORPD, orpd, Vpd, Wpd, DISOPTYPE_HARMLESS, 0); 5759 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_por_u128);5584 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_por_u128); 5760 5585 } 5761 5586 … … 5769 5594 { 5770 5595 IEMOP_MNEMONIC2(RM, XORPS, xorps, Vps, Wps, DISOPTYPE_HARMLESS, 0); 5771 return FNIEMOP_CALL_1(iemOpCommonSse _FullFull_To_Full, iemAImpl_pxor_u128);5596 return FNIEMOP_CALL_1(iemOpCommonSseOpt_FullFull_To_Full, iemAImpl_pxor_u128); 5772 5597 } 5773 5598 … … 5777 5602 { 5778 5603 IEMOP_MNEMONIC2(RM, XORPD, xorpd, Vpd, Wpd, DISOPTYPE_HARMLESS, 0); 5779 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pxor_u128);5604 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pxor_u128); 5780 5605 } 5781 5606 … … 6117 5942 { 6118 5943 IEMOP_MNEMONIC2(RM, PCMPGTB, pcmpgtb, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 6119 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pcmpgtb_u64);5944 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpgtb_u64); 6120 5945 } 6121 5946 … … 6125 5950 { 6126 5951 IEMOP_MNEMONIC2(RM, PCMPGTB, pcmpgtb, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 6127 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pcmpgtb_u128);5952 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpgtb_u128); 6128 5953 } 6129 5954 … … 6136 5961 { 6137 5962 IEMOP_MNEMONIC2(RM, PCMPGTW, pcmpgtw, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 6138 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pcmpgtw_u64);5963 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpgtw_u64); 6139 5964 } 6140 5965 … … 6144 5969 { 6145 5970 IEMOP_MNEMONIC2(RM, PCMPGTW, pcmpgtw, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 6146 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pcmpgtw_u128);5971 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpgtw_u128); 6147 5972 } 6148 5973 … … 6155 5980 { 6156 5981 IEMOP_MNEMONIC2(RM, PCMPGTD, pcmpgtd, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 6157 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pcmpgtd_u64);5982 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpgtd_u64); 6158 5983 } 6159 5984 … … 6163 5988 { 6164 5989 IEMOP_MNEMONIC2(RM, PCMPGTD, pcmpgtd, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 6165 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pcmpgtd_u128);5990 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpgtd_u128); 6166 5991 } 6167 5992 … … 7135 6960 { 7136 6961 IEMOP_MNEMONIC2(RM, PCMPEQB, pcmpeqb, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 7137 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pcmpeqb_u64);6962 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpeqb_u64); 7138 6963 } 7139 6964 … … 7143 6968 { 7144 6969 IEMOP_MNEMONIC2(RM, PCMPEQB, pcmpeqb, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 7145 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pcmpeqb_u128);6970 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpeqb_u128); 7146 6971 } 7147 6972 … … 7155 6980 { 7156 6981 IEMOP_MNEMONIC2(RM, PCMPEQW, pcmpeqw, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 7157 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pcmpeqw_u64);6982 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpeqw_u64); 7158 6983 } 7159 6984 … … 7163 6988 { 7164 6989 IEMOP_MNEMONIC2(RM, PCMPEQW, pcmpeqw, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 7165 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pcmpeqw_u128);6990 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpeqw_u128); 7166 6991 } 7167 6992 … … 7175 7000 { 7176 7001 IEMOP_MNEMONIC2(RM, PCMPEQD, pcmpeqd, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 7177 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pcmpeqd_u64);7002 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpeqd_u64); 7178 7003 } 7179 7004 … … 7183 7008 { 7184 7009 IEMOP_MNEMONIC2(RM, PCMPEQD, pcmpeqd, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 7185 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pcmpeqd_u128);7010 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpeqd_u128); 7186 7011 } 7187 7012 … … 13219 13044 { 13220 13045 IEMOP_MNEMONIC2(RM, PADDQ, paddq, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13221 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full_Sse2, iemAImpl_paddq_u64);13046 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full_Sse2, iemAImpl_paddq_u64); 13222 13047 } 13223 13048 … … 13227 13052 { 13228 13053 IEMOP_MNEMONIC2(RM, PADDQ, paddq, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13229 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_paddq_u128);13054 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddq_u128); 13230 13055 } 13231 13056 … … 13238 13063 { 13239 13064 IEMOP_MNEMONIC2(RM, PMULLW, pmullw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13240 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pmullw_u64);13065 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pmullw_u64); 13241 13066 } 13242 13067 … … 13245 13070 { 13246 13071 IEMOP_MNEMONIC2(RM, PMULLW, pmullw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13247 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pmullw_u128);13072 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmullw_u128); 13248 13073 } 13249 13074 … … 13471 13296 { 13472 13297 IEMOP_MNEMONIC2(RM, PSUBUSB, psubusb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13473 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_psubusb_u64);13298 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubusb_u64); 13474 13299 } 13475 13300 … … 13479 13304 { 13480 13305 IEMOP_MNEMONIC2(RM, PSUBUSB, psubusb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13481 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_psubusb_u128);13306 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubusb_u128); 13482 13307 } 13483 13308 … … 13490 13315 { 13491 13316 IEMOP_MNEMONIC2(RM, PSUBUSW, psubusw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13492 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_psubusw_u64);13317 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubusw_u64); 13493 13318 } 13494 13319 … … 13498 13323 { 13499 13324 IEMOP_MNEMONIC2(RM, PSUBUSW, psubusw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13500 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_psubusw_u128);13325 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubusw_u128); 13501 13326 } 13502 13327 … … 13509 13334 { 13510 13335 IEMOP_MNEMONIC2(RM, PMINUB, pminub, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13511 return FNIEMOP_CALL_1(iemOpCommonMmxSse _FullFull_To_Full, iemAImpl_pminub_u64);13336 return FNIEMOP_CALL_1(iemOpCommonMmxSseOpt_FullFull_To_Full, iemAImpl_pminub_u64); 13512 13337 } 13513 13338 … … 13517 13342 { 13518 13343 IEMOP_MNEMONIC2(RM, PMINUB, pminub, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13519 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pminub_u128);13344 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pminub_u128); 13520 13345 } 13521 13346 … … 13527 13352 { 13528 13353 IEMOP_MNEMONIC2(RM, PAND, pand, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13529 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pand_u64);13354 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pand_u64); 13530 13355 } 13531 13356 … … 13535 13360 { 13536 13361 IEMOP_MNEMONIC2(RM, PAND, pand, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13537 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pand_u128);13362 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pand_u128); 13538 13363 } 13539 13364 … … 13546 13371 { 13547 13372 IEMOP_MNEMONIC2(RM, PADDUSB, paddusb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13548 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_paddusb_u64);13373 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddusb_u64); 13549 13374 } 13550 13375 … … 13554 13379 { 13555 13380 IEMOP_MNEMONIC2(RM, PADDUSB, paddusb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13556 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_paddusb_u128);13381 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddusb_u128); 13557 13382 } 13558 13383 … … 13565 13390 { 13566 13391 IEMOP_MNEMONIC2(RM, PADDUSW, paddusw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13567 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_paddusw_u64);13392 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddusw_u64); 13568 13393 } 13569 13394 … … 13573 13398 { 13574 13399 IEMOP_MNEMONIC2(RM, PADDUSW, paddusw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13575 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_paddusw_u128);13400 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddusw_u128); 13576 13401 } 13577 13402 … … 13584 13409 { 13585 13410 IEMOP_MNEMONIC2(RM, PMAXUB, pmaxub, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13586 return FNIEMOP_CALL_1(iemOpCommonMmxSse _FullFull_To_Full, iemAImpl_pmaxub_u64);13411 return FNIEMOP_CALL_1(iemOpCommonMmxSseOpt_FullFull_To_Full, iemAImpl_pmaxub_u64); 13587 13412 } 13588 13413 … … 13592 13417 { 13593 13418 IEMOP_MNEMONIC2(RM, PMAXUB, pmaxub, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13594 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pmaxub_u128);13419 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmaxub_u128); 13595 13420 } 13596 13421 … … 13603 13428 { 13604 13429 IEMOP_MNEMONIC2(RM, PANDN, pandn, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13605 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pandn_u64);13430 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pandn_u64); 13606 13431 } 13607 13432 … … 13611 13436 { 13612 13437 IEMOP_MNEMONIC2(RM, PANDN, pandn, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13613 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pandn_u128);13438 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pandn_u128); 13614 13439 } 13615 13440 … … 13717 13542 { 13718 13543 IEMOP_MNEMONIC2(RM, PMULHW, pmulhw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13719 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pmulhw_u64);13544 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pmulhw_u64); 13720 13545 } 13721 13546 … … 13725 13550 { 13726 13551 IEMOP_MNEMONIC2(RM, PMULHW, pmulhw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13727 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pmulhw_u128);13552 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmulhw_u128); 13728 13553 } 13729 13554 … … 13860 13685 { 13861 13686 IEMOP_MNEMONIC2(RM, PSUBSB, psubsb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13862 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_psubsb_u64);13687 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubsb_u64); 13863 13688 } 13864 13689 … … 13868 13693 { 13869 13694 IEMOP_MNEMONIC2(RM, PSUBSB, psubsb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13870 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_psubsb_u128);13695 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubsb_u128); 13871 13696 } 13872 13697 … … 13879 13704 { 13880 13705 IEMOP_MNEMONIC2(RM, PSUBSW, psubsw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13881 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_psubsw_u64);13706 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubsw_u64); 13882 13707 } 13883 13708 … … 13887 13712 { 13888 13713 IEMOP_MNEMONIC2(RM, PSUBSW, psubsw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13889 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_psubsw_u128);13714 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubsw_u128); 13890 13715 } 13891 13716 … … 13899 13724 { 13900 13725 IEMOP_MNEMONIC2(RM, PMINSW, pminsw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13901 return FNIEMOP_CALL_1(iemOpCommonMmxSse _FullFull_To_Full, iemAImpl_pminsw_u64);13726 return FNIEMOP_CALL_1(iemOpCommonMmxSseOpt_FullFull_To_Full, iemAImpl_pminsw_u64); 13902 13727 } 13903 13728 … … 13907 13732 { 13908 13733 IEMOP_MNEMONIC2(RM, PMINSW, pminsw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13909 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pminsw_u128);13734 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pminsw_u128); 13910 13735 } 13911 13736 … … 13919 13744 { 13920 13745 IEMOP_MNEMONIC2(RM, POR, por, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13921 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_por_u64);13746 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_por_u64); 13922 13747 } 13923 13748 … … 13927 13752 { 13928 13753 IEMOP_MNEMONIC2(RM, POR, por, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13929 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_por_u128);13754 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_por_u128); 13930 13755 } 13931 13756 … … 13938 13763 { 13939 13764 IEMOP_MNEMONIC2(RM, PADDSB, paddsb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13940 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_paddsb_u64);13765 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddsb_u64); 13941 13766 } 13942 13767 … … 13946 13771 { 13947 13772 IEMOP_MNEMONIC2(RM, PADDSB, paddsb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13948 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_paddsb_u128);13773 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddsb_u128); 13949 13774 } 13950 13775 … … 13957 13782 { 13958 13783 IEMOP_MNEMONIC2(RM, PADDSW, paddsw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13959 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_paddsw_u64);13784 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddsw_u64); 13960 13785 } 13961 13786 … … 13965 13790 { 13966 13791 IEMOP_MNEMONIC2(RM, PADDSW, paddsw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13967 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_paddsw_u128);13792 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddsw_u128); 13968 13793 } 13969 13794 … … 13977 13802 { 13978 13803 IEMOP_MNEMONIC2(RM, PMAXSW, pmaxsw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13979 return FNIEMOP_CALL_1(iemOpCommonMmxSse _FullFull_To_Full, iemAImpl_pmaxsw_u64);13804 return FNIEMOP_CALL_1(iemOpCommonMmxSseOpt_FullFull_To_Full, iemAImpl_pmaxsw_u64); 13980 13805 } 13981 13806 … … 13985 13810 { 13986 13811 IEMOP_MNEMONIC2(RM, PMAXSW, pmaxsw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 13987 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pmaxsw_u128);13812 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmaxsw_u128); 13988 13813 } 13989 13814 … … 13997 13822 { 13998 13823 IEMOP_MNEMONIC2(RM, PXOR, pxor, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 13999 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pxor_u64);13824 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pxor_u64); 14000 13825 } 14001 13826 … … 14005 13830 { 14006 13831 IEMOP_MNEMONIC2(RM, PXOR, pxor, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 14007 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pxor_u128);13832 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pxor_u128); 14008 13833 } 14009 13834 … … 14107 13932 { 14108 13933 IEMOP_MNEMONIC2(RM, PMULUDQ, pmuludq, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, 0); 14109 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pmuludq_u64);13934 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pmuludq_u64); 14110 13935 } 14111 13936 … … 14115 13940 { 14116 13941 IEMOP_MNEMONIC2(RM, PMULUDQ, pmuludq, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, 0); 14117 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pmuludq_u128);13942 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmuludq_u128); 14118 13943 } 14119 13944 … … 14125 13950 { 14126 13951 IEMOP_MNEMONIC2(RM, PMADDWD, pmaddwd, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, 0); 14127 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pmaddwd_u64);13952 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pmaddwd_u64); 14128 13953 } 14129 13954 … … 14133 13958 { 14134 13959 IEMOP_MNEMONIC2(RM, PMADDWD, pmaddwd, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, 0); 14135 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_pmaddwd_u128);13960 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmaddwd_u128); 14136 13961 } 14137 13962 … … 14167 13992 { 14168 13993 IEMOP_MNEMONIC2(RM, PSUBB, psubb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 14169 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_psubb_u64);13994 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubb_u64); 14170 13995 } 14171 13996 … … 14175 14000 { 14176 14001 IEMOP_MNEMONIC2(RM, PSUBB, psubb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 14177 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_psubb_u128);14002 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubb_u128); 14178 14003 } 14179 14004 … … 14186 14011 { 14187 14012 IEMOP_MNEMONIC2(RM, PSUBW, psubw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 14188 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_psubw_u64);14013 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubw_u64); 14189 14014 } 14190 14015 … … 14194 14019 { 14195 14020 IEMOP_MNEMONIC2(RM, PSUBW, psubw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 14196 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_psubw_u128);14021 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubw_u128); 14197 14022 } 14198 14023 … … 14205 14030 { 14206 14031 IEMOP_MNEMONIC2(RM, PSUBD, psubd, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 14207 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_psubd_u64);14032 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubd_u64); 14208 14033 } 14209 14034 … … 14213 14038 { 14214 14039 IEMOP_MNEMONIC2(RM, PSUBD, psubd, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 14215 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_psubd_u128);14040 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubd_u128); 14216 14041 } 14217 14042 … … 14224 14049 { 14225 14050 IEMOP_MNEMONIC2(RM, PSUBQ, psubq, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 14226 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full_Sse2, iemAImpl_psubq_u64);14051 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full_Sse2, iemAImpl_psubq_u64); 14227 14052 } 14228 14053 … … 14232 14057 { 14233 14058 IEMOP_MNEMONIC2(RM, PSUBQ, psubq, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 14234 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_psubq_u128);14059 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubq_u128); 14235 14060 } 14236 14061 … … 14243 14068 { 14244 14069 IEMOP_MNEMONIC2(RM, PADDB, paddb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 14245 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_paddb_u64);14070 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddb_u64); 14246 14071 } 14247 14072 … … 14251 14076 { 14252 14077 IEMOP_MNEMONIC2(RM, PADDB, paddb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 14253 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_paddb_u128);14078 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddb_u128); 14254 14079 } 14255 14080 … … 14262 14087 { 14263 14088 IEMOP_MNEMONIC2(RM, PADDW, paddw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 14264 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_paddw_u64);14089 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddw_u64); 14265 14090 } 14266 14091 … … 14270 14095 { 14271 14096 IEMOP_MNEMONIC2(RM, PADDW, paddw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 14272 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_paddw_u128);14097 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddw_u128); 14273 14098 } 14274 14099 … … 14281 14106 { 14282 14107 IEMOP_MNEMONIC2(RM, PADDD, paddd, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES); 14283 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_paddd_u64);14108 return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddd_u64); 14284 14109 } 14285 14110 … … 14289 14114 { 14290 14115 IEMOP_MNEMONIC2(RM, PADDD, paddd, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 14291 return FNIEMOP_CALL_1(iemOpCommonSse2 _FullFull_To_Full, iemAImpl_paddd_u128);14116 return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddd_u128); 14292 14117 } 14293 14118
Note:
See TracChangeset
for help on using the changeset viewer.