RISC-V: Add instruction fusion (for ventana-vt1)
authorPhilipp Tomsich <philipp.tomsich@vrull.eu>
Sun, 14 Nov 2021 21:56:19 +0000 (22:56 +0100)
committerPhilipp Tomsich <philipp.tomsich@vrull.eu>
Mon, 14 Nov 2022 18:49:52 +0000 (19:49 +0100)
commit991cfe5b30cb06611aa03d8c67860552785faba8
tree805adbd6c218521eac65f10d0af00068c3fc5b93
parentb4fca4fc70dc76cf18406fd2b046c834d976aa90
RISC-V: Add instruction fusion (for ventana-vt1)

The Ventana VT1 core supports quad-issue and instruction fusion.
This implemented TARGET_SCHED_MACRO_FUSION_P to keep fusible sequences
together and adds idiom matcheing for the supported fusion cases.

gcc/ChangeLog:

* config/riscv/riscv.cc (enum riscv_fusion_pairs): Add symbolic
constants to identify supported fusion patterns.
(struct riscv_tune_param): Add fusible_op field.
(riscv_macro_fusion_p): Implement.
(riscv_fusion_enabled_p): Implement.
(riscv_macro_fusion_pair_p): Implement and recognize fusible
idioms for Ventana VT1.
(TARGET_SCHED_MACRO_FUSION_P): Point to riscv_macro_fusion_p.
(TARGET_SCHED_MACRO_FUSION_PAIR_P): Point to
riscv_macro_fusion_pair_p.
gcc/config/riscv/riscv.cc