Re: Question on movsi and movdi

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

On Wed, Jan 22, 2020 at 12:06:02PM +0100, Henri Cloetens wrote:
> Simplified, it looks as follows:
> 
> (define_insn "movdi"
>   [(set (match_operand:DI 0 "blueproc_nonimmediate_operand" "=r,r,m")
>         (match_operand:DI 1 "input_operand" "r,m,r"))]
> 
> - The options 2 (m to r) and 3 (r to m), that is clear.
> - The option 1 (r to r), the processor has no instruction for it. It 

What you call "options 1, 2, and 3" are called "alternatives 0, 1, and 2".

> needs to be translated to
>    2x the movsi instruction. Now, I would prefer to avoid duplicating 
> the code written under the
>    'movsi', and call the movsi definition.
>    Q. Is this possible ?.

Of course ;-)

>      I mean, I found it can be done with define_split, but then the 
> compiler gets confused, splits the
>      instruction, and cannot do the rename any more to avoid the 
> copying.
>      (There are cases where it should rename, and cases where it should 
> copy.) So, it should be done
>      in the define_insn, but I find no way to do it.

This is one of the cases where you want to split only when
reload_completed.  So your split condition might be
  "reload_completed && which_alternative == 0"
for example.

HTH,


Segher



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux