Mercurial > hg > CbC > old > device
changeset 473:f8ba383dbc39 mips-float-arg-fix
MIPS float arg/int arg mix fix.
author | kono |
---|---|
date | Tue, 08 Nov 2005 16:55:51 +0900 |
parents | 834b5792bc5f |
children | 33735a212eff |
files | mc-code-arm.c mc-code-mips.c test/float.c |
diffstat | 3 files changed, 11 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mc-code-arm.c Tue Nov 08 12:14:44 2005 +0900 +++ b/mc-code-arm.c Tue Nov 08 16:55:51 2005 +0900 @@ -185,12 +185,12 @@ #define lregister_name_low(i) reg_name[regv_l(i)] #define lregister_name_high(i) reg_name[regv_h(i)] -char *rn(i) { return register_name(i); } -char *fn(i) { return fregister_name(i); } -char *lln(i) { return lregister_name_low(i); } -char *lhn(i) { return lregister_name_high(i); } -int ll(i) { return regv_l(i); } -int lh(i) { return regv_h(i); } +char *rn(int i) { return register_name(i); } +char *fn(int i) { return fregister_name(i); } +char *lln(int i) { return lregister_name_low(i); } +char *lhn(int i) { return lregister_name_high(i); } +int ll(int i) { return regv_l(i); } +int lh(int i) { return regv_h(i); } #define is_int_reg(i) (0<=i&&i<REAL_MAX_REGISTER) #define is_float_reg(i) (arch_mode&UseFPP?(REAL_MAX_REGISTER<=i&&i<REAL_MAX_FREGISTER+REAL_MAX_REGISTER):is_int_reg(i))
--- a/mc-code-mips.c Tue Nov 08 12:14:44 2005 +0900 +++ b/mc-code-mips.c Tue Nov 08 16:55:51 2005 +0900 @@ -553,6 +553,7 @@ n->dsp = cadr(reg); regs[n->dsp]= INPUT_REG; reg_var++; + freg_var++; cadddr(args)=SIZE_OF_INT; } } else if (type==FLOAT) { @@ -560,6 +561,7 @@ n->sc = FREGISTER; n->dsp = cadr(reg); regs[n->dsp]= INPUT_REG; + reg_var++; freg_var++; cadddr(args)=size(type); } @@ -1802,7 +1804,7 @@ t = n->ty; if(t==FLOAT) { offset+=SIZE_OF_FLOAT; reg_offset+=1; - if (reg==6||reg==7) { // int register case + if (reg==5||reg==6||reg==7) { // int register case tag = REGISTER; t = INT; } }
--- a/test/float.c Tue Nov 08 12:14:44 2005 +0900 +++ b/test/float.c Tue Nov 08 16:55:51 2005 +0900 @@ -375,7 +375,7 @@ } double -test2(double f,int i) +test9(double f,int i) { double g,h; @@ -385,7 +385,7 @@ #endif g = f*2; h = f-0.5; - return h/3-(3.0-(g+3)*test2(f*0.5,i-1)/(h-1)); + return h/3-(3.0-(g+3)*test9(f*0.5,i-1)/(h-1)); }