On 8/1/23 19:38, Xiao Zeng wrote:
This patch recognizes Zicond patterns when the select pattern
with condition eq or neq to 0 (using eq as an example), namely:

1 rd = (rs2 == 0) ? non-imm : 0
2 rd = (rs2 == 0) ? non-imm : non-imm
3 rd = (rs2 == 0) ? reg : non-imm
4 rd = (rs2 == 0) ? reg : reg

gcc/ChangeLog:

         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
         Zicond patterns
         * config/riscv/riscv.md: Recognize Zicond patterns through mov<mode>cc

gcc/testsuite/ChangeLog:

         * gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c: New test.
         * gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c: New 
test.
         * gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c: New 
test.
         * gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c: New 
test.
I've added -Oz and -Og to the skip list and pushed the tests up to the trunk.

jeff

Reply via email to