This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: Simulation of MIPS recip and rsqrt instructions
- From: cgd at broadcom dot com
- To: rsandifo at redhat dot com
- Cc: gdb-patches at sources dot redhat dot com
- Date: 26 Nov 2002 12:42:38 -0800
- Subject: Re: Simulation of MIPS recip and rsqrt instructions
- References: <m3smxom7q9.fsf@localhost.localdomain><mailpost.1038339722.6479@news-sj1-1>
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