1//===- subzero/crosstest/test_sync_atomic.def - macros for tests -*- C++ -*-===//
2//
3//                        The Subzero Code Generator
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file defines macros for testing atomic intrinsics (via sync builtins).
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef TEST_SYNC_ATOMIC_DEF
15#define TEST_SYNC_ATOMIC_DEF
16
17#include "xdefs.h"
18
19#define STR(s) #s
20
21#define RMWOP_TABLE  \
22  /* inst */         \
23  X(add)             \
24  X(sub)             \
25  X(or)              \
26  X(and)             \
27  X(xor)
28//#define X(inst)
29
30#define ATOMIC_TYPE_TABLE \
31  /* type */              \
32  X(uint8_t)              \
33  X(uint16_t)             \
34  X(uint32_t)             \
35  X(uint64)
36//#define X(type)
37
38#define FOR_ALL_RMWTYPES_INST(F, inst) \
39  F(inst, uint8_t)                     \
40  F(inst, uint16_t)                    \
41  F(inst, uint32_t)                    \
42  F(inst, uint64)
43
44#define FOR_ALL_RMWOP_TYPES(X)      \
45  FOR_ALL_RMWTYPES_INST(X, add)     \
46  FOR_ALL_RMWTYPES_INST(X, sub)     \
47  FOR_ALL_RMWTYPES_INST(X, or)      \
48  FOR_ALL_RMWTYPES_INST(X, and)     \
49  FOR_ALL_RMWTYPES_INST(X, xor)
50//#define X(inst, type)
51
52#endif // TEST_SYNC_ATOMIC_DEF
53