Explicit Bundling

The programmer can explicitly assemble bundles by grouping together up to three instructions, and enclosing them in braces ({}). The assembler places these instructions in one bundle, separate from all preceding and subsequent instructions. Stops at the end of an explicit bundle can be placed before or after the closing brace.

Section directives and data allocation statements cannot be used within an explicit bundle. Cross-section data allocation statements can be used within an explicit bundle. See the Cross-section Data Allocation Statements section for more information.

In explicit-bundling mode, labels can be inserted only as the first statement of an explicit bundle. Instruction tags can be applied to any instruction.

When using explicit-bundling, the appropriate template can be selected in one of the following ways:

Auto-template Selection

By default, the assembler searches and selects a matching template for a bundle. The template fields specify intra-bundle instruction stops. When two templates consist of the same sequence of instruction types, they are distinguished by stops. The assembler selects the appropriate template field based on the stops within the bundle. If no template is found, the assembler produces a diagnostic message. Instruction group stops may occur in a bundle.

Explicit Template Selection

To explicitly select a specific template, use one of the directives listed in table Explicit Template Selection Directive (below) as the first statement of your code within the braces. For example, the .mii directive selects the memory-integer-integer (mii) template.

Explicit Template Selection Directives

Directive

Template Selection

 

Slot 0

Slot 1

Slot 2

.mmi

memory

integer

integer

.mfi

memory

floating point

integer

.bbb

branch

branch

branch

.mlx

memory

long immediate

 

.mib

memory

integer

branch

.mmb

memory

memory

branch

.mmi

memory

memory

integer

.mbb

memory

branch

branch

.mfb

memory

floating point

branch

.mmf

memory

memory

floating point

Refer to the Intel® Itanium(TM) Architecture Software Developer’s Manual for more information about template field encoding and instruction slot mapping.

Note:

Select the .mlx directive for the move long immediate instruction and for the long branch instruction. These instructions operate on 64-bit data types and are too large to fit into one of the 41-bit bundle slots. This directive selects the mlx template and inserts the instruction in slot 1 and slot 2 of the bundle.

Example below is the code that shows an explicit bundle using explicit template selection, and a stop.

Example:  Bundle with Explicit Template Selection and a Stop

{.mmi    //use the mmi template for this bundle
m inst  //memory instruction
;;      //stop
m inst  //memory instruction
i inst  //integer instruction
}