Dependency Violations and Assembly Modes

This section describes dependency violations and how the Intel® Itanium(TM) Assembler (IAS) helps you avoid them in your code.

A violation of data dependency results from two instructions within an instruction group accessing the same Itanium architecture resource, including resources that appear as implicit operands. Dependency violations result in architecturally undefined behavior. The assembler can detect and eliminate dependency violations that occur within instruction groups, depending on its mode.

You can write code in explicit mode, thereby taking responsibility for bundling and stops (;;). You can also use automatic mode where IAS automatically bundles your code ands add stops to solve dependency violations. IAS allows you to mix modes in the one file. For an explanation of bundles and stops, see the Intel® Itanium(TM) Architecture Assembly Language Reference Guide or the Features section in this document.

When you choose to write code in explicit mode, IAS reports any dependency violations it encounters. The easiest way to solve them is by inserting a stop. Some reports may not be accurate, in which case you have at your disposal a range of annotations and commands, explained later in this section.

For a complete description of data dependencies, see the Intel® Itanium(TM) Architecture Software Developer’s Manual and the DVLoc for Scheduling Library.

This section includes: