Changeset 106087 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Sep 19, 2024 8:18:41 AM (5 months ago)
- svn:sync-xref-src-repo-rev:
- 164861
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4-template.mac
r106082 r106087 524 524 EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, YMM8, YMM9, FSxBX 525 525 526 ; 527 ;; [v]maxss 528 ; 529 EMIT_INSTR_PLUS_ICEBP maxss, XMM3, XMM4 530 EMIT_INSTR_PLUS_ICEBP maxss, XMM3, FSxBX 531 EMIT_INSTR_PLUS_ICEBP_C64 maxss, XMM8, XMM9 532 EMIT_INSTR_PLUS_ICEBP_C64 maxss, XMM8, FSxBX 533 534 EMIT_INSTR_PLUS_ICEBP vmaxss, XMM1, XMM6, XMM7 535 EMIT_INSTR_PLUS_ICEBP vmaxss, XMM1, XMM6, FSxBX 536 EMIT_INSTR_PLUS_ICEBP_C64 vmaxss, XMM8, XMM9, XMM10 537 EMIT_INSTR_PLUS_ICEBP_C64 vmaxss, XMM8, XMM9, FSxBX 538 526 539 %endif ; BS3_INSTANTIATING_CMN 527 540 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r106082 r106087 9879 9879 9880 9880 9881 /* 9882 * [V]MAXSS. 9883 */ 9884 BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_maxss(uint8_t bMode) 9885 { 9886 static BS3CPUINSTR4_TEST1_VALUES_SS_T const s_aValues[] = 9887 { 9888 /* 9889 * Zero. 9890 */ 9891 /* 0*/{ { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 9892 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 9893 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 9894 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 9895 /*128:out */ X86_MXCSR_XCPT_MASK, 9896 /*256:out */ X86_MXCSR_XCPT_MASK, 9897 /*xcpt? */ false, false }, 9898 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 9899 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 9900 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 9901 /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_DAZ | X86_MXCSR_RC_UP, 9902 /*128:out */ X86_MXCSR_FZ | X86_MXCSR_DAZ | X86_MXCSR_RC_UP, 9903 /*256:out */ X86_MXCSR_FZ | X86_MXCSR_DAZ | X86_MXCSR_RC_UP, 9904 /*xcpt? */ false, false }, 9905 { { /*src2 */ { FP32_0(0), FP32_INF(0), FP32_SNAN(0), FP32_SNAN(0), FP32_SNAN(1), FP32_QNAN(1), FP32_INF(1), FP32_RAND_V7(0) } }, 9906 { /*src1 */ { FP32_0(0), FP32_INF(1), FP32_QNAN(0), FP32_SNAN(1), FP32_QNAN_V(0, 1), FP32_QNAN_V(1, 1), FP32_SNAN_V(1, 1), FP32_SNAN_V(0, 1) } }, 9907 { /* => */ { FP32_0(0), FP32_INF(1), FP32_QNAN(0), FP32_SNAN(1), FP32_QNAN_V(0, 1), FP32_QNAN_V(1, 1), FP32_SNAN_V(1, 1), FP32_SNAN_V(0, 1) } }, 9908 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 9909 /*128:out */ X86_MXCSR_XCPT_MASK, 9910 /*256:out */ X86_MXCSR_XCPT_MASK, 9911 /*xcpt? */ false, false }, 9912 { { /*src2 */ { FP32_0(0), FP32_RAND_V0(0), FP32_RAND_V0(0), FP32_RAND_V0(0), FP32_RAND_V0(0), FP32_RAND_V0(0), FP32_RAND_V0(0), FP32_RAND_V0(0) } }, 9913 { /*src1 */ { FP32_0(0), FP32_RAND_V6(0), FP32_RAND_V5(0), FP32_RAND_V4(0), FP32_RAND_V3(0), FP32_RAND_V2(0), FP32_RAND_V1(0), FP32_RAND_V0(0) } }, 9914 { /* => */ { FP32_0(0), FP32_RAND_V6(0), FP32_RAND_V5(0), FP32_RAND_V4(0), FP32_RAND_V3(0), FP32_RAND_V2(0), FP32_RAND_V1(0), FP32_RAND_V0(0) } }, 9915 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 9916 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 9917 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 9918 /*xcpt? */ false, false }, 9919 { { /*src2 */ { FP32_0(0), FP32_RAND_V6(0), FP32_RAND_V5(0), FP32_RAND_V4(0), FP32_RAND_V3(0), FP32_RAND_V2(0), FP32_RAND_V1(0), FP32_RAND_V0(0) } }, 9920 { /*src1 */ { FP32_0(0), FP32_RAND_V0(1), FP32_RAND_V1(1), FP32_RAND_V2(1), FP32_RAND_V3(1), FP32_RAND_V4(1), FP32_RAND_V5(1), FP32_RAND_V6(1) } }, 9921 { /* => */ { FP32_0(0), FP32_RAND_V0(1), FP32_RAND_V1(1), FP32_RAND_V2(1), FP32_RAND_V3(1), FP32_RAND_V4(1), FP32_RAND_V5(1), FP32_RAND_V6(1) } }, 9922 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 9923 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 9924 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 9925 /*xcpt? */ false, false }, 9926 { { /*src2 */ { FP32_0(0), FP32_RAND_V0(0), FP32_RAND_V1(0), FP32_RAND_V2(0), FP32_RAND_V7(0), FP32_RAND_V4(0), FP32_RAND_V5(0), FP32_RAND_V6(0) } }, 9927 { /*src1 */ { FP32_0(1), FP32_RAND_V6(0), FP32_RAND_V5(0), FP32_RAND_V4(0), FP32_RAND_V3(0), FP32_RAND_V2(0), FP32_RAND_V1(0), FP32_RAND_V0(0) } }, 9928 { /* => */ { FP32_0(0), FP32_RAND_V6(0), FP32_RAND_V5(0), FP32_RAND_V4(0), FP32_RAND_V3(0), FP32_RAND_V2(0), FP32_RAND_V1(0), FP32_RAND_V0(0) } }, 9929 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 9930 /*128:out */ X86_MXCSR_XCPT_MASK, 9931 /*256:out */ X86_MXCSR_XCPT_MASK, 9932 /*xcpt? */ false, false }, 9933 { { /*src2 */ { FP32_0(0), FP32_RAND_V0(1), FP32_RAND_V1(0), FP32_RAND_V2(0), FP32_RAND_V7(0), FP32_RAND_V4(0), FP32_RAND_V5(0), FP32_RAND_V6(0) } }, 9934 { /*src1 */ { FP32_0(1), FP32_RAND_V6(1), FP32_RAND_V5(0), FP32_RAND_V4(1), FP32_RAND_V7(0), FP32_RAND_V2(1), FP32_RAND_V1(0), FP32_RAND_V3(1) } }, 9935 { /* => */ { FP32_0(0), FP32_RAND_V6(1), FP32_RAND_V5(0), FP32_RAND_V4(1), FP32_RAND_V7(0), FP32_RAND_V2(1), FP32_RAND_V1(0), FP32_RAND_V3(1) } }, 9936 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 9937 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 9938 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 9939 /*xcpt? */ false, false }, 9940 { { /*src2 */ { FP32_0(1), FP32_RAND_V6(1), FP32_RAND_V5(1), FP32_RAND_V4(1), FP32_RAND_V3(1), FP32_RAND_V2(1), FP32_RAND_V1(1), FP32_RAND_V0(1) } }, 9941 { /*src1 */ { FP32_0(0), FP32_RAND_V0(0), FP32_RAND_V1(1), FP32_RAND_V2(0), FP32_RAND_V7(1), FP32_RAND_V4(0), FP32_RAND_V5(1), FP32_RAND_V6(0) } }, 9942 { /* => */ { FP32_0(1), FP32_RAND_V0(0), FP32_RAND_V1(1), FP32_RAND_V2(0), FP32_RAND_V7(1), FP32_RAND_V4(0), FP32_RAND_V5(1), FP32_RAND_V6(0) } }, 9943 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 9944 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 9945 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 9946 /*xcpt? */ false, false }, 9947 { { /*src2 */ { FP32_0(1), FP32_RAND_V5(1), FP32_RAND_V3(0), FP32_RAND_V2(0), FP32_RAND_V3(1), FP32_RAND_V3(0), FP32_RAND_V4(1), FP32_RAND_V0(0) } }, 9948 { /*src1 */ { FP32_0(0), FP32_RAND_V0(1), FP32_RAND_V1(1), FP32_RAND_V6(0), FP32_RAND_V7(1), FP32_RAND_V3(1), FP32_RAND_V5(1), FP32_RAND_V2(1) } }, 9949 { /* => */ { FP32_0(1), FP32_RAND_V0(1), FP32_RAND_V1(1), FP32_RAND_V6(0), FP32_RAND_V7(1), FP32_RAND_V3(1), FP32_RAND_V5(1), FP32_RAND_V2(1) } }, 9950 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 9951 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 9952 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 9953 /*xcpt? */ false, false }, 9954 { { /*src2 */ { FP32_0(1), FP32_RAND_V6(1), FP32_RAND_V5(1), FP32_RAND_V4(1), FP32_RAND_V3(1), FP32_RAND_V2(1), FP32_RAND_V1(1), FP32_RAND_V0(1) } }, 9955 { /*src1 */ { FP32_0(1), FP32_RAND_V0(1), FP32_RAND_V1(0), FP32_RAND_V2(0), FP32_RAND_V7(0), FP32_RAND_V3(0), FP32_RAND_V6(1), FP32_RAND_V4(1) } }, 9956 { /* => */ { FP32_0(1), FP32_RAND_V0(1), FP32_RAND_V1(0), FP32_RAND_V2(0), FP32_RAND_V7(0), FP32_RAND_V3(0), FP32_RAND_V6(1), FP32_RAND_V4(1) } }, 9957 /*mxcsr:in */ 0, 9958 /*128:out */ 0, 9959 /*256:out */ 0, 9960 /*xcpt? */ false, false }, 9961 { { /*src2 */ { FP32_0(1), FP32_RAND_V6(1), FP32_RAND_V5(1), FP32_RAND_V4(1), FP32_RAND_V3(1), FP32_RAND_V2(1), FP32_RAND_V1(1), FP32_RAND_V0(1) } }, 9962 { /*src1 */ { FP32_0(1), FP32_RAND_V1(0), FP32_RAND_V5(1), FP32_RAND_V2(1), FP32_RAND_V7(1), FP32_RAND_V3(0), FP32_RAND_V1(0), FP32_RAND_V6(1) } }, 9963 { /* => */ { FP32_0(1), FP32_RAND_V1(0), FP32_RAND_V5(1), FP32_RAND_V2(1), FP32_RAND_V7(1), FP32_RAND_V3(0), FP32_RAND_V1(0), FP32_RAND_V6(1) } }, 9964 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 9965 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 9966 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 9967 /*xcpt? */ false, false }, 9968 /** @todo Normals; Denormals; Invalids; Rounding; FZ etc. */ 9969 }; 9970 9971 #define PASS_s_aValues RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues 9972 static BS3CPUINSTR4_TEST1_T const s_aTests16[] = 9973 { 9974 { bs3CpuInstr4_maxss_XMM3_XMM4_icebp_c16, 255, RM_REG, T_SSE2, 3, 3, 4, PASS_s_aValues }, 9975 { bs3CpuInstr4_maxss_XMM3_FSxBX_icebp_c16, 255, RM_MEM, T_SSE2, 3, 3, 255, PASS_s_aValues }, 9976 9977 { bs3CpuInstr4_vmaxss_XMM1_XMM6_XMM7_icebp_c16, 255, RM_REG, T_AVX_128, 1, 6, 7, PASS_s_aValues }, 9978 { bs3CpuInstr4_vmaxss_XMM1_XMM6_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 6, 255, PASS_s_aValues }, 9979 }; 9980 static BS3CPUINSTR4_TEST1_T const s_aTests32[] = 9981 { 9982 { bs3CpuInstr4_maxss_XMM3_XMM4_icebp_c32, 255, RM_REG, T_SSE2, 3, 3, 4, PASS_s_aValues }, 9983 { bs3CpuInstr4_maxss_XMM3_FSxBX_icebp_c32, 255, RM_MEM, T_SSE2, 3, 3, 255, PASS_s_aValues }, 9984 9985 { bs3CpuInstr4_vmaxss_XMM1_XMM6_XMM7_icebp_c32, 255, RM_REG, T_AVX_128, 1, 6, 7, PASS_s_aValues }, 9986 { bs3CpuInstr4_vmaxss_XMM1_XMM6_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 6, 255, PASS_s_aValues }, 9987 }; 9988 static BS3CPUINSTR4_TEST1_T const s_aTests64[] = 9989 { 9990 { bs3CpuInstr4_maxss_XMM3_XMM4_icebp_c64, 255, RM_REG, T_SSE2, 3, 3, 4, PASS_s_aValues }, 9991 { bs3CpuInstr4_maxss_XMM3_FSxBX_icebp_c64, 255, RM_MEM, T_SSE2, 3, 3, 255, PASS_s_aValues }, 9992 9993 { bs3CpuInstr4_vmaxss_XMM1_XMM6_XMM7_icebp_c64, 255, RM_REG, T_AVX_128, 1, 6, 7, PASS_s_aValues }, 9994 { bs3CpuInstr4_vmaxss_XMM1_XMM6_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 6, 255, PASS_s_aValues }, 9995 9996 { bs3CpuInstr4_maxss_XMM8_XMM9_icebp_c64, 255, RM_REG, T_SSE2, 8, 8, 9, PASS_s_aValues }, 9997 { bs3CpuInstr4_maxss_XMM8_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_SSE2, 8, 8, 255, PASS_s_aValues }, 9998 9999 { bs3CpuInstr4_vmaxss_XMM8_XMM9_XMM10_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 10, PASS_s_aValues }, 10000 { bs3CpuInstr4_vmaxss_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_AVX_128, 8, 9, 255, PASS_s_aValues }, 10001 }; 10002 #undef PASS_s_aValues 10003 10004 static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 10005 unsigned const iTest = BS3CPUINSTR4_TEST_MODES_INDEX(bMode); 10006 return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 10007 g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3)); 10008 } 10009 10010 9881 10011 /** 9882 10012 * The 32-bit protected mode main function. … … 9921 10051 { "[v]maxps", bs3CpuInstr4_v_maxps, 0 }, 9922 10052 { "[v]maxpd", bs3CpuInstr4_v_maxpd, 0 }, 10053 { "[v]maxss", bs3CpuInstr4_v_maxss, 0 }, 9923 10054 #endif 9924 10055 };
Note:
See TracChangeset
for help on using the changeset viewer.