]>
git.ipfire.org Git - thirdparty/gcc.git/commit
[PATCH 2/5] [ifcvt] optimize x=c ? (y shift_op z):y by RISC-V Zicond like insns
op=[ASHIFT, ASHIFTRT, LSHIFTRT, ROTATE, ROTATERT]
Conditional op, if zero
rd = (rc == 0) ? (rs1 op rs2) : rs1
-->
czero.nez rd, rs2, rc
op rd, rs1, rd
Conditional op, if non-zero
rd = (rc != 0) ? (rs1 op rs2) : rs1
-->
czero.eqz rd, rs2, rc
op rd, rs1, rd
gcc/ChangeLog:
* ifcvt.cc (noce_cond_zero_binary_op_supported): Add support for shift
like op.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/zicond_ifcvt_opt.c: Add tests for shift like op.
Co-authored-by: Xiao Zeng<zengxiao@eswincomputing.com>