]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Add min/max patterns for ifcvt.
authorRobin Dapp <rdapp@ventanamicro.com>
Fri, 31 May 2024 12:28:00 +0000 (14:28 +0200)
committerRobin Dapp <rdapp@ventanamicro.com>
Thu, 11 Sep 2025 08:20:15 +0000 (10:20 +0200)
commit75cad4640c37afbd22b2025feeea22248e11d530
tree3db828e39806f93c132374c8bf94aca03d6c8897
parent9ff5cadac4579fe714dc8de3a39eaef8534c64f7
RISC-V: Add min/max patterns for ifcvt.

ifcvt likes to emit

(set
  (if_then_else)
    (ge (reg 1) (reg2))
    (reg 1)
    (reg 2))

which can be recognized as min/max patterns in the backend.
This patch adds such patterns and the respective iterators as well as a
test.

gcc/ChangeLog:

* config/riscv/bitmanip.md (*<bitmanip_minmax_cmp_insn>_cmp_<mode>3):
New min/max ifcvt pattern.
* config/riscv/iterators.md (minu): New iterator.
* config/riscv/riscv.cc (riscv_noce_conversion_profitable_p):
Remove riscv-specific adjustment.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/zbb-min-max-04.c: New test.
gcc/config/riscv/bitmanip.md
gcc/config/riscv/iterators.md
gcc/config/riscv/riscv.cc
gcc/testsuite/gcc.target/riscv/zbb-min-max-04.c [new file with mode: 0644]