On Mon, 6 Jan 2025, Jeff Law wrote:

> >     gcc/
> >     * config/alpha/alpha.cc (alpha_expand_block_move): Use a HImode
> >     subreg of a DImode register to hold data from an aligned HImode
> >     load.
> Generally OK.
> 
> 
> > +       data_regs[nregs++] = gen_rtx_SUBREG (HImode, tmp, 0);
> Would this be better as a gen_lowpart or something like that rather than
> generating the SUBREG directly?  Though I guess you don't have to worry about
> big endian at all, so i may not matter in practice.  Your call.

 Thanks for your suggestion.

 I've looked into using `gen_lowpart_SUBREG' instead, but all it adds is 
overhead and the port isn't overall prepared for the big endianness, e.g. 
we're missing the necessary address swizzling and high-part/low-part 
instruction swapping needed for bit-field extraction/insertion operations.  
Also I believe no big-endian Alpha hardware has been ever produced, even 
though supported by the CPU architecture, so there's no prospect of having 
the port ever accordingly updated.  Other ports make raw `gen_rtx_SUBREG' 
calls where suitable too, so I chose to keep the version as submitted.

 I've applied this change now, thanks for your review.

  Maciej

Reply via email to