-
Notifications
You must be signed in to change notification settings - Fork 30
SubReg Spiller #713
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: aie-public
Are you sure you want to change the base?
SubReg Spiller #713
Conversation
| // Point to the instruction after which to Insert a Spill Store. | ||
| SmallVector<MachineInstr *, 8> SpillLocations; | ||
| // Point to the Instruction before which to Insert a Spill Load. | ||
| SmallVector<MachineInstr *, 8> ReloadLocations; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks as if you might want to have an array of structs over all subregs?
| // All COPY instructions to/from snippets. | ||
| // They are ignored since both operands refer to the same stack slot. | ||
| // For bundled copies, this will only include the first header copy. | ||
| SmallPtrSet<MachineInstr *, 8> SnippetCopies; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I assume we will add some more stuff here, like lanes that are undefined or unused.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this commit is unrelated, just to change LICM. Perhaps add the narrative to the commit message.
|
|
||
| # RUN: llc -mtriple=aie2p --start-before=greedy --stop-after=virtregrewriter -o - -verify-machineinstrs %s | FileCheck %s | ||
|
|
||
| # Spill before Copies within the same BB. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know what 'before Copies' means, and hence where the focus of this test lies.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like a rationale in commit comment
| // Fallback if PassConfig not available | ||
| VRegSpiller.reset( | ||
| createInlineSpiller({LIS, LiveStks, MDT, MBFI}, MF, VRM, DefaultVRAI)); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: you could construct VRegSpiller with a conditional expression rather than use reset()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Label the commit as [NFC] ?
| void dump() const; | ||
| }; | ||
|
|
||
| class AIEInlineSpiller : public Spiller { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you should derive InlineSpiller, perhaps make some private methods public.
|
First overall impression: clever approach! |
still wip