diff options
author | Jeff Law <jlaw@ventanamicro.com> | 2024-07-12 07:53:41 -0600 |
---|---|---|
committer | Jeff Law <jlaw@ventanamicro.com> | 2024-07-12 07:53:41 -0600 |
commit | ae829a27785307232e4db0df6a30ca275941b613 (patch) | |
tree | 8e51a57679497189f49ec22a895e0993864ef78c /libcpp | |
parent | 13757e50ff0b4e0dccfabc67b1322a2724bf3a5c (diff) | |
download | gcc-ae829a27785307232e4db0df6a30ca275941b613.zip gcc-ae829a27785307232e4db0df6a30ca275941b613.tar.gz gcc-ae829a27785307232e4db0df6a30ca275941b613.tar.bz2 |
[RISC-V] Avoid unnecessary sign extension after memcmp
Similar to the str[n]cmp work, this adjusts the block compare expansion to do
its work in X mode with an appropriate lowpart extraction of the results at the
end of the sequence.
This has gone through my tester on rv32 and rv64, but that's it. Waiting on
pre-commit testing before moving forward.
gcc/
* config/riscv/riscv-string.cc (emit_memcmp_scalar_load_and_compare):
Set RESULT directly rather than using a temporary.
(emit_memcmp_scalar_result_calculation): Similarly.
(riscv_expand_block_compare_scalar): Use CONST0_RTX rather than
generating new RTL.
* config/riscv/riscv.md (cmpmemsi): Pass an X mode temporary to the
expansion routines. If necessary extract low part of the word to store
in final result location.
Diffstat (limited to 'libcpp')
0 files changed, 0 insertions, 0 deletions