Changeset 52345 in vbox for trunk/src/VBox/Runtime/testcase
- Timestamp:
- Aug 11, 2014 3:29:24 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95470
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstRTInlineAsm.cpp
r49281 r52345 948 948 } 949 949 950 950 951 static void tstASMAtomicAddS32(void) 951 952 { 952 953 DO_SIMPLE_TEST(ASMAtomicAddS32, int32_t); 954 } 955 956 957 DECLINLINE(void) tstASMAtomicUoIncU32Worker(uint32_t volatile *pu32) 958 { 959 *pu32 = 0; 960 961 CHECKOP(ASMAtomicUoIncU32(pu32), UINT32_C(1), "%#x", uint32_t); 962 CHECKVAL(*pu32, UINT32_C(1), "%#x"); 963 964 *pu32 = ~UINT32_C(0); 965 CHECKOP(ASMAtomicUoIncU32(pu32), 0, "%#x", uint32_t); 966 CHECKVAL(*pu32, 0, "%#x"); 967 968 *pu32 = UINT32_C(0x7fffffff); 969 CHECKOP(ASMAtomicUoIncU32(pu32), UINT32_C(0x80000000), "%#x", uint32_t); 970 CHECKVAL(*pu32, UINT32_C(0x80000000), "%#x"); 971 } 972 973 974 static void tstASMAtomicUoIncU32(void) 975 { 976 DO_SIMPLE_TEST(ASMAtomicUoIncU32, uint32_t); 977 } 978 979 980 DECLINLINE(void) tstASMAtomicUoDecU32Worker(uint32_t volatile *pu32) 981 { 982 *pu32 = 0; 983 984 CHECKOP(ASMAtomicUoDecU32(pu32), ~UINT32_C(0), "%#x", uint32_t); 985 CHECKVAL(*pu32, ~UINT32_C(0), "%#x"); 986 987 *pu32 = ~UINT32_C(0); 988 CHECKOP(ASMAtomicUoDecU32(pu32), UINT32_C(0xfffffffe), "%#x", uint32_t); 989 CHECKVAL(*pu32, UINT32_C(0xfffffffe), "%#x"); 990 991 *pu32 = UINT32_C(0x80000000); 992 CHECKOP(ASMAtomicUoDecU32(pu32), UINT32_C(0x7fffffff), "%#x", uint32_t); 993 CHECKVAL(*pu32, UINT32_C(0x7fffffff), "%#x"); 994 } 995 996 997 static void tstASMAtomicUoDecU32(void) 998 { 999 DO_SIMPLE_TEST(ASMAtomicUoDecU32, uint32_t); 953 1000 } 954 1001 … … 1180 1227 1181 1228 1229 DECLINLINE(void) tstASMAtomicUoAndOrU32Worker(uint32_t volatile *pu32) 1230 { 1231 *pu32 = UINT32_C(0xffffffff); 1232 1233 ASMAtomicUoOrU32(pu32, UINT32_C(0xffffffff)); 1234 CHECKVAL(*pu32, UINT32_C(0xffffffff), "%#x"); 1235 1236 ASMAtomicUoAndU32(pu32, UINT32_C(0xffffffff)); 1237 CHECKVAL(*pu32, UINT32_C(0xffffffff), "%#x"); 1238 1239 ASMAtomicUoAndU32(pu32, UINT32_C(0x8f8f8f8f)); 1240 CHECKVAL(*pu32, UINT32_C(0x8f8f8f8f), "%#x"); 1241 1242 ASMAtomicUoOrU32(pu32, UINT32_C(0x70707070)); 1243 CHECKVAL(*pu32, UINT32_C(0xffffffff), "%#x"); 1244 1245 ASMAtomicUoAndU32(pu32, UINT32_C(1)); 1246 CHECKVAL(*pu32, UINT32_C(1), "%#x"); 1247 1248 ASMAtomicUoOrU32(pu32, UINT32_C(0x80000000)); 1249 CHECKVAL(*pu32, UINT32_C(0x80000001), "%#x"); 1250 1251 ASMAtomicUoAndU32(pu32, UINT32_C(0x80000000)); 1252 CHECKVAL(*pu32, UINT32_C(0x80000000), "%#x"); 1253 1254 ASMAtomicUoAndU32(pu32, UINT32_C(0)); 1255 CHECKVAL(*pu32, UINT32_C(0), "%#x"); 1256 1257 ASMAtomicUoOrU32(pu32, UINT32_C(0x42424242)); 1258 CHECKVAL(*pu32, UINT32_C(0x42424242), "%#x"); 1259 } 1260 1261 1262 static void tstASMAtomicUoAndOrU32(void) 1263 { 1264 DO_SIMPLE_TEST(ASMAtomicUoAndOrU32, uint32_t); 1265 } 1266 1267 1182 1268 typedef struct 1183 1269 { … … 1520 1606 #endif 1521 1607 1522 BENCH(s_u32 = 0, "s_u32 = 0"); 1523 BENCH(ASMAtomicUoReadU8(&s_u8), "ASMAtomicUoReadU8"); 1524 BENCH(ASMAtomicUoReadS8(&s_i8), "ASMAtomicUoReadS8"); 1525 BENCH(ASMAtomicUoReadU16(&s_u16), "ASMAtomicUoReadU16"); 1526 BENCH(ASMAtomicUoReadS16(&s_i16), "ASMAtomicUoReadS16"); 1527 BENCH(ASMAtomicUoReadU32(&s_u32), "ASMAtomicUoReadU32"); 1528 BENCH(ASMAtomicUoReadS32(&s_i32), "ASMAtomicUoReadS32"); 1529 BENCH(ASMAtomicUoReadU64(&s_u64), "ASMAtomicUoReadU64"); 1530 BENCH(ASMAtomicUoReadS64(&s_i64), "ASMAtomicUoReadS64"); 1531 BENCH(ASMAtomicReadU8(&s_u8), "ASMAtomicReadU8"); 1532 BENCH(ASMAtomicReadS8(&s_i8), "ASMAtomicReadS8"); 1533 BENCH(ASMAtomicReadU16(&s_u16), "ASMAtomicReadU16"); 1534 BENCH(ASMAtomicReadS16(&s_i16), "ASMAtomicReadS16"); 1535 BENCH(ASMAtomicReadU32(&s_u32), "ASMAtomicReadU32"); 1536 BENCH(ASMAtomicReadS32(&s_i32), "ASMAtomicReadS32"); 1537 BENCH(ASMAtomicReadU64(&s_u64), "ASMAtomicReadU64"); 1538 BENCH(ASMAtomicReadS64(&s_i64), "ASMAtomicReadS64"); 1539 BENCH(ASMAtomicUoWriteU8(&s_u8, 0), "ASMAtomicUoWriteU8"); 1540 BENCH(ASMAtomicUoWriteS8(&s_i8, 0), "ASMAtomicUoWriteS8"); 1541 BENCH(ASMAtomicUoWriteU16(&s_u16, 0), "ASMAtomicUoWriteU16"); 1542 BENCH(ASMAtomicUoWriteS16(&s_i16, 0), "ASMAtomicUoWriteS16"); 1543 BENCH(ASMAtomicUoWriteU32(&s_u32, 0), "ASMAtomicUoWriteU32"); 1544 BENCH(ASMAtomicUoWriteS32(&s_i32, 0), "ASMAtomicUoWriteS32"); 1545 BENCH(ASMAtomicUoWriteU64(&s_u64, 0), "ASMAtomicUoWriteU64"); 1546 BENCH(ASMAtomicUoWriteS64(&s_i64, 0), "ASMAtomicUoWriteS64"); 1547 BENCH(ASMAtomicWriteU8(&s_u8, 0), "ASMAtomicWriteU8"); 1548 BENCH(ASMAtomicWriteS8(&s_i8, 0), "ASMAtomicWriteS8"); 1549 BENCH(ASMAtomicWriteU16(&s_u16, 0), "ASMAtomicWriteU16"); 1550 BENCH(ASMAtomicWriteS16(&s_i16, 0), "ASMAtomicWriteS16"); 1551 BENCH(ASMAtomicWriteU32(&s_u32, 0), "ASMAtomicWriteU32"); 1552 BENCH(ASMAtomicWriteS32(&s_i32, 0), "ASMAtomicWriteS32"); 1553 BENCH(ASMAtomicWriteU64(&s_u64, 0), "ASMAtomicWriteU64"); 1554 BENCH(ASMAtomicWriteS64(&s_i64, 0), "ASMAtomicWriteS64"); 1555 BENCH(ASMAtomicXchgU8(&s_u8, 0), "ASMAtomicXchgU8"); 1556 BENCH(ASMAtomicXchgS8(&s_i8, 0), "ASMAtomicXchgS8"); 1557 BENCH(ASMAtomicXchgU16(&s_u16, 0), "ASMAtomicXchgU16"); 1558 BENCH(ASMAtomicXchgS16(&s_i16, 0), "ASMAtomicXchgS16"); 1559 BENCH(ASMAtomicXchgU32(&s_u32, 0), "ASMAtomicXchgU32"); 1560 BENCH(ASMAtomicXchgS32(&s_i32, 0), "ASMAtomicXchgS32"); 1561 BENCH(ASMAtomicXchgU64(&s_u64, 0), "ASMAtomicXchgU64"); 1562 BENCH(ASMAtomicXchgS64(&s_i64, 0), "ASMAtomicXchgS64"); 1563 BENCH(ASMAtomicCmpXchgU32(&s_u32, 0, 0), "ASMAtomicCmpXchgU32"); 1564 BENCH(ASMAtomicCmpXchgS32(&s_i32, 0, 0), "ASMAtomicCmpXchgS32"); 1565 BENCH(ASMAtomicCmpXchgU64(&s_u64, 0, 0), "ASMAtomicCmpXchgU64"); 1566 BENCH(ASMAtomicCmpXchgS64(&s_i64, 0, 0), "ASMAtomicCmpXchgS64"); 1567 BENCH(ASMAtomicCmpXchgU32(&s_u32, 0, 1), "ASMAtomicCmpXchgU32/neg"); 1568 BENCH(ASMAtomicCmpXchgS32(&s_i32, 0, 1), "ASMAtomicCmpXchgS32/neg"); 1569 BENCH(ASMAtomicCmpXchgU64(&s_u64, 0, 1), "ASMAtomicCmpXchgU64/neg"); 1570 BENCH(ASMAtomicCmpXchgS64(&s_i64, 0, 1), "ASMAtomicCmpXchgS64/neg"); 1571 BENCH(ASMAtomicIncU32(&s_u32), "ASMAtomicIncU32"); 1572 BENCH(ASMAtomicIncS32(&s_i32), "ASMAtomicIncS32"); 1573 BENCH(ASMAtomicDecU32(&s_u32), "ASMAtomicDecU32"); 1574 BENCH(ASMAtomicDecS32(&s_i32), "ASMAtomicDecS32"); 1575 BENCH(ASMAtomicAddU32(&s_u32, 5), "ASMAtomicAddU32"); 1576 BENCH(ASMAtomicAddS32(&s_i32, 5), "ASMAtomicAddS32"); 1608 BENCH(s_u32 = 0, "s_u32 = 0"); 1609 BENCH(ASMAtomicUoReadU8(&s_u8), "ASMAtomicUoReadU8"); 1610 BENCH(ASMAtomicUoReadS8(&s_i8), "ASMAtomicUoReadS8"); 1611 BENCH(ASMAtomicUoReadU16(&s_u16), "ASMAtomicUoReadU16"); 1612 BENCH(ASMAtomicUoReadS16(&s_i16), "ASMAtomicUoReadS16"); 1613 BENCH(ASMAtomicUoReadU32(&s_u32), "ASMAtomicUoReadU32"); 1614 BENCH(ASMAtomicUoReadS32(&s_i32), "ASMAtomicUoReadS32"); 1615 BENCH(ASMAtomicUoReadU64(&s_u64), "ASMAtomicUoReadU64"); 1616 BENCH(ASMAtomicUoReadS64(&s_i64), "ASMAtomicUoReadS64"); 1617 BENCH(ASMAtomicReadU8(&s_u8), "ASMAtomicReadU8"); 1618 BENCH(ASMAtomicReadS8(&s_i8), "ASMAtomicReadS8"); 1619 BENCH(ASMAtomicReadU16(&s_u16), "ASMAtomicReadU16"); 1620 BENCH(ASMAtomicReadS16(&s_i16), "ASMAtomicReadS16"); 1621 BENCH(ASMAtomicReadU32(&s_u32), "ASMAtomicReadU32"); 1622 BENCH(ASMAtomicReadS32(&s_i32), "ASMAtomicReadS32"); 1623 BENCH(ASMAtomicReadU64(&s_u64), "ASMAtomicReadU64"); 1624 BENCH(ASMAtomicReadS64(&s_i64), "ASMAtomicReadS64"); 1625 BENCH(ASMAtomicUoWriteU8(&s_u8, 0), "ASMAtomicUoWriteU8"); 1626 BENCH(ASMAtomicUoWriteS8(&s_i8, 0), "ASMAtomicUoWriteS8"); 1627 BENCH(ASMAtomicUoWriteU16(&s_u16, 0), "ASMAtomicUoWriteU16"); 1628 BENCH(ASMAtomicUoWriteS16(&s_i16, 0), "ASMAtomicUoWriteS16"); 1629 BENCH(ASMAtomicUoWriteU32(&s_u32, 0), "ASMAtomicUoWriteU32"); 1630 BENCH(ASMAtomicUoWriteS32(&s_i32, 0), "ASMAtomicUoWriteS32"); 1631 BENCH(ASMAtomicUoWriteU64(&s_u64, 0), "ASMAtomicUoWriteU64"); 1632 BENCH(ASMAtomicUoWriteS64(&s_i64, 0), "ASMAtomicUoWriteS64"); 1633 BENCH(ASMAtomicWriteU8(&s_u8, 0), "ASMAtomicWriteU8"); 1634 BENCH(ASMAtomicWriteS8(&s_i8, 0), "ASMAtomicWriteS8"); 1635 BENCH(ASMAtomicWriteU16(&s_u16, 0), "ASMAtomicWriteU16"); 1636 BENCH(ASMAtomicWriteS16(&s_i16, 0), "ASMAtomicWriteS16"); 1637 BENCH(ASMAtomicWriteU32(&s_u32, 0), "ASMAtomicWriteU32"); 1638 BENCH(ASMAtomicWriteS32(&s_i32, 0), "ASMAtomicWriteS32"); 1639 BENCH(ASMAtomicWriteU64(&s_u64, 0), "ASMAtomicWriteU64"); 1640 BENCH(ASMAtomicWriteS64(&s_i64, 0), "ASMAtomicWriteS64"); 1641 BENCH(ASMAtomicXchgU8(&s_u8, 0), "ASMAtomicXchgU8"); 1642 BENCH(ASMAtomicXchgS8(&s_i8, 0), "ASMAtomicXchgS8"); 1643 BENCH(ASMAtomicXchgU16(&s_u16, 0), "ASMAtomicXchgU16"); 1644 BENCH(ASMAtomicXchgS16(&s_i16, 0), "ASMAtomicXchgS16"); 1645 BENCH(ASMAtomicXchgU32(&s_u32, 0), "ASMAtomicXchgU32"); 1646 BENCH(ASMAtomicXchgS32(&s_i32, 0), "ASMAtomicXchgS32"); 1647 BENCH(ASMAtomicXchgU64(&s_u64, 0), "ASMAtomicXchgU64"); 1648 BENCH(ASMAtomicXchgS64(&s_i64, 0), "ASMAtomicXchgS64"); 1649 BENCH(ASMAtomicCmpXchgU32(&s_u32, 0, 0), "ASMAtomicCmpXchgU32"); 1650 BENCH(ASMAtomicCmpXchgS32(&s_i32, 0, 0), "ASMAtomicCmpXchgS32"); 1651 BENCH(ASMAtomicCmpXchgU64(&s_u64, 0, 0), "ASMAtomicCmpXchgU64"); 1652 BENCH(ASMAtomicCmpXchgS64(&s_i64, 0, 0), "ASMAtomicCmpXchgS64"); 1653 BENCH(ASMAtomicCmpXchgU32(&s_u32, 0, 1), "ASMAtomicCmpXchgU32/neg"); 1654 BENCH(ASMAtomicCmpXchgS32(&s_i32, 0, 1), "ASMAtomicCmpXchgS32/neg"); 1655 BENCH(ASMAtomicCmpXchgU64(&s_u64, 0, 1), "ASMAtomicCmpXchgU64/neg"); 1656 BENCH(ASMAtomicCmpXchgS64(&s_i64, 0, 1), "ASMAtomicCmpXchgS64/neg"); 1657 BENCH(ASMAtomicIncU32(&s_u32), "ASMAtomicIncU32"); 1658 BENCH(ASMAtomicIncS32(&s_i32), "ASMAtomicIncS32"); 1659 BENCH(ASMAtomicDecU32(&s_u32), "ASMAtomicDecU32"); 1660 BENCH(ASMAtomicDecS32(&s_i32), "ASMAtomicDecS32"); 1661 BENCH(ASMAtomicAddU32(&s_u32, 5), "ASMAtomicAddU32"); 1662 BENCH(ASMAtomicAddS32(&s_i32, 5), "ASMAtomicAddS32"); 1663 BENCH(ASMAtomicUoIncU32(&s_u32), "ASMAtomicUoIncU32"); 1664 BENCH(ASMAtomicUoDecU32(&s_u32), "ASMAtomicUoDecU32"); 1665 BENCH(ASMAtomicUoAndU32(&s_u32, 0xffffffff), "ASMAtomicUoAndU32"); 1666 BENCH(ASMAtomicUoOrU32(&s_u32, 0xffffffff), "ASMAtomicUoOrU32"); 1667 1577 1668 /* The Darwin gcc does not like this ... */ 1578 1669 #if !defined(RT_OS_DARWIN) && !defined(GCC44_32BIT_PIC) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) … … 1619 1710 tstASMAtomicAndOrU64(); 1620 1711 1712 tstASMAtomicUoIncU32(); 1713 tstASMAtomicUoDecU32(); 1714 tstASMAtomicUoAndOrU32(); 1715 1621 1716 tstASMMemZeroPage(); 1622 1717 tstASMMemIsZeroPage(g_hTest);
Note:
See TracChangeset
for help on using the changeset viewer.