Changeset 106216 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Oct 4, 2024 6:26:25 AM (5 months ago)
- svn:sync-xref-src-repo-rev:
- 165000
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r106215 r106216 665 665 /** 666 666 * Table D-1: Packed single-precision floating-point invalid values. 667 * For instructions: addps, subps, mulps, divps, addsubps , haddps, hsubps.667 * For instructions: addps, subps, mulps, divps, addsubps. 668 668 **/ 669 669 #define FP32_TABLE_D1_PS_INVALIDS \ … … 758 758 **/ 759 759 #define FP64_TABLE_D1_PD_INVALIDS \ 760 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \760 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \ 761 761 { /*src1 */ { FP64_QNAN(0), FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V2(0) } }, \ 762 762 { /* => */ { FP64_QNAN(0), FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V2(0) } }, \ … … 1064 1064 #define FP64_TABLE_D1_SD_INVALIDS \ 1065 1065 /* QNan, QNan (Masked). */ \ 1066 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \1066 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \ 1067 1067 { /*src1 */ { FP64_QNAN(0), FP64_QNAN(1), FP64_QNAN_MAX(1), FP64_QNAN_V2(0) } }, \ 1068 1068 { /* => */ { FP64_QNAN(0), FP64_QNAN(1), FP64_QNAN_MAX(1), FP64_QNAN_V2(0) } }, \ … … 1368 1368 **/ 1369 1369 #define FP64_TABLE_D1_H_PD_INVALIDS \ 1370 /* 0*/{ { /*src2 */ { FP64_QNAN_MAX(0), FP64_QNAN(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \1370 /* 0*/{ { /*src2 */ { FP64_QNAN_MAX(0), FP64_QNAN(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \ 1371 1371 { /*src1 */ { FP64_QNAN(0), FP64_QNAN(0), FP64_QNAN(0), FP64_QNAN_MAX(0) } }, \ 1372 1372 { /* => */ { FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN(0), FP64_QNAN_V0(0) } }, \ … … 1424 1424 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_IE, \ 1425 1425 /*xcpt? */ true, true }, \ 1426 { { /*src2 */ { FP64_SNAN_MAX(0), FP64_QNAN_V2(0), FP64_SNAN_V1(0), FP64_QNAN_V2(0) } }, 1427 { /*src1 */ { FP64_SNAN(0), FP64_QNAN(0), FP64_SNAN(0), FP64_QNAN_V3(0) } }, 1428 { /* => */ { FP64_QNAN_V(0, 1), FP64_QNAN_MAX(0), FP64_QNAN_V(0, 1), FP64_QNAN_V1(0) } }, 1426 { { /*src2 */ { FP64_SNAN_MAX(0), FP64_QNAN_V2(0), FP64_SNAN_V1(0), FP64_QNAN_V2(0) } }, \ 1427 { /*src1 */ { FP64_SNAN(0), FP64_QNAN(0), FP64_SNAN(0), FP64_QNAN_V3(0) } }, \ 1428 { /* => */ { FP64_QNAN_V(0, 1), FP64_QNAN_MAX(0), FP64_QNAN_V(0, 1), FP64_QNAN_V1(0) } }, \ 1429 1429 /*mxcsr:in */ 0, \ 1430 1430 /*128:out */ X86_MXCSR_IE, \ … … 1534 1534 **/ 1535 1535 #define FP64_TABLE_D9_PD_INVALIDS \ 1536 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \1536 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \ 1537 1537 { /*src1 */ { FP64_QNAN(0), FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V2(0) } }, \ 1538 1538 { /* => */ { FP64_QNAN(0), FP64_QNAN_MAX(0), FP64_QNAN_V0(0), FP64_QNAN_V1(0) } }, \ … … 1825 1825 #define FP64_TABLE_D9_SD_INVALIDS \ 1826 1826 /* QNan, QNan (Masked). */ \ 1827 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_RAND_V2(0), FP64_RAND_V0(1), FP64_RAND_V1(0) } }, \1827 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_RAND_V2(0), FP64_RAND_V0(1), FP64_RAND_V1(0) } }, \ 1828 1828 { /*src1 */ { FP64_QNAN(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } }, \ 1829 1829 { /* => */ { FP64_QNAN(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } }, \ … … 1912 1912 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE, \ 1913 1913 /*xcpt? */ false, false }, \ 1914 /* QNan, Normal ( Unmasked). */\1914 /* QNan, Normal (Masked). */ \ 1915 1915 { { /*src2 */ { FP64_QNAN(0), FP64_RAND_V3(1), FP64_RAND_V2(1), FP64_RAND_V2(0) } }, \ 1916 1916 { /*src1 */ { FP64_1(0), FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V1(1) } }, \ … … 1929 1929 /*xcpt? */ false, false }, \ 1930 1930 /* QNan, QNan (Unmasked). */ \ 1931 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_RAND_V2(0), FP64_RAND_V0(1), FP64_RAND_V1(0) } }, \1931 /* 0*/{ { /*src2 */ { FP64_QNAN(0), FP64_RAND_V2(0), FP64_RAND_V0(1), FP64_RAND_V1(0) } }, \ 1932 1932 { /*src1 */ { FP64_QNAN(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } }, \ 1933 1933 { /* => */ { FP64_QNAN(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } }, \ … … 2024 2024 /*256:out */ X86_MXCSR_IE, \ 2025 2025 /*xcpt? */ true, true }, \ 2026 /* SNan, Normal ( Masked). */\2026 /* SNan, Normal (Unmasked). */ \ 2027 2027 { { /*src2 */ { FP64_SNAN(1), FP64_RAND_V0(1), FP64_RAND_V2(1), FP64_RAND_V2(0) } }, \ 2028 2028 { /*src1 */ { FP64_1(0), FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V3(1) } }, \ … … 4889 4889 { /*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) } }, 4890 4890 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 4891 /*mxcsr:in */ X86_MXCSR_XCPT_MASK,4892 /*128:out */ X86_MXCSR_XCPT_MASK,4893 /*256:out */ X86_MXCSR_XCPT_MASK,4894 /*xcpt? */ false, false },4895 { { /*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) } },4896 { /*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) } },4897 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },4898 4891 /*mxcsr:in */ 0, 4899 4892 /*128:out */ 0, … … 4931 4924 * Infinity. 4932 4925 */ 4933 /* 6*/{ { /*src2 */ { FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1) } },4926 /* 5*/{ { /*src2 */ { FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1) } }, 4934 4927 { /*src1 */ { FP32_INF(1), FP32_INF(0), FP32_0(0), FP32_0(0), FP32_INF(0), FP32_INF(1), FP32_0(0), FP32_0(0) } }, 4935 4928 { /* => */ { FP32_QNAN(1), FP32_0(0), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_0(0), FP32_QNAN(1), FP32_QNAN(1) } }, … … 4969 4962 * Overflow, Precision. 4970 4963 */ 4971 /*1 1*/{ { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0),FP32_NORM_MAX(0) } },4972 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } },4973 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_ 0(0), FP32_0(0), FP32_0(0), FP32_0(0)} },4964 /*10*/{ { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0) } }, 4965 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } }, 4966 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1), FP32_INF(1), FP32_V(1, FP32_FRAC_NORM_MIN, FP32_EXP_NORM_MIN + 1), FP32_INF(0) } }, 4974 4967 /*mxcsr:in */ 0, 4975 4968 /*128:out */ 0, 4976 /*256:out */ X86_MXCSR_OE, 4969 /*256:out */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 4970 /*xcpt? */ false, true }, 4971 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0) } }, 4972 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } }, 4973 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1), FP32_INF(1), FP32_V(1, FP32_FRAC_NORM_MIN, FP32_EXP_NORM_MIN + 1), FP32_INF(0) } }, 4974 /*mxcsr:in */ X86_MXCSR_OM, 4975 /*128:out */ X86_MXCSR_OM, 4976 /*256:out */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 4977 4977 /*xcpt? */ false, true }, 4978 4978 { { /*src2 */ { FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 4979 4979 { /*src1 */ { FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 4980 4980 { /* => */ { FP32_INF(1), FP32_INF(1), FP32_V(1, FP32_FRAC_NORM_MIN, FP32_EXP_NORM_MIN + 1), FP32_INF(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 4981 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM, 4982 /*128:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE, 4983 /*256:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE, 4981 /*mxcsr:in */ 0, 4982 /*128:out */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 4983 /*256:out */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 4984 /*xcpt? */ false, false }, 4985 { { /*src2 */ { FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 4986 { /*src1 */ { FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 4987 { /* => */ { FP32_INF(1), FP32_INF(1), FP32_V(1, FP32_FRAC_NORM_MIN, FP32_EXP_NORM_MIN + 1), FP32_INF(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 4988 /*mxcsr:in */ X86_MXCSR_OM, 4989 /*128:out */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 4990 /*256:out */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 4984 4991 /*xcpt? */ false, false }, 4985 4992 { { /*src2 */ { FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0) } }, 4986 4993 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(0) } }, 4987 4994 { /* => */ { FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } }, 4988 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO, 4989 /*128:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE, 4990 /*256:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE, 4995 /*mxcsr:in */ X86_MXCSR_RC_ZERO, 4996 /*128:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 4997 /*256:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 4998 /*xcpt? */ false, false }, 4999 { { /*src2 */ { FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0) } }, 5000 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(0) } }, 5001 { /* => */ { FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } }, 5002 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO, 5003 /*128:out */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 5004 /*256:out */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 4991 5005 /*xcpt? */ false, false }, 4992 5006 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } }, 4993 5007 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } }, 4994 5008 { /* => */ { FP32_INF(0), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MAX), FP32_INF(0), FP32_NORM_MAX(0) } }, 4995 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP, 4996 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE, 4997 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE, 5009 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP, 5010 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 5011 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 5012 /*xcpt? */ false, false }, 5013 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } }, 5014 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } }, 5015 { /* => */ { FP32_INF(0), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MAX), FP32_INF(0), FP32_NORM_MAX(0) } }, 5016 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_RC_UP, 5017 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 5018 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 4998 5019 /*xcpt? */ false, false }, 4999 5020 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } }, 5000 5021 { /*src1 */ { FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1) } }, 5001 5022 { /* => */ { FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_V(0, 0, FP32_EXP_NORM_MIN + 1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_NORM_MAX(0), FP32_0(0) } }, 5002 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO, 5003 /*128:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE, 5004 /*256:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE, 5023 /*mxcsr:in */ X86_MXCSR_RC_ZERO, 5024 /*128:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 5025 /*256:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 5026 /*xcpt? */ false, false }, 5027 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } }, 5028 { /*src1 */ { FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1) } }, 5029 { /* => */ { FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_V(0, 0, FP32_EXP_NORM_MIN + 1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_NORM_MAX(0), FP32_0(0) } }, 5030 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO, 5031 /*128:out */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 5032 /*256:out */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 5005 5033 /*xcpt? */ false, false }, 5006 5034 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } }, … … 5009 5037 /*mxcsr:in */ X86_MXCSR_RC_ZERO, 5010 5038 /*128:out */ X86_MXCSR_RC_ZERO, 5011 /*256:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE, 5039 /*256:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 5040 /*xcpt? */ false, true }, 5041 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } }, 5042 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } }, 5043 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0) } }, 5044 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO, 5045 /*128:out */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO, 5046 /*256:out */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 5012 5047 /*xcpt? */ false, true }, 5013 5048 { { /*src2 */ { FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1) } }, … … 5021 5056 * Normals. 5022 5057 */ 5023 /* 18*/{ { /*src2 */ { FP32_V(0, 0, 0x7d)/* 0.25*/, FP32_V(0, 0, 0x7e)/*0.50*/, FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_V(0, 0x400000, 0x7f)/*1.50*/, FP32_V(0, 0, 0x7d)/*0.25*/ } },5058 /*23*/{ { /*src2 */ { FP32_V(0, 0, 0x7d)/* 0.25*/, FP32_V(0, 0, 0x7e)/*0.50*/, FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_V(0, 0x400000, 0x7f)/*1.50*/, FP32_V(0, 0, 0x7d)/*0.25*/ } }, 5024 5059 { /*src1 */ { FP32_V(1, 0, 0x7d)/*-0.25*/, FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_NORM_MAX(1), FP32_0(0), FP32_V(0, 0, 0x7e)/*0.50*/, FP32_V(0, 0, 0x7d)/*0.25*/, FP32_0(0), FP32_0(0) } }, 5025 5060 { /* => */ { FP32_V(0, 0x400000, 0x7f)/* 1.50*/, FP32_NORM_MAX(1), FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_NORM_MAX(0), FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_0(0), FP32_NORM_MAX(0), FP32_V(0, 0x600000, 0x7f)/*1.75*/ } }, … … 5080 5115 * Denormals. 5081 5116 */ 5082 /* 26*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } },5117 /*31*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5083 5118 { /*src1 */ { FP32_0(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } }, 5084 5119 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5085 5120 /*mxcsr:in */ 0, 5086 /*128:out */ X86_MXCSR_DE, 5087 /*256:out */ X86_MXCSR_DE, 5121 /*128:out */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED, 5122 /*256:out */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED, 5123 /*xcpt? */ true, true }, 5124 #ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out *AND* different output values */ 5125 /*--|32*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5126 { /*src1 */ { FP32_0(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } }, 5127 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on HW (i7-10700) */, 5128 // IEM: { /* => */ { FP32_DENORM_MAX(1), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_0(0) } } /* result on IEM */, 5129 /*mxcsr:in */ X86_MXCSR_DM, 5130 /*128:out */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 5131 /*256:out */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 5132 /*xcpt? */ true, true }, 5133 #endif /* TODO_X86_MXCSR_UE_IEM */ 5134 /*32|33*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5135 { /*src1 */ { FP32_0(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } }, 5136 { /* => */ { FP32_DENORM_MAX(1), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_0(0) } }, 5137 /*mxcsr:in */ X86_MXCSR_DM | X86_MXCSR_UM, 5138 /*128:out */ X86_MXCSR_DE | X86_MXCSR_DM | X86_MXCSR_UM | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 5139 /*256:out */ X86_MXCSR_DE | X86_MXCSR_DM | X86_MXCSR_UM | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 5088 5140 /*xcpt? */ true, true }, 5089 5141 { { /*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) } }, … … 5102 5154 /*xcpt? */ false, false }, 5103 5155 { { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5104 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } },5105 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },5156 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5157 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5106 5158 /*mxcsr:in */ 0, 5107 /*128:out */ X86_MXCSR_DE, 5108 /*256:out */ X86_MXCSR_DE, 5159 /*128:out */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED, 5160 /*256:out */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED, 5161 /*xcpt? */ true, true }, 5162 #ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out *AND* different output values */ 5163 /*--|37*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5164 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5165 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on HW (i7-10700) */, 5166 // IEM: { /* => */ { FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on IEM */, 5167 /*mxcsr:in */ X86_MXCSR_DM, 5168 /*128:out */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 5169 /*256:out */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 5170 /*xcpt? */ true, true }, 5171 #endif /* TODO_X86_MXCSR_UE_IEM */ 5172 /*36|38*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5173 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5174 { /* => */ { FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 5175 /*mxcsr:in */ X86_MXCSR_DM | X86_MXCSR_UM, 5176 /*128:out */ X86_MXCSR_DM | X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 5177 /*256:out */ X86_MXCSR_DM | X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 5109 5178 /*xcpt? */ true, true }, 5110 5179 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } }, … … 5126 5195 * Invalids. 5127 5196 */ 5128 /*32*/ FP32_TABLE_D1_H_PS_INVALIDS5197 /*39|41*/ FP32_TABLE_D1_H_PS_INVALIDS 5129 5198 /** @todo Underflow; Precision; Rounding; FZ etc. */ 5130 5199 }; … … 5176 5245 static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 5177 5246 unsigned const iTest = BS3CPUINSTR4_TEST_MODES_INDEX(bMode); 5178 return bs3CpuInstr4_WorkerTestType1 (bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,5247 return bs3CpuInstr4_WorkerTestType1A(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 5179 5248 g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2)); 5180 5249 } … … 6816 6885 { /*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) } }, 6817 6886 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 6818 /*mxcsr:in */ X86_MXCSR_XCPT_MASK,6819 /*128:out */ X86_MXCSR_XCPT_MASK,6820 /*256:out */ X86_MXCSR_XCPT_MASK,6821 /*xcpt? */ false, false },6822 { { /*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) } },6823 { /*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) } },6824 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },6825 6887 /*mxcsr:in */ 0, 6826 6888 /*128:out */ 0, … … 6858 6920 * Infinity. 6859 6921 */ 6860 /* 6*/{ { /*src2 */ { FP32_INF(1), FP32_INF(0), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1) } },6922 /* 5*/{ { /*src2 */ { FP32_INF(1), FP32_INF(0), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_INF(1) } }, 6861 6923 { /*src1 */ { FP32_INF(0), FP32_INF(1), FP32_0(0), FP32_0(0), FP32_INF(0), FP32_INF(1), FP32_0(0), FP32_0(0) } }, 6862 { /* => */ { FP32_INF(0), FP32_0(0), FP32_INF(1), FP32_INF(0), FP32_INF(0), FP32_0(0), FP32_INF(0), FP32_INF(0) } },6924 { /* => */ { FP32_INF(0), FP32_0(0), FP32_INF(1), FP32_INF(0), FP32_INF(0), FP32_0(0), FP32_INF(0), FP32_INF(0) } }, 6863 6925 /*mxcsr:in */ X86_MXCSR_IM, 6864 6926 /*128:out */ X86_MXCSR_IM, … … 6879 6941 /*256:out */ X86_MXCSR_FZ | X86_MXCSR_IE, 6880 6942 /*xcpt? */ false, true }, 6881 { { /*src2 */ { FP32_INF(1), FP32_INF(1), FP32_INF(0), FP32_0(0), FP32_INF(1), FP32_INF(1), FP32_INF(0),FP32_0(0) } },6882 { /*src1 */ { FP32_INF(0), FP32_INF(0), FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),FP32_0(0) } },6883 { /* => */ { FP32_ INF(0), FP32_INF(0), FP32_INF(1), FP32_INF(0), FP32_0(0), FP32_0(0), FP32_INF(1), FP32_INF(0) } },6943 { { /*src2 */ { FP32_INF(1), FP32_INF(1), FP32_INF(0), FP32_0(0), FP32_INF(1), FP32_INF(1), FP32_INF(0), FP32_0(0) } }, 6944 { /*src1 */ { FP32_INF(0), FP32_INF(0), FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 6945 { /* => */ { FP32_QNAN(1), FP32_INF(1), FP32_QNAN(1), FP32_INF(0), FP32_0(0), FP32_0(0), FP32_QNAN(1), FP32_INF(0) } }, 6884 6946 /*mxcsr:in */ 0, 6885 6947 /*128:out */ X86_MXCSR_IE, … … 6896 6958 * Overflow, Precision. 6897 6959 */ 6898 /*1 1*/{ { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MIN(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0) } },6960 /*10*/{ { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MIN(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0) } }, 6899 6961 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } }, 6900 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_ 0(0), FP32_0(0), FP32_0(0),FP32_0(0) } },6962 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0) } }, 6901 6963 /*mxcsr:in */ 0, 6902 6964 /*128:out */ 0, … … 6920 6982 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0) } }, 6921 6983 { /* => */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(0) } }, 6922 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO, 6923 /*128:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE, 6924 /*256:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE, 6984 /*mxcsr:in */ X86_MXCSR_RC_ZERO, 6985 /*128:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 6986 /*256:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 6987 /*xcpt? */ false, false }, 6988 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1) } }, 6989 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0) } }, 6990 { /* => */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(0) } }, 6991 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO, 6992 /*128:out */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 6993 /*256:out */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 6925 6994 /*xcpt? */ false, false }, 6926 6995 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } }, 6927 6996 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } }, 6928 6997 { /* => */ { FP32_0(0), FP32_0(0), FP32_INF(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_INF(0), FP32_0(0), FP32_NORM_MAX(1) } }, 6929 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP, 6930 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE, 6931 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE, 6998 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP, 6999 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 7000 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 7001 /*xcpt? */ false, false }, 7002 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } }, 7003 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } }, 7004 { /* => */ { FP32_0(0), FP32_0(0), FP32_INF(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_INF(0), FP32_0(0), FP32_NORM_MAX(1) } }, 7005 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_RC_UP, 7006 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 7007 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 6932 7008 /*xcpt? */ false, false }, 6933 7009 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } }, 6934 7010 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } }, 6935 7011 { /* => */ { FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(1) } }, 6936 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 6937 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE, 6938 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE, 7012 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 7013 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 7014 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 7015 /*xcpt? */ false, false }, 7016 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } }, 7017 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } }, 7018 { /* => */ { FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(1) } }, 7019 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 7020 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 7021 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 6939 7022 /*xcpt? */ false, false }, 6940 7023 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1) } }, … … 6943 7026 /*mxcsr:in */ X86_MXCSR_RC_ZERO, 6944 7027 /*128:out */ X86_MXCSR_RC_ZERO, 6945 /*256:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE ,7028 /*256:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED, 6946 7029 /*xcpt? */ false, true }, 7030 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1) } }, 7031 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1) } }, 7032 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } }, 7033 /*mxcsr:in */ X86_MXCSR_RC_ZERO | X86_MXCSR_OM, 7034 /*128:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OM, 7035 /*256:out */ X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED, 7036 /*xcpt? */ false, true }, 6947 7037 /* 6948 7038 * Normals. 6949 7039 */ 6950 /* 18*/{ { /*src2 */ { FP32_V(0, 0, 0x7d)/*0.25*/, FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_V(0, 0, 0x7d)/*0.25*/ } },7040 /*21*/{ { /*src2 */ { FP32_V(0, 0, 0x7d)/*0.25*/, FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_V(0, 0, 0x7d)/*0.25*/ } }, 6951 7041 { /*src1 */ { FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_V(0, 0, 0x7d)/*0.25*/, FP32_NORM_MAX(1), FP32_0(0), FP32_V(1, 0, 0x7e)/*-0.50*/, FP32_V(0, 0, 0x7d)/*-0.25*/, FP32_0(0), FP32_0(0) } }, 6952 7042 { /* => */ { FP32_V(0, 0x400000, 0x7f)/*1.50*/, FP32_NORM_MAX(1), FP32_V(1, 0, 0x7e)/*-0.50*/, FP32_NORM_MAX(0), FP32_V(1, 0x400000, 0x7e)/*-0.75*/, FP32_0(0), FP32_NORM_MAX(1), FP32_V(0, 0x400000, 0x7f)/*1.50*/ } }, … … 7021 7111 * Denormals. 7022 7112 */ 7023 /* 28*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } },7113 /*31*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7024 7114 { /*src1 */ { FP32_0(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } }, 7025 7115 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7026 7116 /*mxcsr:in */ 0, 7027 /*128:out */ X86_MXCSR_DE, 7028 /*256:out */ X86_MXCSR_DE, 7117 /*128:out */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED, 7118 /*256:out */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED, 7119 /*xcpt? */ true, true }, 7120 #ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out *AND* different output values */ 7121 /*--|32*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7122 { /*src1 */ { FP32_0(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } }, 7123 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on HW (i7-10700) */, 7124 // IEM: { /* => */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_0(0) } } /* result on IEM */, 7125 /*mxcsr:in */ X86_MXCSR_DM, 7126 /*128:out */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 7127 /*256:out */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 7128 /*xcpt? */ true, true }, 7129 #endif /* TODO_X86_MXCSR_UE_IEM */ 7130 /*32|33*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7131 { /*src1 */ { FP32_0(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } }, 7132 { /* => */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_0(0) } }, 7133 /*mxcsr:in */ X86_MXCSR_DM | X86_MXCSR_UM, 7134 /*128:out */ X86_MXCSR_DM | X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 7135 /*256:out */ X86_MXCSR_DM | X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 7029 7136 /*xcpt? */ true, true }, 7030 7137 { { /*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) } }, … … 7043 7150 /*xcpt? */ false, false }, 7044 7151 { { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7045 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } },7046 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },7152 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7153 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7047 7154 /*mxcsr:in */ 0, 7048 /*128:out */ X86_MXCSR_DE, 7049 /*256:out */ X86_MXCSR_DE, 7155 /*128:out */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED, 7156 /*256:out */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED, 7157 /*xcpt? */ true, true }, 7158 #ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out *AND* different output values */ 7159 /*--|37*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7160 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7161 { /* => */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on HW (i7-10700) */, 7162 // IEM: { /* => */ { FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on IEM */, 7163 /*mxcsr:in */ X86_MXCSR_DM, 7164 /*128:out */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 7165 /*256:out */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 7166 /*xcpt? */ true, true }, 7167 #endif /* TODO_X86_MXCSR_UE_IEM */ 7168 /*36|38*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7169 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7170 { /* => */ { FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 7171 /*mxcsr:in */ X86_MXCSR_DM | X86_MXCSR_UM, 7172 /*128:out */ X86_MXCSR_DM | X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 7173 /*256:out */ X86_MXCSR_DM | X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED, 7050 7174 /*xcpt? */ true, true }, 7051 7175 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } }, … … 7067 7191 * Invalids. 7068 7192 */ 7069 /*32*/ FP32_TABLE_D1_H_PS_INVALIDS7193 /*39|41*/ FP32_TABLE_D1_H_PS_INVALIDS 7070 7194 /** @todo Underflow; Precision; Rounding; FZ etc. */ 7071 7195 }; … … 7117 7241 static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 7118 7242 unsigned const iTest = BS3CPUINSTR4_TEST_MODES_INDEX(bMode); 7119 return bs3CpuInstr4_WorkerTestType1 (bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,7243 return bs3CpuInstr4_WorkerTestType1A(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 7120 7244 g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2)); 7121 7245 }
Note:
See TracChangeset
for help on using the changeset viewer.