RISC-V: Short-forward-branch opt for SiFive 7 series cores.
authorAndrew Waterman <andrew@sifive.com>
Tue, 30 Apr 2019 23:45:36 +0000 (16:45 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 30 Apr 2019 23:45:36 +0000 (16:45 -0700)
commit4f4753914455ad186f7c1f994743abfcb05a7dc9
treeea27d5dc06f14353730b400aa7f7976d21608cf4
parent598f50d7891b420331f2027e60ba63824d335bad
RISC-V: Short-forward-branch opt for SiFive 7 series cores.

gcc/
* config/riscv/constraints.md (L): New.
* config/riscv/predicates.md (lui_operand): New.
(sfb_alu_operand): New.
* config/riscv/riscv-protos.h (riscv_expand_conditional_move): Declare.
* config/riscv/riscv.c (riscv_expand_conditional_move): New.
* config/riscv/riscv.h (TARGET_SFB_ALU): New.
* config/riscv/risc.md (type): Add sfb_alu.
(branch<mode>): Renamed from branch_order<mode>.  Change predicate for
operand 3 to reg_or_0_operand.  In output string, change %3 to %z3.
(branch_zero<mode>): Delete.
(mov<mode>cc): New.
(mov<GPR:mode><X:mode>cc): Likewise.
* config/riscv/sifive-7.md (sifive_7_sfb_alu): New.  Use in bypasses.

From-SVN: r270758
gcc/ChangeLog
gcc/config/riscv/constraints.md
gcc/config/riscv/predicates.md
gcc/config/riscv/riscv-protos.h
gcc/config/riscv/riscv.c
gcc/config/riscv/riscv.h
gcc/config/riscv/riscv.md
gcc/config/riscv/sifive-7.md