| OLD | NEW |
| 1 //===- subzero/crosstest/test_cast_main.cpp - Driver for tests ------------===// | 1 //===- subzero/crosstest/test_cast_main.cpp - Driver for tests ------------===// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // Driver for crosstesting cast operations. | 10 // Driver for crosstesting cast operations. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 std::cout << std::fixed << XSTR(Func) << "<" << FromString \ | 47 std::cout << std::fixed << XSTR(Func) << "<" << FromString \ |
| 48 << ", " XSTR(ToCName) ">(" << Input << "): "; \ | 48 << ", " XSTR(ToCName) ">(" << Input << "): "; \ |
| 49 if (sizeof(ToCName) == 1) \ | 49 if (sizeof(ToCName) == 1) \ |
| 50 std::cout << "sz=" << (int)ResultSz << " llc=" << (int)ResultLlc; \ | 50 std::cout << "sz=" << (int)ResultSz << " llc=" << (int)ResultLlc; \ |
| 51 else \ | 51 else \ |
| 52 std::cout << "sz=" << ResultSz << " llc=" << ResultLlc; \ | 52 std::cout << "sz=" << ResultSz << " llc=" << ResultLlc; \ |
| 53 std::cout << "\n"; \ | 53 std::cout << "\n"; \ |
| 54 } \ | 54 } \ |
| 55 } while (0) | 55 } while (0) |
| 56 | 56 |
| 57 #define COMPARE_ARG(Func, FromCName, ToCName, Input, FromString) \ |
| 58 do { \ |
| 59 ToCName ResultSz, ResultLlc; \ |
| 60 ResultLlc = Func<FromCName, ToCName>(1, Input, 2); \ |
| 61 ResultSz = Subzero_::Func<FromCName, ToCName>(1, Input, 2); \ |
| 62 ++TotalTests; \ |
| 63 if (!memcmp(&ResultLlc, &ResultSz, sizeof(ToCName))) { \ |
| 64 ++Passes; \ |
| 65 } else { \ |
| 66 ++Failures; \ |
| 67 std::cout << std::fixed << XSTR(Func) << "<" << FromString \ |
| 68 << ", " XSTR(ToCName) ">(" << Input << "): "; \ |
| 69 if (sizeof(ToCName) == 1) \ |
| 70 std::cout << "sz=" << (int)ResultSz << " llc=" << (int)ResultLlc; \ |
| 71 else \ |
| 72 std::cout << "sz=" << ResultSz << " llc=" << ResultLlc; \ |
| 73 std::cout << "\n"; \ |
| 74 } \ |
| 75 } while (0) |
| 76 |
| 57 #define COMPARE_VEC(Func, FromCName, ToCName, Input, FromString, ToString) \ | 77 #define COMPARE_VEC(Func, FromCName, ToCName, Input, FromString, ToString) \ |
| 58 do { \ | 78 do { \ |
| 59 ToCName ResultSz, ResultLlc; \ | 79 ToCName ResultSz, ResultLlc; \ |
| 60 ResultLlc = Func<FromCName, ToCName>(Input); \ | 80 ResultLlc = Func<FromCName, ToCName>(Input); \ |
| 61 ResultSz = Subzero_::Func<FromCName, ToCName>(Input); \ | 81 ResultSz = Subzero_::Func<FromCName, ToCName>(Input); \ |
| 62 ++TotalTests; \ | 82 ++TotalTests; \ |
| 63 if (!memcmp(&ResultLlc, &ResultSz, sizeof(ToCName))) { \ | 83 if (!memcmp(&ResultLlc, &ResultSz, sizeof(ToCName))) { \ |
| 64 ++Passes; \ | 84 ++Passes; \ |
| 65 } else { \ | 85 } else { \ |
| 66 ++Failures; \ | 86 ++Failures; \ |
| (...skipping 13 matching lines...) Expand all Loading... |
| 80 COMPARE(cast, FromType, uint8_t, Val, FromTypeString); | 100 COMPARE(cast, FromType, uint8_t, Val, FromTypeString); |
| 81 COMPARE(cast, FromType, myint8_t, Val, FromTypeString); | 101 COMPARE(cast, FromType, myint8_t, Val, FromTypeString); |
| 82 COMPARE(cast, FromType, uint16_t, Val, FromTypeString); | 102 COMPARE(cast, FromType, uint16_t, Val, FromTypeString); |
| 83 COMPARE(cast, FromType, int16_t, Val, FromTypeString); | 103 COMPARE(cast, FromType, int16_t, Val, FromTypeString); |
| 84 COMPARE(cast, FromType, uint32_t, Val, FromTypeString); | 104 COMPARE(cast, FromType, uint32_t, Val, FromTypeString); |
| 85 COMPARE(cast, FromType, int32_t, Val, FromTypeString); | 105 COMPARE(cast, FromType, int32_t, Val, FromTypeString); |
| 86 COMPARE(cast, FromType, uint64, Val, FromTypeString); | 106 COMPARE(cast, FromType, uint64, Val, FromTypeString); |
| 87 COMPARE(cast, FromType, int64, Val, FromTypeString); | 107 COMPARE(cast, FromType, int64, Val, FromTypeString); |
| 88 COMPARE(cast, FromType, float, Val, FromTypeString); | 108 COMPARE(cast, FromType, float, Val, FromTypeString); |
| 89 COMPARE(cast, FromType, double, Val, FromTypeString); | 109 COMPARE(cast, FromType, double, Val, FromTypeString); |
| 110 COMPARE_ARG(cast, FromType, bool, Val, FromTypeString); |
| 111 COMPARE_ARG(cast, FromType, uint8_t, Val, FromTypeString); |
| 112 COMPARE_ARG(cast, FromType, myint8_t, Val, FromTypeString); |
| 113 COMPARE_ARG(cast, FromType, uint16_t, Val, FromTypeString); |
| 114 COMPARE_ARG(cast, FromType, int16_t, Val, FromTypeString); |
| 115 COMPARE_ARG(cast, FromType, uint32_t, Val, FromTypeString); |
| 116 COMPARE_ARG(cast, FromType, int32_t, Val, FromTypeString); |
| 117 COMPARE_ARG(cast, FromType, uint64, Val, FromTypeString); |
| 118 COMPARE_ARG(cast, FromType, int64, Val, FromTypeString); |
| 119 COMPARE_ARG(cast, FromType, float, Val, FromTypeString); |
| 120 COMPARE_ARG(cast, FromType, double, Val, FromTypeString); |
| 90 } | 121 } |
| 91 | 122 |
| 92 template <typename FromType, typename ToType> | 123 template <typename FromType, typename ToType> |
| 93 void testVector(size_t &TotalTests, size_t &Passes, size_t &Failures, | 124 void testVector(size_t &TotalTests, size_t &Passes, size_t &Failures, |
| 94 const char *FromTypeString, const char *ToTypeString) { | 125 const char *FromTypeString, const char *ToTypeString) { |
| 95 const static size_t NumElementsInType = Vectors<FromType>::NumElements; | 126 const static size_t NumElementsInType = Vectors<FromType>::NumElements; |
| 96 PRNG Index; | 127 PRNG Index; |
| 97 static const float NegInf = -1.0 / 0.0; | 128 static const float NegInf = -1.0 / 0.0; |
| 98 static const float PosInf = 1.0 / 0.0; | 129 static const float PosInf = 1.0 / 0.0; |
| 99 static const float Nan = 0.0 / 0.0; | 130 static const float Nan = 0.0 / 0.0; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 testValue<uint16_t>(Val, TotalTests, Passes, Failures, "uint16_t"); | 222 testValue<uint16_t>(Val, TotalTests, Passes, Failures, "uint16_t"); |
| 192 } | 223 } |
| 193 for (size_t i = 0; i < NumValsSi16; ++i) { | 224 for (size_t i = 0; i < NumValsSi16; ++i) { |
| 194 int16_t Val = ValsSi16[i]; | 225 int16_t Val = ValsSi16[i]; |
| 195 testValue<int16_t>(Val, TotalTests, Passes, Failures, "int16_t"); | 226 testValue<int16_t>(Val, TotalTests, Passes, Failures, "int16_t"); |
| 196 } | 227 } |
| 197 for (size_t i = 0; i < NumValsUi32; ++i) { | 228 for (size_t i = 0; i < NumValsUi32; ++i) { |
| 198 uint32_t Val = ValsUi32[i]; | 229 uint32_t Val = ValsUi32[i]; |
| 199 testValue<uint32_t>(Val, TotalTests, Passes, Failures, "uint32_t"); | 230 testValue<uint32_t>(Val, TotalTests, Passes, Failures, "uint32_t"); |
| 200 COMPARE(castBits, uint32_t, float, Val, "uint32_t"); | 231 COMPARE(castBits, uint32_t, float, Val, "uint32_t"); |
| 232 COMPARE_ARG(castBits, uint32_t, float, Val, "uint32_t"); |
| 201 } | 233 } |
| 202 for (size_t i = 0; i < NumValsSi32; ++i) { | 234 for (size_t i = 0; i < NumValsSi32; ++i) { |
| 203 int32_t Val = ValsSi32[i]; | 235 int32_t Val = ValsSi32[i]; |
| 204 testValue<int32_t>(Val, TotalTests, Passes, Failures, "int32_t"); | 236 testValue<int32_t>(Val, TotalTests, Passes, Failures, "int32_t"); |
| 205 } | 237 } |
| 206 for (size_t i = 0; i < NumValsUi64; ++i) { | 238 for (size_t i = 0; i < NumValsUi64; ++i) { |
| 207 uint64 Val = ValsUi64[i]; | 239 uint64 Val = ValsUi64[i]; |
| 208 testValue<uint64>(Val, TotalTests, Passes, Failures, "uint64"); | 240 testValue<uint64>(Val, TotalTests, Passes, Failures, "uint64"); |
| 209 COMPARE(castBits, uint64, double, Val, "uint64"); | 241 COMPARE(castBits, uint64, double, Val, "uint64"); |
| 242 COMPARE_ARG(castBits, uint64, double, Val, "uint64"); |
| 210 } | 243 } |
| 211 for (size_t i = 0; i < NumValsSi64; ++i) { | 244 for (size_t i = 0; i < NumValsSi64; ++i) { |
| 212 int64 Val = ValsSi64[i]; | 245 int64 Val = ValsSi64[i]; |
| 213 testValue<int64>(Val, TotalTests, Passes, Failures, "int64"); | 246 testValue<int64>(Val, TotalTests, Passes, Failures, "int64"); |
| 214 } | 247 } |
| 215 for (size_t i = 0; i < NumValsF32; ++i) { | 248 for (size_t i = 0; i < NumValsF32; ++i) { |
| 216 for (unsigned j = 0; j < 2; ++j) { | 249 for (unsigned j = 0; j < 2; ++j) { |
| 217 float Val = ValsF32[i]; | 250 float Val = ValsF32[i]; |
| 218 if (j > 0) | 251 if (j > 0) |
| 219 Val = -Val; | 252 Val = -Val; |
| 220 testValue<float>(Val, TotalTests, Passes, Failures, "float"); | 253 testValue<float>(Val, TotalTests, Passes, Failures, "float"); |
| 221 COMPARE(castBits, float, uint32_t, Val, "float"); | 254 COMPARE(castBits, float, uint32_t, Val, "float"); |
| 255 COMPARE_ARG(castBits, float, uint32_t, Val, "float"); |
| 222 } | 256 } |
| 223 } | 257 } |
| 224 for (size_t i = 0; i < NumValsF64; ++i) { | 258 for (size_t i = 0; i < NumValsF64; ++i) { |
| 225 for (unsigned j = 0; j < 2; ++j) { | 259 for (unsigned j = 0; j < 2; ++j) { |
| 226 double Val = ValsF64[i]; | 260 double Val = ValsF64[i]; |
| 227 if (j > 0) | 261 if (j > 0) |
| 228 Val = -Val; | 262 Val = -Val; |
| 229 testValue<double>(Val, TotalTests, Passes, Failures, "double"); | 263 testValue<double>(Val, TotalTests, Passes, Failures, "double"); |
| 230 COMPARE(castBits, double, uint64, Val, "double"); | 264 COMPARE(castBits, double, uint64, Val, "double"); |
| 265 COMPARE_ARG(castBits, double, uint64, Val, "double"); |
| 231 } | 266 } |
| 232 } | 267 } |
| 268 |
| 233 testVector<v4ui32, v4f32>(TotalTests, Passes, Failures, "v4ui32", "v4f32"); | 269 testVector<v4ui32, v4f32>(TotalTests, Passes, Failures, "v4ui32", "v4f32"); |
| 234 testVector<v4si32, v4f32>(TotalTests, Passes, Failures, "v4si32", "v4f32"); | 270 testVector<v4si32, v4f32>(TotalTests, Passes, Failures, "v4si32", "v4f32"); |
| 235 testVector<v4f32, v4si32>(TotalTests, Passes, Failures, "v4f32", "v4si32"); | 271 testVector<v4f32, v4si32>(TotalTests, Passes, Failures, "v4f32", "v4si32"); |
| 236 testVector<v4f32, v4ui32>(TotalTests, Passes, Failures, "v4f32", "v4ui32"); | 272 testVector<v4f32, v4ui32>(TotalTests, Passes, Failures, "v4f32", "v4ui32"); |
| 237 | 273 |
| 238 std::cout << "TotalTests=" << TotalTests << " Passes=" << Passes | 274 std::cout << "TotalTests=" << TotalTests << " Passes=" << Passes |
| 239 << " Failures=" << Failures << "\n"; | 275 << " Failures=" << Failures << "\n"; |
| 240 return Failures; | 276 return Failures; |
| 241 } | 277 } |
| OLD | NEW |