This is an archive of the discontinued LLVM Phabricator instance.

[RISCV] Improve SiFive7 for loads and stores
ClosedPublic

Authored by michaelmaitland on Jun 21 2023, 3:02 PM.

Details

Summary
  • Unit-stride loads and stores can operate at the full bandwidth of the

memory pipe. The memory pipe is DLEN bits wide.

  • Strided loads and stores operate at one element per cycle and should

be scheduled accordingly.

  • Indexed loads and stores operate at one element per cycle, and they

stall the machine until all addresses have been generated, so they
cannot be scheduled.

  • Unit stride seg2 load is number of DLEN parts
  • seg3-8 are one segment per cycle, unless the segment is larger

than DLEN in which each segment takes multiple cycles.

Diff Detail

Event Timeline

Herald added a project: Restricted Project. · View Herald TranscriptJun 21 2023, 3:02 PM
michaelmaitland requested review of this revision.Jun 21 2023, 3:02 PM
Herald added a project: Restricted Project. · View Herald TranscriptJun 21 2023, 3:02 PM
craig.topper added inline comments.Jun 21 2023, 9:51 PM
llvm/lib/Target/RISCV/RISCVSchedSiFive7.td
395–396

I don't think we usually indent after let if the let doesn't use braces.

Fix indentation

michaelmaitland marked an inline comment as done.Jun 22 2023, 9:11 AM
This revision is now accepted and ready to land.Jun 22 2023, 10:11 AM
This revision was landed with ongoing or failed builds.Jun 22 2023, 10:15 AM
This revision was automatically updated to reflect the committed changes.