Changeset 107230 in vbox
- Timestamp:
- Dec 5, 2024 5:43:30 AM (6 weeks 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
r107222 r107230 1330 1330 1331 1331 ; 1332 ;; cmppd 1333 ; 1334 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 000h 1335 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 001h 1336 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 002h 1337 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 003h 1338 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 004h 1339 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 005h 1340 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 006h 1341 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 007h 1342 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 008h ;; reserved 1343 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 011h ;; reserved 1344 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 022h ;; reserved 1345 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 043h ;; reserved 1346 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 084h ;; reserved 1347 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM1, 000h ;; same-register 1348 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM1, 006h ;; same-register 1349 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, FSxBX, 001h 1350 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, FSxBX, 004h 1351 EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, FSxBX, 007h 1352 EMIT_INSTR_PLUS_ICEBP_C64 cmppd, XMM8, XMM9, 002h 1353 EMIT_INSTR_PLUS_ICEBP_C64 cmppd, XMM8, XMM8, 005h ;; same-register 1354 EMIT_INSTR_PLUS_ICEBP_C64 cmppd, XMM8, FSxBX, 003h 1355 1356 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 000h 1357 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 001h 1358 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 002h 1359 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 003h 1360 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 004h 1361 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 005h 1362 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 006h 1363 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 007h 1364 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 008h 1365 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 009h 1366 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00ah 1367 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00bh 1368 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00ch 1369 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00dh 1370 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00eh 1371 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00fh 1372 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 010h 1373 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 011h 1374 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 012h 1375 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 013h 1376 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 014h 1377 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 015h 1378 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 016h 1379 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 017h 1380 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 018h 1381 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 019h 1382 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01ah 1383 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01bh 1384 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01ch 1385 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01dh 1386 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01eh 1387 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01fh 1388 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 022h ;; reserved 1389 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 044h ;; reserved 1390 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM1, XMM1, 005h ;; same-register 1391 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM1, XMM2, 00ah ;; same-register 1392 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM1, FSxBX, 00bh ;; same-register 1393 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM1, 00ch ;; same-register 1394 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM2, 00eh ;; same-register 1395 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, FSxBX, 010h 1396 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, FSxBX, 011h 1397 EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, FSxBX, 013h 1398 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM10, 016h 1399 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM10, 017h 1400 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM10, 019h 1401 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM9, 01ah ;; same-register 1402 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM10, 0ddh ;; reserved 1403 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, FSxBX, 01dh 1404 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM8, FSxBX, 01fh ;; same-register 1405 1406 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 000h 1407 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 001h 1408 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 002h 1409 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 003h 1410 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 004h 1411 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 005h 1412 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 006h 1413 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 007h 1414 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 008h 1415 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 009h 1416 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00ah 1417 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00bh 1418 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00ch 1419 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00dh 1420 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00eh 1421 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00fh 1422 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 010h 1423 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 011h 1424 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 012h 1425 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 013h 1426 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 014h 1427 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 015h 1428 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 016h 1429 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 017h 1430 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 018h 1431 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 019h 1432 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01ah 1433 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01bh 1434 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01ch 1435 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01dh 1436 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01eh 1437 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01fh 1438 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 022h ;; reserved 1439 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 044h ;; reserved 1440 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM1, YMM1, 005h ;; same-register 1441 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM1, YMM2, 00ah ;; same-register 1442 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM1, FSxBX, 00bh ;; same-register 1443 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM1, 00ch ;; same-register 1444 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM2, 00eh ;; same-register 1445 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, FSxBX, 010h 1446 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, FSxBX, 011h 1447 EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, FSxBX, 013h 1448 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM10, 016h 1449 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM10, 017h 1450 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM10, 019h 1451 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM9, 01ah ;; same-register 1452 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM10, 0ddh ;; reserved 1453 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, FSxBX, 01dh 1454 EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM8, FSxBX, 01fh ;; same-register 1455 1456 ; 1332 1457 ;; cvtpi2ps 1333 1458 ; -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r107222 r107230 16066 16066 /*256:out */ -1 }, 16067 16067 { { /*src1 */ { FP64_NORM_MAX(0), FP64_NORM_MAX(1) } }, 16068 { /*src2 */ { FP64_2(0), FP64_2(0) ,} },16068 { /*src2 */ { FP64_2(0), FP64_2(0) } }, 16069 16069 { /* => */ { FP64_ROW_UNUSED } }, 16070 16070 /*mxcsr:in */ 0, /* big * 2 = inf (unmasked OE hits before PE) */ … … 16072 16072 /*256:out */ -1 }, 16073 16073 { { /*src1 */ { FP64_NORM_MAX(0), FP64_NORM_MAX(1) } }, 16074 { /*src2 */ { FP64_2(0), FP64_2(0) ,} },16074 { /*src2 */ { FP64_2(0), FP64_2(0) } }, 16075 16075 { /* => */ { FP64_0(0), FP64_INF(1) } }, 16076 16076 /*mxcsr:in */ X86_MXCSR_OM, /* big * 2 = inf (OE | PE) */ … … 16296 16296 /*256:out */ -1 }, 16297 16297 { { /*src1 */ { FP64_NORM_MAX(0), FP64_NORM_MAX(1) } }, 16298 { /*src2 */ { FP64_2(0), FP64_2(0) ,} },16298 { /*src2 */ { FP64_2(0), FP64_2(0) } }, 16299 16299 { /* => */ { FP64_ROW_UNUSED } }, 16300 16300 /*mxcsr:in */ 0, … … 16302 16302 /*256:out */ -1 }, 16303 16303 { { /*src1 */ { FP64_NORM_MAX(0), FP64_NORM_MAX(0) } }, 16304 { /*src2 */ { FP64_1(0), FP64_1(0) ,} },16304 { /*src2 */ { FP64_1(0), FP64_1(0) } }, 16305 16305 { /* => */ { FP64_ROW_UNUSED } }, 16306 16306 /*mxcsr:in */ 0, /* big * 1 = big; big * 1 = big; big + big = oo (unmasked OE hits before PE) */ … … 16308 16308 /*256:out */ -1 }, 16309 16309 { { /*src1 */ { FP64_NORM_MAX(0), FP64_NORM_MAX(0) } }, 16310 { /*src2 */ { FP64_2(0), FP64_2(0) ,} },16310 { /*src2 */ { FP64_2(0), FP64_2(0) } }, 16311 16311 { /* => */ { FP64_INF(0), FP64_INF(0) } }, 16312 16312 /*mxcsr:in */ X86_MXCSR_OM, /* big * 2 = oo (OE | PE); big * 2 = oo (OE | PE) */ … … 17948 17948 { FP32_12_67_5(1), FP32_12_68_0(1), X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST }, /* MXCSR overridden by instruction */ 17949 17949 { FP32_12_67_9(0), FP32_12_67_0(0), X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST }, /* MXCSR overridden by instruction */ 17950 { FP32_12_67_9(1), FP32_12_68_0(1), X86_MXCSR_RC_UP, X86_MXCSR_RC_UP ,}, /* MXCSR overridden by instruction */17950 { FP32_12_67_9(1), FP32_12_68_0(1), X86_MXCSR_RC_UP, X86_MXCSR_RC_UP }, /* MXCSR overridden by instruction */ 17951 17951 { FP32_2(0), FP32_2(0), X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST }, /* MXCSR overridden by instruction */ 17952 17952 { FP32_2(1), FP32_2(1), X86_MXCSR_RC_ZERO, X86_MXCSR_RC_ZERO }, /* MXCSR overridden by instruction */ … … 18323 18323 { FP64_12_89_5(1), FP64_12_90_0(1), X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST }, /* MXCSR overridden by instruction */ 18324 18324 { FP64_12_89_9(0), FP64_12_89_0(0), X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST }, /* MXCSR overridden by instruction */ 18325 { FP64_12_89_9(1), FP64_12_90_0(1), X86_MXCSR_RC_UP, X86_MXCSR_RC_UP ,}, /* MXCSR overridden by instruction */18325 { FP64_12_89_9(1), FP64_12_90_0(1), X86_MXCSR_RC_UP, X86_MXCSR_RC_UP }, /* MXCSR overridden by instruction */ 18326 18326 { FP64_2(0), FP64_2(0), X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST }, /* MXCSR overridden by instruction */ 18327 18327 { FP64_2(1), FP64_2(1), X86_MXCSR_RC_ZERO, X86_MXCSR_RC_ZERO }, /* MXCSR overridden by instruction */ … … 19019 19019 #define FP64_CMP_F FP64_INT_C(-1) 19020 19020 19021 static DECLCALLBACK(PBS3CPUINSTR4_TEST1_VALUES_T) bs3CpuInstr4_WorkerTestType1_Provider_cmp s(void *paValues, const unsigned cValues, const unsigned iVal, uint8_t uExtra)19021 static DECLCALLBACK(PBS3CPUINSTR4_TEST1_VALUES_T) bs3CpuInstr4_WorkerTestType1_Provider_cmpps(void *paValues, const unsigned cValues, const unsigned iVal, uint8_t uExtra) 19022 19022 { 19023 19023 static BS3CPUINSTR4_TEST1_VALUES_PS_T sValues; … … 19064 19064 */ 19065 19065 /* 0*/{ { /* src1 */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } }, 19066 { /* src2 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_ 0(0), FP32_0(0), FP32_0(1), FP32_0(1) } },19067 { /* => */ { FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_ EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ} },19066 { /* src2 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_1(0), FP32_0(0), FP32_0(1), FP32_2(1) } }, 19067 { /* => */ { FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_LT, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_GT } }, 19068 19068 /*mxcsr:in */ 0, 19069 19069 /*128:out */ 0, … … 19183 19183 * Infinity. 19184 19184 */ 19185 /* 1*/{ { /* src1 */ { FP32_INF(0), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0) ,} },19185 /* 1*/{ { /* src1 */ { FP32_INF(0), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0) } }, 19186 19186 { /* src2 */ { FP32_INF(0), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0) } }, 19187 19187 { /* => */ { FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ, FP32_CMP_EQ } }, … … 19257 19257 { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_FSxBX_011h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x11, PASS_TEST_ARRAY(s_aValues) }, 19258 19258 { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_FSxBX_013h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues) }, 19259 { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM1_00ch), 255, RM_REG, T_AVX_128, XMM1, XMM 1, XMM2, 0x0c, PASS_TEST_ARRAY(s_aValues) },19259 { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM1_00ch), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM1, 0x0c, PASS_TEST_ARRAY(s_aValues) }, 19260 19260 { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM2_00eh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM2, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) }, 19261 19261 { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM3_000h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x00, PASS_TEST_ARRAY(s_aValues) }, … … 19352 19352 }; 19353 19353 19354 return bs3CpuInstr4_WorkerTestType1_P(bMode, PASS_ARRAY(s_aTests), PASS_ARRAY(g_aXcptConfig2), bs3CpuInstr4_WorkerTestType1_Provider_cmp s);19354 return bs3CpuInstr4_WorkerTestType1_P(bMode, PASS_ARRAY(s_aTests), PASS_ARRAY(g_aXcptConfig2), bs3CpuInstr4_WorkerTestType1_Provider_cmpps); 19355 19355 } 19356 19357 19358 static DECLCALLBACK(PBS3CPUINSTR4_TEST1_VALUES_T) bs3CpuInstr4_WorkerTestType1_Provider_cmppd(void *paValues, const unsigned cValues, const unsigned iVal, uint8_t uExtra) 19359 { 19360 static BS3CPUINSTR4_TEST1_VALUES_PD_T sValues; 19361 BS3CPUINSTR4_TEST1_VALUES_PD_T *psValuesIn = &((BS3CPUINSTR4_TEST1_VALUES_PD_T *)paValues)[iVal]; 19362 unsigned iCnt; 19363 uint8_t uPredicate; 19364 bool fSignaling; 19365 19366 BS3_ASSERT(uExtra < 32); 19367 uPredicate = g_aCmpPredicate[uExtra] & CMP_ORDERING_MASK; 19368 fSignaling = (g_aCmpPredicate[uExtra] & CMP_IE_T) == CMP_IE_T; 19369 19370 sValues.uSrc1 = psValuesIn->uSrc1; 19371 sValues.uSrc2 = psValuesIn->uSrc2; 19372 sValues.u128ExpectedMxCsr = psValuesIn->u128ExpectedMxCsr; 19373 sValues.u256ExpectedMxCsr = psValuesIn->u256ExpectedMxCsr; 19374 for (iCnt = 0; iCnt < RT_ELEMENTS(sValues.uSrc1.ymm.au64); iCnt++) 19375 { 19376 uint8_t uCmpResult = psValuesIn->uDstOut.ymm.au64[iCnt] & 0xFF; 19377 19378 if (uCmpResult == CMP_IE_T || (uCmpResult == CMP_UN_T && fSignaling)) 19379 { 19380 sValues.u256ExpectedMxCsr |= X86_MXCSR_IE; 19381 if (iCnt < RT_ELEMENTS(sValues.uSrc1.ymm.au64) / 2) 19382 sValues.u128ExpectedMxCsr |= X86_MXCSR_IE; 19383 } 19384 if (uCmpResult == CMP_IE_T) uCmpResult = CMP_UN_T; 19385 sValues.uDstOut.ymm.au64[iCnt] = (uCmpResult & uPredicate) ? 0xFFFFFFFFFFFFFFFFull : 0; 19386 } 19387 sValues.uMxCsr = psValuesIn->uMxCsr; 19388 sValues.afEflOut = 0; 19389 return (PBS3CPUINSTR4_TEST1_VALUES_T)&sValues; 19390 } 19391 19392 /* 19393 * [V]CMPPD. 19394 */ 19395 BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_cmppd(uint8_t bMode) 19396 { 19397 static BS3CPUINSTR4_TEST1_VALUES_PD_T const s_aValues[] = 19398 { 19399 /* 19400 * Zero. 19401 */ 19402 /* 0*/{ { /* src1 */ { FP64_0(0), FP64_0(0), FP64_0(1), FP64_0(1) } }, 19403 { /* src2 */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_0(0) } }, 19404 { /* => */ { FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19405 /*mxcsr:in */ 0, 19406 /*128:out */ 0, 19407 /*256:out */ 0 }, 19408 /* 19409 * Infinity. 19410 */ 19411 /* 1*/{ { /* src1 */ { FP64_INF(0), FP64_INF(0), FP64_INF(0), FP64_INF(1) } }, 19412 { /* src2 */ { FP64_INF(0), FP64_INF(1), FP64_0(0), FP64_0(1) } }, 19413 { /* => */ { FP64_CMP_EQ, FP64_CMP_GT, FP64_CMP_GT, FP64_CMP_LT } }, 19414 /*mxcsr:in */ 0, 19415 /*128:out */ 0, 19416 /*256:out */ 0 }, 19417 /* 19418 * Normals. 19419 */ 19420 /* 2*/{ { /* src1 */ { FP64_2(0), FP64_2(0), FP64_2(1), FP64_0(0) } }, 19421 { /* src2 */ { FP64_2(0), FP64_2(1), FP64_0(1), FP64_2(0) } }, 19422 { /* => */ { FP64_CMP_EQ, FP64_CMP_GT, FP64_CMP_LT, FP64_CMP_LT } }, 19423 /*mxcsr:in */ X86_MXCSR_FZ, 19424 /*128:out */ X86_MXCSR_FZ, 19425 /*256:out */ X86_MXCSR_FZ }, 19426 { { /* src1 */ { FP64_NORM_V0(0), FP64_NORM_V1(0), FP64_NORM_V2(0), FP64_NORM_V3(0) } }, 19427 { /* src2 */ { FP64_NORM_V0(0), FP64_NORM_V2(0), FP64_NORM_V1(0), FP64_NORM_V3(0) } }, 19428 { /* => */ { FP64_CMP_EQ, FP64_CMP_LT, FP64_CMP_GT, FP64_CMP_EQ } }, 19429 /*mxcsr:in */ X86_MXCSR_RC_UP, 19430 /*128:out */ X86_MXCSR_RC_UP, 19431 /*256:out */ X86_MXCSR_RC_UP }, 19432 { { /* src1 */ { FP64_NORM_V0(1), FP64_NORM_V1(1), FP64_NORM_V2(1), FP64_NORM_V3(1) } }, 19433 { /* src2 */ { FP64_NORM_V0(1), FP64_NORM_V2(1), FP64_NORM_V1(1), FP64_NORM_V3(1) } }, 19434 { /* => */ { FP64_CMP_EQ, FP64_CMP_GT, FP64_CMP_LT, FP64_CMP_EQ } }, 19435 /*mxcsr:in */ X86_MXCSR_RC_UP, 19436 /*128:out */ X86_MXCSR_RC_UP, 19437 /*256:out */ X86_MXCSR_RC_UP }, 19438 { { /* src1 */ { FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_RAND_V3(0) } }, 19439 { /* src2 */ { FP64_RAND_V0(0), FP64_RAND_V2(0), FP64_RAND_V1(0), FP64_RAND_V3(0) } }, 19440 { /* => */ { FP64_CMP_EQ, FP64_CMP_GT, FP64_CMP_LT, FP64_CMP_EQ } }, 19441 /*mxcsr:in */ X86_MXCSR_RC_ZERO, 19442 /*128:out */ X86_MXCSR_RC_ZERO, 19443 /*256:out */ X86_MXCSR_RC_ZERO }, 19444 { { /* src1 */ { FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } }, 19445 { /* src2 */ { FP64_RAND_V0(1), FP64_RAND_V2(1), FP64_RAND_V1(1), FP64_RAND_V3(1) } }, 19446 { /* => */ { FP64_CMP_EQ, FP64_CMP_LT, FP64_CMP_GT, FP64_CMP_EQ } }, 19447 /*mxcsr:in */ X86_MXCSR_RC_ZERO, 19448 /*128:out */ X86_MXCSR_RC_ZERO, 19449 /*256:out */ X86_MXCSR_RC_ZERO }, 19450 { { /* src1 */ { FP64_0_5(0), FP64_0_5(0), FP64_0_5(0), FP64_0_5(0) } }, 19451 { /* src2 */ { FP64_0_5(0), FP64_0_5_DN(0), FP64_0_5_UP(0), FP64_0_5(1) } }, 19452 { /* => */ { FP64_CMP_EQ, FP64_CMP_GT, FP64_CMP_LT, FP64_CMP_GT } }, 19453 /*mxcsr:in */ X86_MXCSR_RC_DOWN, 19454 /*128:out */ X86_MXCSR_RC_DOWN, 19455 /*256:out */ X86_MXCSR_RC_DOWN }, 19456 { { /* src1 */ { FP64_0_5(1), FP64_0_5(1), FP64_0_5(1), FP64_0_5(1) } }, 19457 { /* src2 */ { FP64_0_5(1), FP64_0_5_DN(1), FP64_0_5_UP(1), FP64_0_5(0) } }, 19458 { /* => */ { FP64_CMP_EQ, FP64_CMP_LT, FP64_CMP_GT, FP64_CMP_LT } }, 19459 /*mxcsr:in */ X86_MXCSR_RC_DOWN, 19460 /*128:out */ X86_MXCSR_RC_DOWN, 19461 /*256:out */ X86_MXCSR_RC_DOWN }, 19462 /* 19463 * Denormals. 19464 */ 19465 /* 9*/{ { /* src1 */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(1), FP64_DENORM_MAX(0), FP64_DENORM_MIN(1) } }, 19466 { /* src2 */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(1), FP64_DENORM_MIN(1) } }, 19467 { /* => */ { FP64_CMP_EQ, FP64_CMP_LT, FP64_CMP_GT, FP64_CMP_EQ } }, 19468 /*mxcsr:in */ 0, 19469 /*128:out */ X86_MXCSR_DE, 19470 /*256:out */ X86_MXCSR_DE }, 19471 { { /* src1 */ { FP64_DENORM_MIN(0), FP64_0(1), FP64_DENORM_MAX(1), FP64_0(0) } }, 19472 { /* src2 */ { FP64_0(0), FP64_DENORM_MAX(0), FP64_0(0), FP64_DENORM_MIN(1) } }, 19473 { /* => */ { FP64_CMP_GT, FP64_CMP_LT, FP64_CMP_LT, FP64_CMP_GT } }, 19474 /*mxcsr:in */ 0, 19475 /*128:out */ X86_MXCSR_DE, 19476 /*256:out */ X86_MXCSR_DE }, 19477 { { /* src1 */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(1), FP64_DENORM_MAX(0), FP64_DENORM_MIN(1) } }, 19478 { /* src2 */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(1), FP64_DENORM_MIN(1) } }, 19479 { /* => */ { FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19480 /*mxcsr:in */ X86_MXCSR_DAZ, 19481 /*128:out */ X86_MXCSR_DAZ, 19482 /*256:out */ X86_MXCSR_DAZ }, 19483 { { /* src1 */ { FP64_DENORM_MIN(0), FP64_0(1), FP64_DENORM_MAX(1), FP64_0(0) } }, 19484 { /* src2 */ { FP64_0(0), FP64_DENORM_MAX(0), FP64_0(0), FP64_DENORM_MIN(1) } }, 19485 { /* => */ { FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19486 /*mxcsr:in */ X86_MXCSR_DAZ, 19487 /*128:out */ X86_MXCSR_DAZ, 19488 /*256:out */ X86_MXCSR_DAZ }, 19489 /* 19490 * Invalids. 19491 */ 19492 /*13*/{ { /* src1 */ { FP64_0(0), FP64_QNAN(0), FP64_0(1), FP64_0(1) } }, 19493 { /* src2 */ { FP64_0(0), FP64_0(1), FP64_QNAN(1), FP64_0(0) } }, 19494 { /* => */ { FP64_CMP_EQ, FP64_CMP_QN, FP64_CMP_QN, FP64_CMP_EQ } }, 19495 /*mxcsr:in */ 0, 19496 /*128:out */ 0, 19497 /*256:out */ 0 }, 19498 { { /* src1 */ { FP64_INF(0), FP64_INF(0), FP64_QNAN(0), FP64_INF(1) } }, 19499 { /* src2 */ { FP64_INF(0), FP64_INF(1), FP64_0(0), FP64_QNAN(1) } }, 19500 { /* => */ { FP64_CMP_EQ, FP64_CMP_GT, FP64_CMP_QN, FP64_CMP_QN } }, 19501 /*mxcsr:in */ 0, 19502 /*128:out */ 0, 19503 /*256:out */ 0 }, 19504 { { /* src1 */ { FP64_NORM_V0(0), FP64_SNAN_V1(0), FP64_NORM_V0(1), FP64_NORM_V1(1) } }, 19505 { /* src2 */ { FP64_NORM_V0(0), FP64_NORM_V2(0), FP64_NORM_V0(1), FP64_NORM_V2(1) } }, 19506 { /* => */ { FP64_CMP_EQ, FP64_CMP_SN, FP64_CMP_EQ, FP64_CMP_GT } }, 19507 /*mxcsr:in */ X86_MXCSR_RC_UP, 19508 /*128:out */ X86_MXCSR_RC_UP, 19509 /*256:out */ X86_MXCSR_RC_UP }, 19510 { { /* src1 */ { FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_SNAN_V0(1) } }, 19511 { /* src2 */ { FP64_RAND_V0(0), FP64_RAND_V2(0), FP64_RAND_V1(0), FP64_RAND_V0(1) } }, 19512 { /* => */ { FP64_CMP_EQ, FP64_CMP_GT, FP64_CMP_LT, FP64_CMP_SN } }, 19513 /*mxcsr:in */ X86_MXCSR_RC_ZERO, 19514 /*128:out */ X86_MXCSR_RC_ZERO, 19515 /*256:out */ X86_MXCSR_RC_ZERO }, 19516 { { /* src1 */ { FP64_DENORM_MAX(0), FP64_0(0), FP64_0(0), FP64_QNAN_V3(0) } }, 19517 { /* src2 */ { FP64_QNAN_V1(1), FP64_DENORM_MAX(0), FP64_DENORM_MAX(1), FP64_SNAN(1) } }, 19518 { /* => */ { FP64_CMP_QN, FP64_CMP_LT, FP64_CMP_GT, FP64_CMP_SN } }, 19519 /*mxcsr:in */ 0, 19520 /*128:out */ X86_MXCSR_DE, 19521 /*256:out */ X86_MXCSR_DE }, 19522 /* 19523 * Precision, Overflow, Underflow not possible. 19524 */ 19525 }; 19526 static BS3CPUINSTR4_TEST1_VALUES_PD_T const s_aValuesSR[] = 19527 { 19528 /* 19529 * Zero. 19530 */ 19531 /* 0*/{ { /* src1 */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_0(0) } }, 19532 { /* src2 */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_0(0) } }, 19533 { /* => */ { FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19534 /*mxcsr:in */ 0, 19535 /*128:out */ 0, 19536 /*256:out */ 0 }, 19537 /* 19538 * Infinity. 19539 */ 19540 /* 1*/{ { /* src1 */ { FP64_INF(0), FP64_INF(1), FP64_INF(0), FP64_INF(1) } }, 19541 { /* src2 */ { FP64_INF(0), FP64_INF(1), FP64_INF(0), FP64_INF(1) } }, 19542 { /* => */ { FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19543 /*mxcsr:in */ 0, 19544 /*128:out */ 0, 19545 /*256:out */ 0 }, 19546 /* 19547 * Normals. 19548 */ 19549 /* 2*/{ { /* src1 */ { FP64_2(0), FP64_2(1), FP64_2(1), FP64_2(0) } }, 19550 { /* src2 */ { FP64_2(0), FP64_2(1), FP64_2(1), FP64_2(0) } }, 19551 { /* => */ { FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19552 /*mxcsr:in */ 0, 19553 /*128:out */ 0, 19554 /*256:out */ 0 }, 19555 { { /* src1 */ { FP64_NORM_V0(0), FP64_NORM_V1(0), FP64_NORM_V2(0), FP64_NORM_V3(0) } }, 19556 { /* src2 */ { FP64_NORM_V0(0), FP64_NORM_V1(0), FP64_NORM_V2(0), FP64_NORM_V3(0) } }, 19557 { /* => */ { FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19558 /*mxcsr:in */ 0, 19559 /*128:out */ 0, 19560 /*256:out */ 0 }, 19561 /* 19562 * Denormals. 19563 */ 19564 /* 4*/{ { /* src1 */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(1), FP64_DENORM_MIN(0), FP64_DENORM_MIN(1) } }, 19565 { /* src2 */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(1), FP64_DENORM_MIN(0), FP64_DENORM_MIN(1) } }, 19566 { /* => */ { FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19567 /*mxcsr:in */ 0, 19568 /*128:out */ X86_MXCSR_DE, 19569 /*256:out */ X86_MXCSR_DE }, 19570 /* 19571 * Invalids. 19572 */ 19573 /* 5*/{ { /* src1 */ { FP64_INF(0), FP64_SNAN(1), FP64_INF(1), FP64_INF(1) } }, 19574 { /* src2 */ { FP64_INF(0), FP64_SNAN(1), FP64_INF(1), FP64_INF(1) } }, 19575 { /* => */ { FP64_CMP_EQ, FP64_CMP_SN, FP64_CMP_EQ, FP64_CMP_EQ } }, 19576 /*mxcsr:in */ 0, 19577 /*128:out */ 0, 19578 /*256:out */ 0 }, 19579 { { /* src1 */ { FP64_QNAN(0), FP64_INF(1), FP64_0(0), FP64_2(1) } }, 19580 { /* src2 */ { FP64_QNAN(0), FP64_INF(1), FP64_0(0), FP64_2(1) } }, 19581 { /* => */ { FP64_CMP_QN, FP64_CMP_EQ, FP64_CMP_EQ, FP64_CMP_EQ } }, 19582 /*mxcsr:in */ 0, 19583 /*128:out */ 0, 19584 /*256:out */ 0 }, 19585 /* 19586 * Precision, Overflow, Underflow not possible. 19587 */ 19588 }; 19589 19590 static BS3CPUINSTR4_TEST1_T const s_aTests[] = 19591 { 19592 { BS3_INSTR4_ALL(cmppd_XMM1_XMM1_000h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM1, 0x00, PASS_TEST_ARRAY(s_aValuesSR) }, 19593 { BS3_INSTR4_ALL(cmppd_XMM1_XMM1_006h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM1, 0x06, PASS_TEST_ARRAY(s_aValuesSR) }, 19594 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_000h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x00, PASS_TEST_ARRAY(s_aValues) }, 19595 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_001h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x01, PASS_TEST_ARRAY(s_aValues) }, 19596 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_002h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x02, PASS_TEST_ARRAY(s_aValues) }, 19597 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_003h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x03, PASS_TEST_ARRAY(s_aValues) }, 19598 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_004h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x04, PASS_TEST_ARRAY(s_aValues) }, 19599 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_005h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x05, PASS_TEST_ARRAY(s_aValues) }, 19600 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_006h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x06, PASS_TEST_ARRAY(s_aValues) }, 19601 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_007h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x07, PASS_TEST_ARRAY(s_aValues) }, 19602 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_008h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x00, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19603 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_011h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x01, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19604 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_022h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x02, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19605 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_043h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x03, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19606 { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_084h), 255, RM_REG, T_SSE2, XMM1, XMM1, XMM2, 0x04, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19607 { BS3_INSTR4_ALL(cmppd_XMM1_FSxBX_001h), 255, RM_MEM, T_SSE2, XMM1, XMM1, FSxBX, 0x01, PASS_TEST_ARRAY(s_aValues) }, 19608 { BS3_INSTR4_ALL(cmppd_XMM1_FSxBX_004h), 255, RM_MEM, T_SSE2, XMM1, XMM1, FSxBX, 0x04, PASS_TEST_ARRAY(s_aValues) }, 19609 { BS3_INSTR4_ALL(cmppd_XMM1_FSxBX_007h), 255, RM_MEM, T_SSE2, XMM1, XMM1, FSxBX, 0x07, PASS_TEST_ARRAY(s_aValues) }, 19610 { BS3_INSTR4_C64(cmppd_XMM8_XMM8_005h), 255, RM_REG, T_SSE2, XMM8, XMM8, XMM8, 0x05, PASS_TEST_ARRAY(s_aValuesSR) }, 19611 { BS3_INSTR4_C64(cmppd_XMM8_XMM9_002h), 255, RM_REG, T_SSE2, XMM8, XMM8, XMM9, 0x02, PASS_TEST_ARRAY(s_aValues) }, 19612 { BS3_INSTR4_C64(cmppd_XMM8_FSxBX_003h), 255, RM_MEM, T_SSE2, XMM8, XMM8, FSxBX, 0x03, PASS_TEST_ARRAY(s_aValues) }, 19613 19614 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM1_FSxBX_00bh), 255, RM_MEM, T_AVX_128, XMM1, XMM1, FSxBX, 0x0b, PASS_TEST_ARRAY(s_aValues) }, 19615 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM1_XMM1_005h), 255, RM_REG, T_AVX_128, XMM1, XMM1, XMM1, 0x05, PASS_TEST_ARRAY(s_aValuesSR) }, 19616 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM1_XMM2_00ah), 255, RM_REG, T_AVX_128, XMM1, XMM1, XMM2, 0x0a, PASS_TEST_ARRAY(s_aValues) }, 19617 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_FSxBX_010h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x10, PASS_TEST_ARRAY(s_aValues) }, 19618 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_FSxBX_011h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x11, PASS_TEST_ARRAY(s_aValues) }, 19619 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_FSxBX_013h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues) }, 19620 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM1_00ch), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM1, 0x0c, PASS_TEST_ARRAY(s_aValues) }, 19621 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM2_00eh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM2, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) }, 19622 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_000h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x00, PASS_TEST_ARRAY(s_aValues) }, 19623 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_001h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x01, PASS_TEST_ARRAY(s_aValues) }, 19624 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_002h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x02, PASS_TEST_ARRAY(s_aValues) }, 19625 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_003h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x03, PASS_TEST_ARRAY(s_aValues) }, 19626 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_004h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x04, PASS_TEST_ARRAY(s_aValues) }, 19627 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_005h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x05, PASS_TEST_ARRAY(s_aValues) }, 19628 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_006h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x06, PASS_TEST_ARRAY(s_aValues) }, 19629 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_007h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x07, PASS_TEST_ARRAY(s_aValues) }, 19630 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_008h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x08, PASS_TEST_ARRAY(s_aValues) }, 19631 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_009h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x09, PASS_TEST_ARRAY(s_aValues) }, 19632 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_00ah), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x0a, PASS_TEST_ARRAY(s_aValues) }, 19633 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_00bh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x0b, PASS_TEST_ARRAY(s_aValues) }, 19634 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_00ch), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x0c, PASS_TEST_ARRAY(s_aValues) }, 19635 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_00dh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x0d, PASS_TEST_ARRAY(s_aValues) }, 19636 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_00eh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x0e, PASS_TEST_ARRAY(s_aValues) }, 19637 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_00fh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x0f, PASS_TEST_ARRAY(s_aValues) }, 19638 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_010h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x10, PASS_TEST_ARRAY(s_aValues) }, 19639 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_011h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x11, PASS_TEST_ARRAY(s_aValues) }, 19640 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_012h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x12, PASS_TEST_ARRAY(s_aValues) }, 19641 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_013h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x13, PASS_TEST_ARRAY(s_aValues) }, 19642 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_014h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x14, PASS_TEST_ARRAY(s_aValues) }, 19643 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_015h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x15, PASS_TEST_ARRAY(s_aValues) }, 19644 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_016h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x16, PASS_TEST_ARRAY(s_aValues) }, 19645 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_017h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x17, PASS_TEST_ARRAY(s_aValues) }, 19646 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_018h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x18, PASS_TEST_ARRAY(s_aValues) }, 19647 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_019h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x19, PASS_TEST_ARRAY(s_aValues) }, 19648 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_01ah), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x1a, PASS_TEST_ARRAY(s_aValues) }, 19649 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_01bh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x1b, PASS_TEST_ARRAY(s_aValues) }, 19650 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_01ch), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x1c, PASS_TEST_ARRAY(s_aValues) }, 19651 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_01dh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x1d, PASS_TEST_ARRAY(s_aValues) }, 19652 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_01eh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x1e, PASS_TEST_ARRAY(s_aValues) }, 19653 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_01fh), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x1f, PASS_TEST_ARRAY(s_aValues) }, 19654 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_022h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x02, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19655 { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_044h), 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, 0x04, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19656 { BS3_INSTR4_C64(vcmppd_XMM8_XMM8_FSxBX_01fh), 255, RM_MEM, T_AVX_128, XMM8, XMM8, FSxBX, 0x1f, PASS_TEST_ARRAY(s_aValues) }, 19657 { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_FSxBX_01dh), 255, RM_MEM, T_AVX_128, XMM8, XMM9, FSxBX, 0x1d, PASS_TEST_ARRAY(s_aValues) }, 19658 { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM9_01ah), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM9, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) }, 19659 { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM10_016h), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, 0x16, PASS_TEST_ARRAY(s_aValues) }, 19660 { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM10_017h), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, 0x17, PASS_TEST_ARRAY(s_aValues) }, 19661 { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM10_019h), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, 0x19, PASS_TEST_ARRAY(s_aValues) }, 19662 { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM10_0ddh), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, 0x1d, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19663 19664 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM1_FSxBX_00bh), 255, RM_MEM, T_AVX_256, YMM1, YMM1, FSxBX, 0x0b, PASS_TEST_ARRAY(s_aValues) }, 19665 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM1_YMM1_005h), 255, RM_REG, T_AVX_256, YMM1, YMM1, YMM1, 0x05, PASS_TEST_ARRAY(s_aValuesSR) }, 19666 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM1_YMM2_00ah), 255, RM_REG, T_AVX_256, YMM1, YMM1, YMM2, 0x0a, PASS_TEST_ARRAY(s_aValues) }, 19667 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_FSxBX_010h), 255, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, 0x10, PASS_TEST_ARRAY(s_aValues) }, 19668 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_FSxBX_011h), 255, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, 0x11, PASS_TEST_ARRAY(s_aValues) }, 19669 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_FSxBX_013h), 255, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues) }, 19670 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM1_00ch), 255, RM_REG, T_AVX_256, YMM1, YMM1, YMM2, 0x0c, PASS_TEST_ARRAY(s_aValues) }, 19671 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM2_00eh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM2, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) }, 19672 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_000h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x00, PASS_TEST_ARRAY(s_aValues) }, 19673 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_001h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x01, PASS_TEST_ARRAY(s_aValues) }, 19674 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_002h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x02, PASS_TEST_ARRAY(s_aValues) }, 19675 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_003h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x03, PASS_TEST_ARRAY(s_aValues) }, 19676 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_004h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x04, PASS_TEST_ARRAY(s_aValues) }, 19677 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_005h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x05, PASS_TEST_ARRAY(s_aValues) }, 19678 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_006h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x06, PASS_TEST_ARRAY(s_aValues) }, 19679 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_007h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x07, PASS_TEST_ARRAY(s_aValues) }, 19680 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_008h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x08, PASS_TEST_ARRAY(s_aValues) }, 19681 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_009h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x09, PASS_TEST_ARRAY(s_aValues) }, 19682 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_00ah), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x0a, PASS_TEST_ARRAY(s_aValues) }, 19683 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_00bh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x0b, PASS_TEST_ARRAY(s_aValues) }, 19684 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_00ch), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x0c, PASS_TEST_ARRAY(s_aValues) }, 19685 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_00dh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x0d, PASS_TEST_ARRAY(s_aValues) }, 19686 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_00eh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x0e, PASS_TEST_ARRAY(s_aValues) }, 19687 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_00fh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x0f, PASS_TEST_ARRAY(s_aValues) }, 19688 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_010h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x10, PASS_TEST_ARRAY(s_aValues) }, 19689 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_011h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x11, PASS_TEST_ARRAY(s_aValues) }, 19690 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_012h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x12, PASS_TEST_ARRAY(s_aValues) }, 19691 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_013h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x13, PASS_TEST_ARRAY(s_aValues) }, 19692 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_014h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x14, PASS_TEST_ARRAY(s_aValues) }, 19693 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_015h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x15, PASS_TEST_ARRAY(s_aValues) }, 19694 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_016h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x16, PASS_TEST_ARRAY(s_aValues) }, 19695 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_017h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x17, PASS_TEST_ARRAY(s_aValues) }, 19696 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_018h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x18, PASS_TEST_ARRAY(s_aValues) }, 19697 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_019h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x19, PASS_TEST_ARRAY(s_aValues) }, 19698 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_01ah), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x1a, PASS_TEST_ARRAY(s_aValues) }, 19699 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_01bh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x1b, PASS_TEST_ARRAY(s_aValues) }, 19700 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_01ch), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x1c, PASS_TEST_ARRAY(s_aValues) }, 19701 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_01dh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x1d, PASS_TEST_ARRAY(s_aValues) }, 19702 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_01eh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x1e, PASS_TEST_ARRAY(s_aValues) }, 19703 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_01fh), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x1f, PASS_TEST_ARRAY(s_aValues) }, 19704 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_022h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x02, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19705 { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_044h), 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, 0x04, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19706 { BS3_INSTR4_C64(vcmppd_YMM8_YMM8_FSxBX_01fh), 255, RM_MEM, T_AVX_256, YMM8, YMM8, FSxBX, 0x1f, PASS_TEST_ARRAY(s_aValues) }, 19707 { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_FSxBX_01dh), 255, RM_MEM, T_AVX_256, YMM8, YMM9, FSxBX, 0x1d, PASS_TEST_ARRAY(s_aValues) }, 19708 { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM9_01ah), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM9, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) }, 19709 { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM10_016h), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, 0x16, PASS_TEST_ARRAY(s_aValues) }, 19710 { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM10_017h), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, 0x17, PASS_TEST_ARRAY(s_aValues) }, 19711 { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM10_019h), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, 0x19, PASS_TEST_ARRAY(s_aValues) }, 19712 { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM10_0ddh), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, 0x1d, PASS_TEST_ARRAY(s_aValues) }, /* reserved */ 19713 }; 19714 19715 return bs3CpuInstr4_WorkerTestType1_P(bMode, PASS_ARRAY(s_aTests), PASS_ARRAY(g_aXcptConfig2), bs3CpuInstr4_WorkerTestType1_Provider_cmppd); 19716 } 19717 19356 19718 19357 19719 /* … … 24127 24489 { "[v]roundsd", bs3CpuInstr4_v_roundsd, 0 }, 24128 24490 { "[v]cmpps", bs3CpuInstr4_v_cmpps, 0 }, 24491 { "[v]cmppd", bs3CpuInstr4_v_cmppd, 0 }, 24129 24492 { "[v]comiss", bs3CpuInstr4_v_comiss, 0 }, 24130 24493 { "[v]ucomiss", bs3CpuInstr4_v_ucomiss, 0 },
Note:
See TracChangeset
for help on using the changeset viewer.