Changeset 106471 in vbox
- Timestamp:
- Oct 18, 2024 11:50:05 AM (6 months ago)
- svn:sync-xref-src-repo-rev:
- 165298
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4-template.mac
r106335 r106471 258 258 EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, YMM8, YMM9, FSxBX 259 259 260 EMIT_INSTR_PLUS_ICEBP haddps, XMM1, XMM1 261 EMIT_INSTR_PLUS_ICEBP_C64 haddps, XMM8, XMM8 262 EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, YMM1 263 EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, YMM2 264 EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, YMM8, YMM8, YMM8 265 EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, FSxBX 266 260 267 ; 261 268 ;; [v]haddpd … … 275 282 EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM9, YMM10 276 283 EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM9, FSxBX 284 285 EMIT_INSTR_PLUS_ICEBP haddpd, XMM1, XMM1 286 EMIT_INSTR_PLUS_ICEBP_C64 haddpd, XMM8, XMM8 287 EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, YMM1 288 EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, YMM2 289 EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM8, YMM8 290 EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, FSxBX 277 291 278 292 ; -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r106470 r106471 3453 3453 /** @todo Underflow, Precision; Rounding; FZ etc. */ 3454 3454 }; 3455 3456 /* Sanity-check subset for 'same register' instruction variants */ 3455 3457 static BS3CPUINSTR4_TEST1_VALUES_PS_T const s_aValuesSR[] = 3456 3458 { … … 3754 3756 /** @todo Underflow, Precision; Rounding; FZ etc. */ 3755 3757 }; 3758 3759 /* Sanity-check subset for 'same register' instruction variants */ 3756 3760 static BS3CPUINSTR4_TEST1_VALUES_PD_T const s_aValuesSR[] = 3757 3761 { … … 4090 4094 /** @todo Underflow; Precision; Rounding; FZ etc. */ 4091 4095 }; 4096 4097 /* Sanity-check subset for 'same register' instruction variants */ 4092 4098 static BS3CPUINSTR4_TEST1_VALUES_SS_T const s_aValuesSR[] = 4093 4099 { … … 4441 4447 /** @todo Underflow, Precision; Rounding; FZ etc. */ 4442 4448 }; 4449 4450 /* Sanity-check subset for 'same register' instruction variants */ 4443 4451 static BS3CPUINSTR4_TEST1_VALUES_SD_T const s_aValuesSR[] = 4444 4452 { … … 4806 4814 }; 4807 4815 4816 /* Sanity-check subset for 'same register' instruction variants */ 4817 static BS3CPUINSTR4_TEST1_VALUES_PS_T const s_aValuesSR[] = 4818 { 4819 { { /*src1 */ { FP32_V(0, 0x669050, 0x93)/*1888778.0*/, FP32_V(1, 0x1ea980, 0x8f)/*-81235.0*/, FP32_V(0, 0x253468, 0x93)/*1353357.0*/, FP32_V(1, 0x7c9000, 0x88)/*-1010.25*/, FP32_V(0, 0x5c0000, 0x84)/*55.0*/, FP32_V(0, 0x600000, 0x81)/*7.0*/, FP32_V(0, 0x534000, 0x86)/*211.25*/, FP32_1(1) } }, 4820 { /*src1 */ { FP32_V(0, 0x669050, 0x93)/*1888778.0*/, FP32_V(1, 0x1ea980, 0x8f)/*-81235.0*/, FP32_V(0, 0x253468, 0x93)/*1353357.0*/, FP32_V(1, 0x7c9000, 0x88)/*-1010.25*/, FP32_V(0, 0x5c0000, 0x84)/*55.0*/, FP32_V(0, 0x600000, 0x81)/*7.0*/, FP32_V(0, 0x534000, 0x86)/*211.25*/, FP32_1(1) } }, 4821 { /* => */ { FP32_V(0, 0x5ca5b8, 0x93)/*1807543.0*/, FP32_V(0, 0x2514d6, 0x93)/*1352346.75*/, FP32_V(0, 0x5ca5b8, 0x93)/*1807543.0*/, FP32_V(0, 0x2514d6, 0x93)/*1352346.75*/, FP32_V(0, 0x780000, 0x84)/*62.0*/, FP32_V(0, 0x524000, 0x86)/*210.25*/, FP32_V(0, 0x780000, 0x84)/*62.0*/, FP32_V(0, 0x524000, 0x86)/*210.25*/ } }, 4822 /*mxcsr:in */ 0, 4823 /*128:out */ 0, 4824 /*256:out */ 0 }, 4825 { { /*src2 */ { FP32_V(0, 0x6423f2, 0x92)/*934463.125*/, FP32_V(1, 0x0a19f0, 0x8f)/*-70707.875*/, FP32_V(0, 0x600000, 0x7e)/*0.875*/, FP32_V(0, 0x769b50, 0x92)/*1010101.0*/, FP32_INF(0), FP32_INF(1), FP32_QNAN(1), FP32_QNAN(0) } }, 4826 { /*src1 */ { FP32_V(0, 0x6423f2, 0x92)/*934463.125*/, FP32_V(1, 0x0a19f0, 0x8f)/*-70707.875*/, FP32_V(0, 0x600000, 0x7e)/*0.875*/, FP32_V(0, 0x769b50, 0x92)/*1010101.0*/, FP32_INF(0), FP32_INF(1), FP32_QNAN(1), FP32_QNAN(0) } }, 4827 { /* => */ { FP32_V(0,0x52e0b4,0x92)/*863755.25*/, FP32_V(0,0x769b5e,0x92)/*1010101.875*/, FP32_V(0,0x52e0b4,0x92)/*863755.25*/, FP32_V(0,0x769b5e,0x92)/*1010101.875*/, FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 4828 /*mxcsr:in */ 0, 4829 /*128:out */ 0, 4830 /*256:out */ X86_MXCSR_IE }, 4831 }; 4832 4808 4833 static BS3CPUINSTR4_TEST1_T const s_aTests16[] = 4809 4834 { … … 4816 4841 { bs3CpuInstr4_vhaddps_YMM1_YMM2_YMM3_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 3, PASS_s_aValues }, 4817 4842 { bs3CpuInstr4_vhaddps_YMM1_YMM2_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_256, 1, 2, 255, PASS_s_aValues }, 4843 4844 { bs3CpuInstr4_haddps_XMM1_XMM1_icebp_c16, 255, RM_REG, T_SSE3, 1, 1, 1, PASS_s_aValuesSR }, 4845 { bs3CpuInstr4_vhaddps_YMM1_YMM1_YMM1_icebp_c16, 255, RM_REG, T_AVX_256, 1, 1, 1, PASS_s_aValuesSR }, 4846 { bs3CpuInstr4_vhaddps_YMM1_YMM1_YMM2_icebp_c16, 255, RM_REG, T_AVX_256, 1, 1, 2, PASS_s_aValuesSR }, 4847 { bs3CpuInstr4_vhaddps_YMM1_YMM1_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_256, 1, 1, 255, PASS_s_aValuesSR }, 4818 4848 }; 4819 4849 static BS3CPUINSTR4_TEST1_T const s_aTests32[] = … … 4827 4857 { bs3CpuInstr4_vhaddps_YMM1_YMM2_YMM3_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 3, PASS_s_aValues }, 4828 4858 { bs3CpuInstr4_vhaddps_YMM1_YMM2_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_256, 1, 2, 255, PASS_s_aValues }, 4859 4860 { bs3CpuInstr4_haddps_XMM1_XMM1_icebp_c32, 255, RM_REG, T_SSE3, 1, 1, 1, PASS_s_aValuesSR }, 4861 { bs3CpuInstr4_vhaddps_YMM1_YMM1_YMM1_icebp_c32, 255, RM_REG, T_AVX_256, 1, 1, 1, PASS_s_aValuesSR }, 4862 { bs3CpuInstr4_vhaddps_YMM1_YMM1_YMM2_icebp_c32, 255, RM_REG, T_AVX_256, 1, 1, 2, PASS_s_aValuesSR }, 4863 { bs3CpuInstr4_vhaddps_YMM1_YMM1_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_256, 1, 1, 255, PASS_s_aValuesSR }, 4829 4864 }; 4830 4865 static BS3CPUINSTR4_TEST1_T const s_aTests64[] = … … 4846 4881 { bs3CpuInstr4_vhaddps_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 10, PASS_s_aValues }, 4847 4882 { bs3CpuInstr4_vhaddps_YMM8_YMM9_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 8, 9, 255, PASS_s_aValues }, 4883 4884 { bs3CpuInstr4_haddps_XMM1_XMM1_icebp_c64, 255, RM_REG, T_SSE3, 1, 1, 1, PASS_s_aValuesSR }, 4885 { bs3CpuInstr4_haddps_XMM8_XMM8_icebp_c64, 255, RM_REG, T_SSE3, 8, 8, 8, PASS_s_aValuesSR }, 4886 { bs3CpuInstr4_vhaddps_YMM1_YMM1_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 1, 1, 1, PASS_s_aValuesSR }, 4887 { bs3CpuInstr4_vhaddps_YMM8_YMM8_YMM8_icebp_c64, 255, RM_REG, T_AVX_256, 8, 8, 8, PASS_s_aValuesSR }, 4888 { bs3CpuInstr4_vhaddps_YMM1_YMM1_YMM2_icebp_c64, 255, RM_REG, T_AVX_256, 1, 1, 2, PASS_s_aValuesSR }, 4889 { bs3CpuInstr4_vhaddps_YMM1_YMM1_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 1, 1, 255, PASS_s_aValuesSR }, 4848 4890 }; 4849 4891 … … 5107 5149 }; 5108 5150 5151 /* Sanity-check subset for 'same register' instruction variants */ 5152 static BS3CPUINSTR4_TEST1_VALUES_PD_T const s_aValuesSR[] = 5153 { 5154 /* 0*/{ { /*src2 */ { FP64_V(0, 0xc122186c3cfd0, 0x42d)/*123456789876543.25*/, FP64_V(0, 0xd6eca42000000, 0x419)/*123450000.5*/, FP64_V(0, 0xcf0033a34f337, 0x432)/*4072598000007579.5*/, FP64_V(0, 0x921fb54442d18, 0x400)/*3.141592653589793*/ } }, 5155 { /*src1 */ { FP64_V(0, 0xc122186c3cfd0, 0x42d)/*123456789876543.25*/, FP64_V(0, 0xd6eca42000000, 0x419)/*123450000.5*/, FP64_V(0, 0xcf0033a34f337, 0x432)/*4072598000007579.5*/, FP64_V(0, 0x921fb54442d18, 0x400)/*3.141592653589793*/ } }, 5156 { /* => */ { FP64_V(0,0xc12235db073f0,0x42d)/*123456913326543.75*/, FP64_V(0,0xc12235db073f0,0x42d)/*123456913326543.75*/, FP64_V(0,0xcf0033a34f33d,0x432)/*4072598000007582.5*/, FP64_V(0,0xcf0033a34f33d,0x432)/*4072598000007582.5*/ } }, 5157 /*mxcsr:in */ 0, 5158 /*128:out */ 0, 5159 /*256:out */ X86_MXCSR_PE }, 5160 { { /*src2 */ { FP64_INF(0), FP64_QNAN(1), FP64_SNAN(1), FP64_SNAN(0) } }, 5161 { /*src1 */ { FP64_INF(0), FP64_QNAN(1), FP64_SNAN(1), FP64_SNAN(0) } }, 5162 { /* => */ { FP64_QNAN(1), FP64_QNAN(1), FP64_QNAN_V(1, 1), FP64_QNAN_V(1, 1) } }, 5163 /*mxcsr:in */ 0, 5164 /*128:out */ 0, 5165 /*256:out */ X86_MXCSR_IE }, 5166 }; 5167 5109 5168 static BS3CPUINSTR4_TEST1_T const s_aTests16[] = 5110 5169 { … … 5117 5176 { bs3CpuInstr4_vhaddpd_YMM1_YMM2_YMM3_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 3, PASS_s_aValues }, 5118 5177 { bs3CpuInstr4_vhaddpd_YMM1_YMM2_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_256, 1, 2, 255, PASS_s_aValues }, 5178 5179 { bs3CpuInstr4_haddpd_XMM1_XMM1_icebp_c16, 255, RM_REG, T_SSE3, 1, 1, 1, PASS_s_aValuesSR }, 5180 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_YMM1_icebp_c16, 255, RM_REG, T_AVX_256, 1, 1, 1, PASS_s_aValuesSR }, 5181 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_YMM2_icebp_c16, 255, RM_REG, T_AVX_256, 1, 1, 2, PASS_s_aValuesSR }, 5182 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_256, 1, 1, 255, PASS_s_aValuesSR }, 5119 5183 }; 5120 5184 static BS3CPUINSTR4_TEST1_T const s_aTests32[] = … … 5128 5192 { bs3CpuInstr4_vhaddpd_YMM1_YMM2_YMM3_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 3, PASS_s_aValues }, 5129 5193 { bs3CpuInstr4_vhaddpd_YMM1_YMM2_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_256, 1, 2, 255, PASS_s_aValues }, 5194 5195 { bs3CpuInstr4_haddpd_XMM1_XMM1_icebp_c32, 255, RM_REG, T_SSE3, 1, 1, 1, PASS_s_aValuesSR }, 5196 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_YMM1_icebp_c32, 255, RM_REG, T_AVX_256, 1, 1, 1, PASS_s_aValuesSR }, 5197 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_YMM2_icebp_c32, 255, RM_REG, T_AVX_256, 1, 1, 2, PASS_s_aValuesSR }, 5198 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_256, 1, 1, 255, PASS_s_aValuesSR }, 5130 5199 }; 5131 5200 static BS3CPUINSTR4_TEST1_T const s_aTests64[] = … … 5147 5216 { bs3CpuInstr4_vhaddpd_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 10, PASS_s_aValues }, 5148 5217 { bs3CpuInstr4_vhaddpd_YMM8_YMM9_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 8, 9, 255, PASS_s_aValues }, 5218 5219 { bs3CpuInstr4_haddpd_XMM1_XMM1_icebp_c64, 255, RM_REG, T_SSE3, 1, 1, 1, PASS_s_aValuesSR }, 5220 { bs3CpuInstr4_haddpd_XMM8_XMM8_icebp_c64, 255, RM_REG, T_SSE3, 8, 8, 8, PASS_s_aValuesSR }, 5221 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_YMM1_icebp_c64, 255, RM_REG, T_AVX_256, 1, 1, 1, PASS_s_aValuesSR }, 5222 { bs3CpuInstr4_vhaddpd_YMM8_YMM8_YMM8_icebp_c64, 255, RM_REG, T_AVX_256, 8, 8, 8, PASS_s_aValuesSR }, 5223 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_YMM2_icebp_c64, 255, RM_REG, T_AVX_256, 1, 1, 2, PASS_s_aValuesSR }, 5224 { bs3CpuInstr4_vhaddpd_YMM1_YMM1_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 1, 1, 255, PASS_s_aValuesSR }, 5149 5225 }; 5150 5226
Note:
See TracChangeset
for help on using the changeset viewer.