<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Nov 17, 2015 at 2:35 PM, Krzysztof Parzyszek <span dir="ltr"><<a href="mailto:kparzysz@codeaurora.org" target="_blank">kparzysz@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 11/17/2015 4:23 PM, Rail Shafigulin wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I'm a little confused. If a bundle is supposed to have at least 2<br>
instructions, what is the point of<br>
VLIWPacketzierList::isSoloInstruction(...)? Say we have an instruction<br>
that can't be bundled with anything, how would one form a packet from it?<br>
</blockquote>
<br></span>
In the machine IR, a bundle is a regular instruction, which happens to have other instructions inside of it.  A basic block can have bundles mixed with non-bundled instructions.  If you iterate over a basic block using MachineBasicBlock::iterator, you will not see the contents of bundles, just the BUNDLE opcode.  For stepping into bundles you would need MachineBasicBlock::instr_iterator.<br>
<br>
When it comes to the encoding of instructions for the hardware, the target-specific object-emission code must handle that properly.  That happens later, on a yet another program representation, where instructions are of type MCInst, not MachineInstr.<div class="HOEnZb"><div class="h5"><br>
<br>
-Krzysztof<br>
<br>
-- <br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation<br>
</div></div></blockquote></div><br>I see. Thanks.<br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>R</div></div></div></div></div>
</div></div>