- moveimm(1, BN_REG);
- printf("\tcmov%s %%%2$s, %%%2$s\n", op, BN_REG);
- moveimm(0, KID_REG(1));
- printf("\tcmovn%s %%%s, %%%s\n", op, KID_REG(1), BN_REG);
+ printf("\t//gen_eqless_%i%i @ %i\n", e0, e1, deep);
+ if(e0) { KIDREG2PARM(0); } else { KIDREG2ID(0); }
+ if(e1) { KIDREG2PARM(1); } else { KIDREG2ID(1); }
+
+ if(e0 && e1) {
+ printf("\tcmp %%%s, %%%s\n", KID_REG(1), KID_REG(0));
+ } else if(e0 && !e1) {
+ if (deep == 0) {
+ printf("\tcmp $%d, %%%s\n", KID_VAL(1), KID_REG(0));
+ } else if (deep == 1) {
+ KIDKIDREG2PARM(0,0);
+ printf("\tcmp $%d, %%%s\n", KID_VAL(1), KIDKID_REG(0,0));
+ } else if (deep == 2) {
+ KIDKIDKIDREG2PARM(0,0,0);
+ printf("\tcmp $%d, %%%s\n", KID_VAL(1), KIDKIDKID_REG(0,0,0));
+ }
+ } else if(!e0 && e1) {
+ printf("\tcmp $%d, %%%s\n", KID_VAL(0), KID_REG(1));
+ }
+ printf("\tset%s %%%s\n", op, reg_64to8l(BN_REG));
+ printf("\tand $1, %%%s\n", BN_REG);