| //===- 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 |