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

Unified Diff: crosstest/test_vector_ops.h

Issue 407543003: Factor out common vector crosstesting code. (Closed) Base URL: https://gerrit.chromium.org/gerrit/p/native_client/pnacl-subzero.git@master
Patch Set: Created 6 years, 5 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_vector_ops.h
diff --git a/crosstest/test_vector_ops.h b/crosstest/test_vector_ops.h
new file mode 100644
index 0000000000000000000000000000000000000000..b272ad4d1dbf14579ebe2804768548488dd622f4
--- /dev/null
+++ b/crosstest/test_vector_ops.h
@@ -0,0 +1,43 @@
+#ifndef TEST_VECTOR_OPS_H
jvoung (off chromium) 2014/07/18 22:50:40 Add a #define TEST_VECTOR_OPS_H ?
wala 2014/07/18 23:08:23 Woops!! Done.
+
+#include "vectors.h"
+
+// The VectorOps<> class acts like Vectors<> but also has insertelement,
+// Subzero_insertelement, extractelement, and Subzero_extractelement
+// fields.
+
+template <typename T> struct VectorOps;
+#define FIELD(TYNAME, FIELDNAME) VectorOps<TYNAME>::FIELDNAME
+#define TY(TYNAME) FIELD(TYNAME, Ty)
+#define CASTTY(TYNAME) FIELD(TYNAME, CastTy)
+#define DECLARE_VECTOR_OPS(NAME) \
+ template <> struct VectorOps<NAME> : public Vectors<NAME> { \
+ static Ty (*insertelement)(Ty, CastTy, int32_t); \
+ static CastTy (*extractelement)(Ty, int32_t); \
+ static Ty (*Subzero_insertelement)(Ty, CastTy, int32_t); \
+ static CastTy (*Subzero_extractelement)(Ty, int32_t); \
+ }; \
+ extern "C" { \
+ TY(NAME) insertelement_##NAME(TY(NAME), CASTTY(NAME), int32_t); \
+ TY(NAME) Subzero_insertelement_##NAME(TY(NAME), CASTTY(NAME), int32_t); \
+ CASTTY(NAME) extractelement_##NAME(TY(NAME), int32_t); \
+ CASTTY(NAME) Subzero_extractelement_##NAME(TY(NAME), int32_t); \
+ } \
+ TY(NAME) (*FIELD(NAME, insertelement))(TY(NAME), CASTTY(NAME), int32_t) = \
+ &insertelement_##NAME; \
+ TY(NAME) (*FIELD(NAME, Subzero_insertelement))( \
+ TY(NAME), CASTTY(NAME), int32_t) = &Subzero_insertelement_##NAME; \
+ CASTTY(NAME) (*FIELD(NAME, extractelement))(TY(NAME), int32_t) = \
+ &extractelement_##NAME; \
+ CASTTY(NAME) (*FIELD(NAME, Subzero_extractelement))(TY(NAME), int32_t) = \
+ &Subzero_extractelement_##NAME;
+
+#define X(ty, eltty, castty) DECLARE_VECTOR_OPS(ty)
+VECTOR_TYPE_TABLE
+#undef X
+
+#define X(ty, eltty, numelements) DECLARE_VECTOR_OPS(ty)
+I1_VECTOR_TYPE_TABLE
+#undef X
+
+#endif
Jim Stichnoth 2014/07/18 23:45:47 #endif // TEST_VECTOR_OPS_H
wala 2014/07/21 23:45:10 Done.

Powered by Google App Engine
This is Rietveld 408576698