//===- subzero/crosstest/test_bitmanip.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 bit manipulation intrinsics.
//
//===----------------------------------------------------------------------===//

#ifndef TEST_BIT_MANIP_DEF
#define TEST_BIT_MANIP_DEF

#include "xdefs.h"

#define STR(s) #s

#define BMI_OPS  \
  /* inst */     \
  X(ctlz)        \
  X(cttz)        \
  X(ctpop)
// #define X(inst)

#define BMI_TYPES \
  /* type */      \
  X(uint32)     \
  X(uint64)
// #define X(type)

#define FOR_ALL_BMI_TYPES_INST(F, inst) \
  F(inst, uint32)                     \
  F(inst, uint64)

#define FOR_ALL_BMI_OP_TYPES(X) \
  FOR_ALL_BMI_TYPES_INST(X, ctlz)     \
  FOR_ALL_BMI_TYPES_INST(X, cttz)     \
  FOR_ALL_BMI_TYPES_INST(X, ctpop)
//#define X(inst, type)

#define BSWAP_TABLE              \
  /* type, builtin_name */       \
  X(uint16_t, __builtin_bswap16) \
  X(uint32, __builtin_bswap32) \
  X(uint64, __builtin_bswap64)

#endif // TEST_BIT_MANIP_DEF
