Changeset 66992 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- May 19, 2017 10:25:58 PM (8 years ago)
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
r66991 r66992 2730 2730 /** 2731 2731 * Wip - VEX.W ignored. 2732 */ 2733 static unsigned BS3_NEAR_CODE 2734 Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_OR_ViceVersa(PBS3CG1STATE pThis, unsigned iEncoding) 2735 { 2736 unsigned off; 2737 switch (iEncoding) 2738 { 2739 case 20: /* Switch to 256-bit operands. */ 2740 pThis->aOperands[pThis->iRegOp].idxFieldBase = BS3CG1DST_YMM0; 2741 pThis->aOperands[pThis->iRegOp].cbOp = 32; 2742 pThis->aOperands[pThis->iRmOp ].cbOp = 32; 2743 /* fall thru */ 2744 case 0: 2745 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/); 2746 off = Bs3Cg1InsertOpcodes(pThis, off); 2747 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 0, 0); 2748 iEncoding += !BS3CG1_IS_64BIT_TARGET(pThis) ? 1 : 0; 2749 break; 2750 #if ARCH_BITS == 64 2751 case 1: 2752 case 21: 2753 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 0 /*~R*/); 2754 off = Bs3Cg1InsertOpcodes(pThis, off); 2755 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 7 + 8, 0); 2756 break; 2757 #endif 2758 case 2: 2759 case 22: 2760 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xe /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/); 2761 off = Bs3Cg1InsertOpcodes(pThis, off); 2762 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 0, 0); 2763 pThis->fInvalidEncoding = true; 2764 break; 2765 case 3: 2766 case 23: 2767 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2768 off = Bs3Cg1InsertOpcodes(pThis, off); 2769 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 1, 0); 2770 break; 2771 case 4: 2772 case 24: 2773 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W-ignored*/); 2774 off = Bs3Cg1InsertOpcodes(pThis, off); 2775 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 5, 0); 2776 iEncoding += !BS3CG1_IS_64BIT_TARGET(pThis) ? 3 : 0; 2777 break; 2778 #if ARCH_BITS == 64 2779 case 5: 2780 case 25: 2781 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 0 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2782 off = Bs3Cg1InsertOpcodes(pThis, off); 2783 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 5+8, 0); 2784 break; 2785 case 6: 2786 case 26: 2787 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 0 /*~B-ignored*/, 0 /*W*/); 2788 off = Bs3Cg1InsertOpcodes(pThis, off); 2789 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 1, 0); 2790 break; 2791 case 7: 2792 case 27: 2793 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 0 /*~X-ignored*/, 1 /*~B*/, 0 /*W*/); 2794 off = Bs3Cg1InsertOpcodes(pThis, off); 2795 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 2, 0); 2796 break; 2797 #endif 2798 case 8: 2799 case 28: 2800 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0 /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2801 off = Bs3Cg1InsertOpcodes(pThis, off); 2802 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 5, 0); 2803 pThis->fInvalidEncoding = true; 2804 break; 2805 case 9: 2806 case 29: 2807 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 7 /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2808 off = Bs3Cg1InsertOpcodes(pThis, off); 2809 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 2, 0); 2810 pThis->fInvalidEncoding = true; 2811 iEncoding += 10; 2812 break; 2813 2814 default: 2815 return 0; 2816 } 2817 pThis->cbCurInstr = off; 2818 return iEncoding + 1; 2819 } 2820 2821 2822 2823 /** 2824 * Wip - VEX.W ignored. 2732 2825 * Lig - VEX.L ignored. 2733 2826 */ … … 3921 4014 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_WO; 3922 4015 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 3923 pThis->aOperands[0].idxFieldBase = BS3CG1DST_INVALID;3924 4016 pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0_LO; 3925 4017 break; … … 3935 4027 pThis->aOperands[0].idxFieldBase = BS3CG1DST_INVALID; 3936 4028 pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0_LO; 4029 break; 4030 4031 case BS3CG1ENC_VEX_MODRM_Mps_WO_Vps: 4032 case BS3CG1ENC_VEX_MODRM_Mpd_WO_Vpd: 4033 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_OR_ViceVersa; 4034 pThis->iRmOp = 0; 4035 pThis->iRegOp = 1; 4036 pThis->aOperands[0].cbOp = 16; 4037 pThis->aOperands[1].cbOp = 16; 4038 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_WO; 4039 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 4040 pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0; 3937 4041 break; 3938 4042 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h
r66991 r66992 168 168 BS3CG1ENC_VEX_MODRM_Md_WO_Vss, 169 169 BS3CG1ENC_VEX_MODRM_Mq_WO_Vsd, 170 BS3CG1ENC_VEX_MODRM_Mps_WO_Vps, 171 BS3CG1ENC_VEX_MODRM_Mpd_WO_Vpd, 170 172 BS3CG1ENC_VEX_MODRM_Uss_WO_HssHi_Vss, 171 173 BS3CG1ENC_VEX_MODRM_Usd_WO_HsdHi_Vsd,
Note:
See TracChangeset
for help on using the changeset viewer.