This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Simulation of MIPS recip and rsqrt instructions


At Tue, 26 Nov 2002 19:42:02 +0000 (UTC), "Richard Sandiford" wrote:
> The mips simulator uses sim_fpu_inv() as a reciprocal function
> but all it really does is negate the exponent.  So we end up
> calculating 1 / (x*2^y) as x*2^-y.

This would appear to be my bad:

In adding those calls to sim_fpu_inv() I did not notice the changes to
sim_fpu_inv() in our source which replace its entire body with:

#if 0
	... old body ...
#else
  const sim_fpu sim_fpu_one = {
    sim_fpu_class_number, 0, IMPLICIT_1, 0
  };  
  return sim_fpu_div (f, &sim_fpu_one, r, sim_fpu_round_default);
#endif

8-)


> Unfortunately, sim_fpu_inv isn't commented and cp1.c seems to be
> its only active user.  Which should change?

For small values of only.  8-)

common/cgen-accfp.c seems to use it as well for "invsf" and "invdf".

I don't know whether the code in cgen-accfp.c is correct given the
current definition of sim_fpu_inv().  I'd guess not.

(The 'cgen/doc' information about "inv" that i could find ... makes me
think the documentation there isn't complete.  Certainly, it doesn't
seem to match the sim-fpu.h code either...)


My personal preference would be to fix sim_fpu_inv().  it seems more
sensible to me.

Anybody got a clue as to what the cgen-accfp.c 'invsf' and 'invdf' fns
are supposed to do?



chris


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]