Jeff Law <l...@redhat.com> writes:
> On 01/07/2013 02:52 PM, Richard Sandiford wrote:
>
>>> I disabled 64 bit FPU instructions by "-msoft-float". This works, but
>>> using "-msingle-float" fails. This would be the better
>>> configuration. There are still 64 bit FPU instructions used (e.g. "dmfc1
>>> $2,$f0" when using "long double" multiplication). So "-msingle-float"
>>> doesn't seem to work on generic mips64-linux-gnu.
>>
>> Right.  That combination hasn't really been defined.  What happens
>> for plain doubles?  Do you pass those in FPRs or GPRs?
> IIRC we defined doubles as 32bits wide in our old port.  We simply 
> didn't support 64bit wide doubles.  I don't remember what mechanism we 
> used to make this happen.

Ah, yeah.

>>> I tried to disable dmult and ddiv (see mips.md). Disabling worked, but
>>> now muldi3 calls itself in libgcc2. I thought this should work, because
>>> I got this working with GCC 4.3, but the latest GCC version is a
>>> problem. multi3 is calling muldi3, so that muldi3 should be able to use
>>> mulsi3, because it is the same C code in libgcc2. Can someone get me
>>> some hints or comments? How can this be debugged?
>>
>> Not sure, sorry.
> IIRC I simply disabled muldi3_internal2 and I think we defined away 
> everything related to timode except register-register moves.

AIUI the problem that Jürgen's hitting is that _muldi3.o
in libgcc actually contains __multi3 on 64-bit targets,
because LIBGCC2_UNITS_PER_WORD == 8.  Presumably _mulsi3.o would
then contain __muldi3 where needed, but that file doesn't exist.
So he was trying to add it.

If this worked in 4.3 then I assume something has changed in the
last few years.

Richard

Reply via email to