This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Instruction bundling on IA64 and the Intel Assembler


For the IA64 port to OpenVMS, we'll be using the Intel Assembler (IAS).
However, currently the assembly code output by GCC is specific to the
GNU assembler (gas) in a few areas. We have identified and fixed most
such parts (patches will follow), but one more tricky issue is
instruction bundling and template selection.

The Itanium Architecture Assembly Language Guide specifies that
template selection directives must appear inside the braces of a bundle,
like this:

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

However, GCC omits the braces and GAS is OK with that. The template
selector is inserted as an instruction by the function "bundling",
which seems to be the right place to add the "instruction" that
closes a bundle. However, this functions is 339 lines, without any
comments on meaning of variables used or reason for tests etc.
It would be very helpful if at least every for-loop would have
an initial comment indicating what it is doing.

There are six places that insert template selection directives,
and I don't know what the difference is between these places what
the state is at these points.

Vladimir, could you give some insights in what this function is
doing, and preferably add some comments? I searched the mailing
lists for more information on the function, but a I didn't find
any details regarding the implementation. If you have links to
old messages explaining things, please let me know.

-Geert


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]