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