-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
When adding the QBE code to the backends, add a simple pass that rearranges instructions differently so that the result of one instruction isn't as frequently dependent on the one immediately before it.
Features
- Increases speed on in-order pipelines like the 68020+ and Amiga-vintage PowerPC.
- Especially vital to super-scalar in-order performance
- Few side effects on non-pipelined architectures like 68000 and TG68k.C
Things to Watch For
- Dependency mapping must consider condition code register dependencies as well
- Register dependencies must also consider loads and stores to memory (heap and stack access)
- Should be last among passes because ordering is affected by other optimizations
- Opcode fusions should not be split-up as they merge into one operation on the Apollo 68080 and NatAmi 68050/68070 and compatibles as documented at the Apollo Fusing page.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request