This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Instruction bundling on IA64 and the Intel Assembler
- From: Geert Bosch <bosch at gnat dot com>
- To: gcc at gcc dot gnu dot org
- Cc: Vladimir Makarov <vmakarov at redhat dot com>
- Date: Mon, 15 Dec 2003 16:11:28 -0500
- Subject: 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