i960 Processor Compiler User's Guide
7-82
7
parentheses after the identifier. For example, itmp(0) selects the first
register of
itmp. If itmp is declared on the control line as itmp(4),
specify
itmp(3) to select the fourth register allocated for itmp.
NOTE. If a template uses a label, multiple expansions of that template
can result in more than one label with the same name, causing ambiguous
branch or jump destinations. To avoid this ambiguity, use the
label
control to declare the label in the control line. The compiler then
generates a unique name for each declared label every time the expansion
case is selected.
Preserving Register and Memory Values
The following
asm controls enable the compiler to preserve function
resource requirements:
use declares that certain registers can be read and/or
modified by the template. You can specify any
of registers
g0 through g13, r3 through r15, and
fp0 through fp3, when present, as arguments to
the
use control. For example, the following
control line preserves registers
g5 through g8,
r3, and r11:
% use g5, g6, g7, g8, r3, r11;
If any of the registers pfp, sp, rip, g14, or fp
are specified in a use control, the compiler
issues an error message.
spillall declares that some memory locations used
outside of the
asm function can be modified or
used by the template. The compiler forces
synchronization of load and store operations at
the function call; that is, no load or store
operation moves past the call of an
asm function
containing the
spillall control.