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

Side by Side 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: Address Jan's comments. 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 unified diff | Download patch
OLDNEW
(Empty)
1 #ifndef TEST_VECTOR_OPS_H
2 #define TEST_VECTOR_OPS_H
3
4 #include "vectors.h"
5
6 // The VectorOps<> class acts like Vectors<> but also has insertelement,
7 // Subzero_insertelement, extractelement, and Subzero_extractelement
8 // fields.
9
10 template <typename T> struct VectorOps;
11 #define FIELD(TYNAME, FIELDNAME) VectorOps<TYNAME>::FIELDNAME
12 #define TY(TYNAME) FIELD(TYNAME, Ty)
13 #define CASTTY(TYNAME) FIELD(TYNAME, CastTy)
14 #define DECLARE_VECTOR_OPS(NAME) \
15 template <> struct VectorOps<NAME> : public Vectors<NAME> { \
16 static Ty (*insertelement)(Ty, CastTy, int32_t); \
17 static CastTy (*extractelement)(Ty, int32_t); \
18 static Ty (*Subzero_insertelement)(Ty, CastTy, int32_t); \
19 static CastTy (*Subzero_extractelement)(Ty, int32_t); \
20 }; \
21 extern "C" { \
22 TY(NAME) insertelement_##NAME(TY(NAME), CASTTY(NAME), int32_t); \
23 TY(NAME) Subzero_insertelement_##NAME(TY(NAME), CASTTY(NAME), int32_t); \
24 CASTTY(NAME) extractelement_##NAME(TY(NAME), int32_t); \
25 CASTTY(NAME) Subzero_extractelement_##NAME(TY(NAME), int32_t); \
26 } \
27 TY(NAME) (*FIELD(NAME, insertelement))(TY(NAME), CASTTY(NAME), int32_t) = \
28 &insertelement_##NAME; \
29 TY(NAME) (*FIELD(NAME, Subzero_insertelement))( \
30 TY(NAME), CASTTY(NAME), int32_t) = &Subzero_insertelement_##NAME; \
31 CASTTY(NAME) (*FIELD(NAME, extractelement))(TY(NAME), int32_t) = \
32 &extractelement_##NAME; \
33 CASTTY(NAME) (*FIELD(NAME, Subzero_extractelement))(TY(NAME), int32_t) = \
34 &Subzero_extractelement_##NAME;
35
36 #define X(ty, eltty, castty) DECLARE_VECTOR_OPS(ty)
37 VECTOR_TYPE_TABLE
38 #undef X
39
40 #define X(ty, eltty, numelements) DECLARE_VECTOR_OPS(ty)
41 I1_VECTOR_TYPE_TABLE
42 #undef X
43
44 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698