A bundle is a 128-bit long instruction word (LIW) containing three 41-bit IA-64 instructions along with a so-called 5-bit template that contains instruction grouping information.
IA-64 does not insert no-op instructions to fill slots in the bundles.
The template explicitly indicates (ADAG):
- first 4 bits: types of instructions
- last bit (stop bit): whether the bundle can be executed in parallel with the next bundle
- (previous literature): whether the instructions in the bundle can be executed in parallel or if one or more must be executed serially (no more in ADAG description)
Bundled instructions don't have to be in their original program order, and they can even represent entirely different paths of a branch.
Also, the compiler can mix dependent and independent instructions together in a bundle, because the template keeps track of which is which.