This is an archive of the discontinued LLVM Phabricator instance.

[PowerPC] Add Power8 Instruction Scheduling Tablegen
ClosedPublic

Authored by willschm on Nov 21 2014, 12:04 PM.

Details

Summary

Add TableGen info for Power8.
This is based on the Power7 version, with units added and named to match P8.

Diff Detail

Event Timeline

willschm updated this revision to Diff 16500.Nov 21 2014, 12:04 PM
willschm retitled this revision from to [PowerPC] Add Power8 Instruction Scheduling Tablegen.
willschm updated this object.
willschm edited the test plan for this revision. (Show Details)
willschm added reviewers: wschmidt, seurer, uweigand.
willschm set the repository for this revision to rL LLVM.
willschm added a subscriber: Unknown Object (MLST).
hfinkel added inline comments.
lib/Target/PowerPC/PPCScheduleP8.td
360

If your comments capture the entire picture, then this should be 6, not 8. I think that, the real question, however, is not the instructions in each dispatch group going in, but how many (non-branch) instructions can be issued per cycle to the various pipelines.

On the P7, this is 8 (two of which are branches, so 6 regular instructions), even though we can have only 4 per dispatch group. That;s why I put 6 in this field for the P7.

I've been discussing a few related details with Pat Haugen on the side. I'll make a few updates and repost early in the coming week.

Notably, I'm missing a pair of LU units in this diff.

The gist of the clarification I got from Pat regarding the instruction dispatching is.. P7 has a 6 instruction dispatch group, with 8 instructions per cycle. P8 has an 8 instruction dispatch group and can issue 10 instructions per cycle.

lib/Target/PowerPC/PPCScheduleP8.td
360

I've been discussing a few related details with Pat Haugen on the side. I'll make a few updates and repost early in the coming week.

Notably, I'm missing a pair of LU units in this diff.

The gist of the clarification I got from Pat regarding the instruction dispatching is.. P7 has a 6 instruction dispatch group, with 8 instructions per cycle. P8 has an 8 instruction dispatch group and can issue 10 instructions per cycle.

hfinkel added inline comments.Nov 21 2014, 10:00 PM
lib/Target/PowerPC/PPCScheduleP8.td
360

Great, thanks! Updating the comment here with that info would be useful.

willschm updated this revision to Diff 16663.Nov 26 2014, 1:58 PM

Updated with P8_LU* units added, units renamed to match documentation, and comments added/sprinkled throughout.
A notable thanks to Pat Haugen who provided guidance on a few of these changes.

hfinkel added inline comments.Nov 27 2014, 10:47 AM
lib/Target/PowerPC/PPCScheduleP8.td
47

contract to -> contrast to the

246

Assuming the i in ops stands for internal, internal iops seems somewhat redundant.

252

Having ,0> at the end of the last InstrStage does not look right. That optional last number means "how many cycles must we wait before moving on to the next dispatch stage". Putting it on the last stage does not mean anything. Does it belong on the stage before? (or is there really a 1 cycle delay between the when the iop is dispatched to the LU)

257

Same here; ,0> in the last stage does not mean anything.

379

is -> has an

willschm updated this revision to Diff 16811.Dec 2 2014, 8:32 AM

Thanks for the reviews.
Cosmetic updates as recommended by Hal.
Removed the erroneous trailing ",0>" bits. That was simply sloppy copy/paste adjustments on my part.

hfinkel accepted this revision.Dec 2 2014, 3:26 PM
hfinkel added a reviewer: hfinkel.

LGTM, thanks!

This revision is now accepted and ready to land.Dec 2 2014, 3:26 PM
willschm closed this revision.Dec 3 2014, 10:47 AM
willschm updated this revision to Diff 16873.

Closed by commit rL223257 (authored by @willschm).