printf("\tand $1, %%%s\n", BN_REG);
#else
if(e0) { KIDREG2PARM(0); } else { moveimm(KID_VAL(0), BN_REG); }
- if(e1) { KIDREG2PARM(1); } else { moveimm(KID_VAL(1), KID_REG(1)); }
- if(strcmp(op,"e")==0 && KID_VAL(1) == 0) {
+ if(e1) { KIDREG2PARM(1); } else { if(KID_VAL(1) != 0) moveimm(KID_VAL(1), KID_REG(1)); }
+ if(strcmp(op,"e")==0 && KID_VAL(1) == 0 && KID_VAL(0) == 0) {
/* not */
printf("\tcntlzw %s,%s\n", KID_REG(0), KID_REG(0));
printf("\tsrwi %s,%s,5\n", BN_REG, KID_REG(0));
+ } else if(strcmp(op, "e")==0) {
+ /* eq */
+ printf("\txor %s,%s,%s\n", BN_REG, KID_REG(0), KID_REG(1));
+ printf("\tcntlzw %s,%s\n", BN_REG, BN_REG);
+ printf("\tsrwi %s,%s,5\n", BN_REG, BN_REG);
} else if(strcmp(op, "l")==0 || strcmp(op, "g")==0) {
/* less */
printf("\tcmpw 7,%s,%s\n", KID_REG(1), KID_REG(0));