Hello Andreas,
Hello Jeff,

I have recently started on implementing processor pipeline model for m68k target. At this point I am trying to figure out the best way of annotating instructions in m68k.md, so that appropriate cpu unit reservations could be assigned to each one of them.

The problem is that about half of all define_insns in m68k.md expands into different sequences of asm instructions, and the sequences themselves can vary in length. Does such an approach to write a machine description allow to fine tune emitted code for a particular processor or is it mostly a legacy of m68k being one of the first ports?

Considering the issue itself, there are two paths to follow:
1. Preserve the machine description the way it is and workaround the issue with compound insns somehow. 2. Simplify machine description by splitting all compound insns into simple equivalents.

Option '1' will likely lead to some complex scheme of annotating compound instructions with reservations like "insn1_wait_insn2_insn3", which won't be very manageable in the future. Also, obfuscated design won't contribute to ease of tuning of the scheduler.

Option '2' looks more favorable to me, though implies greater initial effort of simplifying complex machine description without loosing precious bits of fine tuning. Following this path define_split will be my best friend and helper.

Which option would you prefer?  Or maybe I'm just missing something?


Thanks,

Maxim

Reply via email to