Skip to content

68k Pipeline optimizer #40

@SamuraiCrow

Description

@SamuraiCrow

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 request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions