Hi, Vlad

Thanks for the explanation.

The patch is okay.

Thanks, David


On Fri, Aug 8, 2014 at 5:26 PM, Vladimir Makarov <vmaka...@redhat.com> wrote:
> On 2014-08-08, 2:53 PM, David Edelsohn wrote:
>>
>> Hi, Vlad
>>
>> Why does rs6000_emit_move need special support for SDmode with LRA and
>> not with reload?
>
>
>   rs6000_emit_move has also special SDmode support for *reload too*. It is
> not implemented generically in reload as you wrote.  Please, look at the
> code with reload_in_progress nearby.  So I am trying to do basically the
> same as done by rs6000 back end for reload but by means of LRA.  The
> difference between code for reload and LRA is in that a special stack slot
> is created for reload.  Reload through a hook SECONDARY_MEMORY_NEEDED_RTX
> provided by rs6000 back-end generates a move using the stack slot and that
> triggers a special code generation in rs6000_emit_move.  So it is a trick,
> not a general support in reload.
>
> LRA uses a spilled pseudo for this and don't use the hook at all.  It means
> that the stack slot created for reload is used only for SD moves.  LRA uses
> a common stack slot allocation techniques for spilled pseudos which permits
> to share this slot for other purposes, generates a better code, and uses
> less one hook.  But basically code for LRA in rs600_emit_move do the same as
> analogous code for reload.
>
> But if you mean that general support you mentioned is the usage of
> absolutely the same trick for LRA as for reload (through
> SECONDARY_MEMORY_NEEDED_RTX), I could do this.  But as I wrote it would be
> worse code generation than LRA currently produces and using an additional
> hook out of many already used by LRA.
>
>
>> In other words, why is this a specific fix for
>> rs6000 instead of a general improvement for reload?
>>
>
> Because it is too specific.  It is about how rs6000 too specifically
> implements sd load/store.  For example, SECONDARY_MEMORY_NEEDED_RTX is a
> creation only for rs6000.  No other port uses it because the hook is used
> for the trick I wrote above.  I don't think other port will use the trick in
> future.
>
>
>> SDmode has some bizarre restrictions on PPC, but one of the historical
>> advantages of GCC was reload's ability to support strange addressing
>> modes of processors. Why fix this in a target-specific way and then
>> possibly replicated this in other architectures instead of fixing it
>> more generally?
>>
>
> It is not about addressing.  It is about machine description of insns. If
> movsd_{load,store} insns were part of common move insns, we would have no
> problem at all.  But I guess, achieving this would be not possible or easy.
> I believe Mike had serious reasons to do this such way.  I am not such a
> specialist in md writing as Mike.
>
> If I could solve this problem only in LRA, I'd prefer to do this because it
> is simpler for me as I don't need an approval.
>

Reply via email to