XOR
EVAL_OP_BIN1(XOR_FOR_CSTYLE_CLEAN, XOR) /* A ^ B */
EVAL_OP_BIN2(XOR_FOR_CSTYLE_CLEAN, XOR) /* A ^ B */
EVAL_OP_BIN3(XOR_FOR_CSTYLE_CLEAN, XOR) /* A ^ B */
EVAL_OP_BIN4(XOR_FOR_CSTYLE_CLEAN, XOR) /* A ^ B */
%left XOR
| expr XOR expr
x0 = XOR(x0,U8TO32_LITTLE(m + 0));
x1 = XOR(x1,U8TO32_LITTLE(m + 4));
x2 = XOR(x2,U8TO32_LITTLE(m + 8));
x3 = XOR(x3,U8TO32_LITTLE(m + 12));
x4 = XOR(x4,U8TO32_LITTLE(m + 16));
x5 = XOR(x5,U8TO32_LITTLE(m + 20));
x6 = XOR(x6,U8TO32_LITTLE(m + 24));
x7 = XOR(x7,U8TO32_LITTLE(m + 28));
x8 = XOR(x8,U8TO32_LITTLE(m + 32));
x9 = XOR(x9,U8TO32_LITTLE(m + 36));
x10 = XOR(x10,U8TO32_LITTLE(m + 40));
x11 = XOR(x11,U8TO32_LITTLE(m + 44));
x12 = XOR(x12,U8TO32_LITTLE(m + 48));
x13 = XOR(x13,U8TO32_LITTLE(m + 52));
x14 = XOR(x14,U8TO32_LITTLE(m + 56));
x15 = XOR(x15,U8TO32_LITTLE(m + 60));
a = PLUS(a,b); d = ROTATE(XOR(d,a),16); \
c = PLUS(c,d); b = ROTATE(XOR(b,c),12); \
a = PLUS(a,b); d = ROTATE(XOR(d,a), 8); \
c = PLUS(c,d); b = ROTATE(XOR(b,c), 7);
{ "^", XOR, 0 },
| XOR
%token LC RC SEMI STAR DIV MOD PLUS MINUS AND OR XOR LB RB LP RP
#define ZERO(r...) XOR(r, r)
XOR(REC_PR_Y, REC_PR_X);
XOR(REC_PR_T, REC_PR_X);
XOR(REC_QR_Y, REC_QR_X); /* X = R ^ X */
XOR(REC_QR_Y, REC_QR_T); /* X = R ^ X */
XOR(REC_PQR_Y, REC_PQR_X);
XOR(REC_PQR_Z, REC_PQR_X); /* X = Xp + Xq + Xr */
XOR(REC_PQR_X, REC_PQR_XS); /* Pyz = Pxyz + X */
XOR(REC_PQR_X, REC_PQR_YS); /* Qyz = Qxyz + Xq */
XOR(REC_PQR_X, REC_PQR_YS); /* Y = Yp + Yq */
XOR(REC_PQR_XS, REC_PQR_YS); /* Z = Pz = Pyz + Y */
XOR(D, T); \
XOR(D, T); \
XOR(D, T); \
XOR(REC_PQ_Y, REC_PQ_X);
XOR(REC_PQ_T, REC_PQ_X);
#define ZERO(r...) XOR(r, r)
if (x & 0x02) { XOR(in, acc); } \
if (x & 0x04) { XOR(in, acc); } \
if (x & 0x08) { XOR(in, acc); } \
if (x & 0x10) { XOR(in, acc); } \
if (x & 0x20) { XOR(in, acc); } \
if (x & 0x40) { XOR(in, acc); } \
if (x & 0x80) { MUL2(in); XOR(in, acc); } \
#define ZERO(r...) XOR(r, r)