1#define TRUE_VAL (!0)
2#define FALSE_VAL 0
3#define ARR_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
4
5typedef unsigned long long int uint64_t;
6typedef long long int int64_t;
7
8/* ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- */
9struct harness_int64_pred {
10  const char     *fmt_string;
11  int64_t        *lhs;
12  int64_t        *rhs;
13  int64_t        *select_a;
14  int64_t        *select_b;
15  int             expected;
16  int64_t        *select_expected;
17};
18
19struct harness_uint64_pred {
20  const char     *fmt_string;
21  uint64_t       *lhs;
22  uint64_t       *rhs;
23  uint64_t       *select_a;
24  uint64_t       *select_b;
25  int             expected;
26  uint64_t       *select_expected;
27};
28
29struct int64_pred_s {
30  const char     *name;
31  int             (*predfunc) (int64_t, int64_t);
32  int64_t         (*selfunc) (int64_t, int64_t, int64_t, int64_t);
33  struct harness_int64_pred *tests;
34  int             n_tests;
35};
36
37struct uint64_pred_s {
38  const char     *name;
39  int             (*predfunc) (uint64_t, uint64_t);
40  uint64_t        (*selfunc) (uint64_t, uint64_t, uint64_t, uint64_t);
41  struct harness_uint64_pred *tests;
42  int             n_tests;
43};
44