//===- subzero/src/IceRegList.h - Register list macro defs -----*- C++ -*-===// // // The Subzero Code Generator // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // /// \file /// \brief Defines the REGLIST*() macros used in the IceInst*.def files. /// //===----------------------------------------------------------------------===// #ifndef SUBZERO_SRC_ICEINSTREGLIST_H #define SUBZERO_SRC_ICEINSTREGLIST_H // REGLISTn is a family of macros that we use to define register aliasing. "n" // indicates how many register aliases are being provided to the macro. It // assumes the parameters are register names declared in the "ns" // namespace/class, but with the common "Reg_" prefix removed for brevity. #define NO_ALIASES() \ {} #define REGLIST1(ns, r0) \ { ns::Reg_##r0 } #define REGLIST2(ns, r0, r1) \ { ns::Reg_##r0, ns::Reg_##r1 } #define REGLIST3(ns, r0, r1, r2) \ { ns::Reg_##r0, ns::Reg_##r1, ns::Reg_##r2 } #define REGLIST4(ns, r0, r1, r2, r3) \ { ns::Reg_##r0, ns::Reg_##r1, ns::Reg_##r2, ns::Reg_##r3 } #define REGLIST7(ns, r0, r1, r2, r3, r4, r5, r6) \ { \ ns::Reg_##r0, ns::Reg_##r1, ns::Reg_##r2, ns::Reg_##r3, ns::Reg_##r4, \ ns::Reg_##r5, ns::Reg_##r6 \ } #endif // SUBZERO_SRC_ICEINSTREGLIST_H