[LLVMdev] VLIWPacketizerList: failing to schedule terminators

Andrew Trick atrick at apple.com
Fri Mar 30 19:21:30 PDT 2012


On Mar 30, 2012, at 5:47 AM, Tom Stellard <thomas.stellard at amd.com> wrote:

>> 
>> We do not want to see any Bundle instructions prior to regalloc. So a preRA scheduler should not call finalizeBundles. It can create bundles simply by setting the isInsideBundle flag on MachineInstrs. If you allow internal register dependencies you would also need to set isInternalRead on those MachineOperands.
>> 
> 
> Thanks, this information is really helpful.  One question, though:
> If preRA bundles can't have Bundle instructions, then how does the
> register allocator determine the boundaries between bundles?


The instruction stream looks like this:

instA
instB
instC <insideBundle>
instD <insideBundle>

Regalloc will see the bundle (B, C, D) and give all operands within that bundle the same slot index, so it won't see interferences within the bundle.

See MachineInstr.h and MachineInstrBundle.h. There are helpers that work regardless of the fake "Bundle" instructions: isBundled, getBundleStart, MIBundleOperands...

We'll surely want to adjust the API as people begin to actively use it.

-Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120330/26d7c41d/attachment.html>


More information about the llvm-dev mailing list