- Timestamp:
- Aug 19, 2024 10:09:55 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
r105684 r105720 359 359 EMIT_INSTR_PLUS_ICEBP_C64 vmulss, XMM8, XMM9, FSxBX 360 360 361 ; 362 ;; [v]mulsd 363 ; 364 EMIT_INSTR_PLUS_ICEBP mulsd, XMM1, XMM2 365 EMIT_INSTR_PLUS_ICEBP mulsd, XMM1, FSxBX 366 EMIT_INSTR_PLUS_ICEBP_C64 mulsd, XMM8, XMM9 367 EMIT_INSTR_PLUS_ICEBP_C64 mulsd, XMM8, FSxBX 368 369 EMIT_INSTR_PLUS_ICEBP vmulsd, XMM1, XMM2, XMM3 370 EMIT_INSTR_PLUS_ICEBP vmulsd, XMM1, XMM2, FSxBX 371 EMIT_INSTR_PLUS_ICEBP_C64 vmulsd, XMM8, XMM9, XMM10 372 EMIT_INSTR_PLUS_ICEBP_C64 vmulsd, XMM8, XMM9, FSxBX 373 361 374 %endif ; BS3_INSTANTIATING_CMN 362 375 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r105719 r105720 6840 6840 6841 6841 6842 /* 6843 * [V]MULSD. 6844 */ 6845 BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_mulsd(uint8_t bMode) 6846 { 6847 static BS3CPUINSTR4_TEST1_VALUES_SD_T const s_aValues[] = 6848 { 6849 /* 6850 * Zero. 6851 */ 6852 /* 0*/{ { /*src2 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6853 { /*src1 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6854 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6855 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 6856 /*128:out */ X86_MXCSR_XCPT_MASK, 6857 /*256:out */ X86_MXCSR_XCPT_MASK, 6858 /*xcpt? */ false, false }, 6859 { { /*src2 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6860 { /*src1 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6861 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6862 /*mxcsr:in */ 0, 6863 /*128:out */ 0, 6864 /*256:out */ 0, 6865 /*xcpt? */ false, false }, 6866 { { /*src2 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6867 { /*src1 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6868 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6869 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6870 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6871 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6872 /*xcpt? */ false, false }, 6873 { { /*src2 */ { FP64_0(0), FP64_NORM_V3(0), FP64_NORM_V2(0), FP64_0(0) } }, 6874 { /*src1 */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_NORM_V1(0) } }, 6875 { /* => */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_NORM_V1(0) } }, 6876 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6877 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6878 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6879 /*xcpt? */ false, false }, 6880 { { /*src2 */ { FP64_0(1), FP64_RAND_V3(0), FP64_RAND_V2(1), FP64_RAND_V1(1) } }, 6881 { /*src1 */ { FP64_0(1), FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V2(0) } }, 6882 { /* => */ { FP64_0(0), FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V2(0) } }, 6883 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 6884 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 6885 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 6886 /*xcpt? */ false, false }, 6887 { { /*src2 */ { FP64_0(1), FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V2(1) } }, 6888 { /*src1 */ { FP64_0(0), FP64_RAND_V2(1), FP64_RAND_V3(0), FP64_RAND_V0(0) } }, 6889 { /* => */ { FP64_0(1), FP64_RAND_V2(1), FP64_RAND_V3(0), FP64_RAND_V0(0) } }, 6890 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 6891 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 6892 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 6893 /*xcpt? */ false, false }, 6894 { { /*src2 */ { FP64_0(0), FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V2(1) } }, 6895 { /*src1 */ { FP64_0(1), FP64_RAND_V1(1), FP64_RAND_V2(0), FP64_RAND_V0(0) } }, 6896 { /* => */ { FP64_0(1), FP64_RAND_V1(1), FP64_RAND_V2(0), FP64_RAND_V0(0) } }, 6897 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 6898 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 6899 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 6900 /*xcpt? */ false, false }, 6901 { { /*src2 */ { FP64_0(0), FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V2(1) } }, 6902 { /*src1 */ { FP64_1(0), FP64_RAND_V3(1), FP64_RAND_V2(0), FP64_RAND_V0(0) } }, 6903 { /* => */ { FP64_0(0), FP64_RAND_V3(1), FP64_RAND_V2(0), FP64_RAND_V0(0) } }, 6904 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6905 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6906 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 6907 /*xcpt? */ false, false }, 6908 /* 6909 * Infinity. 6910 */ 6911 /* 8*/{ { /*src2 */ { FP64_INF(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6912 { /*src1 */ { FP64_1(1), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6913 { /* => */ { FP64_INF(1), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6914 /*mxcsr:in */ X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM, 6915 /*128:out */ X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM, 6916 /*256:out */ X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM, 6917 /*xcpt? */ false, false }, 6918 { { /*src2 */ { FP64_INF(1), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6919 { /*src1 */ { FP64_1(1), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6920 { /* => */ { FP64_INF(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 6921 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 6922 /*128:out */ X86_MXCSR_XCPT_MASK, 6923 /*256:out */ X86_MXCSR_XCPT_MASK, 6924 /*xcpt? */ false, false }, 6925 { { /*src2 */ { FP64_INF(0), FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } }, 6926 { /*src1 */ { FP64_INF(0), FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V2(1) } }, 6927 { /* => */ { FP64_INF(0), FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V2(1) } }, 6928 /*mxcsr:in */ (X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM) | X86_MXCSR_DAZ | X86_MXCSR_FZ, 6929 /*128:out */ (X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM) | X86_MXCSR_DAZ | X86_MXCSR_FZ, 6930 /*256:out */ (X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM) | X86_MXCSR_DAZ | X86_MXCSR_FZ, 6931 /*xcpt? */ false, false }, 6932 { { /*src2 */ { FP64_INF(1), FP64_RAND_V3(0), FP64_RAND_V2(1), FP64_RAND_V1(1) } }, 6933 { /*src1 */ { FP64_INF(0), FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V0(0) } }, 6934 { /* => */ { FP64_INF(1), FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V0(0) } }, 6935 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 6936 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 6937 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 6938 /*xcpt? */ false, false }, 6939 { { /*src2 */ { FP64_1(0), FP64_RAND_V3(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } }, 6940 { /*src1 */ { FP64_INF(0), FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } }, 6941 { /* => */ { FP64_INF(0), FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } }, 6942 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ, 6943 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ, 6944 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ, 6945 /*xcpt? */ false, false }, 6946 { { /*src2 */ { FP64_INF(0), FP64_INF(0), FP64_INF(1), FP64_INF(1) } }, 6947 { /*src1 */ { FP64_1(1), FP64_INF(1), FP64_INF(1), FP64_INF(0) } }, 6948 { /* => */ { FP64_INF(1), FP64_INF(1), FP64_INF(0), FP64_INF(1) } }, 6949 /*mxcsr:in */ X86_MXCSR_FZ, 6950 /*128:out */ X86_MXCSR_FZ, 6951 /*256:out */ X86_MXCSR_FZ, 6952 /*xcpt? */ false, false }, 6953 { { /*src2 */ { FP64_INF(1), FP64_QNAN(0), FP64_SNAN(0), FP64_RAND_V0(0) } }, 6954 { /*src1 */ { FP64_INF(0), FP64_QNAN(0), FP64_SNAN(0), FP64_RAND_V0(0) } }, 6955 { /* => */ { FP64_INF(1), FP64_QNAN(0), FP64_SNAN(0), FP64_RAND_V0(0) } }, 6956 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6957 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6958 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 6959 /*xcpt? */ false, false }, 6960 /* 6961 * Normals. 6962 */ 6963 /*15*/{ { /*src2 */ { FP64_V(0, 0xe66f500000000, 0x40d)/*31131.828125*/, FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } }, 6964 { /*src1 */ { FP64_1(0), FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V2(1) } }, 6965 { /* => */ { FP64_V(0, 0xe66f500000000, 0x40d)/*31131.828125*/, FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V2(1) } }, 6966 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 6967 /*128:out */ X86_MXCSR_XCPT_MASK, 6968 /*256:out */ X86_MXCSR_XCPT_MASK, 6969 /*xcpt? */ false, false }, 6970 { { /*src2 */ { FP64_V(0, 0xaf00000000000, 0x406)/* 215.50*/, FP64_RAND_V2(0), FP64_RAND_V3(0), FP64_RAND_V2(1) } }, 6971 { /*src1 */ { FP64_V(0, 0x2d69a80000000, 0x413)/* 1234586.50*/, FP64_RAND_V1(0), FP64_RAND_V1(1), FP64_RAND_V0(1) } }, 6972 { /* => */ { FP64_V(0, 0xfb74e1d800000, 0x41a)/*266053390.75*/, FP64_RAND_V1(0), FP64_RAND_V1(1), FP64_RAND_V0(1) } }, 6973 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 6974 /*128:out */ X86_MXCSR_XCPT_MASK, 6975 /*256:out */ X86_MXCSR_XCPT_MASK, 6976 /*xcpt? */ false, false }, 6977 { { /*src2 */ { FP64_V(1, 0x107526e749f80, 0x42b)/*-18723145413791.50*/, FP64_RAND_V3(0), FP64_RAND_V1(0), FP64_RAND_V1(1) } }, 6978 { /*src1 */ { FP64_V(1, 0x4000000000000, 0x400)/* -2.50*/, FP64_RAND_V0(0), FP64_RAND_V2(1), FP64_RAND_V2(1) } }, 6979 { /* => */ { FP64_V(0, 0x549270a11c760, 0x42c)/* 46807863534478.75*/, FP64_RAND_V0(0), FP64_RAND_V2(1), FP64_RAND_V2(1) } }, 6980 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 6981 /*128:out */ X86_MXCSR_XCPT_MASK, 6982 /*256:out */ X86_MXCSR_XCPT_MASK, 6983 /*xcpt? */ false, false }, 6984 { { /*src2 */ { FP64_V(0, 0x6fee0e4bd0000, 0x420)/* 12345678999.62500*/, FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V1(1) } }, 6985 { /*src1 */ { FP64_V(0, 0xb800000000000, 0x402)/* 13.75000*/, FP64_RAND_V2(0), FP64_RAND_V1(1), FP64_RAND_V3(1) } }, 6986 { /* => */ { FP64_V(0, 0x3c30944926c00, 0x424)/*169753086244.84375*/, FP64_RAND_V2(0), FP64_RAND_V1(1), FP64_RAND_V3(1) } }, 6987 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 6988 /*128:out */ X86_MXCSR_XCPT_MASK, 6989 /*256:out */ X86_MXCSR_XCPT_MASK, 6990 /*xcpt? */ false, false }, 6991 { { /*src2 */ { FP64_NORM_MAX(1), FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } }, 6992 { /*src1 */ { FP64_1(1), FP64_RAND_V1(1), FP64_RAND_V0(0), FP64_RAND_V2(0) } }, 6993 { /* => */ { FP64_NORM_MAX(0), FP64_RAND_V1(1), FP64_RAND_V0(0), FP64_RAND_V2(0) } }, 6994 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 6995 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 6996 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 6997 /*xcpt? */ false, false }, 6998 { { /*src2 */ { FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646.00*/, FP64_RAND_V2(0), FP64_RAND_V2(0), FP64_RAND_V1(1) } }, 6999 { /*src1 */ { FP64_V(0, 0x8000000000000, 0x3fe)/* 0.75*/, FP64_RAND_V1(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } }, 7000 { /* => */ { FP64_V(0, 0x4da20a80c6990, 0x42e)/*183416666481484.50*/, FP64_RAND_V1(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } }, 7001 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7002 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7003 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7004 /*xcpt? */ false, false }, 7005 { { /*src2 */ { FP64_V(1, 0x68b83b1ed4000, 0x41e)/*-3025935759.4140625*/, FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V2(1) } }, 7006 { /*src1 */ { FP64_V(1, 0, 0x400)/* -2.0000000*/, FP64_RAND_V2(0), FP64_RAND_V1(1), FP64_RAND_V3(1) } }, 7007 { /* => */ { FP64_V(0, 0x68b83b1ed4000, 0x41f)/* 6051871518.8281250*/, FP64_RAND_V2(0), FP64_RAND_V1(1), FP64_RAND_V3(1) } }, 7008 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7009 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7010 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7011 /*xcpt? */ false, false }, 7012 { { /*src2 */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/, FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V1(1) } }, 7013 { /*src1 */ { FP64_V(0, 0x8000000000000, 0x400)/* 3.00*/, FP64_RAND_V1(1), FP64_RAND_V1(1), FP64_RAND_V3(0) } }, 7014 { /* => */ { FP64_V(0, 0x4a6a82b05f744, 0x42f)/*363296296296308.25*/, FP64_RAND_V1(1), FP64_RAND_V1(1), FP64_RAND_V3(0) } }, 7015 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7016 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7017 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7018 /*xcpt? */ false, false }, 7019 { { /*src2 */ { FP64_1(0), FP64_0(0), FP64_NORM_SAFE_INT_MIN(0), FP64_NORM_MAX(1) } }, 7020 { /*src1 */ { FP64_NORM_SAFE_INT_MAX(0), FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_INF(1), FP64_NORM_SAFE_INT_MIN(1) } }, 7021 { /* => */ { FP64_NORM_SAFE_INT_MAX(0), FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_INF(1), FP64_NORM_SAFE_INT_MIN(1) } }, 7022 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 7023 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 7024 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 7025 /*xcpt? */ false, false }, 7026 { { /*src2 */ { FP64_NORM_V0(0), FP64_NORM_V1(1), FP64_NORM_V2(0), FP64_NORM_V3(1) } }, 7027 { /*src1 */ { FP64_1(0), FP64_SNAN(0), FP64_SNAN(1), FP64_QNAN(0) } }, 7028 { /* => */ { FP64_NORM_V0(0), FP64_SNAN(0), FP64_SNAN(1), FP64_QNAN(0) } }, 7029 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7030 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7031 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 7032 /*xcpt? */ false, false }, 7033 /** @todo Denormals, Invalids, Underflow, Precision; Rounding, FZ etc. */ 7034 }; 7035 7036 static BS3CPUINSTR4_TEST1_T const s_aTests16[] = 7037 { 7038 { bs3CpuInstr4_mulsd_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE, 1, 1, 2, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7039 { bs3CpuInstr4_mulsd_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7040 7041 { bs3CpuInstr4_vmulsd_XMM1_XMM2_XMM3_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7042 { bs3CpuInstr4_vmulsd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7043 }; 7044 static BS3CPUINSTR4_TEST1_T const s_aTests32[] = 7045 { 7046 { bs3CpuInstr4_mulsd_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE, 1, 1, 2, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7047 { bs3CpuInstr4_mulsd_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7048 7049 { bs3CpuInstr4_vmulsd_XMM1_XMM2_XMM3_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7050 { bs3CpuInstr4_vmulsd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7051 }; 7052 static BS3CPUINSTR4_TEST1_T const s_aTests64[] = 7053 { 7054 { bs3CpuInstr4_mulsd_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE, 1, 1, 2, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7055 { bs3CpuInstr4_mulsd_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7056 7057 { bs3CpuInstr4_vmulsd_XMM1_XMM2_XMM3_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7058 { bs3CpuInstr4_vmulsd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7059 7060 { bs3CpuInstr4_mulsd_XMM8_XMM9_icebp_c64, 255, RM_REG, T_SSE, 8, 8, 9, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7061 { bs3CpuInstr4_mulsd_XMM8_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_SSE, 8, 8, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7062 7063 { bs3CpuInstr4_vmulsd_XMM8_XMM9_XMM10_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 10, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7064 { bs3CpuInstr4_vmulsd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_AVX_128, 8, 9, 255, RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues }, 7065 }; 7066 7067 static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 7068 unsigned const iTest = BS3CPUINSTR4_TEST_MODES_INDEX(bMode); 7069 return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 7070 g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3)); 7071 } 7072 7073 6842 7074 /** 6843 7075 * The 32-bit protected mode main function. … … 6872 7104 { "[v]mulpd", bs3CpuInstr4_v_mulpd, 0 }, 6873 7105 { "[v]mulss", bs3CpuInstr4_v_mulss, 0 }, 7106 { "[v]mulsd", bs3CpuInstr4_v_mulsd, 0 }, 6874 7107 #endif 6875 7108 };
Note:
See TracChangeset
for help on using the changeset viewer.