From 017667c2dc9843eb5082e991f421c773636dcf36 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Thu, 13 Jun 2013 19:03:33 +0200 Subject: imx233: generate register headers for stmp3600, stmp3700 and imx233 Change-Id: Ia87086f4f4f4ecbb844ffd869407b14ea2509934 --- firmware/target/arm/imx233/regs/regs-macro.h | 496 +++++++++++++++++++++++++++ 1 file changed, 496 insertions(+) create mode 100644 firmware/target/arm/imx233/regs/regs-macro.h (limited to 'firmware/target/arm/imx233/regs/regs-macro.h') diff --git a/firmware/target/arm/imx233/regs/regs-macro.h b/firmware/target/arm/imx233/regs/regs-macro.h new file mode 100644 index 0000000000..c53bc8609b --- /dev/null +++ b/firmware/target/arm/imx233/regs/regs-macro.h @@ -0,0 +1,496 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * This file was automatically generated by headergen, DO NOT EDIT it. + * headergen version: 2.1.7 + * + * Copyright (C) 2013 by Amaury Pouly + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#ifndef __REGS__MACRO__H__ +#define __REGS__MACRO__H__ + +#ifndef REG_WRITE +#define REG_WRITE(var,value) ((var) = (value)) +#endif /* REG_WRITE */ + +#ifndef REG_READ +#define REG_READ(var) (var) +#endif /* REG_READ */ + +#define BF_SET(reg, field) REG_WRITE(HW_##reg##_SET, BM_##reg##_##field) +#define BF_CLR(reg, field) REG_WRITE(HW_##reg##_CLR, BM_##reg##_##field) +#define BF_TOG(reg, field) REG_WRITE(HW_##reg##_TOG, BM_##reg##_##field) + +#define BF_SETV(reg, field, v) REG_WRITE(HW_##reg##_SET, BF_##reg##_##field(v)) +#define BF_CLRV(reg, field, v) REG_WRITE(HW_##reg##_CLR, BF_##reg##_##field(v)) +#define BF_TOGV(reg, field, v) REG_WRITE(HW_##reg##_TOG, BF_##reg##_##field(v)) + +#define BF_RDX(val, reg, field) ((REG_READ(val) & BM_##reg##_##field) >> BP_##reg##_##field) +#define BF_RD(reg, field) BF_RDX(REG_READ(HW_##reg), reg, field) +#define BF_WRX(val, reg, field, v) REG_WRITE(val, (REG_READ(val) & ~BM_##reg##_##field) | (((v) << BP_##reg##_##field) & BM_##reg##_##field)) +#define BF_WR(reg, field, v) BF_WRX(HW_##reg, reg, field, v) +#define BF_WR_V(reg, field, sy) BF_WR(reg, field, BV_##reg##_##field##__##sy) +#define BF_WR_VX(val, reg, field, sy) BF_WRX(val, reg, field, BV_##reg##_##field##__##sy) + +#define BF_SETn(reg, n, field) REG_WRITE(HW_##reg##_SET(n), BM_##reg##_##field) +#define BF_CLRn(reg, n, field) REG_WRITE(HW_##reg##_CLR(n), BM_##reg##_##field) +#define BF_TOGn(reg, n, field) REG_WRITE(HW_##reg##_TOG(n), BM_##reg##_##field) + +#define BF_SETVn(reg, n, field, v) REG_WRITE(HW_##reg##_SET(n), BF_##reg##_##field(v)) +#define BF_CLRVn(reg, n, field, v) REG_WRITE(HW_##reg##_CLR(n), BF_##reg##_##field(v)) +#define BF_TOGVn(reg, n, field, v) REG_WRITE(HW_##reg##_TOG(n), BF_##reg##_##field(v)) + +#define BF_RDn(reg, n, field) BF_RDX(HW_##reg(n), reg, field) +#define BF_WRn(reg, n, field, v) BF_WRX(HW_##reg(n), reg, field, v) +#define BF_WRn_V(reg, n, field, sy) BF_WRn(reg, n, field, BV_##reg##_##field##__##sy) + +#define BM_OR1(reg, f01) \ + (BM_##reg##_##f01) +#define BM_OR2(reg, f01, f02) \ + (BM_##reg##_##f01 | BM_##reg##_##f02) +#define BM_OR3(reg, f01, f02, f03) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03) +#define BM_OR4(reg, f01, f02, f03, f04) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04) +#define BM_OR5(reg, f01, f02, f03, f04, f05) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05) +#define BM_OR6(reg, f01, f02, f03, f04, f05, f06) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06) +#define BM_OR7(reg, f01, f02, f03, f04, f05, f06, f07) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07) +#define BM_OR8(reg, f01, f02, f03, f04, f05, f06, f07, f08) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08) +#define BM_OR9(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09) +#define BM_OR10(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10) +#define BM_OR11(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11) +#define BM_OR12(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12) +#define BM_OR13(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13) +#define BM_OR14(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14) +#define BM_OR15(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15) +#define BM_OR16(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16) +#define BM_OR17(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17) +#define BM_OR18(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18) +#define BM_OR19(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19) +#define BM_OR20(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20) +#define BM_OR21(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21) +#define BM_OR22(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22) +#define BM_OR23(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23) +#define BM_OR24(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24) +#define BM_OR25(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24 | \ + BM_##reg##_##f25) +#define BM_OR26(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24 | \ + BM_##reg##_##f25 | BM_##reg##_##f26) +#define BM_OR27(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24 | \ + BM_##reg##_##f25 | BM_##reg##_##f26 | BM_##reg##_##f27) +#define BM_OR28(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24 | \ + BM_##reg##_##f25 | BM_##reg##_##f26 | BM_##reg##_##f27 | BM_##reg##_##f28) +#define BM_OR29(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28, f29) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24 | \ + BM_##reg##_##f25 | BM_##reg##_##f26 | BM_##reg##_##f27 | BM_##reg##_##f28 | \ + BM_##reg##_##f29) +#define BM_OR30(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28, f29, f30) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24 | \ + BM_##reg##_##f25 | BM_##reg##_##f26 | BM_##reg##_##f27 | BM_##reg##_##f28 | \ + BM_##reg##_##f29 | BM_##reg##_##f30) +#define BM_OR31(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, \ + f31) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24 | \ + BM_##reg##_##f25 | BM_##reg##_##f26 | BM_##reg##_##f27 | BM_##reg##_##f28 | \ + BM_##reg##_##f29 | BM_##reg##_##f30 | BM_##reg##_##f31) +#define BM_OR32(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, \ + f31, f32) \ + (BM_##reg##_##f01 | BM_##reg##_##f02 | BM_##reg##_##f03 | BM_##reg##_##f04 | \ + BM_##reg##_##f05 | BM_##reg##_##f06 | BM_##reg##_##f07 | BM_##reg##_##f08 | \ + BM_##reg##_##f09 | BM_##reg##_##f10 | BM_##reg##_##f11 | BM_##reg##_##f12 | \ + BM_##reg##_##f13 | BM_##reg##_##f14 | BM_##reg##_##f15 | BM_##reg##_##f16 | \ + BM_##reg##_##f17 | BM_##reg##_##f18 | BM_##reg##_##f19 | BM_##reg##_##f20 | \ + BM_##reg##_##f21 | BM_##reg##_##f22 | BM_##reg##_##f23 | BM_##reg##_##f24 | \ + BM_##reg##_##f25 | BM_##reg##_##f26 | BM_##reg##_##f27 | BM_##reg##_##f28 | \ + BM_##reg##_##f29 | BM_##reg##_##f30 | BM_##reg##_##f31 | BM_##reg##_##f32) + +#define BF_OR1(reg, f01) \ + (BF_##reg##_##f01) +#define BF_OR2(reg, f01, f02) \ + (BF_##reg##_##f01 | BF_##reg##_##f02) +#define BF_OR3(reg, f01, f02, f03) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03) +#define BF_OR4(reg, f01, f02, f03, f04) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04) +#define BF_OR5(reg, f01, f02, f03, f04, f05) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05) +#define BF_OR6(reg, f01, f02, f03, f04, f05, f06) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06) +#define BF_OR7(reg, f01, f02, f03, f04, f05, f06, f07) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07) +#define BF_OR8(reg, f01, f02, f03, f04, f05, f06, f07, f08) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08) +#define BF_OR9(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09) +#define BF_OR10(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10) +#define BF_OR11(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11) +#define BF_OR12(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12) +#define BF_OR13(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13) +#define BF_OR14(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14) +#define BF_OR15(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15) +#define BF_OR16(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16) +#define BF_OR17(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17) +#define BF_OR18(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18) +#define BF_OR19(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19) +#define BF_OR20(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20) +#define BF_OR21(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21) +#define BF_OR22(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22) +#define BF_OR23(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23) +#define BF_OR24(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24) +#define BF_OR25(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24 | \ + BF_##reg##_##f25) +#define BF_OR26(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24 | \ + BF_##reg##_##f25 | BF_##reg##_##f26) +#define BF_OR27(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24 | \ + BF_##reg##_##f25 | BF_##reg##_##f26 | BF_##reg##_##f27) +#define BF_OR28(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24 | \ + BF_##reg##_##f25 | BF_##reg##_##f26 | BF_##reg##_##f27 | BF_##reg##_##f28) +#define BF_OR29(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28, f29) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24 | \ + BF_##reg##_##f25 | BF_##reg##_##f26 | BF_##reg##_##f27 | BF_##reg##_##f28 | \ + BF_##reg##_##f29) +#define BF_OR30(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28, f29, f30) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24 | \ + BF_##reg##_##f25 | BF_##reg##_##f26 | BF_##reg##_##f27 | BF_##reg##_##f28 | \ + BF_##reg##_##f29 | BF_##reg##_##f30) +#define BF_OR31(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, \ + f31) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24 | \ + BF_##reg##_##f25 | BF_##reg##_##f26 | BF_##reg##_##f27 | BF_##reg##_##f28 | \ + BF_##reg##_##f29 | BF_##reg##_##f30 | BF_##reg##_##f31) +#define BF_OR32(reg, f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, \ + f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, \ + f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, \ + f31, f32) \ + (BF_##reg##_##f01 | BF_##reg##_##f02 | BF_##reg##_##f03 | BF_##reg##_##f04 | \ + BF_##reg##_##f05 | BF_##reg##_##f06 | BF_##reg##_##f07 | BF_##reg##_##f08 | \ + BF_##reg##_##f09 | BF_##reg##_##f10 | BF_##reg##_##f11 | BF_##reg##_##f12 | \ + BF_##reg##_##f13 | BF_##reg##_##f14 | BF_##reg##_##f15 | BF_##reg##_##f16 | \ + BF_##reg##_##f17 | BF_##reg##_##f18 | BF_##reg##_##f19 | BF_##reg##_##f20 | \ + BF_##reg##_##f21 | BF_##reg##_##f22 | BF_##reg##_##f23 | BF_##reg##_##f24 | \ + BF_##reg##_##f25 | BF_##reg##_##f26 | BF_##reg##_##f27 | BF_##reg##_##f28 | \ + BF_##reg##_##f29 | BF_##reg##_##f30 | BF_##reg##_##f31 | BF_##reg##_##f32) + +#define REG_NARG(...) REG_NARGS_(__VA_ARGS__, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) +#define REG_NARGS_(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, N, ...) N + +#define REG_VARIADIC(macro, reg, ...) REG_VARIADIC_(macro, NARG(__VA_ARGS__), reg, __VA_ARGS__) +#define REG_VARIADIC_(macro, cnt, reg, ...) REG_VARIADIC__(macro, cnt, reg, __VA_ARGS__) +#define REG_VARIADIC__(macro, cnt, reg, ...) REG_VARIADIC___(macro##cnt, reg, ...) +#define REG_VARIADIC___(macro, reg, ...) macro(reg, __VA_ARGS__) + +#define BM_OR(reg, ...) REG_VARIADIC(BM_OR, reg, __VA_ARGS__) +#define BF_OR(reg, ...) REG_VARIADIC(BF_OR, reg, __VA_ARGS__) +#endif /* __REGS__MACRO__H__ */ -- cgit v1.2.3