| //===- subzero/crosstest/test_sync_atomic.def - macros for tests -*- C++ -*-===// |
| // |
| // The Subzero Code Generator |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file defines macros for testing atomic intrinsics (via sync builtins). |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef TEST_SYNC_ATOMIC_DEF |
| #define TEST_SYNC_ATOMIC_DEF |
| |
| #include "xdefs.h" |
| |
| #define STR(s) #s |
| |
| #define RMWOP_TABLE \ |
| /* inst */ \ |
| X(add) \ |
| X(sub) \ |
| X(or) \ |
| X(and) \ |
| X(xor) |
| //#define X(inst) |
| |
| #define ATOMIC_TYPE_TABLE \ |
| /* type */ \ |
| X(uint8_t) \ |
| X(uint16_t) \ |
| X(uint32_t) \ |
| X(uint64) |
| //#define X(type) |
| |
| #define FOR_ALL_RMWTYPES_INST(F, inst) \ |
| F(inst, uint8_t) \ |
| F(inst, uint16_t) \ |
| F(inst, uint32_t) \ |
| F(inst, uint64) |
| |
| #define FOR_ALL_RMWOP_TYPES(X) \ |
| FOR_ALL_RMWTYPES_INST(X, add) \ |
| FOR_ALL_RMWTYPES_INST(X, sub) \ |
| FOR_ALL_RMWTYPES_INST(X, or) \ |
| FOR_ALL_RMWTYPES_INST(X, and) \ |
| FOR_ALL_RMWTYPES_INST(X, xor) |
| //#define X(inst, type) |
| |
| #endif // TEST_SYNC_ATOMIC_DEF |