From 5f61ae4fe282ab07b5a81722497893c767bdb058 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 8 Jun 2010 04:03:32 +0200 Subject: [PATCH] ppc: ein paar testfaelle mehr (bis einschliesslich codea_abgabe_ae.0) --- gesamt_ppc/chelper.c | 5 ++--- gesamt_ppc/code.bfe | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/gesamt_ppc/chelper.c b/gesamt_ppc/chelper.c index ce1ab67..84ef5ba 100644 --- a/gesamt_ppc/chelper.c +++ b/gesamt_ppc/chelper.c @@ -49,9 +49,8 @@ void move(char *src, char *dst) void moveimm(long imm, char *dst) { - char buf[100]; - sprintf(buf, "$%d", imm); - printf("\tmovq %s, %%%s\n", buf, dst); + /* TODO: 32 bits... */ + printf("\taddi %s,0,%d\n", dst, imm); } char *next_reg(char *s, int params) diff --git a/gesamt_ppc/code.bfe b/gesamt_ppc/code.bfe index cf14116..d67847a 100644 --- a/gesamt_ppc/code.bfe +++ b/gesamt_ppc/code.bfe @@ -93,8 +93,13 @@ void gen_e_imm(struct treenode *bnode, char *instr) printf("\t#subtraktion mit 0 wegoptimiert\n"); move(KID_REG(0), BN_REG); } else { +#if 0 move(KID_REG(0), BN_REG); printf("\t%s $%d, %%%s\n", instr, KID_VAL(1), BN_REG); +#else + /* subf only */ + printf("\taddi %s,%s,%d\n", BN_REG, KID_REG(0), -1*KID_VAL(1)); +#endif } } } @@ -128,7 +133,8 @@ void gen_imm_eno(struct treenode *bnode, char *instr) void gen_eqless(struct treenode *bnode, char *op, short e0, short e1, short deep) { - printf("\t#gen_eqless_%i%i @ %i\n", e0, e1, deep); + printf("\t#gen_eqless_%i%i @ %i (op: %s)\n", e0, e1, deep, op); +#if 0 if(e0) { KIDREG2PARM(0); } else { KIDREG2ID(0); } if(e1) { KIDREG2PARM(1); } else { KIDREG2ID(1); } @@ -154,6 +160,15 @@ void gen_eqless(struct treenode *bnode, char *op, short e0, short e1, short deep } printf("\tset%s %%%s\n", op, reg_64to8l(BN_REG)); printf("\tand $1, %%%s\n", BN_REG); +#else + if(e0) { KIDREG2PARM(0); } else { KIDREG2ID(0); } + if(e1) { KIDREG2PARM(1); } else { KIDREG2ID(1); } + if(strcmp(op,"e")==0 && KID_VAL(1) == 0) { + /* not */ + printf("\tcntlzw %s,%s\n", KID_REG(0), KID_REG(0)); + printf("\tsrwi %s,%s,5\n", BN_REG, KID_REG(0)); + } +#endif } void gen_lea(struct treenode *bnode, short e) -- 2.25.1