On 10/9/23 15:02, Edwin Lu wrote:
Now that every insn is guaranteed a type, we want to ensure the types are
handled by the existing scheduling descriptions.
There are 2 approaches I see:
1. Create a new pipeline intended to eventually abort (sifive-7.md)
2. Add the types to an existing pipeline (generic.md)
Which approach do we want to go with? If there is a different approach we
want to take instead, please let me know as well.
Additionally, should types associated with specific extensions
(vector, crypto, etc) have specific pipelines dedicated to them?
* config/riscv/generic.md: update pipeline
* config/riscv/sifive-7.md (sifive_7): update pipeline
(sifive_7_other):
I'd largely expect that we look at an unhandled type and first look to
see if its properties roughly fit into an existing define_insn_unit. If
so, just add it to the existing unit. Otherwise we end up needing to
create another unit.
What would be really interesting would be to see if we can get the
scheduler to indicate that it's trying to schedule an insn that doesn't
have a reservation. ie, our backend tells us if we have an insn with
no type, the next step is to see if we have a type with no
units/reservations.
Jeff