Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1535)

Unified Diff: crosstest/test_cast_main.cpp

Issue 2432373002: [SubZero] Fix f64 to/from i64 moves (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Addressed review comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: crosstest/test_cast_main.cpp
diff --git a/crosstest/test_cast_main.cpp b/crosstest/test_cast_main.cpp
index 964c30ea216e26100a998d10f9aadafd39f0d233..8cd0b1527225d853d7058bc35aefe4cc3bd67958 100644
--- a/crosstest/test_cast_main.cpp
+++ b/crosstest/test_cast_main.cpp
@@ -54,6 +54,28 @@ namespace Subzero_ {
} \
} while (0)
+#ifdef MIPS32
+#define COMPARE_MIPS(Func, FromCName, ToCName, Input, FromString) \
+ do { \
+ ToCName ResultSz, ResultLlc; \
+ ResultLlc = Func<FromCName, ToCName>(1, Input); \
+ ResultSz = Subzero_::Func<FromCName, ToCName>(1, Input); \
+ ++TotalTests; \
+ if (!memcmp(&ResultLlc, &ResultSz, sizeof(ToCName))) { \
+ ++Passes; \
+ } else { \
+ ++Failures; \
+ std::cout << std::fixed << XSTR(Func) << "<" << FromString \
+ << ", " XSTR(ToCName) ">(" << Input << "): "; \
+ if (sizeof(ToCName) == 1) \
+ std::cout << "sz=" << (int)ResultSz << " llc=" << (int)ResultLlc; \
+ else \
+ std::cout << "sz=" << ResultSz << " llc=" << ResultLlc; \
+ std::cout << "\n"; \
+ } \
+ } while (0)
+#endif
+
#define COMPARE_VEC(Func, FromCName, ToCName, Input, FromString, ToString) \
do { \
ToCName ResultSz, ResultLlc; \
@@ -89,6 +111,23 @@ void testValue(FromType Val, size_t &TotalTests, size_t &Passes,
COMPARE(cast, FromType, double, Val, FromTypeString);
}
+#ifdef MIPS32
+template <typename FromType>
+void testValueMIPS(FromType Val, size_t &TotalTests, size_t &Passes,
+ size_t &Failures, const char *FromTypeString) {
+ COMPARE_MIPS(cast, FromType, uint8_t, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, myint8_t, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, uint16_t, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, int16_t, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, uint32_t, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, int32_t, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, uint64, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, int64, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, float, Val, FromTypeString);
+ COMPARE_MIPS(cast, FromType, double, Val, FromTypeString);
+}
+#endif
+
template <typename FromType, typename ToType>
void testVector(size_t &TotalTests, size_t &Passes, size_t &Failures,
const char *FromTypeString, const char *ToTypeString) {
@@ -230,6 +269,60 @@ int main(int argc, char *argv[]) {
COMPARE(castBits, double, uint64, Val, "double");
}
}
+#ifdef MIPS32
+ for (size_t i = 0; i < NumValsUi8; ++i) {
+ uint8_t Val = ValsUi8[i];
+ testValueMIPS<uint8_t>(Val, TotalTests, Passes, Failures, "uint8_t");
+ }
+ for (size_t i = 0; i < NumValsSi8; ++i) {
+ myint8_t Val = ValsSi8[i];
+ testValueMIPS<myint8_t>(Val, TotalTests, Passes, Failures, "int8_t");
+ }
+ for (size_t i = 0; i < NumValsUi16; ++i) {
+ uint16_t Val = ValsUi16[i];
+ testValueMIPS<uint16_t>(Val, TotalTests, Passes, Failures, "uint16_t");
+ }
+ for (size_t i = 0; i < NumValsSi16; ++i) {
+ int16_t Val = ValsSi16[i];
+ testValueMIPS<int16_t>(Val, TotalTests, Passes, Failures, "int16_t");
+ }
+ for (size_t i = 0; i < NumValsUi32; ++i) {
+ uint32_t Val = ValsUi32[i];
+ testValueMIPS<uint32_t>(Val, TotalTests, Passes, Failures, "uint32_t");
+ COMPARE_MIPS(castBits, uint32_t, float, Val, "uint32_t");
+ }
+ for (size_t i = 0; i < NumValsSi32; ++i) {
+ int32_t Val = ValsSi32[i];
+ testValueMIPS<int32_t>(Val, TotalTests, Passes, Failures, "int32_t");
+ }
+ for (size_t i = 0; i < NumValsUi64; ++i) {
+ uint64 Val = ValsUi64[i];
+ testValueMIPS<uint64>(Val, TotalTests, Passes, Failures, "uint64");
+ COMPARE_MIPS(castBits, uint64, double, Val, "uint64");
+ }
+ for (size_t i = 0; i < NumValsSi64; ++i) {
+ int64 Val = ValsSi64[i];
+ testValueMIPS<int64>(Val, TotalTests, Passes, Failures, "int64");
+ }
+ for (size_t i = 0; i < NumValsF32; ++i) {
+ for (unsigned j = 0; j < 2; ++j) {
+ float Val = ValsF32[i];
+ if (j > 0)
+ Val = -Val;
+ testValueMIPS<float>(Val, TotalTests, Passes, Failures, "float");
+ COMPARE_MIPS(castBits, float, uint32_t, Val, "float");
+ }
+ }
+ for (size_t i = 0; i < NumValsF64; ++i) {
+ for (unsigned j = 0; j < 2; ++j) {
+ double Val = ValsF64[i];
+ if (j > 0)
+ Val = -Val;
+ testValueMIPS<double>(Val, TotalTests, Passes, Failures, "double");
+ COMPARE_MIPS(castBits, double, uint64, Val, "double");
+ }
+ }
+#endif
testVector<v4ui32, v4f32>(TotalTests, Passes, Failures, "v4ui32", "v4f32");
testVector<v4si32, v4f32>(TotalTests, Passes, Failures, "v4si32", "v4f32");
testVector<v4f32, v4si32>(TotalTests, Passes, Failures, "v4f32", "v4si32");

Powered by Google App Engine
This is Rietveld 408576698