Changeset 104723 in vbox for trunk/src/VBox
- Timestamp:
- May 18, 2024 5:00:34 AM (7 months ago)
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac
r104440 r104723 3220 3220 %undef EMIT_FS_PREFIX 3221 3221 3222 ; 3223 ; VMASKMOVPS 3224 ; 3225 EMIT_INSTR_PLUS_ICEBP vmaskmovps, XMM0, XMM1, FSxBX 3226 EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, XMM8, XMM9, FSxBX 3227 3228 EMIT_INSTR_PLUS_ICEBP vmaskmovps, YMM0, YMM1, FSxBX 3229 EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, YMM8, YMM9, FSxBX 3230 3231 EMIT_INSTR_PLUS_ICEBP vmaskmovps, FSxBX, XMM0, XMM1 3232 EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, FSxBX, XMM8, XMM9 3233 3234 EMIT_INSTR_PLUS_ICEBP vmaskmovps, FSxBX, YMM0, YMM1 3235 EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, FSxBX, YMM8, YMM9 3236 3237 ; 3238 ; VMASKMOVPD 3239 ; 3240 EMIT_INSTR_PLUS_ICEBP vmaskmovpd, XMM0, XMM1, FSxBX 3241 EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, XMM8, XMM9, FSxBX 3242 3243 EMIT_INSTR_PLUS_ICEBP vmaskmovpd, YMM0, YMM1, FSxBX 3244 EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, YMM8, YMM9, FSxBX 3245 3246 EMIT_INSTR_PLUS_ICEBP vmaskmovpd, FSxBX, XMM0, XMM1 3247 EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, FSxBX, XMM8, XMM9 3248 3249 EMIT_INSTR_PLUS_ICEBP vmaskmovpd, FSxBX, YMM0, YMM1 3250 EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, FSxBX, YMM8, YMM9 3251 3252 ; 3253 ; VPMASKMOVD 3254 ; 3255 EMIT_INSTR_PLUS_ICEBP vpmaskmovd, XMM0, XMM1, FSxBX 3256 EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, XMM8, XMM9, FSxBX 3257 3258 EMIT_INSTR_PLUS_ICEBP vpmaskmovd, YMM0, YMM1, FSxBX 3259 EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, YMM8, YMM9, FSxBX 3260 3261 EMIT_INSTR_PLUS_ICEBP vpmaskmovd, FSxBX, XMM0, XMM1 3262 EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, FSxBX, XMM8, XMM9 3263 3264 EMIT_INSTR_PLUS_ICEBP vpmaskmovd, FSxBX, YMM0, YMM1 3265 EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, FSxBX, YMM8, YMM9 3266 3267 ; 3268 ; VPMASKMOVQ 3269 ; 3270 EMIT_INSTR_PLUS_ICEBP vpmaskmovq, XMM0, XMM1, FSxBX 3271 EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, XMM8, XMM9, FSxBX 3272 3273 EMIT_INSTR_PLUS_ICEBP vpmaskmovq, YMM0, YMM1, FSxBX 3274 EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, YMM8, YMM9, FSxBX 3275 3276 EMIT_INSTR_PLUS_ICEBP vpmaskmovq, FSxBX, XMM0, XMM1 3277 EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, FSxBX, XMM8, XMM9 3278 3279 EMIT_INSTR_PLUS_ICEBP vpmaskmovq, FSxBX, YMM0, YMM1 3280 EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, FSxBX, YMM8, YMM9 3281 3222 3282 %endif ; BS3_INSTANTIATING_CMN 3223 3283 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r104721 r104723 13281 13281 * Test type #5 - three source MM/XMM/YMM operands. 13282 13282 * 13283 * Probably only used by the [P]BLEND and SHA256RNDS2instructions.13283 * Used by [P]BLENDV, SHA256RNDS2, V[P]MASKMOV instructions. 13284 13284 */ 13285 13285 … … 13890 13890 return bs3CpuInstr3_WorkerTestType5(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 13891 13891 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4)); 13892 } 13893 13894 13895 /* 13896 * VMASKMOVP[SD], VPMASKMOV[DQ] - move selected dwords / qwords 13897 */ 13898 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_vmaskmovps_d_vpmaskmovd_q(uint8_t bMode) 13899 { 13900 static BS3CPUINSTR3_TEST5_VALUES_T const s_aValues_LD_dw_128[] = 13901 { 13902 { // Copy all 13903 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), // SRC (before instruction) uSrc3 (in worker) 13904 /*mask*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xfedcba9889abcdef), // MSK (before instruction) uSrc2 (in worker) 13905 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), // INIT DST value (before) uSrc1 (in worker) 13906 /* => */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), // DST (after instruction) uDstO (in worker) 13907 /*flgs*/ 0 }, 13908 { // Copy only beginning of buffer 13909 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13910 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9889abcdef), 13911 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13912 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000004000400), 13913 /*flgs*/ 0 }, 13914 { // Copy only end of buffer 13915 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13916 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x9192939455969798, 0x6edcba9879abcdef), 13917 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13918 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0300030000000000, 0x0000000000000000), 13919 /*flgs*/ 0 }, 13920 { // Copy none: loads all-0s (memory not accessed) 13921 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13922 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9879abcdef), 13923 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13924 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000), 13925 /*flgs*/ BS3_TEST_F_NO_PF }, 13926 }; 13927 static BS3CPUINSTR3_TEST5_VALUES_T const s_aValues_ST_dw_128[] = 13928 { 13929 { // Copy all 13930 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13931 /*mask*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xfedcba9889abcdef), 13932 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13933 /* => */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13934 /*flgs*/ 0 }, 13935 { // Copy only beginning of buffer 13936 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13937 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9889abcdef), 13938 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13939 /* => */ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaa04000400), 13940 /*flgs*/ 0 }, 13941 { // Copy only end of buffer -- are these erroring because no copy happens on xmm? that must be it 13942 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13943 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x9192939455969798, 0x6edcba9879abcdef), 13944 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13945 /* => */ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0x03000300aaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13946 /*flgs*/ 0 }, 13947 { // Copy none: stores nothing (memory not overwritten or even accessed) 13948 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13949 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9879abcdef), 13950 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13951 /* => */ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13952 /*flgs*/ BS3_TEST_F_NO_PF }, 13953 }; 13954 static BS3CPUINSTR3_TEST5_VALUES_T const s_aValues_LD_dw_256[] = 13955 { 13956 { // Copy all 13957 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13958 /*mask*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xfedcba9889abcdef), 13959 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13960 /* => */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13961 /*flgs*/ 0 }, 13962 { // Copy only beginning of buffer 13963 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13964 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9889abcdef), 13965 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13966 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000004000400), 13967 /*flgs*/ 0 }, 13968 { // Copy only end of buffer 13969 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13970 /*mask*/ RTUINT256_INIT_C(0xb1b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9879abcdef), 13971 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13972 /* => */ RTUINT256_INIT_C(0x0100010000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000), 13973 /*flgs*/ 0 }, 13974 { // Copy none: loads all-0s (memory not accessed) 13975 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13976 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9879abcdef), 13977 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13978 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000), 13979 /*flgs*/ BS3_TEST_F_NO_PF }, 13980 }; 13981 static BS3CPUINSTR3_TEST5_VALUES_T const s_aValues_ST_dw_256[] = 13982 { 13983 { // Copy all 13984 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13985 /*mask*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xfedcba9889abcdef), 13986 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13987 /* => */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13988 /*flgs*/ 0 }, 13989 { // Copy only beginning of buffer 13990 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13991 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9889abcdef), 13992 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13993 /* => */ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaa04000400), 13994 /*flgs*/ 0 }, 13995 { // Copy only end of buffer 13996 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 13997 /*mask*/ RTUINT256_INIT_C(0xb1b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9879abcdef), 13998 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 13999 /* => */ RTUINT256_INIT_C(0x01000100aaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14000 /*flgs*/ 0 }, 14001 { // Copy none: stores nothing (memory not overwritten or even accessed) 14002 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14003 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9879abcdef), 14004 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14005 /* => */ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14006 /*flgs*/ BS3_TEST_F_NO_PF }, 14007 }; 14008 static BS3CPUINSTR3_TEST5_VALUES_T const s_aValues_LD_qw_all[] = 14009 { 14010 { // Copy all 14011 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14012 /*mask*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xfedcba9889abcdef), 14013 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14014 /* => */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14015 /*flgs*/ 0 }, 14016 { // Copy some 14017 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14018 /*mask*/ RTUINT256_INIT_C(0x01b2b3b4b5b6b7b8, 0xa1a2a3a435a6a7a8, 0x4192939495969798, 0xfedcba9889abcdef), 14019 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14020 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0200020002000200, 0x0000000000000000, 0x0400040004000400), 14021 /*flgs*/ 0 }, 14022 { // Copy none: loads all-0s (memory not accessed) 14023 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14024 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9879abcdef), 14025 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14026 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000), 14027 /*flgs*/ BS3_TEST_F_NO_PF }, 14028 }; 14029 static BS3CPUINSTR3_TEST5_VALUES_T const s_aValues_ST_qw_all[] = 14030 { 14031 { // Copy all 14032 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14033 /*mask*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xfedcba9889abcdef), 14034 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14035 /* => */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14036 /*flgs*/ 0 }, 14037 { // Copy some 14038 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14039 /*mask*/ RTUINT256_INIT_C(0x01b2b3b4b5b6b7b8, 0xa1a2a3a435a6a7a8, 0x4192939495969798, 0xfedcba9889abcdef), 14040 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14041 /* => */ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0x0200020002000200, 0xaaaaaaaaaaaaaaaa, 0x0400040004000400), 14042 /*flgs*/ 0 }, 14043 { // Copy none: stores nothing (memory not overwritten or even accessed) 14044 /*src */ RTUINT256_INIT_C(0x0100010001000100, 0x0200020002000200, 0x0300030003000300, 0x0400040004000400), 14045 /*mask*/ RTUINT256_INIT_C(0x01b2b3b415b6b7b8, 0x21a2a3a435a6a7a8, 0x4192939455969798, 0x6edcba9879abcdef), 14046 /*init*/ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14047 /* => */ RTUINT256_INIT_C(0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa), 14048 /*flgs*/ BS3_TEST_F_NO_PF }, 14049 }; 14050 14051 static BS3CPUINSTR3_TEST5_T const s_aTests16[] = 14052 { // => src1 src2 src3 14053 // DEST INIT MASK SOURCE 14054 { bs3CpuInstr3_vmaskmovps_XMM0_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_128), s_aValues_LD_dw_128 }, 14055 { bs3CpuInstr3_vmaskmovps_YMM0_YMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_256), s_aValues_LD_dw_256 }, 14056 { bs3CpuInstr3_vmaskmovps_FSxBX_XMM0_XMM1_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_128), s_aValues_ST_dw_128 }, 14057 { bs3CpuInstr3_vmaskmovps_FSxBX_YMM0_YMM1_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_256), s_aValues_ST_dw_256 }, 14058 14059 { bs3CpuInstr3_vmaskmovpd_XMM0_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14060 { bs3CpuInstr3_vmaskmovpd_YMM0_YMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14061 { bs3CpuInstr3_vmaskmovpd_FSxBX_XMM0_XMM1_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14062 { bs3CpuInstr3_vmaskmovpd_FSxBX_YMM0_YMM1_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14063 14064 { bs3CpuInstr3_vpmaskmovd_XMM0_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_128), s_aValues_LD_dw_128 }, 14065 { bs3CpuInstr3_vpmaskmovd_YMM0_YMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_256), s_aValues_LD_dw_256 }, 14066 { bs3CpuInstr3_vpmaskmovd_FSxBX_XMM0_XMM1_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_128), s_aValues_ST_dw_128 }, 14067 { bs3CpuInstr3_vpmaskmovd_FSxBX_YMM0_YMM1_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_256), s_aValues_ST_dw_256 }, 14068 14069 { bs3CpuInstr3_vpmaskmovq_XMM0_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14070 { bs3CpuInstr3_vpmaskmovq_YMM0_YMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14071 { bs3CpuInstr3_vpmaskmovq_FSxBX_XMM0_XMM1_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14072 { bs3CpuInstr3_vpmaskmovq_FSxBX_YMM0_YMM1_icebp_c16, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14073 }; 14074 static BS3CPUINSTR3_TEST5_T const s_aTests32[] = 14075 { 14076 { bs3CpuInstr3_vmaskmovps_XMM0_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_128), s_aValues_LD_dw_128 }, 14077 { bs3CpuInstr3_vmaskmovps_YMM0_YMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_256), s_aValues_LD_dw_256 }, 14078 { bs3CpuInstr3_vmaskmovps_FSxBX_XMM0_XMM1_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_128), s_aValues_ST_dw_128 }, 14079 { bs3CpuInstr3_vmaskmovps_FSxBX_YMM0_YMM1_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_256), s_aValues_ST_dw_256 }, 14080 14081 { bs3CpuInstr3_vmaskmovpd_XMM0_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14082 { bs3CpuInstr3_vmaskmovpd_YMM0_YMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14083 { bs3CpuInstr3_vmaskmovpd_FSxBX_XMM0_XMM1_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14084 { bs3CpuInstr3_vmaskmovpd_FSxBX_YMM0_YMM1_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14085 14086 { bs3CpuInstr3_vpmaskmovd_XMM0_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_128), s_aValues_LD_dw_128 }, 14087 { bs3CpuInstr3_vpmaskmovd_YMM0_YMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_256), s_aValues_LD_dw_256 }, 14088 { bs3CpuInstr3_vpmaskmovd_FSxBX_XMM0_XMM1_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_128), s_aValues_ST_dw_128 }, 14089 { bs3CpuInstr3_vpmaskmovd_FSxBX_YMM0_YMM1_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_256), s_aValues_ST_dw_256 }, 14090 14091 { bs3CpuInstr3_vpmaskmovq_XMM0_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14092 { bs3CpuInstr3_vpmaskmovq_YMM0_YMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14093 { bs3CpuInstr3_vpmaskmovq_FSxBX_XMM0_XMM1_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14094 { bs3CpuInstr3_vpmaskmovq_FSxBX_YMM0_YMM1_icebp_c32, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14095 }; 14096 static BS3CPUINSTR3_TEST5_T const s_aTests64[] = 14097 { 14098 { bs3CpuInstr3_vmaskmovps_XMM0_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_128), s_aValues_LD_dw_128 }, 14099 { bs3CpuInstr3_vmaskmovps_YMM0_YMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_256), s_aValues_LD_dw_256 }, 14100 { bs3CpuInstr3_vmaskmovps_FSxBX_XMM0_XMM1_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_128), s_aValues_ST_dw_128 }, 14101 { bs3CpuInstr3_vmaskmovps_FSxBX_YMM0_YMM1_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_256), s_aValues_ST_dw_256 }, 14102 14103 { bs3CpuInstr3_vmaskmovpd_XMM0_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14104 { bs3CpuInstr3_vmaskmovpd_YMM0_YMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14105 { bs3CpuInstr3_vmaskmovpd_FSxBX_XMM0_XMM1_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14106 { bs3CpuInstr3_vmaskmovpd_FSxBX_YMM0_YMM1_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14107 14108 { bs3CpuInstr3_vpmaskmovd_XMM0_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_128), s_aValues_LD_dw_128 }, 14109 { bs3CpuInstr3_vpmaskmovd_YMM0_YMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_dw_256), s_aValues_LD_dw_256 }, 14110 { bs3CpuInstr3_vpmaskmovd_FSxBX_XMM0_XMM1_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_128), s_aValues_ST_dw_128 }, 14111 { bs3CpuInstr3_vpmaskmovd_FSxBX_YMM0_YMM1_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_dw_256), s_aValues_ST_dw_256 }, 14112 14113 { bs3CpuInstr3_vpmaskmovq_XMM0_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14114 { bs3CpuInstr3_vpmaskmovq_YMM0_YMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 0, 0, 1, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14115 { bs3CpuInstr3_vpmaskmovq_FSxBX_XMM0_XMM1_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14116 { bs3CpuInstr3_vpmaskmovq_FSxBX_YMM0_YMM1_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 255, 255, 0, 1, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14117 14118 { bs3CpuInstr3_vmaskmovps_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_128, 8, 8, 9, 255, RT_ELEMENTS(s_aValues_LD_dw_128), s_aValues_LD_dw_128 }, 14119 { bs3CpuInstr3_vmaskmovps_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_256, 8, 8, 9, 255, RT_ELEMENTS(s_aValues_LD_dw_256), s_aValues_LD_dw_256 }, 14120 { bs3CpuInstr3_vmaskmovps_FSxBX_XMM8_XMM9_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_128, 255, 255, 8, 9, RT_ELEMENTS(s_aValues_ST_dw_128), s_aValues_ST_dw_128 }, 14121 { bs3CpuInstr3_vmaskmovps_FSxBX_YMM8_YMM9_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_256, 255, 255, 8, 9, RT_ELEMENTS(s_aValues_ST_dw_256), s_aValues_ST_dw_256 }, 14122 14123 { bs3CpuInstr3_vmaskmovpd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_128, 8, 8, 9, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14124 { bs3CpuInstr3_vmaskmovpd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_256, 8, 8, 9, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14125 { bs3CpuInstr3_vmaskmovpd_FSxBX_XMM8_XMM9_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_128, 255, 255, 8, 9, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14126 { bs3CpuInstr3_vmaskmovpd_FSxBX_YMM8_YMM9_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX_256, 255, 255, 8, 9, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14127 14128 { bs3CpuInstr3_vpmaskmovd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 8, 8, 9, 255, RT_ELEMENTS(s_aValues_LD_dw_128), s_aValues_LD_dw_128 }, 14129 { bs3CpuInstr3_vpmaskmovd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 8, 8, 9, 255, RT_ELEMENTS(s_aValues_LD_dw_256), s_aValues_LD_dw_256 }, 14130 { bs3CpuInstr3_vpmaskmovd_FSxBX_XMM8_XMM9_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 255, 255, 8, 9, RT_ELEMENTS(s_aValues_ST_dw_128), s_aValues_ST_dw_128 }, 14131 { bs3CpuInstr3_vpmaskmovd_FSxBX_YMM8_YMM9_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 255, 255, 8, 9, RT_ELEMENTS(s_aValues_ST_dw_256), s_aValues_ST_dw_256 }, 14132 14133 { bs3CpuInstr3_vpmaskmovq_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 8, 8, 9, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14134 { bs3CpuInstr3_vpmaskmovq_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 8, 8, 9, 255, RT_ELEMENTS(s_aValues_LD_qw_all), s_aValues_LD_qw_all }, 14135 { bs3CpuInstr3_vpmaskmovq_FSxBX_XMM8_XMM9_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_128, 255, 255, 8, 9, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14136 { bs3CpuInstr3_vpmaskmovq_FSxBX_YMM8_YMM9_icebp_c64, X86_XCPT_DB, RM_RANGE, T_AVX2_256, 255, 255, 8, 9, RT_ELEMENTS(s_aValues_ST_qw_all), s_aValues_ST_qw_all }, 14137 }; 14138 static BS3CPUINSTR3_TEST5_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST5_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 14139 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 14140 return bs3CpuInstr3_WorkerTestType5(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 14141 g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5)); 13892 14142 } 13893 14143 … … 14688 14938 #if defined(ALL_TESTS) 14689 14939 { "maskmovq/[v]maskmovdqu", bs3CpuInstr3_maskmovq_v_maskmovdqu, 0 }, 14940 { "vmaskmovps/vmaskmovpd/vpmaskmovd/vpmaskmovq", bs3CpuInstr3_vmaskmovps_d_vpmaskmovd_q, 0 }, 14690 14941 #endif 14691 14942 };
Note:
See TracChangeset
for help on using the changeset viewer.