Changeset 66909 in vbox for trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
- Timestamp:
- May 16, 2017 1:29:44 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
r66906 r66909 104 104 105 105 /** 106 * Encoder callback. 107 * @returns Next encoding. If equal or less to @a iEncoding, no 108 * further encodings are available for testing. 109 * @param pThis The state. 110 * @param iEncoding The encoding. 111 */ 112 typedef BS3_DECL_NEAR(unsigned) FNBS3CG1ENCODER(struct BS3CG1STATE *pThis, unsigned iEncoding); 113 /** Pointer to a encoder callback. */ 114 typedef FNBS3CG1ENCODER *PFNBS3CG1ENCODER; 115 116 117 /** 106 118 * The state. 107 119 */ … … 138 150 /** Opcode bytes. */ 139 151 uint8_t abOpcodes[4]; 152 /** The instruction encoder. */ 153 PFNBS3CG1ENCODER pfnEncoder; 140 154 141 155 /** The length of the mnemonic. */ … … 2148 2162 2149 2163 2150 static unsigned B s3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd(PBS3CG1STATE pThis, unsigned iEncoding)2164 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd(PBS3CG1STATE pThis, unsigned iEncoding) 2151 2165 { 2152 2166 unsigned off; … … 2390 2404 2391 2405 2392 static unsigned B s3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething(PBS3CG1STATE pThis, unsigned iEncoding)2406 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething(PBS3CG1STATE pThis, unsigned iEncoding) 2393 2407 { 2394 2408 unsigned off; … … 2473 2487 2474 2488 2475 static unsigned B s3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig(PBS3CG1STATE pThis, unsigned iEncoding)2489 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig(PBS3CG1STATE pThis, unsigned iEncoding) 2476 2490 { 2477 2491 unsigned off; … … 2679 2693 } 2680 2694 2695 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_WsomethingWO_Vsomething_Wip(PBS3CG1STATE pThis, unsigned iEncoding) 2696 { 2697 unsigned off; 2698 switch (iEncoding) 2699 { 2700 /* 128-bit wide stuff goes first, then we'll update the operand widths afterwards. */ 2701 case 0: 2702 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/); 2703 off = Bs3Cg1InsertOpcodes(pThis, off); 2704 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0); 2705 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0; 2706 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1; 2707 break; 2708 2709 case 1: 2710 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2711 off = Bs3Cg1InsertOpcodes(pThis, off); 2712 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5); 2713 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5; 2714 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4; 2715 break; 2716 case 2: 2717 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored*/); 2718 off = Bs3Cg1InsertOpcodes(pThis, off); 2719 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 5, 4); 2720 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 4; 2721 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 5; 2722 break; 2723 case 3: 2724 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/); 2725 off = Bs3Cg1InsertOpcodes(pThis, off); 2726 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO); 2727 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 2; 2728 break; 2729 case 4: 2730 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2731 off = Bs3Cg1InsertOpcodes(pThis, off); 2732 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO); 2733 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3; 2734 break; 2735 case 5: 2736 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored */); 2737 off = Bs3Cg1InsertOpcodes(pThis, off); 2738 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO); 2739 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3; 2740 break; 2741 case 6: 2742 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/); 2743 off = Bs3Cg1InsertOpcodes(pThis, off); 2744 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO); 2745 if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType)) 2746 pThis->bAlignmentXcpt = X86_XCPT_GP; 2747 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3; 2748 break; 2749 case 7: 2750 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2751 off = Bs3Cg1InsertOpcodes(pThis, off); 2752 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO); 2753 if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType)) 2754 pThis->bAlignmentXcpt = X86_XCPT_GP; 2755 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3; 2756 break; 2757 /* 128-bit invalid encodings: */ 2758 case 8: 2759 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xe /*~V*/, 0 /*L*/, 1 /*~R*/); /* Bad V value */ 2760 off = Bs3Cg1InsertOpcodes(pThis, off); 2761 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0); 2762 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0; 2763 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1; 2764 pThis->aOperands[pThis->iRmOp ].enmLocation = BS3CG1OPLOC_CTX_ZX_VLMAX; 2765 pThis->fInvalidEncoding = true; 2766 break; 2767 case 9: 2768 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0 /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2769 off = Bs3Cg1InsertOpcodes(pThis, off); 2770 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5); 2771 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5; 2772 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4; 2773 pThis->fInvalidEncoding = true; 2774 iEncoding = 20-1; 2775 break; 2776 2777 case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: 2778 /* fall thru */ 2779 2780 /* 256-bit encodings: */ 2781 case 20: 2782 iEncoding = 20; 2783 pThis->aOperands[pThis->iRmOp ].cbOp = 32; 2784 pThis->aOperands[pThis->iRmOp ].idxFieldBase = BS3CG1DST_YMM0; 2785 pThis->aOperands[pThis->iRmOp ].enmLocation = BS3CG1OPLOC_CTX_ZX_VLMAX; 2786 pThis->aOperands[pThis->iRegOp].cbOp = 32; 2787 pThis->aOperands[pThis->iRegOp].idxFieldBase = BS3CG1DST_YMM0; 2788 2789 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/); 2790 off = Bs3Cg1InsertOpcodes(pThis, off); 2791 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0); 2792 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0; 2793 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1; 2794 break; 2795 2796 #if 0 2797 else if (iEncoding == 10) 2798 { 2799 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/); 2800 off = Bs3Cg1InsertOpcodes(pThis, off); 2801 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0); 2802 pThis->aOperands[pThis->iRmOp].cbOp = 32; 2803 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM0; 2804 pThis->aOperands[pThis->iRegOp].cbOp = 32; 2805 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM1; 2806 } 2807 else if (iEncoding == 11) 2808 { 2809 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2810 off = Bs3Cg1InsertOpcodes(pThis, off); 2811 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5); 2812 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5; 2813 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4; 2814 } 2815 else if (iEncoding == 12) 2816 { 2817 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored*/); 2818 off = Bs3Cg1InsertOpcodes(pThis, off); 2819 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 5, 4); 2820 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM4; 2821 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM5; 2822 } 2823 else if (iEncoding == 13) 2824 { 2825 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/); 2826 off = Bs3Cg1InsertOpcodes(pThis, off); 2827 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM); 2828 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM2; 2829 } 2830 else if (iEncoding == 14) 2831 { 2832 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2833 off = Bs3Cg1InsertOpcodes(pThis, off); 2834 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM); 2835 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3; 2836 } 2837 else if (iEncoding == 15) 2838 { 2839 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored */); 2840 off = Bs3Cg1InsertOpcodes(pThis, off); 2841 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM); 2842 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3; 2843 } 2844 else if (iEncoding == 16) 2845 { 2846 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/); 2847 off = Bs3Cg1InsertOpcodes(pThis, off); 2848 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM); 2849 if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType)) 2850 pThis->bAlignmentXcpt = X86_XCPT_GP; 2851 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3; 2852 } 2853 else if (iEncoding == 17) 2854 { 2855 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2856 off = Bs3Cg1InsertOpcodes(pThis, off); 2857 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM); 2858 if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType)) 2859 pThis->bAlignmentXcpt = X86_XCPT_GP; 2860 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3; 2861 } 2862 /* 256-bit invalid encodings: */ 2863 else if (iEncoding == 18) 2864 { 2865 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xe /*~V - invalid */, 1 /*L*/, 1 /*~R*/); /* Bad V value */ 2866 off = Bs3Cg1InsertOpcodes(pThis, off); 2867 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0); 2868 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM0; 2869 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM1; 2870 pThis->fInvalidEncoding = true; 2871 } 2872 else if (iEncoding == 19) 2873 { 2874 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0 /*~V - invalid */, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2875 off = Bs3Cg1InsertOpcodes(pThis, off); 2876 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5); 2877 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5; 2878 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4; 2879 pThis->fInvalidEncoding = true; 2880 } 2881 else if (iEncoding == 20) 2882 { 2883 pThis->abCurInstr[0] = P_RN; 2884 off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2885 off = Bs3Cg1InsertOpcodes(pThis, off); 2886 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5); 2887 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5; 2888 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4; 2889 pThis->fInvalidEncoding = true; 2890 } 2891 else if (iEncoding == 21) 2892 { 2893 pThis->abCurInstr[0] = P_RZ; 2894 off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2895 off = Bs3Cg1InsertOpcodes(pThis, off); 2896 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5); 2897 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5; 2898 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4; 2899 pThis->fInvalidEncoding = true; 2900 } 2901 else if (iEncoding == 22) 2902 { 2903 pThis->abCurInstr[0] = P_OZ; 2904 off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2905 off = Bs3Cg1InsertOpcodes(pThis, off); 2906 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5); 2907 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5; 2908 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4; 2909 pThis->fInvalidEncoding = true; 2910 } 2911 else if (iEncoding == 23) 2912 { 2913 pThis->abCurInstr[0] = P_LK; 2914 off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2915 off = Bs3Cg1InsertOpcodes(pThis, off); 2916 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5); 2917 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5; 2918 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4; 2919 pThis->fInvalidEncoding = true; 2920 } 2921 #if ARCH_BITS == 64 2922 /* 64-bit mode registers */ 2923 else if (BS3_MODE_IS_64BIT_CODE(pThis->bMode)) 2924 { 2925 if (iEncoding == 24) 2926 { 2927 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 0 /*~R*/); 2928 off = Bs3Cg1InsertOpcodes(pThis, off); 2929 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 3, 4); 2930 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM4; 2931 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM11; 2932 } 2933 else if (iEncoding == 25) 2934 { 2935 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 0 /*~R*/, 1 /*~X*/, 0 /*~B*/, 0 /*W*/); 2936 off = Bs3Cg1InsertOpcodes(pThis, off); 2937 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 4); 2938 pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM12; 2939 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM9; 2940 } 2941 else 2942 return 0; 2943 } 2944 #endif 2945 else 2946 return 0; 2947 #endif 2948 2949 default: 2950 return 0; 2951 } 2952 2953 pThis->cbCurInstr = off; 2954 return iEncoding + 1; 2955 } 2956 2957 2681 2958 #endif /* BS3CG1_WITH_VEX */ 2682 2959 … … 2696 2973 { 2697 2974 pThis->bAlignmentXcpt = UINT8_MAX; 2975 if (pThis->pfnEncoder) 2976 return pThis->pfnEncoder(pThis, iEncoding); 2698 2977 2699 2978 switch (pThis->enmEncoding) … … 2771 3050 */ 2772 3051 #ifdef BS3CG1_WITH_VEX 2773 case BS3CG1ENC_VEX_MODRM_Vps_WO_Wps: 2774 case BS3CG1ENC_VEX_MODRM_Vpd_WO_Wpd: 2775 return Bs3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd(pThis, iEncoding); 2776 2777 case BS3CG1ENC_VEX_MODRM_Vss_WO_HdqCss_Uss: 2778 case BS3CG1ENC_VEX_MODRM_Vsd_WO_HdqCsd_Usd: 2779 return Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething(pThis, iEncoding); 2780 2781 case BS3CG1ENC_VEX_MODRM_VsdZx_WO_Mq: 2782 case BS3CG1ENC_VEX_MODRM_VssZx_WO_Wss: 3052 case BS3CG1ENC_VEX_MODRM_VssZx_WO_Md: 2783 3053 return Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig(pThis, iEncoding); 2784 3054 … … 2819 3089 pThis->fSameRingNotOkay = false; 2820 3090 pThis->cbOperand = 0; 3091 pThis->pfnEncoder = NULL; 2821 3092 2822 3093 switch (pThis->enmEncoding) … … 3020 3291 case BS3CG1ENC_VEX_MODRM_Vps_WO_Wps: 3021 3292 case BS3CG1ENC_VEX_MODRM_Vpd_WO_Wpd: 3293 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd; 3022 3294 pThis->iRmOp = 1; 3023 3295 pThis->iRegOp = 0; … … 3028 3300 break; 3029 3301 3030 case BS3CG1ENC_VEX_MODRM_VssZx_WO_Wss: 3302 case BS3CG1ENC_VEX_MODRM_VssZx_WO_Md: 3303 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig; 3031 3304 pThis->iRmOp = 1; 3032 3305 pThis->iRegOp = 0; … … 3040 3313 3041 3314 case BS3CG1ENC_VEX_MODRM_Vss_WO_HdqCss_Uss: 3315 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething; 3042 3316 pThis->iRegOp = 0; 3043 3317 pThis->iRmOp = 2; … … 3054 3328 3055 3329 case BS3CG1ENC_VEX_MODRM_VsdZx_WO_Mq: 3330 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig; 3056 3331 pThis->iRmOp = 1; 3057 3332 pThis->iRegOp = 0; … … 3065 3340 3066 3341 case BS3CG1ENC_VEX_MODRM_Vsd_WO_HdqCsd_Usd: 3342 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething; 3067 3343 pThis->iRegOp = 0; 3068 3344 pThis->iRmOp = 2; … … 3076 3352 pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0; 3077 3353 pThis->aOperands[2].idxFieldBase = BS3CG1DST_XMM0_LO; 3354 break; 3355 3356 case BS3CG1ENC_VEX_MODRM_Wps_WO_Vps: 3357 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_WsomethingWO_Vsomething_Wip; 3358 pThis->iRmOp = 0; 3359 pThis->iRegOp = 1; 3360 pThis->aOperands[0].cbOp = 16; 3361 pThis->aOperands[1].cbOp = 16; 3362 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX_ZX_VLMAX; 3363 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 3364 pThis->aOperands[0].idxFieldBase = BS3CG1DST_XMM0; 3365 pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0; 3078 3366 break; 3079 3367
Note:
See TracChangeset
for help on using the changeset viewer.