Home | History | Annotate | Download | only in src
      1 //===- subzero/src/IceRegList.h - Register list macro defs  -----*- 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 /// \file
     11 /// \brief Defines the REGLIST*() macros used in the IceInst*.def files.
     12 ///
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef SUBZERO_SRC_ICEINSTREGLIST_H
     16 #define SUBZERO_SRC_ICEINSTREGLIST_H
     17 
     18 // REGLISTn is a family of macros that we use to define register aliasing.  "n"
     19 // indicates how many register aliases are being provided to the macro.  It
     20 // assumes the parameters are register names declared in the "ns"
     21 // namespace/class, but with the common "Reg_" prefix removed for brevity.
     22 #define NO_ALIASES()                                                           \
     23   {}
     24 #define REGLIST1(ns, r0)                                                       \
     25   { ns::Reg_##r0 }
     26 #define REGLIST2(ns, r0, r1)                                                   \
     27   { ns::Reg_##r0, ns::Reg_##r1 }
     28 #define REGLIST3(ns, r0, r1, r2)                                               \
     29   { ns::Reg_##r0, ns::Reg_##r1, ns::Reg_##r2 }
     30 #define REGLIST4(ns, r0, r1, r2, r3)                                           \
     31   { ns::Reg_##r0, ns::Reg_##r1, ns::Reg_##r2, ns::Reg_##r3 }
     32 #define REGLIST7(ns, r0, r1, r2, r3, r4, r5, r6)                               \
     33   {                                                                            \
     34     ns::Reg_##r0, ns::Reg_##r1, ns::Reg_##r2, ns::Reg_##r3, ns::Reg_##r4,      \
     35         ns::Reg_##r5, ns::Reg_##r6                                             \
     36   }
     37 
     38 #endif // SUBZERO_SRC_ICEINSTREGLIST_H
     39