Changeset 100580 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Jul 14, 2023 2:04:35 PM (19 months ago)
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac
r100574 r100580 3151 3151 %endif 3152 3152 3153 ; 3154 ; VINSERTI128 3155 ; 3156 EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, XMM3, 0FFh 3157 EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, FSxBX, 0FFh 3158 EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, XMM3, 000h 3159 EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, FSxBX, 000h 3160 3161 %if TMPL_BITS == 64 3162 EMIT_INSTR_PLUS_ICEBP vinserti128, YMM8, YMM9, XMM10, 0FFh 3163 EMIT_INSTR_PLUS_ICEBP vinserti128, YMM8, YMM9, FSxBX, 0FFh 3164 EMIT_INSTR_PLUS_ICEBP vinserti128, YMM8, YMM9, XMM10, 000h 3165 EMIT_INSTR_PLUS_ICEBP vinserti128, YMM8, YMM9, FSxBX, 000h 3166 %endif 3167 3168 ; 3169 ; VINSERTF128 3170 ; 3171 EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, XMM3, 0FFh 3172 EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, FSxBX, 0FFh 3173 EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, XMM3, 000h 3174 EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, FSxBX, 000h 3175 3176 %if TMPL_BITS == 64 3177 EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM8, YMM9, XMM10, 0FFh 3178 EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM8, YMM9, FSxBX, 0FFh 3179 EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM8, YMM9, XMM10, 000h 3180 EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM8, YMM9, FSxBX, 000h 3181 %endif 3153 3182 3154 3183 %endif ; BS3_INSTANTIATING_CMN -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r100574 r100580 7831 7831 { bs3CpuInstr3_mpsadbw_XMM8_XMM9_000h_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 8, 9, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7832 7832 { bs3CpuInstr3_mpsadbw_XMM8_FSxBX_000h_icebp_c64, 255, RM_MEM, T_SSE4_1, 8, 8, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7833 }; 7834 static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 7835 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 7836 return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 7837 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4)); 7838 } 7839 7840 7841 /* 7842 * VINSERTI128/VINSERTF128 - Insert Packed Integer Values. 7843 */ 7844 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vinserti128_YMM1_YMM2_XMM3_0FFh_icebp); 7845 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vinserti128_YMM1_YMM2_FSxBX_0FFh_icebp); 7846 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vinserti128_YMM1_YMM2_XMM3_000h_icebp); 7847 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vinserti128_YMM1_YMM2_FSxBX_000h_icebp); 7848 extern FNBS3FAR bs3CpuInstr3_vinserti128_YMM8_YMM9_XMM10_0FFh_icebp_c64; 7849 extern FNBS3FAR bs3CpuInstr3_vinserti128_YMM8_YMM9_FSxBX_0FFh_icebp_c64; 7850 extern FNBS3FAR bs3CpuInstr3_vinserti128_YMM8_YMM9_XMM10_000h_icebp_c64; 7851 extern FNBS3FAR bs3CpuInstr3_vinserti128_YMM8_YMM9_FSxBX_000h_icebp_c64; 7852 7853 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vinsertf128_YMM1_YMM2_XMM3_0FFh_icebp); 7854 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vinsertf128_YMM1_YMM2_FSxBX_0FFh_icebp); 7855 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vinsertf128_YMM1_YMM2_XMM3_000h_icebp); 7856 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vinsertf128_YMM1_YMM2_FSxBX_000h_icebp); 7857 extern FNBS3FAR bs3CpuInstr3_vinsertf128_YMM8_YMM9_XMM10_0FFh_icebp_c64; 7858 extern FNBS3FAR bs3CpuInstr3_vinsertf128_YMM8_YMM9_FSxBX_0FFh_icebp_c64; 7859 extern FNBS3FAR bs3CpuInstr3_vinsertf128_YMM8_YMM9_XMM10_000h_icebp_c64; 7860 extern FNBS3FAR bs3CpuInstr3_vinsertf128_YMM8_YMM9_FSxBX_000h_icebp_c64; 7861 7862 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_vinserti128_vinsertf128(uint8_t bMode) 7863 { 7864 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesFF[] = 7865 { 7866 { /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0), 7867 /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0), 7868 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 7869 { /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8), 7870 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 7871 /* => */ RTUINT256_INIT_C(0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8, 0x9192939495969798, 0x8182838485868788) }, 7872 }; 7873 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues00[] = 7874 { 7875 { /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0), 7876 /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0), 7877 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 7878 { /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8), 7879 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 7880 /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) }, 7881 }; 7882 7883 static BS3CPUINSTR3_TEST1_T const s_aTests16[] = 7884 { 7885 { bs3CpuInstr3_vinserti128_YMM1_YMM2_XMM3_0FFh_icebp_c16, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7886 { bs3CpuInstr3_vinserti128_YMM1_YMM2_FSxBX_0FFh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7887 { bs3CpuInstr3_vinserti128_YMM1_YMM2_XMM3_000h_icebp_c16, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7888 { bs3CpuInstr3_vinserti128_YMM1_YMM2_FSxBX_000h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7889 7890 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_XMM3_0FFh_icebp_c16, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7891 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_FSxBX_0FFh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7892 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_XMM3_000h_icebp_c16, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7893 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_FSxBX_000h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7894 }; 7895 static BS3CPUINSTR3_TEST1_T const s_aTests32[] = 7896 { 7897 { bs3CpuInstr3_vinserti128_YMM1_YMM2_XMM3_0FFh_icebp_c32, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7898 { bs3CpuInstr3_vinserti128_YMM1_YMM2_FSxBX_0FFh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7899 { bs3CpuInstr3_vinserti128_YMM1_YMM2_XMM3_000h_icebp_c32, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7900 { bs3CpuInstr3_vinserti128_YMM1_YMM2_FSxBX_000h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7901 7902 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_XMM3_0FFh_icebp_c32, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7903 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_FSxBX_0FFh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7904 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_XMM3_000h_icebp_c32, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7905 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_FSxBX_000h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7906 }; 7907 static BS3CPUINSTR3_TEST1_T const s_aTests64[] = 7908 { 7909 { bs3CpuInstr3_vinserti128_YMM1_YMM2_XMM3_0FFh_icebp_c64, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7910 { bs3CpuInstr3_vinserti128_YMM1_YMM2_FSxBX_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7911 { bs3CpuInstr3_vinserti128_YMM8_YMM9_XMM10_0FFh_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 9, 10, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7912 { bs3CpuInstr3_vinserti128_YMM8_YMM9_FSxBX_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 8, 9, 255, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7913 { bs3CpuInstr3_vinserti128_YMM1_YMM2_XMM3_000h_icebp_c64, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7914 { bs3CpuInstr3_vinserti128_YMM1_YMM2_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7915 { bs3CpuInstr3_vinserti128_YMM8_YMM9_XMM10_000h_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 9, 10, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7916 { bs3CpuInstr3_vinserti128_YMM8_YMM9_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 8, 9, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7917 7918 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_XMM3_0FFh_icebp_c64, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7919 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_FSxBX_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7920 { bs3CpuInstr3_vinsertf128_YMM8_YMM9_XMM10_0FFh_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 9, 10, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7921 { bs3CpuInstr3_vinsertf128_YMM8_YMM9_FSxBX_0FFh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 8, 9, 255, RT_ELEMENTS(s_aValuesFF), s_aValuesFF }, 7922 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_XMM3_000h_icebp_c64, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7923 { bs3CpuInstr3_vinsertf128_YMM1_YMM2_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7924 { bs3CpuInstr3_vinsertf128_YMM8_YMM9_XMM10_000h_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 9, 10, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7925 { bs3CpuInstr3_vinsertf128_YMM8_YMM9_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 8, 9, 255, RT_ELEMENTS(s_aValues00), s_aValues00 }, 7833 7926 }; 7834 7927 static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); … … 12836 12929 bs3CpuInstr3_vpbroadcastb_vpbroadcastw_vpbroadcastd_vpbroadcastq_vbroadcasti128, 0 } 12837 12930 #endif 12931 #if defined (ALL_TESTS) 12932 { "vinserti128/vinsertf128", bs3CpuInstr3_vinserti128_vinsertf128, 0 }, 12933 #endif 12838 12934 }; 12839 12935 Bs3TestInit("bs3-cpu-instr-3");
Note:
See TracChangeset
for help on using the changeset viewer.