Changeset 96100 in vbox for trunk/src/VBox/ValidationKit/bootsectors
- Timestamp:
- Aug 7, 2022 7:23:02 PM (3 years 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
r96095 r96100 2148 2148 2149 2149 ; 2150 ; [V]PSAD DBW2150 ; [V]PSADBW 2151 2151 ; 2152 2152 EMIT_INSTR_PLUS_ICEBP psadbw, MM1, MM2 … … 2167 2167 %endif 2168 2168 2169 ; 2170 ; [V]PMULDQ 2171 ; 2172 EMIT_INSTR_PLUS_ICEBP pmuldq, XMM1, XMM2 2173 EMIT_INSTR_PLUS_ICEBP pmuldq, XMM1, FSxBX 2174 EMIT_INSTR_PLUS_ICEBP vpmuldq, XMM1, XMM2, XMM3 2175 EMIT_INSTR_PLUS_ICEBP vpmuldq, XMM1, XMM2, FSxBX 2176 EMIT_INSTR_PLUS_ICEBP vpmuldq, YMM1, YMM2, YMM3 2177 EMIT_INSTR_PLUS_ICEBP vpmuldq, YMM1, YMM2, FSxBX 2178 %if TMPL_BITS == 64 2179 EMIT_INSTR_PLUS_ICEBP pmuldq, XMM8, XMM9 2180 EMIT_INSTR_PLUS_ICEBP pmuldq, XMM8, FSxBX 2181 EMIT_INSTR_PLUS_ICEBP vpmuldq, XMM8, XMM9, XMM10 2182 EMIT_INSTR_PLUS_ICEBP vpmuldq, XMM8, XMM9, FSxBX 2183 EMIT_INSTR_PLUS_ICEBP vpmuldq, YMM8, YMM9, YMM10 2184 EMIT_INSTR_PLUS_ICEBP vpmuldq, YMM8, YMM9, FSxBX 2185 %endif 2186 2169 2187 2170 2188 %endif ; BS3_INSTANTIATING_CMN -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r96095 r96100 6042 6042 { bs3CpuInstr3_vpsadbw_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 9, 10, RT_ELEMENTS(s_aValues), s_aValues }, 6043 6043 { bs3CpuInstr3_vpsadbw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 8, 9, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6044 }; 6045 static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 6046 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 6047 return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 6048 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4)); 6049 } 6050 6051 6052 /* 6053 * [V]PMULDQ - Multiply packed signed double word integers. 6054 */ 6055 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmuldq_XMM1_XMM2_icebp); 6056 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmuldq_XMM1_FSxBX_icebp); 6057 extern FNBS3FAR bs3CpuInstr3_pmuldq_XMM8_XMM9_icebp_c64; 6058 extern FNBS3FAR bs3CpuInstr3_pmuldq_XMM8_FSxBX_icebp_c64; 6059 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmuldq_XMM1_XMM2_XMM3_icebp); 6060 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmuldq_XMM1_XMM2_FSxBX_icebp); 6061 extern FNBS3FAR bs3CpuInstr3_vpmuldq_XMM8_XMM9_XMM10_icebp_c64; 6062 extern FNBS3FAR bs3CpuInstr3_vpmuldq_XMM8_XMM9_FSxBX_icebp_c64; 6063 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmuldq_YMM1_YMM2_YMM3_icebp); 6064 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmuldq_YMM1_YMM2_FSxBX_icebp); 6065 extern FNBS3FAR bs3CpuInstr3_vpmuldq_YMM8_YMM9_YMM10_icebp_c64; 6066 extern FNBS3FAR bs3CpuInstr3_vpmuldq_YMM8_YMM9_FSxBX_icebp_c64; 6067 6068 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_pmuldq(uint8_t bMode) 6069 { 6070 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues[] = 6071 { 6072 { /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0), 6073 /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0), 6074 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 6075 { /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8), 6076 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 6077 /* => */ RTUINT256_INIT_C(0x02e97bbaf7148240, 0x0935ee3369408840, 0x118666b3e1709040, 0x1bdae53c5fa49a40) }, 6078 { /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb), 6079 /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd), 6080 /* => */ RTUINT256_INIT_C(0x03fdeed546719124, 0x19c88e386340fed2, 0xea4a418ff1c09066, 0xf0e1df0254fbb9cf) }, 6081 }; 6082 6083 static BS3CPUINSTR3_TEST1_T const s_aTests16[] = 6084 { 6085 { bs3CpuInstr3_pmuldq_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE4_1, 1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 6086 { bs3CpuInstr3_pmuldq_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE4_1, 1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6087 { bs3CpuInstr3_vpmuldq_XMM1_XMM2_XMM3_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), s_aValues }, 6088 { bs3CpuInstr3_vpmuldq_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6089 { bs3CpuInstr3_vpmuldq_YMM1_YMM2_YMM3_icebp_c16, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues), s_aValues }, 6090 { bs3CpuInstr3_vpmuldq_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6091 }; 6092 static BS3CPUINSTR3_TEST1_T const s_aTests32[] = 6093 { 6094 { bs3CpuInstr3_pmuldq_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE4_1, 1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 6095 { bs3CpuInstr3_pmuldq_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE4_1, 1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6096 { bs3CpuInstr3_vpmuldq_XMM1_XMM2_XMM3_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), s_aValues }, 6097 { bs3CpuInstr3_vpmuldq_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6098 { bs3CpuInstr3_vpmuldq_YMM1_YMM2_YMM3_icebp_c32, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues), s_aValues }, 6099 { bs3CpuInstr3_vpmuldq_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6100 }; 6101 static BS3CPUINSTR3_TEST1_T const s_aTests64[] = 6102 { 6103 { bs3CpuInstr3_pmuldq_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE4_1, 1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 6104 { bs3CpuInstr3_pmuldq_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE4_1, 1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6105 { bs3CpuInstr3_pmuldq_XMM8_XMM9_icebp_c64, 255, RM_REG, T_SSE4_1, 8, 8, 9, RT_ELEMENTS(s_aValues), s_aValues }, 6106 { bs3CpuInstr3_pmuldq_XMM8_FSxBX_icebp_c64, 255, RM_MEM, T_SSE4_1, 8, 8, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6107 { bs3CpuInstr3_vpmuldq_XMM1_XMM2_XMM3_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), s_aValues }, 6108 { bs3CpuInstr3_vpmuldq_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6109 { bs3CpuInstr3_vpmuldq_XMM8_XMM9_XMM10_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 10, RT_ELEMENTS(s_aValues), s_aValues }, 6110 { bs3CpuInstr3_vpmuldq_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 8, 9, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6111 { bs3CpuInstr3_vpmuldq_YMM1_YMM2_YMM3_icebp_c64, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues), s_aValues }, 6112 { bs3CpuInstr3_vpmuldq_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6113 { bs3CpuInstr3_vpmuldq_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 9, 10, RT_ELEMENTS(s_aValues), s_aValues }, 6114 { bs3CpuInstr3_vpmuldq_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 8, 9, 255, RT_ELEMENTS(s_aValues), s_aValues }, 6044 6115 }; 6045 6116 static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); … … 8746 8817 { "[v]pmaddubsw", bs3CpuInstr3_v_pmaddubsw, 0 }, 8747 8818 #endif 8748 #if defined(ALL_TESTS)8819 #if defined(ALL_TESTS) 8749 8820 { "[v]pmulhrsw", bs3CpuInstr3_v_pmulhrsw, 0 }, 8750 8821 { "[v]psadbw", bs3CpuInstr3_v_psadbw, 0 }, 8822 { "[v]pmuldq", bs3CpuInstr3_v_pmuldq, 0 }, 8751 8823 #endif 8752 8824 };
Note:
See TracChangeset
for help on using the changeset viewer.