]> git.ipfire.org Git - thirdparty/gcc.git/commit
Alpha: Optimize block moves coming from longword-aligned source
authorMaciej W. Rozycki <macro@orcam.me.uk>
Sun, 12 Jan 2025 16:48:53 +0000 (16:48 +0000)
committerMaciej W. Rozycki <macro@orcam.me.uk>
Sun, 12 Jan 2025 16:48:53 +0000 (16:48 +0000)
commit4e557210b7f9fd669ff66c6958327eb2d4262d80
treef90ac003b2ba2ab3bce790c8907d06fa47b1d8b2
parent19fdb9f3792d4c3c9ff3d18dc4566bb16e62de60
Alpha: Optimize block moves coming from longword-aligned source

Now that we have proper alignment determination for block moves in place
the case of copying a block of longword-aligned data has become real, so
implement the merging of loaded data from pairs of SImode registers into
single DImode registers for the purpose of using with unaligned stores
efficiently, as suggested by a comment in `alpha_expand_block_move' and
discard the comment.  Provide test cases accordingly.

gcc/
* config/alpha/alpha.cc (alpha_expand_block_move): Merge loaded
data from pairs of SImode registers into single DImode registers
if to be used with unaligned stores.

gcc/testsuite/
* gcc.target/alpha/memcpy-si-aligned.c: New file.
* gcc.target/alpha/memcpy-si-unaligned.c: New file.
* gcc.target/alpha/memcpy-si-unaligned-dst.c: New file.
* gcc.target/alpha/memcpy-si-unaligned-src.c: New file.
* gcc.target/alpha/memcpy-si-unaligned-src-bwx.c: New file.
gcc/config/alpha/alpha.cc
gcc/testsuite/gcc.target/alpha/memcpy-si-aligned.c [new file with mode: 0644]
gcc/testsuite/gcc.target/alpha/memcpy-si-unaligned-dst.c [new file with mode: 0644]
gcc/testsuite/gcc.target/alpha/memcpy-si-unaligned-src-bwx.c [new file with mode: 0644]
gcc/testsuite/gcc.target/alpha/memcpy-si-unaligned-src.c [new file with mode: 0644]
gcc/testsuite/gcc.target/alpha/memcpy-si-unaligned.c [new file with mode: 0644]