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