Changeset 105900 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Aug 29, 2024 9:40:15 AM (5 months ago)
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4-template.mac
r105744 r105900 329 329 330 330 ; 331 ;; [v]hsubpd 332 ; 333 EMIT_INSTR_PLUS_ICEBP hsubpd, XMM1, XMM2 334 EMIT_INSTR_PLUS_ICEBP hsubpd, XMM1, FSxBX 335 EMIT_INSTR_PLUS_ICEBP_C64 hsubpd, XMM8, XMM9 336 EMIT_INSTR_PLUS_ICEBP_C64 hsubpd, XMM8, FSxBX 337 338 EMIT_INSTR_PLUS_ICEBP vhsubpd, XMM1, XMM2, XMM3 339 EMIT_INSTR_PLUS_ICEBP vhsubpd, XMM1, XMM2, FSxBX 340 EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, XMM8, XMM9, XMM10 341 EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, XMM8, XMM9, FSxBX 342 343 EMIT_INSTR_PLUS_ICEBP vhsubpd, YMM1, YMM2, YMM3 344 EMIT_INSTR_PLUS_ICEBP vhsubpd, YMM1, YMM2, FSxBX 345 EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, YMM8, YMM9, YMM10 346 EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, YMM8, YMM9, FSxBX 347 348 ; 331 349 ;; [v]mulps 332 350 ; -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r105899 r105900 6048 6048 { bs3CpuInstr4_vhsubps_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 10, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6049 6049 { bs3CpuInstr4_vhsubps_YMM8_YMM9_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 8, 9, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6050 }; 6051 6052 static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 6053 unsigned const iTest = BS3CPUINSTR4_TEST_MODES_INDEX(bMode); 6054 return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 6055 g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2)); 6056 } 6057 6058 6059 /* 6060 * [V]HSUBPD. 6061 */ 6062 BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_hsubpd(uint8_t bMode) 6063 { 6064 static BS3CPUINSTR4_TEST1_VALUES_PD_T const s_aValues[] = 6065 { 6066 /* 6067 * Zero. 6068 */ 6069 /* 0*/{ { /*src2 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6070 { /*src1 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6071 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6072 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 6073 /*128:out */ X86_MXCSR_XCPT_MASK, 6074 /*256:out */ X86_MXCSR_XCPT_MASK, 6075 /*xcpt? */ false, false }, 6076 { { /*src2 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6077 { /*src1 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6078 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6079 /*mxcsr:in */ 0, 6080 /*128:out */ 0, 6081 /*256:out */ 0, 6082 /*xcpt? */ false, false }, 6083 { { /*src2 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6084 { /*src1 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6085 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6086 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 6087 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 6088 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 6089 /*xcpt? */ false, false }, 6090 { { /*src2 */ { FP64_0(1), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6091 { /*src1 */ { FP64_0(1), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6092 { /* => */ { FP64_0(1), FP64_0(1), FP64_0(0), FP64_0(0) } }, 6093 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 6094 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 6095 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 6096 /*xcpt? */ false, false }, 6097 { { /*src2 */ { FP64_0(1), FP64_0(0), FP64_0(1), FP64_0(1) } }, 6098 { /*src1 */ { FP64_0(0), FP64_0(0), FP64_0(1), FP64_0(0) } }, 6099 { /* => */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_0(0) } }, 6100 /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6101 /*128:out */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6102 /*256:out */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6103 /*xcpt? */ false, false }, 6104 { { /*src2 */ { FP64_0(0), FP64_0(1), FP64_0(0), FP64_0(1) } }, 6105 { /*src1 */ { FP64_0(0), FP64_0(1), FP64_0(0), FP64_0(1) } }, 6106 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6107 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6108 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6109 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6110 /*xcpt? */ false, false }, 6111 /** @todo Infinity; Overflow/Precision; Denormals; Normals; Invalids; Underflow, 6112 * Precision; Rounding, FZ etc. */ 6113 }; 6114 6115 static BS3CPUINSTR4_TEST1_T const s_aTests16[] = 6116 { 6117 { bs3CpuInstr4_hsubpd_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE, 1, 1, 2, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6118 { bs3CpuInstr4_hsubpd_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6119 6120 { bs3CpuInstr4_vhsubpd_XMM1_XMM2_XMM3_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6121 { bs3CpuInstr4_vhsubpd_XMM1_XMM2_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6122 6123 { bs3CpuInstr4_vhsubpd_YMM1_YMM2_YMM3_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6124 { bs3CpuInstr4_vhsubpd_YMM1_YMM2_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_256, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6125 }; 6126 static BS3CPUINSTR4_TEST1_T const s_aTests32[] = 6127 { 6128 { bs3CpuInstr4_hsubpd_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE, 1, 1, 2, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6129 { bs3CpuInstr4_hsubpd_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6130 6131 { bs3CpuInstr4_vhsubpd_XMM1_XMM2_XMM3_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6132 { bs3CpuInstr4_vhsubpd_XMM1_XMM2_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6133 6134 { bs3CpuInstr4_vhsubpd_YMM1_YMM2_YMM3_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6135 { bs3CpuInstr4_vhsubpd_YMM1_YMM2_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_256, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6136 }; 6137 static BS3CPUINSTR4_TEST1_T const s_aTests64[] = 6138 { 6139 { bs3CpuInstr4_hsubpd_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE, 1, 1, 2, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6140 { bs3CpuInstr4_hsubpd_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6141 6142 { bs3CpuInstr4_vhsubpd_XMM1_XMM2_XMM3_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6143 { bs3CpuInstr4_vhsubpd_XMM1_XMM2_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6144 6145 { bs3CpuInstr4_vhsubpd_YMM1_YMM2_YMM3_icebp_c64, 255, RM_REG, T_AVX_256, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6146 { bs3CpuInstr4_vhsubpd_YMM1_YMM2_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6147 6148 { bs3CpuInstr4_hsubpd_XMM8_XMM9_icebp_c64, 255, RM_REG, T_SSE, 8, 8, 9, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6149 { bs3CpuInstr4_hsubpd_XMM8_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, 8, 8, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6150 6151 { bs3CpuInstr4_vhsubpd_XMM8_XMM9_XMM10_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 10, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6152 { bs3CpuInstr4_vhsubpd_XMM8_XMM9_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_128, 8, 9, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6153 { bs3CpuInstr4_vhsubpd_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 10, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6154 { bs3CpuInstr4_vhsubpd_YMM8_YMM9_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 8, 9, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 6050 6155 }; 6051 6156 … … 7897 8002 { "[v]subsd", bs3CpuInstr4_v_subsd, 0 }, 7898 8003 { "[v]hsubps", bs3CpuInstr4_v_hsubps, 0 }, 8004 { "[v]hsubpd", bs3CpuInstr4_v_hsubpd, 0 }, 7899 8005 { "[v]mulps", bs3CpuInstr4_v_mulps, 0 }, 7900 8006 { "[v]mulpd", bs3CpuInstr4_v_mulpd, 0 },
Note:
See TracChangeset
for help on using the changeset viewer.