| Index: crosstest/test_bitmanip_main.cpp
|
| diff --git a/crosstest/test_bitmanip_main.cpp b/crosstest/test_bitmanip_main.cpp
|
| index 89dc8bab3dfacb2c4d2c0bfdcdf728eed74d685b..592ad7ea7072d8a002d3d75a2ce62342db571386 100644
|
| --- a/crosstest/test_bitmanip_main.cpp
|
| +++ b/crosstest/test_bitmanip_main.cpp
|
| @@ -102,19 +102,30 @@ void testBitManip(size_t &TotalTests, size_t &Passes, size_t &Failures) {
|
|
|
| template <typename Type>
|
| void testByteSwap(size_t &TotalTests, size_t &Passes, size_t &Failures) {
|
| - for (size_t i = 0; i < NumValues; ++i) {
|
| - Type Value = static_cast<Type>(Values[i]);
|
| - ++TotalTests;
|
| - Type ResultSz = test_bswap(Value);
|
| - Type ResultLlc = Subzero_::test_bswap(Value);
|
| - if (ResultSz == ResultLlc) {
|
| - ++Passes;
|
| - } else {
|
| - ++Failures;
|
| - std::cout << "test_bswap" << (CHAR_BIT * sizeof(Type)) << "("
|
| - << static_cast<uint64_t>(Value)
|
| - << "): sz=" << static_cast<uint64_t>(ResultSz)
|
| - << " llc=" << static_cast<uint64_t>(ResultLlc) << "\n";
|
| + typedef Type (*FuncType)(Type);
|
| + static struct {
|
| + const char *Name;
|
| + FuncType FuncLlc;
|
| + FuncType FuncSz;
|
| + } Funcs[] = {
|
| + {"bswap", test_bswap, Subzero_::test_bswap},
|
| + {"bswap_alloca", test_bswap_alloca, Subzero_::test_bswap_alloca}};
|
| + const static size_t NumFuncs = sizeof(Funcs) / sizeof(*Funcs);
|
| + for (size_t f = 0; f < NumFuncs; ++f) {
|
| + for (size_t i = 0; i < NumValues; ++i) {
|
| + Type Value = static_cast<Type>(Values[i]);
|
| + ++TotalTests;
|
| + Type ResultSz = Funcs[f].FuncSz(Value);
|
| + Type ResultLlc = Funcs[f].FuncLlc(Value);
|
| + if (ResultSz == ResultLlc) {
|
| + ++Passes;
|
| + } else {
|
| + ++Failures;
|
| + std::cout << "test_" << Funcs[f].Name << (CHAR_BIT * sizeof(Type))
|
| + << "(" << static_cast<uint64_t>(Value)
|
| + << "): sz=" << static_cast<uint64_t>(ResultSz)
|
| + << " llc=" << static_cast<uint64_t>(ResultLlc) << "\n";
|
| + }
|
| }
|
| }
|
| }
|
|
|