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.
|