Problem when defining new mips insns

Pontus Lidman pontus@lysator.liu.se
Sun Oct 24 19:33:00 GMT 2004


Roger Sayle <roger@eyesopen.com> writes:

[...]

> The relevant code is (perhaps) around line 2285 of optabs.c:

[...]

That's exactly the place I was looking for.

> Another possibility is that your target is unable to perform a
> DImode XOR, so expand_binop(imode, xor_optab, ...  is widening the
> operation to TImode.

Bingo. Since the target can do xor in SI or TI modes but not DI, the
operation is widened. I can see several solutions now that I
understand how and why it happens.
 
> And of course, the above code should never even get executed unless
> your MIPS variant doesn't have a negdf2 pattern!?  It looks like
> CVS mainline's current mips.md unconditionally defines a negdf2.

The target only has 32-bit floats; presumably there is already some
magic in gcc to avoid double instructions on such targets, maybe based
on TARGET_SINGLE_FLOAT or TARGET_FLOAT64. Anyway the right thing
happens for me now :)

I have a much clearer understanding of the situation now, thanks to
your help!

Best Regards,

Pontus

-- 
Pontus Lidman, pontus@lysator.liu.se, Software Engineer
No matter how cynical you get, it's impossible to keep up.
Scene: www.dc-s.com | MUD: tyme.envy.com 6969 | irc: irc.quakenet.eu.org



More information about the Gcc mailing list