Changeset 106864 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Nov 7, 2024 4:40:17 AM (2 months ago)
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac
r106620 r106864 2283 2283 EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, FSxBX, XMM8, 000h 2284 2284 2285 %ifnmacro vpextrb_w1b_EDX_XMM1 1 2286 ; special encoding to prove that VEX.W is effectively ignored everywhere and that VEX.B only matter in 64-bit code. 2287 %macro vpextrb_w1b_EDX_XMM1 1 2285 %ifnmacro vpextrb_w0b0_EDX_XMM1 1 2286 ; special encodings to prove that VEX.W is effectively ignored everywhere and that VEX.B only matters in 64-bit code. 2287 %macro vpextrb_w0b0_EDX_XMM1 1 2288 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R ; !VEX.B = REX.B = registers 8..15 2289 db X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) 2290 db 14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1 2291 %endmacro 2292 %macro vpextrb_w1b0_EDX_XMM1 1 2288 2293 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R 2289 2294 db X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) | X86_OP_VEX3_BYTE2_W … … 2293 2298 ; invalid coding where VEX.L=1. 2294 2299 %macro vpextrb_l1_EDX_XMM1 1 2295 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R | X86_OP_VEX3_BYTE1_B2300 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R 2296 2301 db X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) | X86_OP_VEX3_BYTE2_L 2297 2302 db 14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1 2298 2303 %endmacro 2299 2304 %endif 2300 EMIT_INSTR_PLUS_ICEBP vpextrb_w1b_EDX_XMM1, 0FFh 2305 EMIT_INSTR_PLUS_ICEBP vpextrb_w1b0_EDX_XMM1, 0FFh 2306 EMIT_INSTR_PLUS_ICEBP vpextrb_w0b0_EDX_XMM1, 0FFh 2301 2307 EMIT_INSTR_PLUS_ICEBP vpextrb_l1_EDX_XMM1, 0FFh 2302 2308 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r106781 r106864 9517 9517 * Test type #2 - GPR <- MM/XMM/YMM, no VVVV. 9518 9518 */ 9519 #define BS3_XCPT_ALWAYS 0x80 9520 #define BS3_XCPT_UD (X86_XCPT_UD | BS3_XCPT_ALWAYS) 9519 9521 9520 9522 typedef struct BS3CPUINSTR3_TEST2_VALUES_T 9521 9523 { 9522 RTUINT256U u Media;9523 uint64_t u Gpr;9524 RTUINT256U uSrc; 9525 uint64_t uDstOut; 9524 9526 } BS3CPUINSTR3_TEST2_VALUES_T; 9525 9527 … … 9527 9529 { 9528 9530 FPFNBS3FAR pfnWorker; 9529 uint8_t bA vxMisalignXcpt;9531 uint8_t bAltXcpt; /**< AVX misalignment exception, or always-expected exception. */ 9530 9532 uint8_t enmRm; 9531 9533 uint8_t enmType; 9532 9534 uint8_t cbGpr; 9533 uint8_t cBitsGprValMask; 9534 bool fInvalidEncoding; 9535 uint8_t fGprDst; 9536 uint8_t iGprReg; 9537 uint8_t iMediaReg; 9535 uint8_t iRegDst; 9536 uint8_t iRegSrc; 9538 9537 uint8_t cValues; 9539 9538 BS3CPUINSTR3_TEST2_VALUES_T const BS3_FAR *paValues; … … 9565 9564 PBS3EXTCTX pExtCtxOut; 9566 9565 PBS3EXTCTX pExtCtx = bs3CpuInstr3AllocExtCtxs(&pExtCtxOut); 9566 BS3SETREGCTX pSetRegCtx; 9567 9567 if (!pExtCtx) 9568 9568 return 0; … … 9578 9578 Bs3RegCtxSaveForMode(&Ctx, bMode, 1024); 9579 9579 bs3CpuInstr3SetupSseAndAvx(&Ctx, pExtCtx); 9580 9581 pSetRegCtx.pExtCtx = pExtCtx; 9582 pSetRegCtx.pCtx = &Ctx; 9583 pSetRegCtx.bMode = bMode; 9580 9584 9581 9585 /* … … 9604 9608 uint8_t const cbInstr = ((uint8_t const BS3_FAR *)(uintptr_t)paTests[iTest].pfnWorker)[-1]; 9605 9609 unsigned const cValues = paTests[iTest].cValues; 9606 bool const fGprDst = paTests[iTest].fGprDst == true;9607 bool const fMmBoth = paTests[iTest].fGprDst == 2;9608 9610 bool const fMmxInstr = paTests[iTest].enmType < T_SSE; 9609 9611 bool const fSseInstr = paTests[iTest].enmType >= T_SSE && paTests[iTest].enmType < T_AVX_128; 9610 9612 bool const fAvxInstr = paTests[iTest].enmType >= T_AVX_128; 9613 bool const fMemOp = paTests[iTest].enmRm >= RM_MEM; 9611 9614 uint8_t const cbOperand = paTests[iTest].enmType < T_128BITS ? 64/8 9612 9615 : paTests[iTest].enmType < T_256BITS ? 128/8 : 256/8; … … 9615 9618 PRTUINT256U puMemOp = bs3CpuInstr3BufForOperand(pbBuf, cbBuf, cbMemOp, cbAlign, &paConfigs[iCfg], fPf); 9616 9619 PRTUINT256U puMemOpAlias = (PRTUINT256U)&g_pbBufAlias[(uintptr_t)puMemOp - (uintptr_t)pbBuf]; 9617 uint8_t bXcptExpect = !g_afTypeSupports[paTests[iTest].enmType]9618 || paTests[iTest].fInvalidEncoding ? X86_XCPT_UD9620 uint8_t bXcptExpect = !g_afTypeSupports[paTests[iTest].enmType] ? X86_XCPT_UD 9621 : paTests[iTest].bAltXcpt & BS3_XCPT_ALWAYS && paTests[iTest].bAltXcpt != 255 ? paTests[iTest].bAltXcpt & ~BS3_XCPT_ALWAYS 9619 9622 : fMmxInstr ? paConfigs[iCfg].bXcptMmx 9620 9623 : fSseInstr ? paConfigs[iCfg].bXcptSse 9621 9624 : BS3_MODE_IS_RM_OR_V86(bMode) ? X86_XCPT_UD : paConfigs[iCfg].bXcptAvx; 9622 uint64_t const fGprValMask = paTests[iTest].cBitsGprValMask == 64 ? UINT64_MAX9623 : RT_BIT_64(paTests[iTest].cBitsGprValMask) - 1;9624 9625 uint16_t idTestStep = bRing * 10000 + iCfg * 100 + iTest * 10; 9625 9626 unsigned cRecompRuns = 0; … … 9631 9632 if ((paTests[iTest].enmRm == RM_REG || paTests[iTest].enmRm == RM_MEM8) && (!paConfigs[iCfg].fAligned || paConfigs[iCfg].fAlignCheck || fPf)) 9632 9633 continue; 9634 9635 BS3_ASSERT(!fMemOp || BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst) || BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc)); 9636 BS3_ASSERT(!(BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst) && BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc))); 9633 9637 9634 9638 /* #AC is only raised in ring-3.: */ … … 9638 9642 bXcptExpect = X86_XCPT_DB; 9639 9643 else if (fAvxInstr) 9640 bXcptExpect = paTests[iTest].bA vxMisalignXcpt; /* they generally don't raise #AC */9644 bXcptExpect = paTests[iTest].bAltXcpt; /* they generally don't raise #AC */ 9641 9645 } 9642 9646 … … 9655 9659 uint16_t uSavedFtw = 0xff; 9656 9660 RTUINT256U uMemOpExpect; 9661 RTUINT256U uDstVal = RTUINT256_INIT_C(0, 0, 0, 0); 9657 9662 9658 9663 if (BS3_SKIPIT(bRing, iCfg, iTest, iVal, 0)) continue; … … 9661 9666 * Set up the context and some expectations. 9662 9667 */ 9663 if (fMmBoth) 9668 Bs3MemCpy(&uDstVal, &paValues[iVal].uDstOut, paTests[iTest].cbGpr); 9669 9670 /* dest */ 9671 if (BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst)) 9664 9672 { 9665 if (fMmxInstr) 9666 Bs3ExtCtxSetMm(pExtCtx, paTests[iTest].iGprReg, paValues[iVal].uMedia.QWords.qw0, BS3EXTCTXTOPMM_ZERO); 9667 else if (fSseInstr) 9668 Bs3ExtCtxSetXmm(pExtCtx, paTests[iTest].iGprReg, &paValues[iVal].uMedia.DQWords.dqw0); 9673 Bs3MemSet(puMemOpAlias, 0xcc, cbMemOp); 9674 if (bXcptExpect == X86_XCPT_DB) 9675 uMemOpExpect = uDstVal; 9669 9676 else 9670 Bs3 ExtCtxSetYmm(pExtCtx, paTests[iTest].iGprReg, &paValues[iVal].uMedia, 32);9677 Bs3MemSet(&uMemOpExpect, 0xcc, sizeof(uMemOpExpect)); 9671 9678 } 9672 else if (fGprDst) 9679 9680 /* source */ 9681 if (BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc)) 9673 9682 { 9674 /* dest - gpr/mem */ 9675 if (paTests[iTest].iGprReg == UINT8_MAX) 9676 { 9677 BS3_ASSERT(paTests[iTest].enmRm >= RM_MEM); 9678 Bs3MemSet(puMemOpAlias, 0xcc, cbMemOp); 9679 if (bXcptExpect != X86_XCPT_DB) 9680 Bs3MemSet(&uMemOpExpect, 0xcc, sizeof(uMemOpExpect)); 9681 else 9682 { 9683 Bs3MemSet(&uMemOpExpect, 0xaa, sizeof(uMemOpExpect)); 9684 switch (paTests[iTest].cbGpr) 9685 { 9686 case 1: uMemOpExpect.au8[0] = (uint8_t) (paValues[iVal].uGpr & fGprValMask); break; 9687 case 2: uMemOpExpect.au16[0] = (uint16_t)(paValues[iVal].uGpr & fGprValMask); break; 9688 case 4: uMemOpExpect.au32[0] = (uint32_t)(paValues[iVal].uGpr & fGprValMask); break; 9689 case 8: uMemOpExpect.au64[0] = (paValues[iVal].uGpr & fGprValMask); break; 9690 default: BS3_ASSERT(0); 9691 } 9692 } 9693 } 9694 else 9695 Bs3RegCtxSetGpr(&Ctx, paTests[iTest].iGprReg, UINT64_C(0xcccccccccccccccc), 9696 BS3_MODE_IS_64BIT_CODE(bMode) ? 8 : 4); /* we only restore 63:32 when bMode==LM64 */ 9697 9698 /* source - media/mem */ 9699 if (paTests[iTest].iMediaReg == UINT8_MAX) 9700 { 9701 BS3_ASSERT(paTests[iTest].enmRm >= RM_MEM); 9702 BS3_ASSERT(paTests[iTest].iGprReg != UINT8_MAX); 9703 Bs3MemCpy(puMemOpAlias, &paValues[iVal].uMedia, cbMemOp); 9704 uMemOpExpect = paValues[iVal].uMedia; 9705 } 9706 else if (fMmxInstr) 9707 Bs3ExtCtxSetMm(pExtCtx, paTests[iTest].iMediaReg, paValues[iVal].uMedia.QWords.qw0, BS3EXTCTXTOPMM_ZERO); 9708 else if (fSseInstr) 9709 Bs3ExtCtxSetXmm(pExtCtx, paTests[iTest].iMediaReg, &paValues[iVal].uMedia.DQWords.dqw0); 9710 else 9711 Bs3ExtCtxSetYmm(pExtCtx, paTests[iTest].iMediaReg, &paValues[iVal].uMedia, 32); 9683 Bs3MemCpy(puMemOpAlias, &paValues[iVal].uSrc, cbMemOp); 9684 uMemOpExpect = paValues[iVal].uSrc; 9712 9685 } 9713 9686 else 9714 { 9715 /* dest - media */ 9716 if (paTests[iTest].iMediaReg == UINT8_MAX) 9717 { 9718 BS3_ASSERT(paTests[iTest].enmRm >= RM_MEM); 9719 Bs3MemSet(puMemOpAlias, 0xcc, cbMemOp); 9720 if (bXcptExpect == X86_XCPT_DB) 9721 uMemOpExpect = paValues[iVal].uMedia; 9722 else 9723 Bs3MemSet(&uMemOpExpect, 0xcc, sizeof(uMemOpExpect)); 9724 } 9725 9726 /* source - gpr/mem */ 9727 if (paTests[iTest].iGprReg == UINT8_MAX) 9728 { 9729 BS3_ASSERT(paTests[iTest].enmRm >= RM_MEM); 9730 Bs3MemSet(&uMemOpExpect, 0xcc, sizeof(uMemOpExpect)); 9731 if (bXcptExpect == X86_XCPT_DB) 9732 switch (paTests[iTest].cbGpr) 9733 { 9734 case 1: uMemOpExpect.au8[0] = (uint8_t) (paValues[iVal].uGpr & fGprValMask); break; 9735 case 2: uMemOpExpect.au16[0] = (uint16_t)(paValues[iVal].uGpr & fGprValMask); break; 9736 case 4: uMemOpExpect.au32[0] = (uint32_t)(paValues[iVal].uGpr & fGprValMask); break; 9737 case 8: uMemOpExpect.au64[0] = (paValues[iVal].uGpr & fGprValMask); break; 9738 default: BS3_ASSERT(0); 9739 } 9740 Bs3MemCpy(puMemOpAlias, &uMemOpExpect, cbMemOp); 9741 } 9742 else 9743 Bs3RegCtxSetGpr(&Ctx, paTests[iTest].iGprReg, paValues[iVal].uGpr & fGprValMask, paTests[iTest].cbGpr); 9744 } 9687 Bs3ExtCtxSetReg(&pSetRegCtx, paTests[iTest].iRegSrc, &paValues[iVal].uSrc); 9745 9688 9746 9689 /* Memory pointer. */ 9747 if (paTests[iTest].enmRm >= RM_MEM) 9748 { 9749 BS3_ASSERT(paTests[iTest].iGprReg == UINT8_MAX || paTests[iTest].iMediaReg == UINT8_MAX); 9690 if (fMemOp) 9750 9691 Bs3RegCtxSetGrpSegFromCurPtr(&Ctx, &Ctx.rbx, &Ctx.fs, puMemOp); 9751 }9752 9692 9753 9693 /* … … 9767 9707 Bs3ExtCtxSetAbridgedFtw(pExtCtx, 0xff); 9768 9708 } 9769 if (fMmBoth && bXcptExpect == X86_XCPT_DB) 9770 { 9771 RTUINT256U uDstVal = RTUINT256_INIT_C(0, 0, 0, 0); 9772 uDstVal.au64[0] = paValues[iVal].uGpr; 9773 if (fMmxInstr) 9774 Bs3ExtCtxSetMm(pExtCtx, paTests[iTest].iMediaReg, paValues[iVal].uGpr, BS3EXTCTXTOPMM_SET); 9775 else if (fSseInstr) 9776 Bs3ExtCtxSetXmm(pExtCtx, paTests[iTest].iMediaReg, &uDstVal.DQWords.dqw0); 9777 else 9778 Bs3ExtCtxSetYmm(pExtCtx, paTests[iTest].iMediaReg, &uDstVal, 32); 9779 } 9780 else if (!fGprDst && bXcptExpect == X86_XCPT_DB && paTests[iTest].iMediaReg != UINT8_MAX) 9781 { 9782 if (fMmxInstr) 9783 Bs3ExtCtxSetMm(pExtCtx, paTests[iTest].iMediaReg, paValues[iVal].uMedia.QWords.qw0, BS3EXTCTXTOPMM_SET); 9784 else if (fSseInstr) 9785 Bs3ExtCtxSetXmm(pExtCtx, paTests[iTest].iMediaReg, &paValues[iVal].uMedia.DQWords.dqw0); 9786 else 9787 Bs3ExtCtxSetYmm(pExtCtx, paTests[iTest].iMediaReg, &paValues[iVal].uMedia, 32); 9788 } 9709 9710 if (bXcptExpect == X86_XCPT_DB && !BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst)) 9711 Bs3ExtCtxSetReg(&pSetRegCtx, paTests[iTest].iRegDst, &uDstVal); 9712 9789 9713 Bs3TestCheckExtCtx(pExtCtxOut, pExtCtx, 0 /*fFlags*/, pszMode, idTestStep); 9790 9714 … … 9792 9716 Bs3TestFailedF("Expected bXcpt = %#x, got %#x", bXcptExpect, TrapFrame.bXcpt); 9793 9717 9794 if (fGprDst && bXcptExpect == X86_XCPT_DB && paTests[iTest].iGprReg != UINT8_MAX)9795 Bs3RegCtxSetGpr(&Ctx, paTests[iTest].iGprReg, paValues[iVal].uGpr & fGprValMask,9796 paTests[iTest].cbGpr >= 4 ? 8 : paTests[iTest].cbGpr);9797 9718 /* Kludge! Looks like EFLAGS.AC is cleared when raising #GP in real mode on the 10980XE. WEIRD! */ 9798 9719 if (bMode == BS3_MODE_RM && (Ctx.rflags.u32 & X86_EFL_AC)) … … 9868 9789 static BS3CPUINSTR3_TEST2_T const s_aTests16[] = 9869 9790 { 9870 { bs3CpuInstr3_pmovmskb_EAX_MM2_icebp_c16, 255, RM_REG, T_AXMMX_OR_SSE, 4, 8, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9871 { bs3CpuInstr3_pmovmskb_EAX_qword_FSxBX_icebp_c16, 255, RM_MEM, T_AXMMX_OR_SSE, 4, 8, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9872 { bs3CpuInstr3_pmovmskb_EAX_XMM2_icebp_c16, 255, RM_REG, T_SSE2, 4, 16, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9873 { bs3CpuInstr3_pmovmskb_EAX_dqword_FSxBX_icebp_c16, 255, RM_MEM, T_SSE2, 4, 16, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9874 { bs3CpuInstr3_vpmovmskb_EAX_XMM2_icebp_c16, 255, RM_REG, T_AVX_128, 4, 16, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9875 { bs3CpuInstr3_vpmovmskb_EAX_dqword_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_128, 4, 16, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9876 { bs3CpuInstr3_vpmovmskb_EAX_YMM2_icebp_c16, 255, RM_REG, T_AVX2_256, 4, 32, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9877 { bs3CpuInstr3_vpmovmskb_EAX_qqword_FSxBX_icebp_c16, 255, RM_MEM, T_AVX2_256, 4, 32, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9791 { bs3CpuInstr3_pmovmskb_EAX_MM2_icebp_c16, 255, RM_REG, T_AXMMX_OR_SSE, 4, AL, MM2, RT_ELEMENTS(s_aValues), s_aValues }, 9792 { bs3CpuInstr3_pmovmskb_EAX_qword_FSxBX_icebp_c16, BS3_XCPT_UD, RM_MEM, T_AXMMX_OR_SSE, 4, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9793 { bs3CpuInstr3_pmovmskb_EAX_XMM2_icebp_c16, 255, RM_REG, T_SSE2, 4, AX, XMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9794 { bs3CpuInstr3_pmovmskb_EAX_dqword_FSxBX_icebp_c16, BS3_XCPT_UD, RM_MEM, T_SSE2, 4, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9795 { bs3CpuInstr3_vpmovmskb_EAX_XMM2_icebp_c16, 255, RM_REG, T_AVX_128, 4, AX, XMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9796 { bs3CpuInstr3_vpmovmskb_EAX_dqword_FSxBX_icebp_c16, BS3_XCPT_UD, RM_MEM, T_AVX_128, 4, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9797 { bs3CpuInstr3_vpmovmskb_EAX_YMM2_icebp_c16, 255, RM_REG, T_AVX2_256, 4, EAX, YMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9798 { bs3CpuInstr3_vpmovmskb_EAX_qqword_FSxBX_icebp_c16, BS3_XCPT_UD, RM_MEM, T_AVX2_256, 4, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9878 9799 }; 9879 9800 static BS3CPUINSTR3_TEST2_T const s_aTests32[] = 9880 9801 { 9881 { bs3CpuInstr3_pmovmskb_EAX_MM2_icebp_c32, 255, RM_REG, T_AXMMX_OR_SSE, 4, 8, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9882 { bs3CpuInstr3_pmovmskb_EAX_qword_FSxBX_icebp_c32, 255, RM_MEM, T_AXMMX_OR_SSE, 4, 8, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9883 { bs3CpuInstr3_pmovmskb_EAX_XMM2_icebp_c32, 255, RM_REG, T_SSE2, 4, 16, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9884 { bs3CpuInstr3_pmovmskb_EAX_dqword_FSxBX_icebp_c32, 255, RM_MEM, T_SSE2, 4, 16, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9885 { bs3CpuInstr3_vpmovmskb_EAX_XMM2_icebp_c32, 255, RM_REG, T_AVX_128, 4, 16, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9886 { bs3CpuInstr3_vpmovmskb_EAX_dqword_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_128, 4, 16, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9887 { bs3CpuInstr3_vpmovmskb_EAX_YMM2_icebp_c32, 255, RM_REG, T_AVX2_256, 4, 32, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9888 { bs3CpuInstr3_vpmovmskb_EAX_qqword_FSxBX_icebp_c32, 255, RM_MEM, T_AVX2_256, 4, 32, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9802 { bs3CpuInstr3_pmovmskb_EAX_MM2_icebp_c32, 255, RM_REG, T_AXMMX_OR_SSE, 4, AL, MM2, RT_ELEMENTS(s_aValues), s_aValues }, 9803 { bs3CpuInstr3_pmovmskb_EAX_qword_FSxBX_icebp_c32, BS3_XCPT_UD, RM_MEM, T_AXMMX_OR_SSE, 4, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9804 { bs3CpuInstr3_pmovmskb_EAX_XMM2_icebp_c32, 255, RM_REG, T_SSE2, 4, AX, XMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9805 { bs3CpuInstr3_pmovmskb_EAX_dqword_FSxBX_icebp_c32, BS3_XCPT_UD, RM_MEM, T_SSE2, 4, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9806 { bs3CpuInstr3_vpmovmskb_EAX_XMM2_icebp_c32, 255, RM_REG, T_AVX_128, 4, AX, XMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9807 { bs3CpuInstr3_vpmovmskb_EAX_dqword_FSxBX_icebp_c32, BS3_XCPT_UD, RM_MEM, T_AVX_128, 4, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9808 { bs3CpuInstr3_vpmovmskb_EAX_YMM2_icebp_c32, 255, RM_REG, T_AVX2_256, 4, EAX, YMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9809 { bs3CpuInstr3_vpmovmskb_EAX_qqword_FSxBX_icebp_c32, BS3_XCPT_UD, RM_MEM, T_AVX2_256, 4, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9889 9810 }; 9890 9811 static BS3CPUINSTR3_TEST2_T const s_aTests64[] = 9891 9812 { 9892 { bs3CpuInstr3_pmovmskb_EAX_MM2_icebp_c64, 255, RM_REG, T_AXMMX_OR_SSE, 8, 8, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9893 { bs3CpuInstr3_pmovmskb_EAX_qword_FSxBX_icebp_c64, 255, RM_MEM, T_AXMMX_OR_SSE, 8, 8, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9894 { bs3CpuInstr3_pmovmskb_EAX_XMM2_icebp_c64, 255, RM_REG, T_SSE2, 8, 16, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9895 { bs3CpuInstr3_pmovmskb_EAX_dqword_FSxBX_icebp_c64, 255, RM_MEM, T_SSE2, 8, 16, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9896 { bs3CpuInstr3_vpmovmskb_EAX_XMM2_icebp_c64, 255, RM_REG, T_AVX_128, 8, 16, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9897 { bs3CpuInstr3_vpmovmskb_EAX_dqword_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_128, 8, 16, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9898 { bs3CpuInstr3_vpmovmskb_EAX_YMM2_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 32, false, true, 0, 2,RT_ELEMENTS(s_aValues), s_aValues },9899 { bs3CpuInstr3_vpmovmskb_EAX_qqword_FSxBX_icebp_c64, 255, RM_MEM, T_AVX2_256, 8, 32, true, true, 0, 255, RT_ELEMENTS(s_aValues), s_aValues },9900 { bs3CpuInstr3_vpmovmskb_RAX_YMM9_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 32, false, true, 0, 9,RT_ELEMENTS(s_aValues), s_aValues },9813 { bs3CpuInstr3_pmovmskb_EAX_MM2_icebp_c64, 255, RM_REG, T_AXMMX_OR_SSE, 8, AL, MM2, RT_ELEMENTS(s_aValues), s_aValues }, 9814 { bs3CpuInstr3_pmovmskb_EAX_qword_FSxBX_icebp_c64, BS3_XCPT_UD, RM_MEM, T_AXMMX_OR_SSE, 8, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9815 { bs3CpuInstr3_pmovmskb_EAX_XMM2_icebp_c64, 255, RM_REG, T_SSE2, 8, AX, XMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9816 { bs3CpuInstr3_pmovmskb_EAX_dqword_FSxBX_icebp_c64, BS3_XCPT_UD, RM_MEM, T_SSE2, 8, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9817 { bs3CpuInstr3_vpmovmskb_EAX_XMM2_icebp_c64, 255, RM_REG, T_AVX_128, 8, AX, XMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9818 { bs3CpuInstr3_vpmovmskb_EAX_dqword_FSxBX_icebp_c64, BS3_XCPT_UD, RM_MEM, T_AVX_128, 8, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9819 { bs3CpuInstr3_vpmovmskb_EAX_YMM2_icebp_c64, 255, RM_REG, T_AVX2_256, 8, EAX, YMM2, RT_ELEMENTS(s_aValues), s_aValues }, 9820 { bs3CpuInstr3_vpmovmskb_EAX_qqword_FSxBX_icebp_c64, BS3_XCPT_UD, RM_MEM, T_AVX2_256, 8, EAX, FSxBX, RT_ELEMENTS(s_aValues), s_aValues }, 9821 { bs3CpuInstr3_vpmovmskb_RAX_YMM9_icebp_c64, 255, RM_REG, T_AVX2_256, 8, RAX, YMM9, RT_ELEMENTS(s_aValues), s_aValues }, 9901 9822 }; 9902 9823 static BS3CPUINSTR3_TEST2_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST2_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); … … 9942 9863 /* Note! Seems the 256-bit variants doesn't generate \#ACs on a 10980XE. WEIRD! */ 9943 9864 /* Note: 'VEX.W!' entries: 'vmovq' in non-long modes ignores VEX.W1, acts as VEX.W0 'vmovd' */ 9944 /* Note: 'MMx2' entries: test type #2 worker now supports Media, Media operands (fGprDst == 2) */9945 9865 static BS3CPUINSTR3_TEST2_T const s_aTests16[] = 9946 9866 { 9947 { bs3CpuInstr3_movd_MM1_EDX_icebp_c16, 255, RM_REG, T_MMX, 4, 32, false, false, 2, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9948 { bs3CpuInstr3_movd_MM1_FSxBX_icebp_c16, 255, RM_MEM32, T_MMX, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9949 { bs3CpuInstr3_movd_EAX_MM1_icebp_c16, 255, RM_REG, T_MMX, 4, 32, false, true, 0, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9950 { bs3CpuInstr3_movd_FSxBX_MM1_icebp_c16, 255, RM_MEM32, T_MMX, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9951 9952 { bs3CpuInstr3_movd_XMM1_EAX_icebp_c16, 255, RM_REG, T_SSE2, 4, 32, false, false, 0, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9953 { bs3CpuInstr3_movd_XMM1_FSxBX_icebp_c16, 255, RM_MEM32, T_SSE2, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9954 { bs3CpuInstr3_movd_EAX_XMM1_icebp_c16, 255, RM_REG, T_SSE2, 4, 32, false, true, 0, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9955 { bs3CpuInstr3_movd_FSxBX_XMM1_icebp_c16, 255, RM_MEM32, T_SSE2, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9956 9957 { bs3CpuInstr3_vmovd_XMM1_EAX_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, false, 0, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9958 { bs3CpuInstr3_vmovd_XMM1_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9959 { bs3CpuInstr3_vmovd_EDX_XMM1_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9960 { bs3CpuInstr3_vmovd_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9961 9962 { bs3CpuInstr3_movq_MM1_FSxBX_icebp_c16, 255, RM_MEM64, T_MMX, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },9963 { bs3CpuInstr3_movq_FSxBX_MM1_icebp_c16, 255, RM_MEM64, T_MMX, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9964 { bs3CpuInstr3_movq_MM1_MM2_icebp_c16, 255, RM_REG, T_MMX, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */9965 { bs3CpuInstr3_movq_XMM1_FSxBX_icebp_c16, 255, RM_MEM64, T_SSE2, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },9966 { bs3CpuInstr3_movq_FSxBX_XMM1_icebp_c16, 255, RM_MEM64, T_SSE2, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9967 { bs3CpuInstr3_movq_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE2, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */9968 9969 { bs3CpuInstr3_vmovq_XMM1_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },9970 { bs3CpuInstr3_06e_vmovq_XMM1_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, /* VEX.W! */9971 { bs3CpuInstr3_vmovq_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9972 { bs3CpuInstr3_07e_vmovq_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },/* VEX.W! */9973 { bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c16, 255, RM_REG, T_AVX_128, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */9867 { bs3CpuInstr3_movd_MM1_EDX_icebp_c16, 255, RM_REG, T_MMX, 4, MM1, EDX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9868 { bs3CpuInstr3_movd_MM1_FSxBX_icebp_c16, 255, RM_MEM32, T_MMX, 4, MM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9869 { bs3CpuInstr3_movd_EAX_MM1_icebp_c16, 255, RM_REG, T_MMX, 4, EAX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9870 { bs3CpuInstr3_movd_FSxBX_MM1_icebp_c16, 255, RM_MEM32, T_MMX, 4, FSxBX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9871 9872 { bs3CpuInstr3_movd_XMM1_EAX_icebp_c16, 255, RM_REG, T_SSE2, 4, XMM1, EAX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9873 { bs3CpuInstr3_movd_XMM1_FSxBX_icebp_c16, 255, RM_MEM32, T_SSE2, 4, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9874 { bs3CpuInstr3_movd_EAX_XMM1_icebp_c16, 255, RM_REG, T_SSE2, 4, EAX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9875 { bs3CpuInstr3_movd_FSxBX_XMM1_icebp_c16, 255, RM_MEM32, T_SSE2, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9876 9877 { bs3CpuInstr3_vmovd_XMM1_EAX_icebp_c16, 255, RM_REG, T_AVX_128, 4, XMM1, EAX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9878 { bs3CpuInstr3_vmovd_XMM1_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9879 { bs3CpuInstr3_vmovd_EDX_XMM1_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9880 { bs3CpuInstr3_vmovd_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9881 9882 { bs3CpuInstr3_movq_MM1_FSxBX_icebp_c16, 255, RM_MEM64, T_MMX, 8, MM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9883 { bs3CpuInstr3_movq_FSxBX_MM1_icebp_c16, 255, RM_MEM64, T_MMX, 8, FSxBX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9884 { bs3CpuInstr3_movq_MM1_MM2_icebp_c16, 255, RM_REG, T_MMX, 8, MM1, MM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9885 { bs3CpuInstr3_movq_XMM1_FSxBX_icebp_c16, 255, RM_MEM64, T_SSE2, 8, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9886 { bs3CpuInstr3_movq_FSxBX_XMM1_icebp_c16, 255, RM_MEM64, T_SSE2, 8, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9887 { bs3CpuInstr3_movq_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE2, 8, XMM1, XMM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9888 9889 { bs3CpuInstr3_vmovq_XMM1_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9890 { bs3CpuInstr3_06e_vmovq_XMM1_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, /* VEX.W! */ 9891 { bs3CpuInstr3_vmovq_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9892 { bs3CpuInstr3_07e_vmovq_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* VEX.W! */ 9893 { bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c16, 255, RM_REG, T_AVX_128, 8, XMM1, XMM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9974 9894 }; 9975 9895 static BS3CPUINSTR3_TEST2_T const s_aTests32[] = 9976 9896 { 9977 { bs3CpuInstr3_movd_MM1_EDX_icebp_c32, 255, RM_REG, T_MMX, 4, 32, false, false, 2, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9978 { bs3CpuInstr3_movd_MM1_FSxBX_icebp_c32, 255, RM_MEM32, T_MMX, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9979 { bs3CpuInstr3_movd_EAX_MM1_icebp_c32, 255, RM_REG, T_MMX, 4, 32, false, true, 0, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9980 { bs3CpuInstr3_movd_FSxBX_MM1_icebp_c32, 255, RM_MEM32, T_MMX, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9981 9982 { bs3CpuInstr3_movd_XMM1_EAX_icebp_c32, 255, RM_REG, T_SSE2, 4, 32, false, false, 0, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9983 { bs3CpuInstr3_movd_XMM1_FSxBX_icebp_c32, 255, RM_MEM32, T_SSE2, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9984 { bs3CpuInstr3_movd_EAX_XMM1_icebp_c32, 255, RM_REG, T_SSE2, 4, 32, false, true, 0, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9985 { bs3CpuInstr3_movd_FSxBX_XMM1_icebp_c32, 255, RM_MEM32, T_SSE2, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9986 9987 { bs3CpuInstr3_vmovd_XMM1_EAX_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, false, 0, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9988 { bs3CpuInstr3_vmovd_XMM1_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },9989 { bs3CpuInstr3_vmovd_EDX_XMM1_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9990 { bs3CpuInstr3_vmovd_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9991 9992 { bs3CpuInstr3_movq_MM1_FSxBX_icebp_c32, 255, RM_MEM64, T_MMX, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },9993 { bs3CpuInstr3_movq_FSxBX_MM1_icebp_c32, 255, RM_MEM64, T_MMX, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9994 { bs3CpuInstr3_movq_MM1_MM2_icebp_c32, 255, RM_REG, T_MMX, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */9995 9996 { bs3CpuInstr3_movq_XMM1_FSxBX_icebp_c32, 255, RM_MEM64, T_SSE2, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },9997 { bs3CpuInstr3_movq_FSxBX_XMM1_icebp_c32, 255, RM_MEM64, T_SSE2, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},9998 { bs3CpuInstr3_movq_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE2, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */9999 10000 { bs3CpuInstr3_vmovq_XMM1_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10001 { bs3CpuInstr3_06e_vmovq_XMM1_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, /* VEX.W! */10002 { bs3CpuInstr3_vmovq_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10003 { bs3CpuInstr3_07e_vmovq_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },/* VEX.W! */10004 { bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c32, 255, RM_REG, T_AVX_128, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */9897 { bs3CpuInstr3_movd_MM1_EDX_icebp_c32, 255, RM_REG, T_MMX, 4, MM1, EDX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9898 { bs3CpuInstr3_movd_MM1_FSxBX_icebp_c32, 255, RM_MEM32, T_MMX, 4, MM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9899 { bs3CpuInstr3_movd_EAX_MM1_icebp_c32, 255, RM_REG, T_MMX, 4, EAX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9900 { bs3CpuInstr3_movd_FSxBX_MM1_icebp_c32, 255, RM_MEM32, T_MMX, 4, FSxBX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9901 9902 { bs3CpuInstr3_movd_XMM1_EAX_icebp_c32, 255, RM_REG, T_SSE2, 4, XMM1, EAX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9903 { bs3CpuInstr3_movd_XMM1_FSxBX_icebp_c32, 255, RM_MEM32, T_SSE2, 4, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9904 { bs3CpuInstr3_movd_EAX_XMM1_icebp_c32, 255, RM_REG, T_SSE2, 4, EAX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9905 { bs3CpuInstr3_movd_FSxBX_XMM1_icebp_c32, 255, RM_MEM32, T_SSE2, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9906 9907 { bs3CpuInstr3_vmovd_XMM1_EAX_icebp_c32, 255, RM_REG, T_AVX_128, 4, XMM1, EAX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9908 { bs3CpuInstr3_vmovd_XMM1_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9909 { bs3CpuInstr3_vmovd_EDX_XMM1_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9910 { bs3CpuInstr3_vmovd_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9911 9912 { bs3CpuInstr3_movq_MM1_FSxBX_icebp_c32, 255, RM_MEM64, T_MMX, 8, MM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9913 { bs3CpuInstr3_movq_FSxBX_MM1_icebp_c32, 255, RM_MEM64, T_MMX, 8, FSxBX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9914 { bs3CpuInstr3_movq_MM1_MM2_icebp_c32, 255, RM_REG, T_MMX, 8, MM1, MM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9915 9916 { bs3CpuInstr3_movq_XMM1_FSxBX_icebp_c32, 255, RM_MEM64, T_SSE2, 8, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9917 { bs3CpuInstr3_movq_FSxBX_XMM1_icebp_c32, 255, RM_MEM64, T_SSE2, 8, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9918 { bs3CpuInstr3_movq_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE2, 8, XMM1, XMM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9919 9920 { bs3CpuInstr3_vmovq_XMM1_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9921 { bs3CpuInstr3_06e_vmovq_XMM1_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, /* VEX.W! */ 9922 { bs3CpuInstr3_vmovq_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9923 { bs3CpuInstr3_07e_vmovq_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* VEX.W! */ 9924 { bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c32, 255, RM_REG, T_AVX_128, 8, XMM1, XMM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 10005 9925 }; 10006 9926 static BS3CPUINSTR3_TEST2_T const s_aTests64[] = 10007 9927 { 10008 { bs3CpuInstr3_movd_MM1_EDX_icebp_c64, 255, RM_REG, T_MMX, 4, 32, false, false, 2, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10009 { bs3CpuInstr3_movd_MM1_R9D_icebp_c64, 255, RM_REG, T_MMX, 4, 32, false, false, 9, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10010 { bs3CpuInstr3_movd_MM1_FSxBX_icebp_c64, 255, RM_MEM32, T_MMX, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10011 { bs3CpuInstr3_movd_EAX_MM1_icebp_c64, 255, RM_REG, T_MMX, 4, 32, false, true, 0, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10012 { bs3CpuInstr3_movd_R10D_MM0_icebp_c64, 255, RM_REG, T_MMX, 4, 32, false, true, 10, 0, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10013 { bs3CpuInstr3_movd_FSxBX_MM1_icebp_c64, 255, RM_MEM32, T_MMX, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10014 10015 { bs3CpuInstr3_movd_XMM1_EAX_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, false, 0, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10016 { bs3CpuInstr3_movd_XMM9_R8D_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, false, 8, 9,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10017 { bs3CpuInstr3_movd_XMM1_FSxBX_icebp_c64, 255, RM_MEM32, T_SSE2, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10018 { bs3CpuInstr3_movd_XMM9_FSxBX_icebp_c64, 255, RM_MEM32, T_SSE2, 4, 32, false, false, 255, 9, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10019 { bs3CpuInstr3_movd_EAX_XMM1_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, true, 0, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10020 { bs3CpuInstr3_movd_R8D_XMM9_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, true, 8, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10021 { bs3CpuInstr3_movd_FSxBX_XMM1_icebp_c64, 255, RM_MEM32, T_SSE2, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10022 { bs3CpuInstr3_movd_FSxBX_XMM9_icebp_c64, 255, RM_MEM32, T_SSE2, 4, 32, false, true, 255, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10023 10024 { bs3CpuInstr3_vmovd_XMM1_EAX_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, false, 0, 1,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10025 { bs3CpuInstr3_vmovd_XMM9_R9D_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, false, 9, 9,RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10026 { bs3CpuInstr3_vmovd_XMM1_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10027 { bs3CpuInstr3_vmovd_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, false, 255, 9, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },10028 { bs3CpuInstr3_vmovd_EDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10029 { bs3CpuInstr3_vmovd_R8D_XMM9_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 8, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10030 { bs3CpuInstr3_vmovd_FSxBX_XMM1_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10031 { bs3CpuInstr3_vmovd_FSxBX_XMM9_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10032 10033 { bs3CpuInstr3_movq_MM1_R9_icebp_c64, 255, RM_REG, T_MMX, 8, 64, false, false, 9, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10034 { bs3CpuInstr3_movq_MM1_FSxBX_icebp_c64, 255, RM_MEM64, T_MMX, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10035 { bs3CpuInstr3_06e_movq_MM1_FSxBX_icebp_c64, 255, RM_MEM64, T_MMX, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10036 { bs3CpuInstr3_movq_R9_MM1_icebp_c64, 255, RM_REG, T_MMX, 8, 64, false, true, 9, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10037 { bs3CpuInstr3_movq_FSxBX_MM1_icebp_c64, 255, RM_MEM64, T_MMX, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10038 { bs3CpuInstr3_07e_movq_FSxBX_MM1_icebp_c64, 255, RM_MEM64, T_MMX, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10039 { bs3CpuInstr3_movq_MM1_MM2_icebp_c64, 255, RM_REG, T_MMX, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */10040 10041 { bs3CpuInstr3_movq_XMM9_R8_icebp_c64, 255, RM_REG, T_SSE2, 8, 64, false, false, 8, 9,RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10042 { bs3CpuInstr3_movq_XMM1_FSxBX_icebp_c64, 255, RM_MEM64, T_SSE2, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10043 { bs3CpuInstr3_06e_movq_XMM1_FSxBX_icebp_c64, 255, RM_MEM64, T_SSE2, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10044 { bs3CpuInstr3_movq_XMM9_FSxBX_icebp_c64, 255, RM_MEM64, T_SSE2, 8, 64, false, false, 255, 9, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10045 { bs3CpuInstr3_06e_movq_XMM9_FSxBX_icebp_c64, 255, RM_MEM64, T_SSE2, 8, 64, false, false, 255, 9, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10046 { bs3CpuInstr3_movq_R8_XMM9_icebp_c64, 255, RM_REG, T_SSE2, 8, 64, false, true, 8, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10047 { bs3CpuInstr3_movq_FSxBX_XMM1_icebp_c64, 255, RM_MEM64, T_SSE2, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10048 { bs3CpuInstr3_07e_movq_FSxBX_XMM1_icebp_c64, 255, RM_MEM64, T_SSE2, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10049 { bs3CpuInstr3_movq_FSxBX_XMM9_icebp_c64, 255, RM_MEM64, T_SSE2, 8, 64, false, true, 255, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10050 { bs3CpuInstr3_07e_movq_FSxBX_XMM9_icebp_c64, 255, RM_MEM64, T_SSE2, 8, 64, false, true, 255, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10051 { bs3CpuInstr3_movq_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE2, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */10052 10053 { bs3CpuInstr3_vmovq_XMM9_R8_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, false, 8, 9,RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10054 { bs3CpuInstr3_vmovq_XMM1_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10055 { bs3CpuInstr3_06e_vmovq_XMM1_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, false, 255, 1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10056 { bs3CpuInstr3_vmovq_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, false, 255, 9, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10057 { bs3CpuInstr3_06e_vmovq_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, false, 255, 9, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },10058 { bs3CpuInstr3_vmovq_R8_XMM9_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 8, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10059 { bs3CpuInstr3_vmovq_FSxBX_XMM1_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10060 { bs3CpuInstr3_07e_vmovq_FSxBX_XMM1_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true, 255, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10061 { bs3CpuInstr3_vmovq_FSxBX_XMM9_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true, 255, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10062 { bs3CpuInstr3_07e_vmovq_FSxBX_XMM9_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true, 255, 9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm},10063 { bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, 2, 2, 1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, /* MMx2 */9928 { bs3CpuInstr3_movd_MM1_EDX_icebp_c64, 255, RM_REG, T_MMX, 4, MM1, EDX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9929 { bs3CpuInstr3_movd_MM1_R9D_icebp_c64, 255, RM_REG, T_MMX, 4, MM1, R9D, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9930 { bs3CpuInstr3_movd_MM1_FSxBX_icebp_c64, 255, RM_MEM32, T_MMX, 4, MM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9931 { bs3CpuInstr3_movd_EAX_MM1_icebp_c64, 255, RM_REG, T_MMX, 4, EAX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9932 { bs3CpuInstr3_movd_R10D_MM0_icebp_c64, 255, RM_REG, T_MMX, 4, R10D, MM0, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9933 { bs3CpuInstr3_movd_FSxBX_MM1_icebp_c64, 255, RM_MEM32, T_MMX, 4, FSxBX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9934 9935 { bs3CpuInstr3_movd_XMM1_EAX_icebp_c64, 255, RM_REG, T_SSE2, 4, XMM1, EAX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9936 { bs3CpuInstr3_movd_XMM9_R8D_icebp_c64, 255, RM_REG, T_SSE2, 4, XMM9, R8D, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9937 { bs3CpuInstr3_movd_XMM1_FSxBX_icebp_c64, 255, RM_MEM32, T_SSE2, 4, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9938 { bs3CpuInstr3_movd_XMM9_FSxBX_icebp_c64, 255, RM_MEM32, T_SSE2, 4, XMM9, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9939 { bs3CpuInstr3_movd_EAX_XMM1_icebp_c64, 255, RM_REG, T_SSE2, 4, EAX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9940 { bs3CpuInstr3_movd_R8D_XMM9_icebp_c64, 255, RM_REG, T_SSE2, 4, R8D, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9941 { bs3CpuInstr3_movd_FSxBX_XMM1_icebp_c64, 255, RM_MEM32, T_SSE2, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9942 { bs3CpuInstr3_movd_FSxBX_XMM9_icebp_c64, 255, RM_MEM32, T_SSE2, 4, FSxBX, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9943 9944 { bs3CpuInstr3_vmovd_XMM1_EAX_icebp_c64, 255, RM_REG, T_AVX_128, 4, XMM1, EAX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9945 { bs3CpuInstr3_vmovd_XMM9_R9D_icebp_c64, 255, RM_REG, T_AVX_128, 4, XMM9, R9D, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9946 { bs3CpuInstr3_vmovd_XMM1_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9947 { bs3CpuInstr3_vmovd_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, XMM9, FSxBX, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, 9948 { bs3CpuInstr3_vmovd_EDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9949 { bs3CpuInstr3_vmovd_R8D_XMM9_icebp_c64, 255, RM_REG, T_AVX_128, 4, R8D, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9950 { bs3CpuInstr3_vmovd_FSxBX_XMM1_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9951 { bs3CpuInstr3_vmovd_FSxBX_XMM9_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9952 9953 { bs3CpuInstr3_movq_MM1_R9_icebp_c64, 255, RM_REG, T_MMX, 8, MM1, R9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9954 { bs3CpuInstr3_movq_MM1_FSxBX_icebp_c64, 255, RM_MEM64, T_MMX, 8, MM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9955 { bs3CpuInstr3_06e_movq_MM1_FSxBX_icebp_c64, 255, RM_MEM64, T_MMX, 8, MM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9956 { bs3CpuInstr3_movq_R9_MM1_icebp_c64, 255, RM_REG, T_MMX, 8, R9, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9957 { bs3CpuInstr3_movq_FSxBX_MM1_icebp_c64, 255, RM_MEM64, T_MMX, 8, FSxBX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9958 { bs3CpuInstr3_07e_movq_FSxBX_MM1_icebp_c64, 255, RM_MEM64, T_MMX, 8, FSxBX, MM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9959 { bs3CpuInstr3_movq_MM1_MM2_icebp_c64, 255, RM_REG, T_MMX, 8, MM1, MM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9960 9961 { bs3CpuInstr3_movq_XMM9_R8_icebp_c64, 255, RM_REG, T_SSE2, 8, XMM9, R8, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9962 { bs3CpuInstr3_movq_XMM1_FSxBX_icebp_c64, 255, RM_MEM64, T_SSE2, 8, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9963 { bs3CpuInstr3_06e_movq_XMM1_FSxBX_icebp_c64, 255, RM_MEM64, T_SSE2, 8, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9964 { bs3CpuInstr3_movq_XMM9_FSxBX_icebp_c64, 255, RM_MEM64, T_SSE2, 8, XMM9, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9965 { bs3CpuInstr3_06e_movq_XMM9_FSxBX_icebp_c64, 255, RM_MEM64, T_SSE2, 8, XMM9, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9966 { bs3CpuInstr3_movq_R8_XMM9_icebp_c64, 255, RM_REG, T_SSE2, 8, R8, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9967 { bs3CpuInstr3_movq_FSxBX_XMM1_icebp_c64, 255, RM_MEM64, T_SSE2, 8, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9968 { bs3CpuInstr3_07e_movq_FSxBX_XMM1_icebp_c64, 255, RM_MEM64, T_SSE2, 8, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9969 { bs3CpuInstr3_movq_FSxBX_XMM9_icebp_c64, 255, RM_MEM64, T_SSE2, 8, FSxBX, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9970 { bs3CpuInstr3_07e_movq_FSxBX_XMM9_icebp_c64, 255, RM_MEM64, T_SSE2, 8, FSxBX, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9971 { bs3CpuInstr3_movq_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE2, 8, XMM1, XMM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9972 9973 { bs3CpuInstr3_vmovq_XMM9_R8_icebp_c64, 255, RM_REG, T_AVX_128, 8, XMM9, R8, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9974 { bs3CpuInstr3_vmovq_XMM1_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9975 { bs3CpuInstr3_06e_vmovq_XMM1_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, XMM1, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9976 { bs3CpuInstr3_vmovq_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, XMM9, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9977 { bs3CpuInstr3_06e_vmovq_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, XMM9, FSxBX, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ }, 9978 { bs3CpuInstr3_vmovq_R8_XMM9_icebp_c64, 255, RM_REG, T_AVX_128, 8, R8, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9979 { bs3CpuInstr3_vmovq_FSxBX_XMM1_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9980 { bs3CpuInstr3_07e_vmovq_FSxBX_XMM1_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, FSxBX, XMM1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9981 { bs3CpuInstr3_vmovq_FSxBX_XMM9_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, FSxBX, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9982 { bs3CpuInstr3_07e_vmovq_FSxBX_XMM9_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, FSxBX, XMM9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 9983 { bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c64, 255, RM_REG, T_AVX_128, 8, XMM1, XMM2, RT_ELEMENTS(s_aValuesRm), s_aValuesRm }, 10064 9984 }; 10065 9985 static BS3CPUINSTR3_TEST2_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST2_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); … … 10159 10079 static BS3CPUINSTR3_TEST2_T const s_aTests16[] = 10160 10080 { 10161 { bs3CpuInstr3_pextrb_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10162 { bs3CpuInstr3_pextrb_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10163 { bs3CpuInstr3_pextrb_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10164 { bs3CpuInstr3_pextrb_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10165 { bs3CpuInstr3_vpextrb_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10166 { bs3CpuInstr3_vpextrb_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10167 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10168 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10169 { bs3CpuInstr3_vpextrb_w1b_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10170 { bs3CpuInstr3_vpextrb_l1_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, true, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10171 10172 { bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c16, 255, RM_REG, T_MMX_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10173 { bs3CpuInstr3_pextrw_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10174 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10175 { bs3CpuInstr3_pextrw_FSxBX_XMM1_000h_icebp_c16, 255, RM_MEM16, T_SSE4_1, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10176 { bs3CpuInstr3_vpextrw_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10177 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10178 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10179 10180 { bs3CpuInstr3_pextrw_EDX_MM1_0FFh_icebp_c16, 255, RM_REG, T_MMX_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w_64), s_aValuesFF_w_64 }, 10181 { bs3CpuInstr3_pextrw_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10182 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10183 { bs3CpuInstr3_pextrw_FSxBX_XMM1_0FFh_icebp_c16, 255, RM_MEM16, T_SSE4_1, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10184 { bs3CpuInstr3_vpextrw_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10185 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10186 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10187 10188 { bs3CpuInstr3_pextrd_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10189 { bs3CpuInstr3_pextrd_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10190 { bs3CpuInstr3_pextrd_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10191 { bs3CpuInstr3_pextrd_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10192 { bs3CpuInstr3_vpextrd_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10193 { bs3CpuInstr3_vpextrd_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10194 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10195 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10081 { bs3CpuInstr3_pextrb_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10082 { bs3CpuInstr3_pextrb_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10083 { bs3CpuInstr3_pextrb_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10084 { bs3CpuInstr3_pextrb_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10085 { bs3CpuInstr3_vpextrb_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10086 { bs3CpuInstr3_vpextrb_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10087 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10088 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10089 { bs3CpuInstr3_vpextrb_w0b0_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, /* EDX despite forced VEX.B; VEX.W ignored */ 10090 { bs3CpuInstr3_vpextrb_w1b0_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, /* EDX despite forced VEX.B; VEX.W ignored */ 10091 { bs3CpuInstr3_vpextrb_l1_EDX_XMM1_0FFh_icebp_c16, BS3_XCPT_UD, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10092 10093 { bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c16, 255, RM_REG, T_MMX_SSE, 4, EDX, MM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10094 { bs3CpuInstr3_pextrw_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10095 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10096 { bs3CpuInstr3_pextrw_FSxBX_XMM1_000h_icebp_c16, 255, RM_MEM16, T_SSE4_1, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10097 { bs3CpuInstr3_vpextrw_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10098 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10099 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10100 10101 { bs3CpuInstr3_pextrw_EDX_MM1_0FFh_icebp_c16, 255, RM_REG, T_MMX_SSE, 4, EDX, MM1, RT_ELEMENTS(s_aValuesFF_w_64), s_aValuesFF_w_64 }, 10102 { bs3CpuInstr3_pextrw_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10103 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10104 { bs3CpuInstr3_pextrw_FSxBX_XMM1_0FFh_icebp_c16, 255, RM_MEM16, T_SSE4_1, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10105 { bs3CpuInstr3_vpextrw_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10106 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10107 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10108 10109 { bs3CpuInstr3_pextrd_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10110 { bs3CpuInstr3_pextrd_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10111 { bs3CpuInstr3_pextrd_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10112 { bs3CpuInstr3_pextrd_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10113 { bs3CpuInstr3_vpextrd_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10114 { bs3CpuInstr3_vpextrd_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10115 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10116 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10196 10117 }; 10197 10118 static BS3CPUINSTR3_TEST2_T const s_aTests32[] = 10198 10119 { 10199 { bs3CpuInstr3_pextrb_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10200 { bs3CpuInstr3_pextrb_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10201 { bs3CpuInstr3_pextrb_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10202 { bs3CpuInstr3_pextrb_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10203 { bs3CpuInstr3_vpextrb_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10204 { bs3CpuInstr3_vpextrb_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10205 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10206 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10207 { bs3CpuInstr3_vpextrb_w1b_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10208 { bs3CpuInstr3_vpextrb_l1_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, true, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10209 10210 { bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c32, 255, RM_REG, T_MMX_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10211 { bs3CpuInstr3_pextrw_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10212 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10213 { bs3CpuInstr3_pextrw_FSxBX_XMM1_000h_icebp_c32, 255, RM_MEM16, T_SSE4_1, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10214 { bs3CpuInstr3_vpextrw_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10215 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10216 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10217 10218 { bs3CpuInstr3_pextrw_EDX_MM1_0FFh_icebp_c32, 255, RM_REG, T_MMX_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w_64), s_aValuesFF_w_64 }, 10219 { bs3CpuInstr3_pextrw_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10220 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10221 { bs3CpuInstr3_pextrw_FSxBX_XMM1_0FFh_icebp_c32, 255, RM_MEM16, T_SSE4_1, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10222 { bs3CpuInstr3_vpextrw_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10223 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10224 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10225 10226 { bs3CpuInstr3_pextrd_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10227 { bs3CpuInstr3_pextrd_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10228 { bs3CpuInstr3_pextrd_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10229 { bs3CpuInstr3_pextrd_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10230 { bs3CpuInstr3_vpextrd_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10231 { bs3CpuInstr3_vpextrd_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10232 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10233 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10120 { bs3CpuInstr3_pextrb_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10121 { bs3CpuInstr3_pextrb_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10122 { bs3CpuInstr3_pextrb_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10123 { bs3CpuInstr3_pextrb_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10124 { bs3CpuInstr3_vpextrb_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10125 { bs3CpuInstr3_vpextrb_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10126 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10127 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10128 { bs3CpuInstr3_vpextrb_w0b0_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, /* EDX despite forced VEX.B; VEX.W ignored */ 10129 { bs3CpuInstr3_vpextrb_w1b0_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, /* EDX despite forced VEX.B; VEX.W ignored */ 10130 { bs3CpuInstr3_vpextrb_l1_EDX_XMM1_0FFh_icebp_c32, BS3_XCPT_UD, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10131 10132 { bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c32, 255, RM_REG, T_MMX_SSE, 4, EDX, MM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10133 { bs3CpuInstr3_pextrw_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10134 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10135 { bs3CpuInstr3_pextrw_FSxBX_XMM1_000h_icebp_c32, 255, RM_MEM16, T_SSE4_1, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10136 { bs3CpuInstr3_vpextrw_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10137 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10138 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10139 10140 { bs3CpuInstr3_pextrw_EDX_MM1_0FFh_icebp_c32, 255, RM_REG, T_MMX_SSE, 4, EDX, MM1, RT_ELEMENTS(s_aValuesFF_w_64), s_aValuesFF_w_64 }, 10141 { bs3CpuInstr3_pextrw_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10142 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10143 { bs3CpuInstr3_pextrw_FSxBX_XMM1_0FFh_icebp_c32, 255, RM_MEM16, T_SSE4_1, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10144 { bs3CpuInstr3_vpextrw_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10145 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10146 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10147 10148 { bs3CpuInstr3_pextrd_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10149 { bs3CpuInstr3_pextrd_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10150 { bs3CpuInstr3_pextrd_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10151 { bs3CpuInstr3_pextrd_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10152 { bs3CpuInstr3_vpextrd_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10153 { bs3CpuInstr3_vpextrd_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10154 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10155 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10234 10156 }; 10235 10157 static BS3CPUINSTR3_TEST2_T const s_aTests64[] = 10236 10158 { 10237 { bs3CpuInstr3_pextrb_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10238 { bs3CpuInstr3_pextrb_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10239 { bs3CpuInstr3_pextrb_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10240 { bs3CpuInstr3_pextrb_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10241 { bs3CpuInstr3_pextrb_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10242 { bs3CpuInstr3_pextrb_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10243 { bs3CpuInstr3_pextrb_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, 8, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10244 { bs3CpuInstr3_pextrb_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, 8, false, true, 255, 8, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10245 { bs3CpuInstr3_vpextrb_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10246 { bs3CpuInstr3_vpextrb_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10247 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10248 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, 8, false, true, 255, 1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10249 { bs3CpuInstr3_vpextrb_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10250 { bs3CpuInstr3_vpextrb_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10251 { bs3CpuInstr3_vpextrb_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, 8, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10252 { bs3CpuInstr3_vpextrb_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, 8, false, true, 255, 8, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10253 { bs3CpuInstr3_vpextrb_w1b_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 10, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, /* manually setting VEX.B=1 */ 10254 { bs3CpuInstr3_vpextrb_l1_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, true, true, 2, 1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10255 10256 { bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c64, 255, RM_REG, T_MMX_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10257 { bs3CpuInstr3_pextrw_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10258 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10259 { bs3CpuInstr3_pextrw_FSxBX_XMM1_000h_icebp_c64, 255, RM_MEM16, T_SSE4_1, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10260 { bs3CpuInstr3_vpextrw_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10261 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10262 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10263 10264 { bs3CpuInstr3_pextrw_EDX_MM1_0FFh_icebp_c64, 255, RM_REG, T_MMX_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w_64), s_aValuesFF_w_64 }, 10265 { bs3CpuInstr3_pextrw_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10266 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10267 { bs3CpuInstr3_pextrw_FSxBX_XMM1_0FFh_icebp_c64, 255, RM_MEM16, T_SSE4_1, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10268 { bs3CpuInstr3_vpextrw_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10269 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10270 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, 16, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10271 10272 { bs3CpuInstr3_pextrw_R9D_MM1_000h_icebp_c64, 255, RM_REG, T_MMX_SSE, 4, 32, false, true, 9, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10273 { bs3CpuInstr3_pextrw_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10274 { bs3CpuInstr3_pextrw_alt_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10275 { bs3CpuInstr3_pextrw_FSxBX_XMM8_000h_icebp_c64, 255, RM_MEM16, T_SSE4_1, 2, 16, false, true, 255, 8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10276 { bs3CpuInstr3_vpextrw_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10277 { bs3CpuInstr3_vpextrw_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, 16, false, true, 255, 8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10278 10279 { bs3CpuInstr3_pextrw_R9D_MM1_0FFh_icebp_c64, 255, RM_REG, T_MMX_SSE, 4, 32, false, true, 9, 1, RT_ELEMENTS(s_aValuesFF_w_64), s_aValuesFF_w_64 }, 10280 { bs3CpuInstr3_pextrw_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10281 { bs3CpuInstr3_pextrw_alt_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10282 { bs3CpuInstr3_pextrw_FSxBX_XMM8_0FFh_icebp_c64, 255, RM_MEM16, T_SSE4_1, 2, 16, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10283 { bs3CpuInstr3_vpextrw_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10284 { bs3CpuInstr3_vpextrw_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, 16, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10285 10286 { bs3CpuInstr3_pextrw_R9_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE2, 8, 64, false, true, 9, 8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10287 { bs3CpuInstr3_pextrw_alt_RDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10288 { bs3CpuInstr3_pextrw_alt_R9_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 64, false, true, 9, 8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10289 { bs3CpuInstr3_vpextrw_RDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10290 10291 { bs3CpuInstr3_pextrw_R9_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE2, 8, 64, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10292 { bs3CpuInstr3_pextrw_alt_RDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10293 { bs3CpuInstr3_pextrw_alt_R9_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 64, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10294 { bs3CpuInstr3_vpextrw_RDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10295 10296 { bs3CpuInstr3_pextrd_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10297 { bs3CpuInstr3_pextrd_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10298 { bs3CpuInstr3_pextrd_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10299 { bs3CpuInstr3_pextrd_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10300 { bs3CpuInstr3_pextrd_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10301 { bs3CpuInstr3_pextrd_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10302 { bs3CpuInstr3_pextrd_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10303 { bs3CpuInstr3_pextrd_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255, 8, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10304 { bs3CpuInstr3_vpextrd_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10305 { bs3CpuInstr3_vpextrd_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10306 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10307 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10308 { bs3CpuInstr3_vpextrd_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10309 { bs3CpuInstr3_vpextrd_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10310 { bs3CpuInstr3_vpextrd_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10311 { bs3CpuInstr3_vpextrd_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255, 8, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10312 10313 { bs3CpuInstr3_pextrq_RDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10314 { bs3CpuInstr3_pextrq_RDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10315 { bs3CpuInstr3_pextrq_R9_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 64, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10316 { bs3CpuInstr3_pextrq_R9_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 64, false, true, 9, 8, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10317 { bs3CpuInstr3_pextrq_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM64, T_SSE4_1, 8, 64, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10318 { bs3CpuInstr3_pextrq_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM64, T_SSE4_1, 8, 64, false, true, 255, 8, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10319 { bs3CpuInstr3_vpextrq_RDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10320 { bs3CpuInstr3_vpextrq_RDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10321 { bs3CpuInstr3_vpextrq_R9_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 9, 8, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10322 { bs3CpuInstr3_vpextrq_R9_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 9, 8, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10323 { bs3CpuInstr3_vpextrq_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10324 { bs3CpuInstr3_vpextrq_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true, 255, 8, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10159 { bs3CpuInstr3_pextrb_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10160 { bs3CpuInstr3_pextrb_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10161 { bs3CpuInstr3_pextrb_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10162 { bs3CpuInstr3_pextrb_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10163 { bs3CpuInstr3_pextrb_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10164 { bs3CpuInstr3_pextrb_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10165 { bs3CpuInstr3_pextrb_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, FSxBX, XMM8, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10166 { bs3CpuInstr3_pextrb_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_DB, RM_MEM8, T_SSE4_1, 1, FSxBX, XMM8, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10167 { bs3CpuInstr3_vpextrb_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10168 { bs3CpuInstr3_vpextrb_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10169 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10170 { bs3CpuInstr3_vpextrb_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10171 { bs3CpuInstr3_vpextrb_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10172 { bs3CpuInstr3_vpextrb_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10173 { bs3CpuInstr3_vpextrb_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, FSxBX, XMM8, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10174 { bs3CpuInstr3_vpextrb_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_DB, RM_MEM8, T_AVX_128, 1, FSxBX, XMM8, RT_ELEMENTS(s_aValues00_b), s_aValues00_b }, 10175 { bs3CpuInstr3_vpextrb_w0b0_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, R10D, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, /* VEX.B forces EDX to R10D; VEX.W ignored */ 10176 { bs3CpuInstr3_vpextrb_w1b0_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, R10D, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, /* VEX.B forces EDX to R10D; VEX.W ignored */ 10177 { bs3CpuInstr3_vpextrb_l1_EDX_XMM1_0FFh_icebp_c64, BS3_XCPT_UD, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_b), s_aValuesFF_b }, 10178 10179 { bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c64, 255, RM_REG, T_MMX_SSE, 4, EDX, MM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10180 { bs3CpuInstr3_pextrw_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10181 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10182 { bs3CpuInstr3_pextrw_FSxBX_XMM1_000h_icebp_c64, 255, RM_MEM16, T_SSE4_1, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10183 { bs3CpuInstr3_vpextrw_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10184 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10185 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10186 10187 { bs3CpuInstr3_pextrw_EDX_MM1_0FFh_icebp_c64, 255, RM_REG, T_MMX_SSE, 4, EDX, MM1, RT_ELEMENTS(s_aValuesFF_w_64), s_aValuesFF_w_64 }, 10188 { bs3CpuInstr3_pextrw_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10189 { bs3CpuInstr3_pextrw_alt_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10190 { bs3CpuInstr3_pextrw_FSxBX_XMM1_0FFh_icebp_c64, 255, RM_MEM16, T_SSE4_1, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10191 { bs3CpuInstr3_vpextrw_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10192 { bs3CpuInstr3_vpextrw_alt_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10193 { bs3CpuInstr3_vpextrw_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10194 10195 { bs3CpuInstr3_pextrw_R9D_MM1_000h_icebp_c64, 255, RM_REG, T_MMX_SSE, 4, R9D, MM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10196 { bs3CpuInstr3_pextrw_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE2, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10197 { bs3CpuInstr3_pextrw_alt_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10198 { bs3CpuInstr3_pextrw_FSxBX_XMM8_000h_icebp_c64, 255, RM_MEM16, T_SSE4_1, 2, FSxBX, XMM8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10199 { bs3CpuInstr3_vpextrw_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10200 { bs3CpuInstr3_vpextrw_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, FSxBX, XMM8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10201 10202 { bs3CpuInstr3_pextrw_R9D_MM1_0FFh_icebp_c64, 255, RM_REG, T_MMX_SSE, 4, R9D, MM1, RT_ELEMENTS(s_aValuesFF_w_64), s_aValuesFF_w_64 }, 10203 { bs3CpuInstr3_pextrw_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE2, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10204 { bs3CpuInstr3_pextrw_alt_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10205 { bs3CpuInstr3_pextrw_FSxBX_XMM8_0FFh_icebp_c64, 255, RM_MEM16, T_SSE4_1, 2, FSxBX, XMM8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10206 { bs3CpuInstr3_vpextrw_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10207 { bs3CpuInstr3_vpextrw_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM16, T_AVX_128, 2, FSxBX, XMM8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10208 10209 { bs3CpuInstr3_pextrw_R9_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE2, 8, R9, XMM8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10210 { bs3CpuInstr3_pextrw_alt_RDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, RDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10211 { bs3CpuInstr3_pextrw_alt_R9_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, R9, XMM8, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10212 { bs3CpuInstr3_vpextrw_RDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 8, RDX, XMM1, RT_ELEMENTS(s_aValues00_w), s_aValues00_w }, 10213 10214 { bs3CpuInstr3_pextrw_R9_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE2, 8, R9, XMM8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10215 { bs3CpuInstr3_pextrw_alt_RDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 8, RDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10216 { bs3CpuInstr3_pextrw_alt_R9_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 8, R9, XMM8, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10217 { bs3CpuInstr3_vpextrw_RDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 8, RDX, XMM1, RT_ELEMENTS(s_aValuesFF_w), s_aValuesFF_w }, 10218 10219 { bs3CpuInstr3_pextrd_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10220 { bs3CpuInstr3_pextrd_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10221 { bs3CpuInstr3_pextrd_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10222 { bs3CpuInstr3_pextrd_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10223 { bs3CpuInstr3_pextrd_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10224 { bs3CpuInstr3_pextrd_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10225 { bs3CpuInstr3_pextrd_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10226 { bs3CpuInstr3_pextrd_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10227 { bs3CpuInstr3_vpextrd_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10228 { bs3CpuInstr3_vpextrd_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10229 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10230 { bs3CpuInstr3_vpextrd_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10231 { bs3CpuInstr3_vpextrd_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10232 { bs3CpuInstr3_vpextrd_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10233 { bs3CpuInstr3_vpextrd_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValuesFF_d), s_aValuesFF_d }, 10234 { bs3CpuInstr3_vpextrd_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues00_d), s_aValues00_d }, 10235 10236 { bs3CpuInstr3_pextrq_RDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 8, RDX, XMM1, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10237 { bs3CpuInstr3_pextrq_RDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, RDX, XMM1, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10238 { bs3CpuInstr3_pextrq_R9_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 8, R9, XMM8, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10239 { bs3CpuInstr3_pextrq_R9_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, R9, XMM8, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10240 { bs3CpuInstr3_pextrq_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM64, T_SSE4_1, 8, FSxBX, XMM8, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10241 { bs3CpuInstr3_pextrq_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM64, T_SSE4_1, 8, FSxBX, XMM8, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10242 { bs3CpuInstr3_vpextrq_RDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 8, RDX, XMM1, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10243 { bs3CpuInstr3_vpextrq_RDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 8, RDX, XMM1, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10244 { bs3CpuInstr3_vpextrq_R9_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 8, R9, XMM8, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10245 { bs3CpuInstr3_vpextrq_R9_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 8, R9, XMM8, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10246 { bs3CpuInstr3_vpextrq_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, FSxBX, XMM8, RT_ELEMENTS(s_aValuesFF_q), s_aValuesFF_q }, 10247 { bs3CpuInstr3_vpextrq_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, FSxBX, XMM8, RT_ELEMENTS(s_aValues00_q), s_aValues00_q }, 10325 10248 }; 10326 10249 static BS3CPUINSTR3_TEST2_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST2_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); … … 10378 10301 static BS3CPUINSTR3_TEST2_T const s_aTests16[] = 10379 10302 { 10380 { bs3CpuInstr3_movmskps_EDX_XMM1_icebp_c16, 255, RM_REG, T_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10381 { bs3CpuInstr3_vmovmskps_EDX_XMM1_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10382 { bs3CpuInstr3_vmovmskps_EDX_YMM1_icebp_c16, 255, RM_REG, T_AVX_256, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_256),s_aValuesR32_256 },10383 10384 { bs3CpuInstr3_movmskpd_EDX_XMM1_icebp_c16, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10385 { bs3CpuInstr3_vmovmskpd_EDX_XMM1_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10386 { bs3CpuInstr3_vmovmskpd_EDX_YMM1_icebp_c16, 255, RM_REG, T_AVX_256, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_256),s_aValuesR64_256 },10303 { bs3CpuInstr3_movmskps_EDX_XMM1_icebp_c16, 255, RM_REG, T_SSE, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10304 { bs3CpuInstr3_vmovmskps_EDX_XMM1_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10305 { bs3CpuInstr3_vmovmskps_EDX_YMM1_icebp_c16, 255, RM_REG, T_AVX_256, 4, EDX, YMM1, RT_ELEMENTS(s_aValuesR32_256), s_aValuesR32_256 }, 10306 10307 { bs3CpuInstr3_movmskpd_EDX_XMM1_icebp_c16, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10308 { bs3CpuInstr3_vmovmskpd_EDX_XMM1_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10309 { bs3CpuInstr3_vmovmskpd_EDX_YMM1_icebp_c16, 255, RM_REG, T_AVX_256, 4, EDX, YMM1, RT_ELEMENTS(s_aValuesR64_256), s_aValuesR64_256 }, 10387 10310 }; 10388 10311 static BS3CPUINSTR3_TEST2_T const s_aTests32[] = 10389 10312 { 10390 { bs3CpuInstr3_movmskps_EDX_XMM1_icebp_c32, 255, RM_REG, T_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10391 { bs3CpuInstr3_vmovmskps_EDX_XMM1_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10392 { bs3CpuInstr3_vmovmskps_EDX_YMM1_icebp_c32, 255, RM_REG, T_AVX_256, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_256),s_aValuesR32_256 },10393 10394 { bs3CpuInstr3_movmskpd_EDX_XMM1_icebp_c32, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10395 { bs3CpuInstr3_vmovmskpd_EDX_XMM1_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10396 { bs3CpuInstr3_vmovmskpd_EDX_YMM1_icebp_c32, 255, RM_REG, T_AVX_256, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_256),s_aValuesR64_256 },10313 { bs3CpuInstr3_movmskps_EDX_XMM1_icebp_c32, 255, RM_REG, T_SSE, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10314 { bs3CpuInstr3_vmovmskps_EDX_XMM1_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10315 { bs3CpuInstr3_vmovmskps_EDX_YMM1_icebp_c32, 255, RM_REG, T_AVX_256, 4, EDX, YMM1, RT_ELEMENTS(s_aValuesR32_256), s_aValuesR32_256 }, 10316 10317 { bs3CpuInstr3_movmskpd_EDX_XMM1_icebp_c32, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10318 { bs3CpuInstr3_vmovmskpd_EDX_XMM1_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10319 { bs3CpuInstr3_vmovmskpd_EDX_YMM1_icebp_c32, 255, RM_REG, T_AVX_256, 4, EDX, YMM1, RT_ELEMENTS(s_aValuesR64_256), s_aValuesR64_256 }, 10397 10320 }; 10398 10321 static BS3CPUINSTR3_TEST2_T const s_aTests64[] = 10399 10322 { 10400 { bs3CpuInstr3_movmskps_EDX_XMM1_icebp_c64, 255, RM_REG, T_SSE, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10401 { bs3CpuInstr3_movmskps_R9D_XMM8_icebp_c64, 255, RM_REG, T_SSE, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10402 { bs3CpuInstr3_movmskps_RDX_XMM1_icebp_c64, 255, RM_REG, T_SSE, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10403 { bs3CpuInstr3_vmovmskps_EDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10404 { bs3CpuInstr3_vmovmskps_RDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10405 { bs3CpuInstr3_vmovmskps_R9D_XMM8_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesR32_128),s_aValuesR32_128 },10406 10407 { bs3CpuInstr3_vmovmskps_EDX_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_256),s_aValuesR32_256 },10408 { bs3CpuInstr3_vmovmskps_RDX_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesR32_256),s_aValuesR32_256 },10409 { bs3CpuInstr3_vmovmskps_R9D_YMM8_icebp_c64, 255, RM_REG, T_AVX_256, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesR32_256),s_aValuesR32_256 },10410 10411 { bs3CpuInstr3_movmskpd_EDX_XMM1_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10412 { bs3CpuInstr3_movmskpd_R9D_XMM8_icebp_c64, 255, RM_REG, T_SSE2, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10413 { bs3CpuInstr3_movmskpd_RDX_XMM1_icebp_c64, 255, RM_REG, T_SSE2, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10414 { bs3CpuInstr3_vmovmskpd_EDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10415 { bs3CpuInstr3_vmovmskpd_RDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10416 { bs3CpuInstr3_vmovmskpd_R9D_XMM8_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesR64_128),s_aValuesR64_128 },10417 10418 { bs3CpuInstr3_vmovmskpd_EDX_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 4, 32, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_256),s_aValuesR64_256 },10419 { bs3CpuInstr3_vmovmskpd_RDX_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 8, 64, false, true, 2, 1, RT_ELEMENTS(s_aValuesR64_256),s_aValuesR64_256 },10420 { bs3CpuInstr3_vmovmskpd_R9D_YMM8_icebp_c64, 255, RM_REG, T_AVX_256, 4, 32, false, true, 9, 8, RT_ELEMENTS(s_aValuesR64_256),s_aValuesR64_256 },10323 { bs3CpuInstr3_movmskps_EDX_XMM1_icebp_c64, 255, RM_REG, T_SSE, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10324 { bs3CpuInstr3_movmskps_R9D_XMM8_icebp_c64, 255, RM_REG, T_SSE, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10325 { bs3CpuInstr3_movmskps_RDX_XMM1_icebp_c64, 255, RM_REG, T_SSE, 8, RDX, XMM1, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10326 { bs3CpuInstr3_vmovmskps_EDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10327 { bs3CpuInstr3_vmovmskps_RDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 8, RDX, XMM1, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10328 { bs3CpuInstr3_vmovmskps_R9D_XMM8_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesR32_128), s_aValuesR32_128 }, 10329 10330 { bs3CpuInstr3_vmovmskps_EDX_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 4, EDX, YMM1, RT_ELEMENTS(s_aValuesR32_256), s_aValuesR32_256 }, 10331 { bs3CpuInstr3_vmovmskps_RDX_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 8, RDX, YMM1, RT_ELEMENTS(s_aValuesR32_256), s_aValuesR32_256 }, 10332 { bs3CpuInstr3_vmovmskps_R9D_YMM8_icebp_c64, 255, RM_REG, T_AVX_256, 4, R9D, YMM8, RT_ELEMENTS(s_aValuesR32_256), s_aValuesR32_256 }, 10333 10334 { bs3CpuInstr3_movmskpd_EDX_XMM1_icebp_c64, 255, RM_REG, T_SSE2, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10335 { bs3CpuInstr3_movmskpd_R9D_XMM8_icebp_c64, 255, RM_REG, T_SSE2, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10336 { bs3CpuInstr3_movmskpd_RDX_XMM1_icebp_c64, 255, RM_REG, T_SSE2, 8, RDX, XMM1, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10337 { bs3CpuInstr3_vmovmskpd_EDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10338 { bs3CpuInstr3_vmovmskpd_RDX_XMM1_icebp_c64, 255, RM_REG, T_AVX_128, 8, RDX, XMM1, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10339 { bs3CpuInstr3_vmovmskpd_R9D_XMM8_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValuesR64_128), s_aValuesR64_128 }, 10340 10341 { bs3CpuInstr3_vmovmskpd_EDX_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 4, EDX, YMM1, RT_ELEMENTS(s_aValuesR64_256), s_aValuesR64_256 }, 10342 { bs3CpuInstr3_vmovmskpd_RDX_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 8, RDX, YMM1, RT_ELEMENTS(s_aValuesR64_256), s_aValuesR64_256 }, 10343 { bs3CpuInstr3_vmovmskpd_R9D_YMM8_icebp_c64, 255, RM_REG, T_AVX_256, 4, R9D, YMM8, RT_ELEMENTS(s_aValuesR64_256), s_aValuesR64_256 }, 10421 10344 }; 10422 10345 static BS3CPUINSTR3_TEST2_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST2_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); … … 10459 10382 static BS3CPUINSTR3_TEST2_T const s_aTests16[] = 10460 10383 { 10461 { bs3CpuInstr3_extractps_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10462 { bs3CpuInstr3_extractps_EDX_XMM1_001h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10463 { bs3CpuInstr3_extractps_EDX_XMM1_002h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10464 { bs3CpuInstr3_extractps_EDX_XMM1_003h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10465 { bs3CpuInstr3_extractps_EDX_XMM1_032h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10466 { bs3CpuInstr3_extractps_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10467 { bs3CpuInstr3_extractps_FSxBX_XMM1_000h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10468 { bs3CpuInstr3_extractps_FSxBX_XMM1_001h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10469 { bs3CpuInstr3_extractps_FSxBX_XMM1_002h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10470 { bs3CpuInstr3_extractps_FSxBX_XMM1_003h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10471 { bs3CpuInstr3_extractps_FSxBX_XMM1_032h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10472 { bs3CpuInstr3_extractps_FSxBX_XMM1_0FFh_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10473 10474 { bs3CpuInstr3_vextractps_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10475 { bs3CpuInstr3_vextractps_EDX_XMM1_001h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10476 { bs3CpuInstr3_vextractps_EDX_XMM1_002h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10477 { bs3CpuInstr3_vextractps_EDX_XMM1_003h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10478 { bs3CpuInstr3_vextractps_EDX_XMM1_032h_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10479 { bs3CpuInstr3_vextractps_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10480 { bs3CpuInstr3_vextractps_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10481 { bs3CpuInstr3_vextractps_FSxBX_XMM1_001h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10482 { bs3CpuInstr3_vextractps_FSxBX_XMM1_002h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10483 { bs3CpuInstr3_vextractps_FSxBX_XMM1_003h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10484 { bs3CpuInstr3_vextractps_FSxBX_XMM1_032h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10485 { bs3CpuInstr3_vextractps_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10384 { bs3CpuInstr3_extractps_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10385 { bs3CpuInstr3_extractps_EDX_XMM1_001h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10386 { bs3CpuInstr3_extractps_EDX_XMM1_002h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10387 { bs3CpuInstr3_extractps_EDX_XMM1_003h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10388 { bs3CpuInstr3_extractps_EDX_XMM1_032h_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10389 { bs3CpuInstr3_extractps_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10390 { bs3CpuInstr3_extractps_FSxBX_XMM1_000h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10391 { bs3CpuInstr3_extractps_FSxBX_XMM1_001h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10392 { bs3CpuInstr3_extractps_FSxBX_XMM1_002h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10393 { bs3CpuInstr3_extractps_FSxBX_XMM1_003h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10394 { bs3CpuInstr3_extractps_FSxBX_XMM1_032h_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10395 { bs3CpuInstr3_extractps_FSxBX_XMM1_0FFh_icebp_c16, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10396 10397 { bs3CpuInstr3_vextractps_EDX_XMM1_000h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10398 { bs3CpuInstr3_vextractps_EDX_XMM1_001h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10399 { bs3CpuInstr3_vextractps_EDX_XMM1_002h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10400 { bs3CpuInstr3_vextractps_EDX_XMM1_003h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10401 { bs3CpuInstr3_vextractps_EDX_XMM1_032h_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10402 { bs3CpuInstr3_vextractps_EDX_XMM1_0FFh_icebp_c16, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10403 { bs3CpuInstr3_vextractps_FSxBX_XMM1_000h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10404 { bs3CpuInstr3_vextractps_FSxBX_XMM1_001h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10405 { bs3CpuInstr3_vextractps_FSxBX_XMM1_002h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10406 { bs3CpuInstr3_vextractps_FSxBX_XMM1_003h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10407 { bs3CpuInstr3_vextractps_FSxBX_XMM1_032h_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10408 { bs3CpuInstr3_vextractps_FSxBX_XMM1_0FFh_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10486 10409 }; 10487 10410 static BS3CPUINSTR3_TEST2_T const s_aTests32[] = 10488 10411 { 10489 { bs3CpuInstr3_extractps_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10490 { bs3CpuInstr3_extractps_EDX_XMM1_001h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10491 { bs3CpuInstr3_extractps_EDX_XMM1_002h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10492 { bs3CpuInstr3_extractps_EDX_XMM1_003h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10493 { bs3CpuInstr3_extractps_EDX_XMM1_032h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10494 { bs3CpuInstr3_extractps_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10495 { bs3CpuInstr3_extractps_FSxBX_XMM1_000h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10496 { bs3CpuInstr3_extractps_FSxBX_XMM1_001h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10497 { bs3CpuInstr3_extractps_FSxBX_XMM1_002h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10498 { bs3CpuInstr3_extractps_FSxBX_XMM1_003h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10499 { bs3CpuInstr3_extractps_FSxBX_XMM1_032h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10500 { bs3CpuInstr3_extractps_FSxBX_XMM1_0FFh_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10501 10502 { bs3CpuInstr3_vextractps_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10503 { bs3CpuInstr3_vextractps_EDX_XMM1_001h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10504 { bs3CpuInstr3_vextractps_EDX_XMM1_002h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10505 { bs3CpuInstr3_vextractps_EDX_XMM1_003h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10506 { bs3CpuInstr3_vextractps_EDX_XMM1_032h_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10507 { bs3CpuInstr3_vextractps_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10508 { bs3CpuInstr3_vextractps_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10509 { bs3CpuInstr3_vextractps_FSxBX_XMM1_001h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10510 { bs3CpuInstr3_vextractps_FSxBX_XMM1_002h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10511 { bs3CpuInstr3_vextractps_FSxBX_XMM1_003h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10512 { bs3CpuInstr3_vextractps_FSxBX_XMM1_032h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10513 { bs3CpuInstr3_vextractps_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10412 { bs3CpuInstr3_extractps_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10413 { bs3CpuInstr3_extractps_EDX_XMM1_001h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10414 { bs3CpuInstr3_extractps_EDX_XMM1_002h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10415 { bs3CpuInstr3_extractps_EDX_XMM1_003h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10416 { bs3CpuInstr3_extractps_EDX_XMM1_032h_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10417 { bs3CpuInstr3_extractps_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10418 { bs3CpuInstr3_extractps_FSxBX_XMM1_000h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10419 { bs3CpuInstr3_extractps_FSxBX_XMM1_001h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10420 { bs3CpuInstr3_extractps_FSxBX_XMM1_002h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10421 { bs3CpuInstr3_extractps_FSxBX_XMM1_003h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10422 { bs3CpuInstr3_extractps_FSxBX_XMM1_032h_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10423 { bs3CpuInstr3_extractps_FSxBX_XMM1_0FFh_icebp_c32, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10424 10425 { bs3CpuInstr3_vextractps_EDX_XMM1_000h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10426 { bs3CpuInstr3_vextractps_EDX_XMM1_001h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10427 { bs3CpuInstr3_vextractps_EDX_XMM1_002h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10428 { bs3CpuInstr3_vextractps_EDX_XMM1_003h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10429 { bs3CpuInstr3_vextractps_EDX_XMM1_032h_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10430 { bs3CpuInstr3_vextractps_EDX_XMM1_0FFh_icebp_c32, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10431 { bs3CpuInstr3_vextractps_FSxBX_XMM1_000h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10432 { bs3CpuInstr3_vextractps_FSxBX_XMM1_001h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10433 { bs3CpuInstr3_vextractps_FSxBX_XMM1_002h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10434 { bs3CpuInstr3_vextractps_FSxBX_XMM1_003h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10435 { bs3CpuInstr3_vextractps_FSxBX_XMM1_032h_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10436 { bs3CpuInstr3_vextractps_FSxBX_XMM1_0FFh_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10514 10437 }; 10515 10438 static BS3CPUINSTR3_TEST2_T const s_aTests64[] = 10516 10439 { 10517 { bs3CpuInstr3_extractps_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10518 { bs3CpuInstr3_extractps_EDX_XMM1_001h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10519 { bs3CpuInstr3_extractps_EDX_XMM1_002h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10520 { bs3CpuInstr3_extractps_EDX_XMM1_003h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10521 { bs3CpuInstr3_extractps_EDX_XMM1_032h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10522 { bs3CpuInstr3_extractps_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10523 { bs3CpuInstr3_extractps_FSxBX_XMM1_000h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10524 { bs3CpuInstr3_extractps_FSxBX_XMM1_001h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10525 { bs3CpuInstr3_extractps_FSxBX_XMM1_002h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10526 { bs3CpuInstr3_extractps_FSxBX_XMM1_003h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10527 { bs3CpuInstr3_extractps_FSxBX_XMM1_032h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10528 { bs3CpuInstr3_extractps_FSxBX_XMM1_0FFh_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10529 10530 { bs3CpuInstr3_vextractps_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10531 { bs3CpuInstr3_vextractps_EDX_XMM1_001h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10532 { bs3CpuInstr3_vextractps_EDX_XMM1_002h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10533 { bs3CpuInstr3_vextractps_EDX_XMM1_003h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10534 { bs3CpuInstr3_vextractps_EDX_XMM1_032h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10535 { bs3CpuInstr3_vextractps_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 2,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10536 { bs3CpuInstr3_vextractps_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues00), s_aValues00 },10537 { bs3CpuInstr3_vextractps_FSxBX_XMM1_001h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues01), s_aValues01 },10538 { bs3CpuInstr3_vextractps_FSxBX_XMM1_002h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10539 { bs3CpuInstr3_vextractps_FSxBX_XMM1_003h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10540 { bs3CpuInstr3_vextractps_FSxBX_XMM1_032h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues02), s_aValues02 },10541 { bs3CpuInstr3_vextractps_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,1, RT_ELEMENTS(s_aValues03), s_aValues03 },10542 10543 { bs3CpuInstr3_extractps_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues00), s_aValues00 },10544 { bs3CpuInstr3_extractps_R9D_XMM8_001h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues01), s_aValues01 },10545 { bs3CpuInstr3_extractps_R9D_XMM8_002h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues02), s_aValues02 },10546 { bs3CpuInstr3_extractps_R9D_XMM8_003h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues03), s_aValues03 },10547 { bs3CpuInstr3_extractps_R9D_XMM8_032h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues02), s_aValues02 },10548 { bs3CpuInstr3_extractps_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues03), s_aValues03 },10549 { bs3CpuInstr3_extractps_FSxBX_XMM8_000h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues00), s_aValues00 },10550 { bs3CpuInstr3_extractps_FSxBX_XMM8_001h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues01), s_aValues01 },10551 { bs3CpuInstr3_extractps_FSxBX_XMM8_002h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues02), s_aValues02 },10552 { bs3CpuInstr3_extractps_FSxBX_XMM8_003h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues03), s_aValues03 },10553 { bs3CpuInstr3_extractps_FSxBX_XMM8_032h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues02), s_aValues02 },10554 { bs3CpuInstr3_extractps_FSxBX_XMM8_0FFh_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues03), s_aValues03 },10555 10556 { bs3CpuInstr3_vextractps_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues00), s_aValues00 },10557 { bs3CpuInstr3_vextractps_R9D_XMM8_001h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues01), s_aValues01 },10558 { bs3CpuInstr3_vextractps_R9D_XMM8_002h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues02), s_aValues02 },10559 { bs3CpuInstr3_vextractps_R9D_XMM8_003h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues03), s_aValues03 },10560 { bs3CpuInstr3_vextractps_R9D_XMM8_032h_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues02), s_aValues02 },10561 { bs3CpuInstr3_vextractps_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, 32, false, true, 9,8, RT_ELEMENTS(s_aValues03), s_aValues03 },10562 { bs3CpuInstr3_vextractps_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues00), s_aValues00 },10563 { bs3CpuInstr3_vextractps_FSxBX_XMM8_001h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues01), s_aValues01 },10564 { bs3CpuInstr3_vextractps_FSxBX_XMM8_002h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues02), s_aValues02 },10565 { bs3CpuInstr3_vextractps_FSxBX_XMM8_003h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues03), s_aValues03 },10566 { bs3CpuInstr3_vextractps_FSxBX_XMM8_032h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues02), s_aValues02 },10567 { bs3CpuInstr3_vextractps_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true, 255,8, RT_ELEMENTS(s_aValues03), s_aValues03 },10440 { bs3CpuInstr3_extractps_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10441 { bs3CpuInstr3_extractps_EDX_XMM1_001h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10442 { bs3CpuInstr3_extractps_EDX_XMM1_002h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10443 { bs3CpuInstr3_extractps_EDX_XMM1_003h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10444 { bs3CpuInstr3_extractps_EDX_XMM1_032h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10445 { bs3CpuInstr3_extractps_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10446 { bs3CpuInstr3_extractps_FSxBX_XMM1_000h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10447 { bs3CpuInstr3_extractps_FSxBX_XMM1_001h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10448 { bs3CpuInstr3_extractps_FSxBX_XMM1_002h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10449 { bs3CpuInstr3_extractps_FSxBX_XMM1_003h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10450 { bs3CpuInstr3_extractps_FSxBX_XMM1_032h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10451 { bs3CpuInstr3_extractps_FSxBX_XMM1_0FFh_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10452 10453 { bs3CpuInstr3_vextractps_EDX_XMM1_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10454 { bs3CpuInstr3_vextractps_EDX_XMM1_001h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10455 { bs3CpuInstr3_vextractps_EDX_XMM1_002h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10456 { bs3CpuInstr3_vextractps_EDX_XMM1_003h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10457 { bs3CpuInstr3_vextractps_EDX_XMM1_032h_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10458 { bs3CpuInstr3_vextractps_EDX_XMM1_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, EDX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10459 { bs3CpuInstr3_vextractps_FSxBX_XMM1_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10460 { bs3CpuInstr3_vextractps_FSxBX_XMM1_001h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10461 { bs3CpuInstr3_vextractps_FSxBX_XMM1_002h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10462 { bs3CpuInstr3_vextractps_FSxBX_XMM1_003h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10463 { bs3CpuInstr3_vextractps_FSxBX_XMM1_032h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10464 { bs3CpuInstr3_vextractps_FSxBX_XMM1_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM1, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10465 10466 { bs3CpuInstr3_extractps_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10467 { bs3CpuInstr3_extractps_R9D_XMM8_001h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10468 { bs3CpuInstr3_extractps_R9D_XMM8_002h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10469 { bs3CpuInstr3_extractps_R9D_XMM8_003h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10470 { bs3CpuInstr3_extractps_R9D_XMM8_032h_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10471 { bs3CpuInstr3_extractps_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_SSE4_1, 4, R9D, XMM8, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10472 { bs3CpuInstr3_extractps_FSxBX_XMM8_000h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10473 { bs3CpuInstr3_extractps_FSxBX_XMM8_001h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10474 { bs3CpuInstr3_extractps_FSxBX_XMM8_002h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10475 { bs3CpuInstr3_extractps_FSxBX_XMM8_003h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10476 { bs3CpuInstr3_extractps_FSxBX_XMM8_032h_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10477 { bs3CpuInstr3_extractps_FSxBX_XMM8_0FFh_icebp_c64, 255, RM_MEM32, T_SSE4_1, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10478 10479 { bs3CpuInstr3_vextractps_R9D_XMM8_000h_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10480 { bs3CpuInstr3_vextractps_R9D_XMM8_001h_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10481 { bs3CpuInstr3_vextractps_R9D_XMM8_002h_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10482 { bs3CpuInstr3_vextractps_R9D_XMM8_003h_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10483 { bs3CpuInstr3_vextractps_R9D_XMM8_032h_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10484 { bs3CpuInstr3_vextractps_R9D_XMM8_0FFh_icebp_c64, 255, RM_REG, T_AVX_128, 4, R9D, XMM8, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10485 { bs3CpuInstr3_vextractps_FSxBX_XMM8_000h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10486 { bs3CpuInstr3_vextractps_FSxBX_XMM8_001h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues01), s_aValues01 }, 10487 { bs3CpuInstr3_vextractps_FSxBX_XMM8_002h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10488 { bs3CpuInstr3_vextractps_FSxBX_XMM8_003h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10489 { bs3CpuInstr3_vextractps_FSxBX_XMM8_032h_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues02), s_aValues02 }, 10490 { bs3CpuInstr3_vextractps_FSxBX_XMM8_0FFh_icebp_c64, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, FSxBX, XMM8, RT_ELEMENTS(s_aValues03), s_aValues03 }, 10568 10491 }; 10569 10492 static BS3CPUINSTR3_TEST2_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST2_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-x-regs.c32
r106736 r106864 34 34 * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0 35 35 */ 36 37 /** Simple unadorned x86 family register names to be used in instruction test value tables. */38 36 39 37 /** … … 43 41 * (R16..31) extended x86 general purpose registers -- which VirtualBox 44 42 * does not yet support and Intel are not yet shipping. 43 * 44 * 8-bit 'hi' register support not yet implemented (no clients). 45 * 46 * GPR register sizes returned by the size functions and set by the set 47 * function are 8 bytes in long mode, 4 bytes in other modes. 48 * 49 * Setting an 8, 16, or 32-bit GPR zeros out the higher bits. 50 * 51 * Setting a 128-bit XMM register zeros out the higher bits only if the 52 * fZeroYMMHi flag is set. 45 53 */ 54 55 /** Simple unadorned x86 family register names to be used in instruction test value tables. */ 46 56 47 57 /** x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF … … 79 89 80 90 #define BS3_REGISTER_FAMILY_8BIT_L 0x00 81 #define BS3_REGISTER_FAMILY_8BIT_L_LOW (0x00 | BS3_REGISTER_FAMILY_OTHER_TODO) 82 #define AL (BS3_REGISTER_FAMILY_8BIT_L_LOW | 0) 83 #define CL (BS3_REGISTER_FAMILY_8BIT_L_LOW | 1) 84 #define DL (BS3_REGISTER_FAMILY_8BIT_L_LOW | 2) 85 #define BL (BS3_REGISTER_FAMILY_8BIT_L_LOW | 3) 86 #define SPL (BS3_REGISTER_FAMILY_8BIT_L_LOW | 4) 87 #define BPL (BS3_REGISTER_FAMILY_8BIT_L_LOW | 5) 88 #define SIL (BS3_REGISTER_FAMILY_8BIT_L_LOW | 6) 89 #define DIL (BS3_REGISTER_FAMILY_8BIT_L_LOW | 7) 90 #define R8B (BS3_REGISTER_FAMILY_8BIT_L_LOW | 8) 91 #define R9B (BS3_REGISTER_FAMILY_8BIT_L_LOW | 9) 92 #define R10B (BS3_REGISTER_FAMILY_8BIT_L_LOW | 10) 93 #define R11B (BS3_REGISTER_FAMILY_8BIT_L_LOW | 11) 94 #define R12B (BS3_REGISTER_FAMILY_8BIT_L_LOW | 12) 95 #define R13B (BS3_REGISTER_FAMILY_8BIT_L_LOW | 13) 96 #define R14B (BS3_REGISTER_FAMILY_8BIT_L_LOW | 14) 97 #define R15B (BS3_REGISTER_FAMILY_8BIT_L_LOW | 15) 91 #define AL (BS3_REGISTER_FAMILY_8BIT_L | 0) 92 #define CL (BS3_REGISTER_FAMILY_8BIT_L | 1) 93 #define DL (BS3_REGISTER_FAMILY_8BIT_L | 2) 94 #define BL (BS3_REGISTER_FAMILY_8BIT_L | 3) 95 #define SPL (BS3_REGISTER_FAMILY_8BIT_L | 4) 96 #define BPL (BS3_REGISTER_FAMILY_8BIT_L | 5) 97 #define SIL (BS3_REGISTER_FAMILY_8BIT_L | 6) 98 #define DIL (BS3_REGISTER_FAMILY_8BIT_L | 7) 99 #define R8B (BS3_REGISTER_FAMILY_8BIT_L | 8) 100 #define R9B (BS3_REGISTER_FAMILY_8BIT_L | 9) 101 #define R10B (BS3_REGISTER_FAMILY_8BIT_L | 10) 102 #define R11B (BS3_REGISTER_FAMILY_8BIT_L | 11) 103 #define R12B (BS3_REGISTER_FAMILY_8BIT_L | 12) 104 #define R13B (BS3_REGISTER_FAMILY_8BIT_L | 13) 105 #define R14B (BS3_REGISTER_FAMILY_8BIT_L | 14) 106 #define R15B (BS3_REGISTER_FAMILY_8BIT_L | 15) 98 107 #define BS3_REGISTER_FAMILY_8BIT_L_APX (0x10 | BS3_REGISTER_FAMILY_APX_TODO) 99 108 #define R16B (BS3_REGISTER_FAMILY_8BIT_L_APX | 16) … … 218 227 #define R30 (BS3_REGISTER_FAMILY_64BIT_APX | 30) 219 228 #define R31 (BS3_REGISTER_FAMILY_64BIT_APX | 31) 229 230 #define BS3_REGISTER_IS_GPR(reg) (((reg) & BS3_REGISTER_FAMILY_MASK) <= BS3_REGISTER_FAMILY_64BIT) 220 231 221 232 #define BS3_REGISTER_FAMILY_XMM 0x80 … … 449 460 } 450 461 451 /**452 * Set a register within a testing context. Intended to support a broad453 * range of register types; currently supports MMX, XMM, YMM, and general454 * purpose registers (except 8-bit sub-registers); and setting up FS:xGPR455 * for memory reference operations.456 *457 * Other regs known to this subsystem are either so far unused by458 * VirtualBox (ZMM, k[0-7], GPRs >15); or not used by tests which call459 * this (8-bit sub-registers, segment registers, xIP, xFL).460 *461 * @param pSetRegCtx Arguments to this function (see below).462 * @param uReg The register identity value to modify within that context.463 * @param pu256Val Pointer to the data to store there.464 * @returns bool Whether the store succeeded (currently ignored by callers).465 */466 467 462 typedef struct BS3SETREGCTX 468 463 { … … 478 473 typedef BS3SETREGCTX BS3_FAR *PBS3SETREGCTX; 479 474 475 /** 476 * Get the size of a register from its identity value used in instruction test value tables. 477 * This returns the size of sub-registers, e.g. AL = 1. 478 * 479 * @returns Size of register in bytes. Returns 0 for currently unsupported registers. 480 */ 481 static size_t bs3CpuInstrXGetRegisterSize(PBS3SETREGCTX pSetRegCtx, uint16_t uReg) 482 { 483 switch (uReg & BS3_REGISTER_FAMILY_MASK) 484 { 485 case BS3_REGISTER_FAMILY_8BIT_L: 486 return 1; 487 case BS3_REGISTER_FAMILY_16BIT: 488 return 2; 489 case BS3_REGISTER_FAMILY_32BIT: 490 return 4; 491 case BS3_REGISTER_FAMILY_64BIT: 492 return 8; 493 case BS3_REGISTER_FAMILY_XMM: 494 return 16; 495 case BS3_REGISTER_FAMILY_YMM: 496 return 32; 497 case BS3_REGISTER_FAMILY_OTHER: 498 if (BS3_REGISTER_IS_MMX(uReg)) 499 return 8; 500 } 501 return 0; 502 } 503 504 /** 505 * Get the full size of a register from its identity value used in instruction test value tables. 506 * This returns the full size of the register containing a sub-register, e.g. AL = 4 or 8. 507 * 508 * @returns Size of register in bytes. Returns 0 for currently unsupported registers. 509 */ 510 static size_t bs3CpuInstrXGetRegisterFullSize(PBS3SETREGCTX pSetRegCtx, uint16_t uReg) 511 { 512 if (BS3_REGISTER_IS_GPR(uReg)) 513 return BS3_MODE_IS_64BIT_CODE(pSetRegCtx->bMode) ? 8 : 4; 514 return bs3CpuInstrXGetRegisterSize(pSetRegCtx, uReg); 515 } 516 517 /** 518 * Set a register within a testing context. Intended to support a broad 519 * range of register types; currently supports MMX, XMM, YMM, and general 520 * purpose registers (except 8-bit sub-registers); and setting up FS:xGPR 521 * for memory reference operations. 522 * 523 * Other regs known to this subsystem are either so far unused by 524 * VirtualBox (ZMM, k[0-7], GPRs >15); or not used by tests which call 525 * this (8-bit sub-registers, segment registers, xIP, xFL). 526 * 527 * @param pSetRegCtx Arguments to this function (see below). 528 * @param uReg The register identity value to modify within that context. 529 * @param pu256Val Pointer to the data to store there. 530 * @returns bool Whether the store succeeded (currently ignored by callers). 531 */ 532 480 533 static bool Bs3ExtCtxSetReg_int(PBS3SETREGCTX pSetRegCtx, uint16_t uReg, PCRTUINT256U pu256Val) 481 534 { … … 497 550 switch (uRegSet) 498 551 { 552 case BS3_REGISTER_FAMILY_8BIT_L: 553 return Bs3RegCtxSetGpr(pSetRegCtx->pCtx, uRegNum, pu256Val->au8[0], bs3CpuInstrXGetRegisterFullSize(pSetRegCtx, uReg)); 499 554 case BS3_REGISTER_FAMILY_16BIT: 500 return Bs3RegCtxSetGpr(pSetRegCtx->pCtx, uRegNum, pu256Val->au16[0], 2);555 return Bs3RegCtxSetGpr(pSetRegCtx->pCtx, uRegNum, pu256Val->au16[0], bs3CpuInstrXGetRegisterFullSize(pSetRegCtx, uReg)); 501 556 case BS3_REGISTER_FAMILY_32BIT: 502 return Bs3RegCtxSetGpr(pSetRegCtx->pCtx, uRegNum, pu256Val->au32[0], 4);557 return Bs3RegCtxSetGpr(pSetRegCtx->pCtx, uRegNum, pu256Val->au32[0], bs3CpuInstrXGetRegisterFullSize(pSetRegCtx, uReg)); 503 558 case BS3_REGISTER_FAMILY_64BIT: 504 return Bs3RegCtxSetGpr(pSetRegCtx->pCtx, uRegNum, pu256Val->au64[0], BS3_MODE_IS_64BIT_CODE(pSetRegCtx->bMode) ? 8 : 4);559 return Bs3RegCtxSetGpr(pSetRegCtx->pCtx, uRegNum, pu256Val->au64[0], bs3CpuInstrXGetRegisterFullSize(pSetRegCtx, uReg)); 505 560 case BS3_REGISTER_FAMILY_XMM: 506 561 if (pSetRegCtx->fZeroYMMHi) … … 517 572 return Bs3ExtCtxSetMm(pSetRegCtx->pExtCtx, uRegNum, pu256Val->au64[0], BS3EXTCTXTOPMM_SET); 518 573 break; 519 case BS3_REGISTER_FAMILY_8BIT_L:520 574 case BS3_REGISTER_FAMILY_ZMM: 521 575 default: … … 544 598 switch (uReg & BS3_REGISTER_FAMILY_MASK) 545 599 { 600 case BS3_REGISTER_FAMILY_8BIT_L: 601 Bs3StrPrintf(pszValBuf, 80, "%#04RX8", pu256Val->au8[0]); 602 break; 546 603 case BS3_REGISTER_FAMILY_16BIT: 547 604 Bs3StrPrintf(pszValBuf, 80, "%#06RX16", pu256Val->au16[0]);
Note:
See TracChangeset
for help on using the changeset viewer.