# HG changeset patch # User Shinji KONO # Date 1291533391 -32400 # Node ID 7da123aa5a395dd7cac1647d17b5a038426ce62e # Parent 1547193bddde709da0fe747004d83a9b4da2e7ea spu diff -r 1547193bddde -r 7da123aa5a39 mc-code-spu.c --- a/mc-code-spu.c Sat Dec 04 13:02:51 2010 +0900 +++ b/mc-code-spu.c Sun Dec 05 16:16:31 2010 +0900 @@ -577,51 +577,13 @@ return reg; } } -#if LONGLONG_CODE||FLOAT_CODE - /* search register stack */ - for(i=0;i0) { - code_lassign_lvar( - (j=new_lvar(SIZE_OF_LONGLONG)),reg); - reg_stack[i]= j-REG_LVAR_OFFSET; - free_register(reg); - return get_register(); - } - } -#endif - /* PTR_CACHE をつぶす */ - for(i=MAX_TMP_REG;i>=MIN_TMP_REG;i--) { - if (regs[i]==PTRC_REG) { - clear_ptr_cache_reg(i); - } else - continue; - regs[i]=USING_REG; /* そのレジスタを使うことを宣言し */ - return i; /* その場所を表す番号を返す */ - } for(i=0;i < ... */ if (use) { use_int(reg); xrn = register_name(reg); - //printf("\tmov\t%s, #0\n",xrn); - printf("\til\t%s, 0\n",xrn); - gen_jmp(e3=fwdlabel()); - fwddef(e2); - //printf("\tmov\t%s, #1\n",xrn); - printf("\til\t%s, 1\n",xrn); - fwddef(e3); - } else { - fwddef(e2); + printf("\tceqi\t%s, %s, 0\n",xrn,xrn); + printf("\tnor\t%s, %s, %s\n",xrn,xrn,xrn); + printf("\tsfi\t%s, %s, 0\n",xrn,xrn); } } @@ -1307,7 +1224,7 @@ void code_cmp_rgvar(int e1,int reg,int label,int cond) { use_int(reg); - code_ld("lqd",reg,cadr(e1),get_ptr_cache(ncaddr(e1))); + code_crvar(e1,reg,0,SIZE_OF_INT); code_cmp_register(reg,label,cond); } @@ -1319,8 +1236,7 @@ crn = register_name(reg); lvar_intro(e2); printf("\tlqd\t%s, ",crn); - e2 *= 4; - lvar(e2,""); + lvar(e2,""); code_cmp_register(reg,label,cond); } @@ -1935,8 +1851,7 @@ void code_frame_pointer(int e3) { use_int(e3); - //printf("\tmov\tfp, %s\n",register_name(e3)); - printf("\tori\t$sp,%s\n",register_name(e3)); + printf("\tori\t$sp,%s\n",register_name(e3)); } int @@ -1961,7 +1876,7 @@ trn = register_name(REG_ip); - printf("\tsf\tfp, fp, %s\n",trn); + printf("\tori\t$sp, $sp, %s\n",trn); } @@ -3538,12 +3453,6 @@ /* 64bit int part */ int -lrexpr_bool(int e1, int reg) -{ - return 0; -} - -int lrexpr(int e1, int e2,int l1, int op,int cond) { int reg,regh,regl,e3h,e3l;