- } 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));
- printf("\tmfcr %s\n", BN_REG);
- /* EQ, GT, LT */
- /* um (32-29)=3 nach rechts shiften und das LSB anschauen */
- printf("\trlwinm %s,%s,%i,31,31\n", BN_REG, BN_REG, strcmp(op,"l")==0 ? 30 : 30);
+ } else {
+ if(!e1) {
+ moveimm(KID_VAL(1), KID_REG(1));
+ }
+ 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));
+ printf("\tmfcr %s\n", BN_REG);
+ /* EQ, GT, LT */
+ /* um (32-29)=3 nach rechts shiften und das LSB anschauen */
+ printf("\trlwinm %s,%s,%i,31,31\n", BN_REG, BN_REG, strcmp(op,"l")==0 ? 30 : 30);
+ }