Instruction Statements

An instruction statement has the following syntax:

[label:] [[tag:]] [(qp)] mnemonic[.completers]
dests=sources //comments

Where:

label

Defines a symbol whose value is the address of a bundle. When a label is present, the assembler always starts a new bundle.

If the assembler inserts padding to align the location counter to a bundle boundary, the label is assigned the address of the newly-aligned bundle.

The assembler interprets a label followed by a double colon (::) as a global symbol. See Symbol Scope Declaration for more information about global symbols.

[tag]

Defines a symbol whose value is the bundle address and slot number of the current instruction.

(qp)

Represents a predicate register symbol, which must be enclosed in parentheses. If this field is not defined, predicate register 0 (p0) is the default.

mnemonic.completers

Represents the instruction mnemonic or pseudo-op. Instructions may optionally include one or more completers. Completers must appear in the specified order in the instruction syntax.

Mnemonics and completer mnemonics are not case-sensitive.

Refer to the Intel® Itanium(TM) Architecture Software Developer’s Manual for a description of the machine instructions, pseudo-ops, and completers.

dests =sources

Represents the destination and source operands. The operands are register names, expressions, or keywords, depending on the instruction. Some instructions can have two destination operands, and one or more source operands. When there are multiple operands they are separated by a comma (,). In cases where all operands are destination operands or all operands are source operands, the equal (=) sign is omitted.

The following is an example of an instruction statement with a label and

(qp):

L5: (p7) addl r14 = @gprel(L0), r1

The following is an example of an instruction statement with a tag:

[t1:] fclass.m.unc p4, p5 = f6, @pos

@pos is a predefined constant representing the fclass operation. p4 is true if f6 is positive.