[kaffe] HAVE_move_float_const
Gerlando Falauto
iurly@writeme.com
Tue Jul 1 08:11:01 2003
On Tue, 1 Jul 2003, Dalibor Topic wrote:
> Ciao Gerlando,
>
> --- Gerlando Falauto <iurly@writeme.com> wrote:
>
> > Nope, it's perfectly clear but still I don't get your point. If you wanna
> > be safe, shouldn't you just be CONSISTENT? Declare it as a float, and let
> > the compiler decide what casts are appropriate. At this level, so long as
> > I get what was meant to be passed (which is a *float*), I shouldn't really
> > care what the compiler does. The point here is, I want a float constant
>
> Different versions of C 'standards' (and thus different versions of compilers)
> have had different interpretations of what you really meant to be passed when
> you wrote 'float'. :)
>
> See
> http://groups.google.de/groups?q=float+parameter+function&hl=de&lr=&ie=UTF-8&oe=UTF-8&selm=3D8EF8EB.2000809%40mchsi.com&rnum=7
> for another nice explanation of the pitfalls involved.
>
> > (which is 32-bit wide) exactly as it was written in the classfile, so I
> > can move it to a register (as a 32-bit chunk). If the compiler wants to
> > promote it as an internal optimization, that is none of my business!
>
> The C99 standard doesn't guarantee you'll have 32 bit wide floats. It doesn't
> even guarantee the floats will be 'base 2'. But fortunately, kaffe hasn't been
> ported to such a beast yet, AFAIK ;)
Well but we have the guarantee that *java floats* are 32-bit wide right?
So shouldn't we use that, again, for consistency?
Shouldn't all the immediates be 'jint', 'jlong', whatever, for that
matter?
> On the other hand, we're talking about the jitter here, right? Then you of
> course you know more about types and their representations in the hardware.
>
> > If I get it as a double, I have to cast it back to a float. Apart from
> > the waste of time, is that guaranteed to be non-destructive?
>
> I don't think it's guaranteed to be non-destructive. NANs for example may not
> get to be the same NANs they were before...
That's my point. If Kaffe read a jfloat constant from a .class file, I
want my back end to get *exactly* that jfloat, not some other converted
stuff! But hey, that is only an issue if I have any float immediate in the
instruction stream, otherwise that doesn't matter, at all.
> But anyway, if just using floats works for you, please port a patch
> and let others evaluate it. That's much easier than trying to
> interpret the C standard ;)
That contradicts a lot of good software engineering principles, but I got
to admit, that's the way it is. ;)
Gerlando