User`s guide

MACRO Compiler Built-ins
C.1 Alpha Instruction Built-ins for OpenVMS Alpha and OpenVMS I64 Systems
Table C–1 (Cont.) Alpha Instruction Built-ins for OpenVMS Alpha and OpenVMS I64 Systems
Built-in Operands Description
Functional on
OpenVMS I64?
EVAX_BLT <RQ,AQ> Branch less than Yes
EVAX_BNE <RQ,AQ> Branch not equal Yes
EVAX_CMOVEQ <RQ,RQ,WQ> Conditional move/equal Yes
EVAX_CMOVNE <RQ,RQ,WQ> Conditional move/not equal Yes
EVAX_CMOVLT <RQ,RQ,WQ> Conditional move/less than Yes
EVAX_CMOVLE <RQ,RQ,WQ> Conditional move/less or equal Yes
EVAX_CMOVGT <RQ,RQ,WQ> Conditional move/greater than Yes
EVAX_CMOVGE <RQ,RQ,WQ> Conditional move/greater or equal Yes
EVAX_CMOVLBC <RQ,RQ,WQ> Conditional move/low bit clear Yes
EVAX_CMOVLBS <RQ,RQ,WQ> Conditional move/low bit set Yes
EVAX_MF_FPCR <WQ> Move from floating-point control register No
EVAX_MT_FPCR <WQ,RQ> Move to floating-point control register No
EVAX_ZAP <RQ,RQ,WQ> Zero bytes Yes
EVAX_ZAPNOT <RQ,RQ,WQ> Zero bytes with NOT mask Yes
C.2 Alpha PALcode Built-ins
Alpha PALcode built-ins, primarily for privileged code, are used in the same way
that Alpha instruction built-ins are used with two exceptions:
For the queue PAL functions, the compiler does not move the input arguments
to the Alpha registers before issuing the PAL call as it does for all other
functions. Therefore, you must supply the code to do that.
When using a built-in for a PAL call that returns a value, the source code
must explicitly read R0 for the return value.
Certain Alpha PALcode built-ins, EVAX_INSQHIQR, EVAX_INSQTIQR,
EVAX_REMQHIQR, and EVAX_REMQHITR, support the manipulation of
quadword queues, a function that VAX MACRO does not support. If you use
these built-ins, you must supply the code to move the input arguments to R16
(and R17, for EVAX_INSQxxxx), as shown in the following example:
MOVAB Q_header, R16 ; Set up address of queue header for PAL call
EVAX_REMQHIQR ; Remove quadword queue entry
EVAX_STQ R0, entry ; Save entry address returned in R0
The Alpha PALcode built-ins are listed in Table C–2.
Note
You can use the .DEFINE_PAL compiler directive to custom-define a
built-in for an Alpha PALcode operation that is not listed in this table.
See Appendix B, Specialized Directives.
MACRO Compiler Built-ins C–5