Appendix IV - ILM Definitions

ILM Definitions

  1. BOS stc1 stc2 stc3 Type: misc

    Always (and only) appears as the first ILM of an ILM block. (roughly corresponds to the beginning of a source statement.)

    stc1 - source statement line number (negated for insert files?).
    If more than one ILM block is written for a given
    statement, all but the first have 0 specified for the
    line number.
    For typical statements, this is actually the line
    number of the terminating ‘;’.
    stc2 - current file index, default is 1.
    stc3 - number of words for this ILM block (including the BOS).

    Attributes: spec trm

  2. RISNAN lnk Type: arth

    Attributes: spec trm

  3. DISNAN lnk Type: arth

    Attributes: spec trm

  4. FLOAT lnk Type: arth

    Convert integer to real number (REAL and FLOAT intrinsics).

    FLOAT r p1
    
  5. DFLOAT lnk Type: arth

    Convert integer to double precision (DFLOAT intrinsic).

    DFLOAT r p1
    
  6. CTOI lnk Type: arth

    Convert unsigned character to signed integer.

    MVIR r p1 iv-1
    
  7. CTOI lnk lnk Type: arth

    Attributes: spec

  8. SCTOI lnk Type: arth

    Convert unsigned character to signed integer.

    MVIR r p1 iv-1
    
  9. STOI lnk Type: arth

    Convert short to signed integer.

    MVIR r p1 iv-1
    
  10. USTOI lnk Type: arth

    Convert unsigned short to signed integer.

    MVIR r p1 iv-1
    
  11. CTOUI lnk Type: arth

    Convert unsigned character to unsigned integer.

    MVIR r p1 iv-1
    
  12. SCTOUI lnk Type: arth

    Convert signed character to unsigned integer.

    MVIR r p1 iv-1
    
  13. ITOUI lnk Type: arth

    Convert signed integer to unsigned integer.

    MVIR r p1 iv-1
    
  14. UITOI lnk Type: arth

    Convert unsigned integer to signed integer.

    MVIR r p1 iv-1
    
  15. STOUI lnk Type: arth

    Convert short to unsigned integer.

    MVIR r p1 iv-1
    
  16. USTOUI lnk Type: arth

    Convert unsigned short to unsigned integer.

    MVIR r p1 iv-1
    
  17. CDTOUDI lnk Type: arth

    Attributes: i8

    DP2KR r rp1
    
  18. CTOUDI lnk Type: arth

    Attributes: i8

    SP2IR t1 rp1
    UIKMV r t1
    
  19. DTOUDI lnk Type: arth

    Attributes: i8

    DP2KR r rp1
    
  20. DTOUI lnk Type: arth

    DP2KR t1 p1
    KIMV r t1
    
  21. UDCON sym Type: arth

    Attributes: i8

    KCON r v1
    
  22. UDITOD lnk Type: arth

    KR2DP r p1
    
  23. UDITOR lnk Type: arth

    KIMV t1 p1
    IR2SP r t1
    
  24. UDITOS lnk Type: arth

    KIMV r p1
    
  25. UDITOSC lnk Type: arth

    KIMV r p1
    
  26. UDITOUI lnk Type: arth

    KIMV r p1
    
  27. UITOD lnk Type: arth

    UIKMV t1 p1
    KR2DP r t1
    
  28. UITOR lnk Type: arth

    IR2SP r p1
    
  29. UITOS lnk Type: arth

    MVIR r p1 iv-1
    
  30. UITOSC lnk Type: arth

    MVIR r p1 iv-1
    
  31. UITOUDI lnk Type: arth

    UIKMV r p1
    
  32. ITOUDI lnk Type: arth

    Cast a 32-bit integer to a 64-bit unsigned integer (dword).

    UIKMV r p1
    
  33. SCTOUDI lnk Type: arth

    Cast a 8 bit integer quantity to a 64-bit unsigned integer (dword).

    UIKMV r p1
    
  34. STOUDI lnk Type: arth

    Cast a 16 bit integer quantity to a 64-bit quantity.

    UIKMV r p1
    
  35. UDITOI lnk Type: arth

    Cast an unsigned double integer (dword) to a 32-bit signed integer.

    KIMV r p1
    
  36. RTOUI lnk Type: arth

    Cast a real to a 32-bit unsigned integer (word).

    SP2IR r p1
    
  37. RTOUDI lnk Type: arth

    Cast a real to a 64-bit unsigned integer (dword).

    Attributes: i8

    SP2IR t1 p1
    UIKMV r t1
    
  38. CRTOI lnk lnk Type: arth

    Cast a complex to integer (C)

    Attributes: spec

  39. CDTOI lnk lnk Type: arth

    Attributes: spec dcmplx

  40. UITOC lnk Type: arth

    Convert unsigned integer to unsigned character.

    ICON t1 =i'255
    AND r t1 p1
    
  41. ITOSC lnk Type: arth

    Convert signed integer to signed character.

    Attributes: spec

  42. ITOS lnk Type: arth

    Convert integer to short.

    Attributes: spec

  43. UITOUS lnk Type: arth

    Convert unsigned integer to unsigned short.

    ICON t1 =i'65535
    AND r t1 p1
    
  44. FLOATU lnk Type: arth

    Convert unsigned integer to real.

    UIKMV t1 p1
    FLOATK r t1
    
  45. DFLOATU lnk Type: arth

    Convert unsigned to double.

    UIKMV t1 p1
    DFLOATK r t1
    
  46. RTOR lnk lnk Type: arth

    FPOWF r p1 p2
    
  47. VRTOR lnk lnk Type: arth

  48. DTOD lnk lnk Type: arth

    DPOWD r p1 p2
    
  49. CTOC lnk lnk Type: arth

    Attributes: spec

  50. CDTOCD lnk lnk Type: arth

    Attributes: spec dcmplx

  51. FIX lnk Type: arth

    Convert real number to integer (INT and IFIX intrinsics).

    FIX r p1
    
  52. FIXU lnk Type: arth

    Convert real number to unsigned.

    FIXK t1 p1
    KIMV r t1
    
  53. DBLE lnk Type: arth

    Convert single precision floating point value to double precision.

    DBLE r p1
    
  54. DFIX lnk Type: arth

    Convert double precision floating point number to integer.

    DFIX r p1
    
  55. DFIXU lnk Type: arth

    Convert double precision floating point number to unsigned integer.

    DFIXK t1 p1
    KIMV r t1
    
  56. REAL lnk Type: arth

    Returns real part of complex number (single precision).

    Attributes: spec

    MVSP r rp1 iv-1
    
  57. DREAL lnk Type: arth

    Returns double precision real part of a double complex value.

    Attributes: spec

    MVDP r rp1 iv-1
    
  58. IMAG lnk Type: arth

    Returns imaginary part of complex value (single precision) (AIMAG intrinsic).

    Attributes: spec

    MVSP r ip1 iv-1
    
  59. DIMAG lnk Type: arth

    Returns double precision imaginary part of a double complex value (DIMAG intrinsic).

    Attributes: spec

    MVDP r ip1 iv-1
    
  60. CMPLX lnk lnk Type: arth

    Form complex number out of two single precision real values.

    Attributes: spec

  61. DCMPLX lnk lnk Type: arth

    Form double complex number out of two double precision real values.

    Attributes: spec dcmplx

  62. ICHAR lnk Type: fstr

    Converts single character to integer.

    Attributes: spec

  63. INCHAR lnk Type: fstr

    Converts single ncharacter to integer.

    Attributes: spec

  64. CHAR lnk Type: fstr

    Converts integer to character string of length 1.

    Attributes: spec

  65. NCHAR lnk Type: fstr

    Converts integer to ncharacter string of length 1.

    Attributes: spec

  66. AINT lnk Type: arth

    AINT intrinsic (converts real to real).

    AINT r p1
    
  67. DINT lnk Type: arth

    DINT intrinsic (converts double to double).

    DINT r p1
    
  68. ANINT lnk Type: arth

    ANINT intrinsic (converts real to real).

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_anint t1
    DFRSP r t2 spret
    
  69. DNINT lnk Type: arth

    DNINT intrinsic (converts double to double).

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dnint t1
    DFRDP r t2 dpret
    
  70. NINT lnk Type: arth

    NINT intrinsic (converts real to integer).

    NINT r p1
    
  71. IDNINT lnk Type: arth

    IDNINT intrinsic (converts double to integer).

    IDNINT r p1
    
  72. ZEXTB lnk Type: arth

    Zero extend byte (ZEXT intrinsic).

    ICON t1 =i'255
    AND r t1 p1
    
  73. ZEXTS lnk Type: arth

    Zero extend short (ZEXT intrinsic).

    ICON t1 =i'65535
    AND r t1 p1
    
  74. IABS lnk Type: arth

    IABS r p1
    
  75. ABS lnk Type: arth

    Absolute value of single precision real number.

    FABS r p1
    
  76. DABS lnk Type: arth

    DABS r p1
    
  77. CABS lnk Type: arth

    Attributes: spec

    DBLE t1 rp1
    DBLE t2 ip1
    DMUL t1 t1 t1
    DMUL t2 t2 t2
    DADD t3 t1 t2
    DSQRT t3 t3
    SNGL r t3
    
  78. CDABS lnk Type: arth

    Attributes: spec

    NULL t1 iv0
    DADP t1 ip1 dp(0) t1
    DADP t2 rp1 dp(1) t1
    QJSR t3 =e'%d%__mth_i_cdabs t2
    DFRDP r t3 dpret
    
  79. LEN lnk Type: fstr

    Length of a character expression. This ILM contains a link to one character expression. The result returned is the sum of the lengths of its operands.

    Attributes: spec

  80. NLEN lnk Type: fstr

    Length of ncharacter expr.

    Attributes: spec

  81. CONJG lnk Type: arth

    Conjugate of a single precision complex number.

    Attributes: spec

    MVSP rr rp1 iv-1
    FNEG ir ip1
    
  82. DCONJG lnk Type: arth

    Conjugate of a double complex number.

    Attributes: spec dcmplx

    MVDP rr rp1 iv-1
    DNEG ir ip1
    
  83. SQRT lnk Type: arth

    Square root of a single precision real number (SQRT intrinsic).

    FSQRT r p1
    
  84. DSQRT lnk Type: arth

    DSQRT r p1
    
  85. CSQRT lnk Type: arth

    Attributes: spec

  86. CDSQRT lnk Type: arth

    Attributes: spec dcmplx

  87. EXP lnk Type: arth

    EXP intrinsic for single precision floating point values.

    FEXP r p1
    
  88. DEXP lnk Type: arth

    DEXP r p1
    
  89. CEXP lnk Type: arth

    Attributes: spec

  90. CDEXP lnk Type: arth

    Attributes: spec dcmplx

  91. CACOS lnk Type: arth

    Attributes: spec

  92. CDACOS lnk Type: arth

    Attributes: spec dcmplx

  93. CASIN lnk Type: arth

    Attributes: spec

  94. CDASIN lnk Type: arth

    Attributes: spec dcmplx

  95. CATAN lnk Type: arth

    Attributes: spec

  96. CDATAN lnk Type: arth

    Attributes: spec dcmplx

  97. CCOSH lnk Type: arth

    Attributes: spec

  98. CDCOSH lnk Type: arth

    Attributes: spec dcmplx

  99. CSINH lnk Type: arth

    Attributes: spec

  100. CDSINH lnk Type: arth

    Attributes: spec dcmplx

  101. CTANH lnk Type: arth

    Attributes: spec

  102. CDTANH lnk Type: arth

    Attributes: spec dcmplx

  103. CTAN lnk Type: arth

    Attributes: spec

  104. CDTAN lnk Type: arth

    Attributes: spec dcmplx

  105. ALOG lnk Type: arth

    FLOG r p1
    
  106. DLOG lnk Type: arth

    DLOG r p1
    
  107. CLOG lnk Type: arth

    Attributes: spec

  108. CDLOG lnk Type: arth

    Attributes: spec dcmplx

  109. ALOG10 lnk Type: arth

    FLOG10 r p1
    
  110. DLOG10 lnk Type: arth

    DLOG10 r p1
    
  111. SIN lnk Type: arth

    Sine of a single precision value

    FSIN r p1
    
  112. DSIN lnk Type: arth

    DSIN r p1
    
  113. CSIN lnk Type: arth

    Attributes: spec

  114. CDSIN lnk Type: arth

    Attributes: spec dcmplx

  115. COS lnk Type: arth

    Cosine of a single precision number

    FCOS r p1
    
  116. DCOS lnk Type: arth

    DCOS r p1
    
  117. CCOS lnk Type: arth

    Attributes: spec

  118. CDCOS lnk Type: arth

    Attributes: spec dcmplx

  119. TAN lnk Type: arth

    Tangent of a single precision value

    FTAN r p1
    
  120. DTAN lnk Type: arth

    DTAN r p1
    
  121. ASIN lnk Type: arth

    FASIN r p1
    
  122. DASIN lnk Type: arth

    DASIN r p1
    
  123. ACOS lnk Type: arth

    FACOS r p1
    
  124. DACOS lnk Type: arth

    DACOS r p1
    
  125. ATAN lnk Type: arth

    FATAN r p1
    
  126. DATAN lnk Type: arth

    DATAN r p1
    
  127. ATAN2 lnk lnk Type: arth

    FATAN2 r p1 p2
    
  128. DATAN2 lnk lnk Type: arth

    DATAN2 r p1 p2
    
  129. SIND lnk Type: arth

    SIN in degrees.

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_sind t1
    DFRSP r t2 spret
    
  130. DSIND lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dsind t1
    DFRDP r t2 dpret
    
  131. COSD lnk Type: arth

    COS in degrees.

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_cosd t1
    DFRSP r t2 spret
    
  132. DCOSD lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dcosd t1
    DFRDP r t2 dpret
    
  133. TAND lnk Type: arth

    TAN in degrees.

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_tand t1
    DFRSP r t2 spret
    
  134. DTAND lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dtand t1
    DFRDP r t2 dpret
    
  135. ASIND lnk Type: arth

    ASIN in degrees.

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_asind t1
    DFRSP r t2 spret
    
  136. DASIND lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dasind t1
    DFRDP r t2 dpret
    
  137. ACOSD lnk Type: arth

    ACOS in degrees.

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_acosd t1
    DFRSP r t2 spret
    
  138. DACOSD lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dacosd t1
    DFRDP r t2 dpret
    
  139. ATAND lnk Type: arth

    ATAN in degrees.

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_atand t1
    DFRSP r t2 spret
    
  140. DATAND lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_datand t1
    DFRDP r t2 dpret
    
  141. ATAN2D lnk lnk Type: arth

    ATAN2 in degrees.

    NULL t1 iv0
    DASP t1 p2 sp(1) t1
    DASP t2 p1 sp(0) t1
    QJSR t3 =e'%s%__mth_i_atan2d t2
    DFRSP r t3 spret
    
  142. DATAN2D lnk lnk Type: arth

    NULL t1 iv0
    DADP t1 p2 dp(1) t1
    DADP t2 p1 dp(0) t1
    QJSR t3 =e'%d%__mth_i_datan2d t2
    DFRDP r t3 dpret
    
  143. SINH lnk Type: arth

    FSINH r p1
    
  144. DSINH lnk Type: arth

    DSINH r p1
    
  145. COSH lnk Type: arth

    FCOSH r p1
    
  146. DCOSH lnk Type: arth

    DCOSH r p1
    
  147. TANH lnk Type: arth

    FTANH r p1
    
  148. DTANH lnk Type: arth

    DTANH r p1
    
  149. ERF lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_erf t1
    DFRSP r t2 spret
    
  150. DERF lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_derf t1
    DFRDP r t2 dpret
    
  151. ERFC lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_erfc t1
    DFRSP r t2 spret
    
  152. DERFC lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_derfc t1
    DFRDP r t2 dpret
    
  153. ERFC_SCALED lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_erfc_scaled t1
    DFRSP r t2 spret
    
  154. DERFC_SCALED lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_derfc_scaled t1
    DFRDP r t2 dpret
    
  155. GAMMA lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_gamma t1
    DFRSP r t2 spret
    
  156. DGAMMA lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dgamma t1
    DFRDP r t2 dpret
    
  157. LOG_GAMMA lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_log_gamma t1
    DFRSP r t2 spret
    
  158. DLOG_GAMMA lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dlog_gamma t1
    DFRDP r t2 dpret
    
  159. HYPOT lnk lnk Type: arth

    NULL t1 iv0
    DASP t1 p2 sp(1) t1
    DASP t2 p1 sp(0) t1
    QJSR t3 =e'%s%__mth_i_hypot t2
    DFRSP r t3 spret
    
  160. DHYPOT lnk lnk Type: arth

    NULL t1 iv0
    DADP t1 p2 dp(1) t1
    DADP t2 p1 dp(0) t1
    QJSR t3 =e'%d%__mth_i_dhypot t2
    DFRDP r t3 dpret
    
  161. ACOSH lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_acosh t1
    DFRSP r t2 spret
    
  162. DACOSH lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dacosh t1
    DFRDP r t2 dpret
    
  163. ASINH lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_asinh t1
    DFRSP r t2 spret
    
  164. DASINH lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dasinh t1
    DFRDP r t2 dpret
    
  165. ATANH lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_atanh t1
    DFRSP r t2 spret
    
  166. DATANH lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_datanh t1
    DFRDP r t2 dpret
    
  167. BESSEL_J0 lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_bessel_j0 t1
    DFRSP r t2 spret
    
  168. DBESSEL_J0 lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dbessel_j0 t1
    DFRDP r t2 dpret
    
  169. BESSEL_J1 lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_bessel_j1 t1
    DFRSP r t2 spret
    
  170. DBESSEL_J1 lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dbessel_j1 t1
    DFRDP r t2 dpret
    
  171. BESSEL_JN lnk lnk Type: arth

    NULL t1 iv0
    DASP t1 p2 sp(0) t1
    DAIR t2 p1 dr(0) t1
    QJSR t3 =e'%s%__mth_i_bessel_jn t2
    DFRSP r t3 spret
    
  172. DBESSEL_JN lnk lnk Type: arth

    NULL t1 iv0
    DADP t1 p2 dp(0) t1
    DAIR t2 p1 dr(0) t1
    QJSR t3 =e'%d%__mth_i_dbessel_jn t2
    DFRDP r t3 dpret
    
  173. BESSEL_Y0 lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_bessel_y0 t1
    DFRSP r t2 spret
    
  174. DBESSEL_Y0 lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dbessel_y0 t1
    DFRDP r t2 dpret
    
  175. BESSEL_Y1 lnk Type: arth

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%s%__mth_i_bessel_y1 t1
    DFRSP r t2 spret
    
  176. DBESSEL_Y1 lnk Type: arth

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%d%__mth_i_dbessel_y1 t1
    DFRDP r t2 dpret
    
  177. BESSEL_YN lnk lnk Type: arth

    NULL t1 iv0
    DASP t1 p2 sp(0) t1
    DAIR t2 p1 dr(0) t1
    QJSR t3 =e'%s%__mth_i_bessel_yn t2
    DFRSP r t3 spret
    
  178. DBESSEL_YN lnk lnk Type: arth

    NULL t1 iv0
    DADP t1 p2 dp(0) t1
    DAIR t2 p1 dr(0) t1
    QJSR t3 =e'%d%__mth_i_dbessel_yn t2
    DFRDP r t3 dpret
    
  179. SNGL lnk Type: arth

    Convert double precision number to single precision (SNGL intrinsic).

    SNGL r p1
    
  180. IPTR lnk Type: arth

    Converts integral value to pointer. The ili created is: IAMV r p1

    Attributes: spec

  181. KPTR lnk Type: arth

    Converts long (64-bit) value to pointer. The ili created is: KAMV r p1

    Attributes: spec

  182. PTRI lnk Type: arth

    Converts pointer to an integral value The ili created is: AIMV r p1

    Attributes: spec

  183. PTRK lnk Type: arth

    Converts pointer to a long (64-bit) value The ili created is: AKMV r p1

    Attributes: spec

  184. INEG lnk Type: arth

    Integer negation.

    INEG r p1
    
  185. UINEG lnk Type: arth

    INEG r p1
    
  186. RNEG lnk Type: arth

    FNEG r p1
    
  187. DNEG lnk Type: arth

    DNEG r p1
    
  188. CNEG lnk Type: arth

    Attributes: spec

    FNEG rr rp1
    FNEG ir ip1
    
  189. CDNEG lnk Type: arth

    Double complex negation.

    Attributes: spec dcmplx

    DNEG rr rp1
    DNEG ir ip1
    
  190. NOT64 lnk Type: arth

    Bitwise negation of 64 bit value (NOT intrinsic).

    Attributes: i8

    KNOT r p1
    
  191. NOT lnk Type: arth

    Bitwise negation of 32 bit signed value (NOT intrinsic).

    NOT r p1
    
  192. UNOT lnk Type: arth

    Bitwise negation of 32 bit unsigned value.

    UNOT r p1
    
  193. LNOT lnk Type: arth

    Logical negation. The link must be to an expression of type integer, float, or pointer. The value is 1 if link is zero (0.0, or NULL); otherwise, the value is 0.

    ICMPZ r p1 eq
    
  194. LNOT lnk Type: arth

    Logical negation. The link must be to an expression of type LOGICAL; depends on internal representation of logical values (VAX or UNIX)

    Attributes: spec

  195. DLNOT lnk Type: arth

    Logical negation, where the link is an expression of type double. The value is 1 if link is zero; otherwise, it is 0.

    DCMPZ r p1 eq
    
  196. LNOP lnk Type: arth

    Logical no-op. Used by semant when space must be reserved for a potential LNOT ILM. Returns 1 if its operand is non-zero, else 0.

    ICMPZ r p1 ne
    
  197. LNOP lnk Type: arth

    Logical noop. Used by semant when space must be reserved for a potential LNOT ILM. ‘lnk’ points to a logical expression.

    MVIR r p1 iv-1
    
  198. IMERGE lnk lnk lnk Type: arth

    Integer valued f90 merge intrinsic.

    p1 - tsource
    p2 - fsource
    p3 - mask
    ICMPZ t1 p3 ne
    ISELECT r t1 p2 p1
    
  199. KMERGE lnk lnk lnk Type: arth

    Integer*8 valued f90 merge intrinsic.

    p1 - tsource
    p2 - fsource
    p3 - mask
    ICMPZ t1 p3 ne
    KSELECT r t1 p2 p1
    
  200. RMERGE lnk lnk lnk Type: arth

    Real valued f90 merge intrinsic.

    p1 - tsource
    p2 - fsource
    p3 - mask
    ICMPZ t1 p3 ne
    FSELECT r t1 p2 p1
    
  201. DMERGE lnk lnk lnk Type: arth

    Real*8 valued f90 merge intrinsic.

    p1 - tsource
    p2 - fsource
    p3 - mask
    ICMPZ t1 p3 ne
    DSELECT r t1 p2 p1
    
  202. CMERGE lnk lnk lnk Type: arth

    Real*4 complex valued f90 merge intrinsic.

    p1 - tsource
    p2 - fsource
    p3 - mask
    ICMPZ t1 p3 ne
    CSSELECT r t1 p2 p1
    
  203. CDMERGE lnk lnk lnk Type: arth

    Real*8 complex valued f90 merge intrinsic.

    p1 - tsource
    p2 - fsource
    p3 - mask
    ICMPZ t1 p3 ne
    CDSELECT r t1 p2 p1
    
  204. IADD lnk lnk Type: arth

    IADD r p1 p2
    
  205. UIADD lnk lnk Type: arth

    UIADD r p1 p2
    
  206. RADD lnk lnk Type: arth

    FADD r p1 p2
    
  207. DADD lnk lnk Type: arth

    DADD r p1 p2
    
  208. CADD lnk lnk Type: arth

    Attributes: spec

    FADD rr rp1 rp2
    FADD ir ip1 ip2
    
  209. CDADD lnk lnk Type: arth

    Attributes: spec dcmplx

    DADD rr rp1 rp2
    DADD ir ip1 ip2
    
  210. PIADD lnk1 lnk2 stc Type: arth

    Add pointer (lnk1) to integer (lnk2) creating a new pointer value. ‘stc’ locates a data type item describing the type which the pointer (lnk1) points to.

    Attributes: spec

    ICON t1 scz3
    IMUL t2 t1 p2
    IAMV t3 t2
    AADD r p1 t3 scf3
    
  211. PKADD lnk1 lnk2 stc Type: arth

    Add pointer (lnk1) to long (lnk2) creating a new pointer value. ‘stc’ locates a data type item describing the type which the pointer (lnk1) points to.

    Attributes: spec

    ICON t1 scz3
    IKMV t1 t1
    KMUL t2 t1 p2
    KAMV t3 t2
    AADD r p1 t3 scf3
    
  212. ISUB lnk lnk Type: arth

    ISUB r p1 p2
    
  213. UISUB lnk lnk Type: arth

    UISUB r p1 p2
    
  214. RSUB lnk lnk Type: arth

    FSUB r p1 p2
    
  215. DSUB lnk lnk Type: arth

    DSUB r p1 p2
    
  216. CSUB lnk lnk Type: arth

    Attributes: spec

    FSUB rr rp1 rp2
    FSUB ir ip1 ip2
    
  217. CDSUB lnk lnk Type: arth

    Attributes: spec dcmplx

    DSUB rr rp1 rp2
    DSUB ir ip1 ip2
    
  218. PSUB lnk lnk stc Type: arth

    Subtract two pointers (of the same type). ‘stc’ locates a data type item describing the type which the pointer (lnk1) points to. The result of this operation is an integer.

    ASUB t1 p1 p2 iv0
    AKMV t2 t1
    ICON t1 sz3
    IKMV t1 t1
    KDIVZR r t2 t1
    
  219. PISUB lnk1 lnk2 stc Type: arth

    Substract integer (lnk2) from a pointer (lnk1) creating a new pointer value. ‘stc’ locates a data type item describing the type which the pointer (lnk1) points to.

    Attributes: spec

    ICON t1 scz3
    IMUL t2 t1 p2
    IAMV t3 t2
    ASUB r p1 t3 scf3
    
  220. PKSUB lnk1 lnk2 stc Type: arth

    Substract long (lnk2) from a pointer (lnk1) creating a new pointer value. ‘stc’ locates a data type item describing the type which the pointer (lnk1) points to.

    Attributes: spec

    ICON t1 scz3
    IKMV t1 t1
    KMUL t2 t1 p2
    KAMV t3 t2
    ASUB r p1 t3 scf3
    
  221. IMUL lnk lnk Type: arth

    IMUL r p1 p2
    
  222. UIMUL lnk lnk Type: arth

    IMUL r p1 p2
    
  223. RMUL lnk lnk Type: arth

    FMUL r p1 p2
    
  224. DMUL lnk lnk Type: arth

    DMUL r p1 p2
    
  225. CMUL lnk lnk Type: arth

    Attributes: spec

    FMUL t1 rp1 rp2
    FMUL t2 ip1 ip2
    FMUL t3 ip1 rp2
    FMUL t4 ip2 rp1
    FSUB rr t1 t2
    FADD ir t3 t4
    
  226. CDMUL lnk lnk Type: arth

    Attributes: spec dcmplx

    DMUL t1 rp1 rp2
    DMUL t2 ip1 ip2
    DSUB rr t1 t2
    DMUL t1 ip1 rp2
    DMUL t2 ip2 rp1
    DADD ir t2 t1
    
  227. IDIV lnk lnk Type: arth

    IDIV r p1 p2
    
  228. UIDIV lnk lnk Type: arth

    UIDIV r p1 p2
    
  229. RDIV lnk lnk Type: arth

    FDIV r p1 p2
    
  230. DDIV lnk lnk Type: arth

    DDIV r p1 p2
    
  231. CDIV lnk lnk Type: arth

    Attributes: spec

  232. CDIVR lnk lnk Type: arth

    Attributes: spec

    FDIV rr rp1 p2
    FDIV ir ip1 p2
    
  233. CDDIV lnk lnk Type: arth

    Attributes: spec dcmplx

  234. CDDIVD lnk lnk Type: arth

    Attributes: spec dcmplx

    DDIV rr rp1 p2
    DDIV ir ip1 p2
    
  235. ITOI lnk lnk Type: arth

    Exponentiation - integer to an integer power.

    IPOWI r p1 p2
    
  236. RTOI lnk lnk Type: arth

    FPOWI r p1 p2
    
  237. DTOI lnk lnk Type: arth

    DPOWI r p1 p2
    
  238. MOD lnk lnk Type: arth

    Integer remainder

    MOD r p1 p2
    
  239. MOD lnk lnk Type: arth

    Integer remainder (MOD intrinsic).

    MOD r p1 p2
    
  240. UIMOD lnk lnk Type: arth

    UIMOD r p1 p2
    
  241. AMOD lnk lnk Type: arth

    FMOD r p1 p2
    
  242. DMOD lnk lnk Type: arth

    DMOD r p1 p2
    
  243. ISIGN lnk lnk Type: arth

    ICMPZ t1 p2 lt
    IABS t2 p1
    INEG t3 t2
    ISELECT r t1 t2 t3
    
  244. SIGN lnk lnk Type: arth

    Real valued SIGN intrinsic.

    FCMPZ t1 p2 lt
    FABS t2 p1
    FNEG t3 t2
    FSELECT r t1 t2 t3
    
  245. DSIGN lnk lnk Type: arth

    DCMPZ t1 p2 lt
    DABS t2 p1
    DNEG t3 t2
    DSELECT r t1 t2 t3
    
  246. IDIM lnk lnk Type: arth

    NULL t1 iv0
    DAIR t1 p2 dr(1) t1
    DAIR t2 p1 dr(0) t1
    QJSR t3 =e'%i%ftn_i_idim t2
    DFRIR r t3 drret
    
  247. DIM lnk lnk Type: arth

    Real valued DIM intrinsic.

    NULL t1 iv0
    DASP t1 p2 sp(1) t1
    DASP t2 p1 sp(0) t1
    QJSR t3 =e'%s%ftn_i_dim t2
    DFRSP r t3 spret
    
  248. DDIM lnk lnk Type: arth

    NULL t1 iv0
    DADP t1 p2 dp(1) t1
    DADP t2 p1 sp(0) t1
    QJSR t3 =e'%d%ftn_i_ddim t2
    DFRDP r t3 dpret
    
  249. DPROD lnk lnk Type: arth

    Multiply two single precision real values and return double precision value. (DPROD intrinsic).

    DBLE t1 p1
    DBLE t2 p2
    DMUL r t1 t2
    
  250. IMAX lnk lnk Type: arth

    IMAX r p1 p2
    
  251. UIMAX lnk lnk Type: arth

    UIMAX r p1 p2
    
  252. RMAX lnk lnk Type: arth

    FMAX r p1 p2
    
  253. DMAX lnk lnk Type: arth

    DMAX p p1 p2
    
  254. IMIN lnk lnk Type: arth

    IMIN r p1 p2
    
  255. UIMIN lnk lnk Type: arth

    UIMIN r p1 p2
    
  256. RMIN lnk lnk Type: arth

    FMIN r p1 p2
    
  257. DMIN lnk lnk Type: arth

    DMIN r p1 p2
    
  258. INDEX lnk lnk Type: fstr

    INDEX intrinsic (inputs are two character strings and result is an integer).

    Attributes: spec

    QJSR t1 =e'%i%ftn_index iv0
    DFRIR r t1 drret
    
  259. NINDEX lnk lnk Type: fstr

    Same as INDEX except for ncharacter strings.

    Attributes: spec

    QJSR t1 =e'%i%ftn_nindex iv0
    DFRIR r t1 drret
    
  260. AND64 lnk lnk Type: arth

    Bitwise logical and of two 64 bit values (AND intrinsic).

    Attributes: i8

    KAND r p1 p2
    
  261. AND lnk lnk Type: arth

    Bitwise logical and of two 32 bit values (AND intrinsic).

    AND r p1 p2
    
  262. OR64 lnk lnk Type: arth

    Bitwise logical or of two 64-bit values (OR instrinsic).

    Attributes: i8

    KOR r p1 p2
    
  263. OR lnk lnk Type: arth

    Bitwise logical or of two 32 bit values (OR intrinsic).

    OR r p1 p2
    
  264. XOR64 lnk lnk Type: arth

    Bitwise exclusive or of two 64 bit values (NEQV intrinsic)

    Attributes: i8

    KXOR r p1 p2
    
  265. XOR lnk lnk Type: arth

    Bitwise exclusive or of two 32 bit values (^ operator / EOR intrinsic).

    XOR r p1 p2
    
  266. XNOR64 lnk lnk Type: arth

    Bitwise exclusive nor of two 64 bit values (EQV intrinsic)

    Attributes: i8

    KXOR t1 p1 p2
    KNOT r t1
    
  267. EQV lnk lnk Type: arth

    Bitwise complement of the exclusive or of two 32 bit values

    XOR t1 p1 p2
    NOT r t1
    
  268. LSHIFT lnk lnk Type: arth

    Left shift operator (<<) - first operand is 32 bit signed integer value and second is a positive integer.

    LSHIFT r p1 p2
    
  269. RSHIFT lnk lnk Type: arth

    Right shift operator (>>). First operand is 32 bit signed integer value and second is assumed to be a positive integer.

    RSHIFT r p1 p2
    
  270. KRSHIFT lnk lnk Type: arth

    Attributes: i8

    KARSHIFT r p1 p2
    
  271. ULSHIFT lnk lnk Type: arth

    Left shift operator (<<) - first operand is 32 bit unsigned integer value and second is a positive integer.

    ULSHIFT r p1 p2
    
  272. URSHIFT lnk lnk Type: arth

    Right shift operator (>>). First operand is 32 bit unsigned integer value and second is assumed to be a positive integer.

    URSHIFT r p1 p2
    
  273. SHIFT64 lnk lnk Type: arth

    SHIFT intrinsic - first operand is 64 bit value and second is a positive or negative integer shift count.

    Attributes: i8

    NULL t1 iv0
    DAIR t1 p2 dr(1) t1
    DAKR t1 p1 dr(0) t1
    QJSR t2 =e'%l%ftn_i_kishft t1
    DFRKR r t2 krret
    
  274. SHIFT lnk lnk Type: arth

    SHIFT intrinsic - first operand is 32 bit value and second is positive or negative integer shift count (not constants). When the second operand is a constant, ULSHIFT or URSHIFT is used.

    NULL t1 iv0
    DAIR t1 p2 dr(1) t1
    DAIR t2 p1 dr(0) t1
    QJSR t2 =e'%i%ftn_i_shift t2
    DFRIR r t2 drret
    
  275. I1SHFT lnk lnk Type: intr

    ISHFT intrinsic - first operand is 8 bit value and second is positive or negative integer shift count. If the shift count <= -8 or >=8, the result is 0.

    NULL t1 iv0
    DAIR t1 p2 dr(1) t1
    DAIR t2 p1 dr(0) t1
    QJSR t2 =e'%i%ftn_i_i1shft t2
    DFRIR r t2 drret
    
  276. IISHFT lnk lnk Type: intr

    ISHFT intrinsic - first operand is 16 bit value and second is positive or negative integer shift count. If the shift count <= -16 or >=16, the result is 0.

    NULL t1 iv0
    DAIR t1 p2 dr(1) t1
    DAIR t2 p1 dr(0) t1
    QJSR t2 =e'%i%ftn_i_iishft t2
    DFRIR r t2 drret
    
  277. JISHFT lnk lnk Type: intr

    ISHFT intrinsic - first operand is 32 bit value and second is positive or negative integer shift count. If the shift count <= -32 or >=32, the result is 0. Expand will convert JISHFT ili to a ULSHIFT, URSHIFT, or a call.

    JISHFT r p1 p2
    
  278. LAND lnk lnk Type: arth

    Logical .AND. operation.

    AND r p1 p2
    
  279. VSLAND lnk lnk Type: arth

    Vector 16-bit logical and

  280. LOR lnk lnk Type: arth

    Logical or. This opcode is for use within the Semantic Analyzer only, and should never appear in the ILM’s sent to the Expander.

  281. LOR lnk lnk Type: arth

    Logical .OR. operation.

    OR r p1 p2
    
  282. LEQV lnk lnk Type: arth

    Logical .EQV. operation.

    Attributes: spec

    ICMP r p1 p2 eq
    
  283. LNEQV lnk lnk Type: arth

    Logical .NEQV. operation.

    XOR r p1 p2
    
  284. I1SHFTC lnk lnk lnk Type: arth

    ISHFTC(p1, p2, p3) - circularly shift the rightmost p3 bits of p1 by p2, where p1 is a 8-bit interger

    NULL t1 iv0
    DAIR t1 p3 dr(2) t1
    DAIR t2 p2 dr(1) t1
    DAIR t3 p1 dr(0) t2
    QJSR t1 =e'%i%ftn_i_i1shftc t3
    DFRIR r t1 drret
    
  285. IISHFTC lnk lnk lnk Type: arth

    ISHFTC(p1, p2, p3) - circularly shift the rightmost p3 bits of p1 by p2, where p1 is a 16-bit interger

    NULL t1 iv0
    DAIR t1 p3 dr(2) t1
    DAIR t2 p2 dr(1) t1
    DAIR t3 p1 dr(0) t2
    QJSR t1 =e'%i%ftn_i_iishftc t3
    DFRIR r t1 drret
    
  286. ISHFTC lnk lnk lnk Type: arth

    ISHFTC(p1, p2, p3) - circularly shift the rightmost p3 bits of p1 by p2.

    NULL t1 iv0
    DAIR t1 p3 dr(2) t1
    DAIR t2 p2 dr(1) t1
    DAIR t3 p1 dr(0) t2
    QJSR t1 =e'%i%ftn_ishftc t3
    DFRIR r t1 drret
    
  287. IBITS lnk lnk lnk Type: arth

    IBITS(p1, p2, p3) - extract p3 bits beginning at p2 from p1.

    r = p3 != 0 ? (p1 >> p2) & (-1 >> (32 - p3)) : 0
    RSHIFT t1 p1 p2
    ICON t2 =i'-1
    ICON t3 =i'32
    ISUB t4 t3 p3
    URSHIFT t5 t2 t4
    AND t6 t1 t5
    ICMPZ t7 p3 eq
    ISELECT r t7 t6 p3
    
  288. IBSET lnk lnk Type: arth

    IBSET(p1, p2) - set bit p2 of p1 to 1.

    r = p1 | (1 << p2)
    ICON t1 =i'1
    LSHIFT t2 t1 p2
    OR r p1 t2
    
  289. BTEST lnk lnk Type: arth

    BTEST(p1, p2) - .TRUE. if bit p2 of p1 is 1.

    r = (p1 & (1 << p2)) != 0
    ICON t1 =i'1
    LSHIFT t2 t1 p2
    AND t3 p1 t2
    ICMPZ r t3 ne
    
  290. IBCLR lnk lnk Type: arth

    IBLCR(p1, p2) - clear bit p2 of p1.

    r = p1 & ~(1 << p2)
    ICON t1 =i'1
    LSHIFT t2 t1 p2
    NOT t3 t2
    AND r p1 t3
    
  291. RFLOOR lnk Type: arth

    FLOOR of real to real

    FFLOOR r p1
    
  292. DFLOOR lnk Type: arth

    FLOOR of double to double

    DFLOOR r p1
    
  293. RCEIL lnk Type: arth

    CELING of real to real

    FCEIL r p1
    
  294. DCEIL lnk Type: arth

    CELING of double to double

    DCEIL r p1
    
  295. ICMP lnk lnk Type: arth

    Integer comparision of two integer numbers. The compare ILMs are used only in the context of a relational expression and do not by themselves generate code. A compare ILM passes up the opcode of the compare ILI which reflects the data type of the operands to the relational ILM. When the relational ILM using the compare ILM is processed, the appropriate code is generated.

    Attributes: spec

  296. RCMP lnk lnk Type: arth

    Compare two single precision floating point numbers.

    Attributes: spec

  297. DCMP lnk lnk Type: arth

    Compare two double precision floating point numbers.

    Attributes: spec

  298. UICMP lnk lnk Type: arth

    Unsigned integer comparison.

    Attributes: spec

  299. UDICMP lnk lnk Type: arth

    Unsigned double integer comparison.

    Attributes: spec

  300. PCMP lnk lnk Type: arth

    Pointer comparison.

    Attributes: spec

  301. CCMP lnk lnk Type: arth

    Compare two complex numbers. The value computed is 0 if equal and -1 or 1 if not equal.

    Attributes: spec

  302. CDCMP lnk lnk Type: arth

    Compare two double complex numbers. The value computed is the same as for the ICMP ILM.

    Attributes: spec

  303. SCMP lnk lnk Type: fstr

    Compare two strings. The value computed is the same as for the ICMP ILM. SCMP has no corresponding vector ILM.

    Attributes: spec

  304. NSCMP lnk lnk Type: fstr

    Same as SCMP for ncharacter strings.

    Attributes: spec

  305. EQ lnk Type: arth

    Generate true if compare is equal (lnk locates a compare ILM)

    Attributes: spec

  306. NE lnk Type: arth

    Generate true if compare is not equal

    Attributes: spec

  307. LT lnk Type: arth

    Generate true if compare is less than

    Attributes: spec

  308. GE lnk Type: arth

    Generate true if compare is greater than or equal to

    Attributes: spec

  309. LE lnk Type: arth

    Generate true if compare is less than or equal to

    Attributes: spec

  310. GT lnk Type: arth

    Generate true if compare is greater than

    Attributes: spec

  311. SCAT lnk lnk Type: fstr

    Character string concatenation of 2 character expressions (none of which are themselves concatenations).

    Attributes: spec

    QJSR r =e'%v%ftn_str_copy iv0
    
  312. NSCAT lnk lnk Type: fstr

    Concatenate ncharacter strings.

    Attributes: spec

    QJSR r =e'%v%ftn_str_copy iv0
    
  313. LOC lnk Type: arth

    Returns the address represented by a BASE, ELEMENT, or a MEMBER ILM, or substring reference. Used for the ‘&’ operator.

    Attributes: spec

  314. BASE sym Type: ref

    Represents base address of a variable, array, struct, or union.

    Attributes: spec

  315. ELEMENT lnk lnk stc Type: ref

    Address of an array element reference: lnk1 - subscripted lvalue lnk2 - subscript expression stc - data type of each element

    Attributes: spec

  316. ELEMENT n lnk1 stc lnk+ Type: ref

    Address of an array element reference: lnk1 - subscripted lvalue stc - data type of each element lnk+ - subscript expressions (<= 7)

    Attributes: spec

  317. INLELEM n lnk1 stc lnk+ Type: ref

    Address of an array element reference. Generated by function inlining. lnk1 - subscripted lvalue stc - data type of each element lnk+ - subscript expressions (<= 7)

    Attributes: spec

  318. MEMBER lnk sym Type: ref

    Address of a structure member or field reference. lnk - base address of the structure. sym - pointer to a struct member ST item.

    Attributes: spec

  319. SHAPE n lnk+ Type: misc

    Shape ILM. Links point to SHD ILMs. One link for each dimension.

    Attributes: spec

  320. SHD lnk lnk lnk Type: misc

    Shape descriptor for a dimension. lnk1 - lower bound lnk2 - upper bound lnk3 - stride

    Attributes: spec

  321. UCON sym Type: arth

    ICON r v1
    
  322. ICON sym Type: cons

    ICON r v1
    
  323. RCON sym Type: cons

    FCON r v1
    
  324. DCON sym Type: cons

    DCON r v1
    
  325. CCON sym Type: cons

    Attributes: spec

    FCON rr iv0
    FCON ir iv0
    
  326. CDCON sym Type: cons

    Attributes: spec dcmplx

    DCON rr iv0
    DCON ir iv0
    
  327. ACON sym Type: cons

    Address constant ILM. sym is a symbol table pointer to an address constant. The template is: ACON r v1

    Attributes: spec

  328. ACON sym Type: cons

    Address constant. ‘sym’ must be a symbol table pointer to an address constant for a label. This ILM is generated when an ASSIGN statement is processed.

    Attributes: spec

    ACON r v1
    
  329. LCON sym Type: cons

    Logical constant.

    ICON r v1
    
  330. BR sym Type: branch

    Branch to label indicated by ‘sym’.

    Attributes: spec trm

    JMP null v1
    
  331. BRT lnk sym Type: branch

    Branch on logical condition true by comparing for zero/nonzero (PGC). ‘lnk’ may point to a constant ILM, in which case it will always be an ICON 0 or 1.

    Attributes: spec trm

    ICJMPZ null p1 ne v2
    
  332. BRF lnk sym Type: branch

    Attributes: spec trm

    ICJMPZ null p1 eq v2
    
  333. BRT lnk sym Type: branch

    Branch on logical condition true by testing the low bit (PGFTN). ‘lnk’ may point to a constant ILM.

    Attributes: spec trm

    LCJMPZ null p1 ne v2
    
  334. BRF lnk sym Type: branch

    Attributes: spec trm

    LCJMPZ null p1 eq v2
    
  335. SWITCH lnk stc Type: branch

    Switch determinator, where lnk - switch expression stc - relative pointer to switch table, consisting of linked list of case value/label pairs.

    Attributes: spec trm

  336. SWTCHLL lnk stc Type: branch

    Switch determinator, where lnk - switch expression stc - relative pointer to switch table, consisting of linked list of case value/label pairs.

    Attributes: spec trm

  337. IAIF lnk sym1 sym2 sym3 Type: branch

    Arithmetic IF branch on integer expression. 'sym’s are symbol table pointers to labels.

    Attributes: spec trm

    ICJMPZ null p1 le v2
    ICJMPZ null p1 eq v3
    ICJMPZ null p1 gt v4
    
  338. RAIF lnk sym1 sym2 sym3 Type: branch

    Arithmetic if branch on real expression.

    Attributes: spec trm

    FCJMPZ null p1 le v2
    FCJMPZ null p1 eq v3
    FCJMPZ null p1 gt v4
    
  339. DAIF lnk sym1 sym2 sym3 Type: branch

    Attributes: spec trm

    DCJMPZ null p1 le v2
    DCJMPZ null p1 eq v3
    DCJMPZ null p1 gt v4
    
  340. QAIF lnk sym1 sym2 sym3 Type: branch

    Attributes: spec trm

    QCJMPZ null p1 le v2
    QCJMPZ null p1 eq v3
    QCJMPZ null p1 gt v4
    
  341. AGOTO n lnk sym* Type: branch

    Assigned GOTO. ‘lnk’ is to an ILD ILM. 'sym’s are symbol table pointers to labels specified on the assigned GOTO statement, if any.

    Attributes: spec trm

    JMPA null t1
    
  342. CGOTO lnk stc Type: branch

    Computed goto. lnk - ILM of the computed goto index stc - relative pointer to goto/switch table, consisting of linked list of index value/label pairs.

    Attributes: spec trm

  343. CHLD lnk Type: load

    Load signed char (byte)

    Attributes: spec

  344. UCHLD lnk Type: load

    Load unsigned char (byte)

    Attributes: spec

  345. ILD lnk Type: load

    Load long integer

    Attributes: spec

  346. UILD lnk Type: load

    Load unsigned long integer

    Attributes: spec

  347. UDILD lnk Type: load

    Load unsigned double integer

    Attributes: spec

  348. SILD lnk Type: load

    Load short signed integer

    Attributes: spec

  349. USILD lnk Type: load

    Load short unsigned integer

    Attributes: spec

  350. RLD lnk Type: load

    Load real

    Attributes: spec

  351. DLD lnk Type: load

    Load double

    Attributes: spec

  352. QLD lnk Type: load

    Load m128

    Attributes: spec

  353. M256LD lnk Type: load

    Load m256

    Attributes: spec

  354. CLD lnk Type: load

    Attributes: spec

  355. CDLD lnk Type: load

    Attributes: spec dcmplx

  356. LLD lnk Type: load

    Load logical value.

    Attributes: spec

  357. SLLD lnk Type: load

    Load logical value - LOGICAL*2

    Attributes: spec

  358. PLD lnk sym Type: load

    Load pointer. For fortran, ‘sym’ field is used for PLD’s generated by inlining array arguments, and points to actual array For C & Fortran, the ‘sym’ field locates the based object for which the PLD is generated; the ‘sym’ field is 0 for loads of normal C pointers.

    Attributes: spec

  359. FLD lnk Type: load

    Load field. Always points to a MEMBER ilm.

    Attributes: spec

  360. SFLD lnk Type: load

    Load signed field. Always points to a MEMBER ilm.

    Attributes: spec

  361. SUBS lnk1 lnk2 lnk3 Type: fstr

    Character substring. Lnk1 must point to a BASE, MEMBER, or ELEMENT ILM. Lnk2 and lnk3 must point to the integer expressions for the lower and upper bounds respectively.

    Attributes: spec

  362. NSUBS lnk1 lnk2 lnk3 Type: fstr

    Substring of ncharacter string.

    Attributes: spec

  363. NCSELD lnk Type: load

    Non-cse load. lnk points to a load ilm. Used for volatile types. Expands to ILI that forces scheduler to do the load rather then optimizing it away.

    Attributes: spec

  364. VLD stc Type: load

    Fake vector load ILM for vector expander. stc is really index into vector table.

    Attributes: spec

  365. CHST lnk1 lnk2 Type: store

    Store signed char, lnk1 = lnk2 (??)

    Attributes: spec trm

  366. UCHST lnk1 lnk2 Type: store

    Store unsigned char, lnk1 = lnk2 (??)

    Attributes: spec trm

  367. IST lnk lnk Type: store

    Store into integer variable.

    Attributes: spec trm

  368. UIST lnk lnk Type: store

    Store into unsigned long integer

    Attributes: spec trm

  369. SIST lnk lnk Type: store

    Store short signed integer

    Attributes: spec trm

  370. USIST lnk lnk Type: store

    Store short unsigned integer

    Attributes: spec trm

  371. RST lnk lnk Type: store

    Store float

    Attributes: spec trm

  372. DST lnk lnk Type: store

    Store double

    Attributes: spec trm

  373. QST lnk lnk Type: store

    Store m128

    Attributes: spec trm

  374. M256ST lnk lnk Type: store

    Store m256

    Attributes: spec trm

  375. CST lnk lnk Type: store

    Attributes: spec trm

  376. CSTR lnk lnk Type: store

    Store the real part of a single complex

    Attributes: spec trm

  377. CSTI lnk lnk Type: store

    Store the imaginary part of a single complex

    Attributes: spec trm

  378. CDST lnk lnk Type: store

    Attributes: spec trm dcmplx

  379. CDSTR lnk lnk Type: store

    Store the real part of a double complex

    Attributes: spec trm

  380. CDSTI lnk lnk Type: store

    Store the imaginary part of a double complex

    Attributes: spec trm

  381. LST lnk lnk Type: store

    Attributes: spec trm

  382. SLST lnk lnk Type: store

    Attributes: spec trm

  383. AST lnk lnk Type: store

    Store address scalar. This ILM is used for an ASSIGN statement. ‘lnk’ points to an ACON ILM.

    Attributes: spec trm

  384. SST lnk1 lnk2 Type: fstr

    Store character expression into character variable, array element, or substring. Lnk1 and lnk2 point to character expressions. Lnk1 is the destination - cannot be a concatenation.

    Attributes: spec trm

    QJSR null =e'%v%ftn_str_copy iv0
    
  385. NSST lnk1 lnk2 Type: fstr

    Store ncharacter expression.

    Attributes: spec trm

    QJSR null =e'%v%ftn_str_copy iv0
    
  386. PST lnk lnk Type: store

    Store pointer

    Attributes: spec trm

  387. PSTRG1 lnk stc Type: store

    Store pointer to argument register number stc : used in g++ style thunks to store the adjusted value bask to rdi/rsi etc before jumping through to the function.

    Attributes: spec trm

  388. FST lnk lnk Type: store

    Store into field.

    Attributes: spec trm

  389. SMOVE lnk1 lnk2 stc Type: store

    Store from one structure into another (of same type). lnk1 - base address of receiving structure (to). lnk2 - base address of stored structure (from). stc is a data type pointer which describes the structures. The expansion of this ILM can generate ILI for a sequence of loads and stores or a call (JSR) to one of: “c_bcopy” copy bytes “c_hcopy” copy half-words “c_wcopy” copy words “c_dcopy” copy double words

    Attributes: spec trm

  390. SZERO lnk1 lnk2 stc Type: store

    Zero memory locations. lnk1 - base address to zero lnk2 - number of units to zero stc - data type of units to zero: char, short, int, dble The expansion of this ILM can generate ILI for a sequence of stores or a JSR to one of “c_bzero” zero bytes “c_hzero” zero halfwords “c_wzero” zero words “c_dzero” zero double words

    Attributes: spec trm

  391. PSEUDOST stc lnk Type: store

    Pseudo store. This ILM is used to mark an expression whose value may be required later in the ILM block (e.g., for i++, the orginal value of i may be needed as the result of this expression. The expander will expand this ILM to one of the ILIs (FREEIR, FREEAR, or FREEIR) depending on the type of the register defined by the ILI which lnk locates. stc is just a dummy field (0) so that the ILM requires a total of 3 words.

    Attributes: spec trm

  392. SPSEUDOST stc lnk Type: fstr

    Character pseudo store. lnk points to a character expression. stc is the length of the destination. This ILM is used to mark a character expression whose value is restricted by length; this occurs when a character expression is used as an argument to a statement function and when the result of a character statement function is referenced.

    Attributes: spec trm

  393. NSPSEUDOST stc lnk Type: fstr

    Same as SPSEUDOST but for ncharacter type.

    Attributes: spec trm

  394. NCSEST lnk Type: store

    Non-cse store. lnk points to a store ilm. Used for volatile types. Expands to ILI that forces scheduler to do the store rather then optimizing it away.

    Attributes: spec trm

  395. FAPPLY n stc lnk lnk* Type: proc

    Call function, where stc is the dtype for the function signature. ‘n’ is the number of actual arguments. ‘lnk1’ is the lvalue of the procedure The other links point to the arguments in the same order they appeared in the actual argument list. If the type of the argument is struct, the lnk will point to an ILM for the address of the struct. For other types of arguments the lnk will just point to the ILM’s for the expression.

    Attributes: spec

  396. VAPPLY n stc lnk lnk* Type: proc

    Like FAPPLY, but has trm attribute. The result is discarded if there is one, i.e. if the function signature has a return type other than DT_VOID.

    Attributes: spec trm

  397. FINVOKE n sym stc lnk lnk* Type: proc

    Like FAPPLY, but has label argument indicating where control-flow jumps if the function throws an exception.

    Attributes: spec

  398. VINVOKE n sym stc lnk lnk* Type: proc

    Like VAPPLY, but has label argument similar to FINVOKE.

    Attributes: spec trm

  399. VFUNC n lnk lnk* Type: proc

    Call void function, where ‘n’ is the number of actual arguments. ‘lnk1’ is the lvalue of the procedure The links point to the arguments in the same order they appeared in the actual argument list. If the type of the argument is struct, the lnk will point to an ILM for the address of the struct. For other types of arguments the lnk will just point to the ILM’s for the expression.

    Attributes: spec trm

  400. IFUNC n lnk lnk* Type: proc

    Call integer function.

    Attributes: spec

  401. IFUNC n sym lnk* Type: proc

    Call integer function.

    Attributes: spec

  402. IFUNCA n stc lnk lnk* Type: proc

    Call integer function.

    Attributes: spec

  403. PIFUNCA n stc sym lnk lnk* Type: proc

    Call integer function through procedure pointer

    Attributes: spec

  404. IVFUNCA n stc sym lnk sym lnk* Type: proc

    Call integer function.

    Attributes: spec

  405. UIFUNC n lnk lnk* Type: proc

    Call unsigned function

    Attributes: spec

  406. RFUNC n lnk lnk* Type: proc

    Call float function. This ILM is only when the compiler is asked to not convert ALL instances of float to double.

    Attributes: spec

  407. RFUNC n sym lnk* Type: proc

    Call real function.

    Attributes: spec

  408. RFUNCA n stc lnk lnk* Type: proc

    Call real function.

    Attributes: spec

  409. PRFUNCA n stc sym lnk lnk* Type: proc

    Call real function through procedure pointer

    Attributes: spec

  410. RVFUNCA n stc sym lnk sym lnk* Type: proc

    Call real function.

    Attributes: spec

  411. DFUNC n lnk lnk* Type: proc

    Call double function

    Attributes: spec

  412. DFUNC n sym lnk* Type: proc

    Call double function

    Attributes: spec

  413. DFUNCA n stc lnk lnk* Type: proc

    Call double function

    Attributes: spec

  414. PDFUNCA n stc sym lnk lnk* Type: proc

    Call double function through procedure pointer

    Attributes: spec

  415. DVFUNCA n stc sym lnk sym lnk* Type: proc

    Call double function

    Attributes: spec

  416. QFUNC n lnk lnk* Type: proc

    Call m128 function

    Attributes: spec

  417. QFUNC n sym lnk* Type: proc

    Call m128 function

    Attributes: spec

  418. QFUNCA n stc lnk lnk* Type: proc

    Call m128 function

    Attributes: spec

  419. M256FUNC n lnk lnk* Type: proc

    Call m256 function

    Attributes: spec

  420. M256FUNC n sym lnk* Type: proc

    Call m256 function

    Attributes: spec

  421. M256FUNCA n stc lnk lnk* Type: proc

    Call m256 function

    Attributes: spec

  422. M256VFUNC n sym lnk sym lnk* Type: proc

    Call m256 function

    Attributes: spec

  423. M256VFUNCA n stc sym lnk sym lnk* Type: proc

    Call m256 function

    Attributes: spec

  424. QVFUNCA n stc sym lnk sym lnk* Type: proc

    Call m128 function

    Attributes: spec

  425. CALL n sym lnk* Type: proc

    Call external subprogram. ‘n’ is the number of actual arguments. 'sym’ is symbol table pointer to the external subprogram. The links point to the arguments in the same order they appeared in the CALL statement.

    Attributes: spec trm

  426. CALLA n stc lnk lnk* Type: proc

    Call external subprogram. ‘n’ is the number of actual arguments. ‘lnk1’ is address of the subprogram The links point to the arguments in the same order they appeared in the CALL statement.

    Attributes: spec trm

  427. PCALLA n stc sym lnk lnk* Type: proc

    Call subprogram through procedure pointer 'n’ is the number of actual arguments. 'sym’ is the pointer’s descriptor 'lnk1’ is address of the subprogram The links point to the arguments in the same order they appeared in the CALL statement.

    Attributes: spec trm

  428. VCALLA n stc sym lnk sym lnk* Type: proc

    Call external subprogram. ‘n’ is the number of actual arguments. 'sym1’ is symbol table pointer to the external subprogram. ‘lnk’ ilm of invoking object 'sym2’ address of invoking object desc The links point to the arguments in the same order they appeared in the CALL statement.

    Attributes: spec trm

  429. CFUNC n lnk lnk* Type: proc

    Attributes: spec

  430. CDFUNC n lnk lnk* Type: proc

    Attributes: spec dcmplx

  431. CFUNC n sym lnk* Type: proc

    Attributes: spec

  432. CFUNCA n stc lnk lnk* Type: proc

    Attributes: spec

  433. PCFUNCA n stc sym lnk lnk* Type: proc

    Call complex function through procedure pointer.

    Attributes: spec

  434. CVFUNCA n stc sym lnk sym lnk* Type: proc

    Attributes: spec

  435. CDFUNC n sym lnk* Type: proc

    Attributes: spec dcmplx

  436. CDFUNCA n stc lnk lnk* Type: proc

    Attributes: spec dcmplx

  437. PCDFUNCA n stc sym lnk lnk* Type: proc

    Call double complex function through procedure pointer.

    Attributes: spec dcmplx

  438. CDVFUNCA n stc sym lnk sym lnk* Type: proc

    Attributes: spec dcmplx

  439. LFUNC n sym lnk* Type: proc

    Attributes: spec

  440. LFUNCA n stc lnk lnk* Type: proc

    Attributes: spec

  441. PLFUNCA n stc sym lnk lnk* Type: proc

    Call logical function through procedure pointer.

    Attributes: spec

  442. LVFUNCA n stc sym lnk sym lnk* Type: proc

    Attributes: spec

  443. PFUNC n sym lnk* Type: proc

    Call function which returns a pointer.

    Attributes: spec

  444. PFUNCA n stc lnk lnk* Type: proc

    Call function which returns a pointer.

    Attributes: spec

  445. PPFUNCA n stc sym lnk lnk* Type: proc

    Call function which returns a pointer through a procedure pointer.

    Attributes: spec

  446. PVFUNCA n stc sym lnk sym lnk* Type: proc

    Call function which returns a pointer.

    Attributes: spec

  447. PFUNC n lnk lnk* Type: proc

    Call function which returns a pointer.

    Attributes: spec

  448. SFUNC n lnk lnk* Type: proc

    Call function which returns a structure/union. The second link is the address (a LOC ilm) of the temporary which is used to return the result of the function.

    Attributes: spec

  449. SFUNC n sym lnk* Type: proc

    Call function that has the bind(C) attribute and returns a structure/union. The first link is the address (a LOC ilm) of the temporary which is used to return the result of the function.

    Attributes: spec

  450. CHFUNC n sym lnk lnk* Type: proc

    Call function which returns Fortran character. The first link is the address (a BASE ilm) of the temporary which is used to return the result of the function.

    Attributes: spec trm

  451. CHFUNCA n stc lnk lnk lnk* Type: proc

    Call function which returns Fortran character. The first link is the address (a BASE ilm) of the temporary which is used to return the result of the function.

    Attributes: spec trm

  452. PCHFUNCA n stc sym lnk lnk lnk* Type: proc

    Call function which returns Fortran character through a procedure pointer. The first link is the address (a BASE ilm) of the temporary which is used to return the result of the function.

    Attributes: spec trm

  453. CHVFUNCA n stc sym lnk sym lnk lnk* Type: proc

    Call function which returns Fortran character. The first link is the address (a BASE ilm) of the temporary which is used to return the result of the function.

    Attributes: spec trm

  454. NCHFUNC n sym lnk lnk* Type: proc

    Call function which returns ncharacter.

    Attributes: spec trm

  455. NCHFUNCA n stc lnk lnk lnk* Type: proc

    Call function which returns ncharacter.

    Attributes: spec trm

  456. PNCHFUNCA n stc lnk lnk lnk* Type: proc

    Call function which returns ncharacter through a procedure pointer.

    Attributes: spec trm

  457. NCHVFUNCA n stc sym lnk sym lnk lnk* Type: proc

    Call function which returns ncharacter.

    Attributes: spec trm

  458. ARG lnk lnk stc stc Type: misc

    Special purpose ilm for arguments which require special processing. For example, an argument which is a structure or union would use this ilm (the function ilm locates the ARG ilm).

    lnk1 - BASE ilm of temporary (if needed)
    lnk2 - ilm of argument
    stc - dtype of dummy argument
    stc - dtype of actual argument

    Attributes: spec

  459. FARG lnk stc Type: misc

    Special purpose ilm for argument passing, to keep the data type of the actual argument around

    lnk - ilm of argument
    stc - dtype of actual argument

    Attributes: spec

  460. PARG lnk lnk Type: misc

    Special purpose ilm for passing arguments with the F90 pointer attribute.

    lnk1 - ilm representing the address of the argument’s pointer
    lnk2 - BASE ilm of the object with the pointer attribute.

    Attributes: spec

  461. FARGF lnk stc stc Type: misc

    Same as FARG with the addition of a flag denoting certain context.

    lnk - ilm of argument
    stc1 - dtype of actual argument
    stc2 - a bit vector:
    0x0 - no special case (therefore, same as FARG)
    0x1 - corresponding formal is CLASS(#)

    Attributes: spec

  462. FATTR lnk stc stc Type: misc

    ILM which passes up the address of the called procedure and specifies certain attributes, such as stdcall, about the call.

    lnk1 - address of the procedure
    stc1 - attributes (bit vector):
    0x0001 - stdcall
    stc2 - dtype record (TY_PFUNC/TY_FUNC) of the procedure

    Attributes: spec

  463. ENTRY sym Type: misc

    This ILM is put out as the entry point for each entry point defined in this file is processed (except for the main entry in Fortran). 'sym’ is a symbol table pointer to the function name.

    Attributes: spec trm

  464. LABEL sym Type: misc

    Marks the position of a user defined or compiler created label within the current ILM block. ‘sym’ is a symbol table pointer to a label.

    Attributes: spec trm

  465. ESTMT lnk Type: misc

    Expression statement – generated when the value of an expression (other than an assignment or VFUNC) is not referenced (i.e., the value may be discarded). However, the functions appearing in the expression must still be evaluated (because of side effects).

    Attributes: spec trm

RET

Written for a RETURN statement which does not return a value.

Attributes: spec trm

  1. RETV lnk Type: misc

    Return value from function.

    Attributes: spec trm

  2. ARET lnk Type: misc

    Alternate return. ‘lnk’ points to expression defining the alternate return number.

    Attributes: spec trm

  3. RETAUTO sym Type: misc

    Return from function after freeing automatic objects. 'sym’ is the symbol of the block containing the return.

    Attributes: spec trm

  4. RETVAUTO lnk sym Type: misc

    Return value from function after freeing automatic objects. 'sym’ is the symbol of the block containing the return.

    Attributes: spec trm

NOP

Attributes: spec trm

  1. ASM sym Type: misc

    asm ( <string> ); ‘sym’ is the symbol table pointer of the ST_STRING representing <string>.

    Attributes: spec trm

  2. GASM sym lnk lnk lnk Type: misc

    asm ( <string> : <outputs> : <inputs> : <clobbers> ); 'sym’ is the symbol table pointer of the ST_STRING representing <string>. ‘lnk1’ is GASMLNK of list of outputs ‘lnk2’ is GASMLNK of list of inputs ‘lnk3’ is GASMLNK of list of clobber descriptors

    Attributes: spec trm

  3. GASMLNK sym1 lnk lnk sym2 stc3 Type: misc

    'sym1’ is the symbol table pointer of the ST_STRING representing the descriptor (‘=r’ for outputs, ‘r’ for inputs, ‘r2’ for clobbers) ‘lnk1’ is the link to the output or input expression ‘lnk2’ is the link to the next GASMLNK 'sym2’ is the symbol table pointer of the identifier representing the constraint name for an input or output item. It is 0 if no constraint name applies to this item. ‘stc3’ is the dtype of the item.

    Attributes: spec trm

END

End of function – written when the final ‘}’ is processed.

Attributes: spec trm

END

End of subroutine or main program - last ILM in ilm file seen by Expander.

Attributes: spec trm

  1. ENDF lnk Type: misc

    End of function subprogram - lnk points to load of the compiler created variable for the function return value.

    Attributes: spec trm

  2. DOBEG lnk sym1 sym2 Type: misc

    DO-loop begin. May be used, as an optimization, for certain for loops. ILM’s to store the initial DO value into the DO index variable must precede the DOBEG ILM, and a LABEL ILM for the loop-top label must follow it.

    lnk - link to expression computing the loop count:

    INT((e2 - e1 + e3) / e3)

    sym1 - symbol table pointer to zero trip label.
    sym2 - symbol table pointer to DO count temporary.

    Attributes: spec trm

  3. DOBEGNZ lnk sym1 sym2 lnk Type: misc

    DO-loop begin. Used as an optimization, for certain for array assignment compiler generated forall loops. ILM’s to store the initial DO value into the DO index variable must precede the DOBEGNZ ILM, and a LABEL ILM for the loop-top label must follow it.

    lnk - link to expression computing the loop count:

    INT((e2 - e1 + e3) / e3)

    sym1 - symbol table pointer to zero trip label.
    sym2 - symbol table pointer to DO count temporary.
    lnk - link to expression to check if array is zero-size

    Attributes: spec trm

  4. DOENDNZ sym1 sym2 Type: misc

    DO-loop end. Always matches a DOBEGNZ ILM.

    sym1 - symbol table pointer to loop top label.
    sym2 - symbol table pointer to DO count variable.
    This item generates the following for the loop end condtion:
    v2 <– v2 - 1
    if ( v2 > 0 ) goto v1

    Attributes: spec trm

  5. DOEND sym1 sym2 Type: misc

    DO-loop end. Always matches a DOBEG ILM.

    sym1 - symbol table pointer to loop top label.
    sym2 - symbol table pointer to DO count variable.
    This item generates the following for the loop end condtion:
    v2 <– v2 - 1
    if ( v2 > 0 ) goto v1

    Attributes: spec trm

  6. BYVAL lnk stc Type: misc

    General ILM to support passing arguments by value.

    lnk - link to argument being passed by value
    stc - its data type

    Attributes: spec

  7. DPVAL lnk Type: misc

    This ILM is generated when the %VAL operator is used. ‘lnk’ is a pointer to a 32-bit valued expression.

    Attributes: spec

  8. DPREF lnk Type: misc

    This ILM is generated when the %REF operator is used.

    Attributes: spec

  9. DPSCON stc Type: misc

    Define parameter which is a short integer constant passed by value. This ILM is included for the convenience of semant when generating code for io statements.

    Attributes: spec

DPNULL

Define a parameter which is a ‘null pointer’, i.e. the value 0 is to be passed, and an additional argument for the character length (which equals 0) is to be added to the end of the argument list.

Attributes: spec

  1. CMSIZE sym Type: misc

    Get the size of the common block (sym1).

    Attributes: spec

  2. MAD24 lnk lnk lnk Type: arth

    Attributes: spec

    IMUL t1 p1 p2
    IADD r t1 p3
    
  3. UMAD24 lnk lnk lnk Type: arth

    Attributes: spec

    IMUL t1 p1 p2
    UIADD r t1 p3
    
  4. MUL24 lnk lnk Type: arth

    Attributes: spec

    IMUL r p1 p2
    
  5. UMUL24 lnk lnk Type: arth

    Attributes: spec

    IMUL r p1 p2
    
  6. HADD lnk lnk Type: arth

    hadd(x,y), where x and y are char or short, and computed as (x+y) >> 1

    ICON t1 =i'1
    IADD t2 p1 p2
    RSHIFT r t2 t1
    
  7. UHADD lnk lnk Type: arth

    hadd(x,y), where x and y are unsigned char or unsigned short, and computed as (x+y) >> 1

    ICON t1 =i'1
    UIADD t2 p1 p2
    URSHIFT r t2 t1
    
  8. IHADD lnk lnk Type: arth

    hadd(x,y), where x and y are int, and computed as (x>>1) + (y>>1) + (x&y)&1

    ICON t1 =i'1
    ARSHIFT t2 p1 t1
    ARSHIFT t3 p2 t1
    AND t4 p1 p2
    AND t4 t4 t1
    IADD t5 t2 t3
    IADD r t5 t4
    
  9. UIHADD lnk lnk Type: arth

    hadd(x,y), where x and y are unsigned, and computed as (x>>1) + (y>>1) + (x&y)&1

    ICON t1 =i'1
    URSHIFT t2 p1 t1
    URSHIFT t3 p2 t1
    AND t4 p1 p2
    AND t4 t4 t1
    UIADD t5 t2 t3
    UIADD r t5 t4
    
  10. KHADD lnk lnk Type: arth

    hadd(x,y), where x and y are long, and computed as (x>>1) + (y>>1) + (x&y)&1

    ICON t1 =i'1
    KARSHIFT t2 p1 t1
    KARSHIFT t3 p2 t1
    IKMV t1 t1
    KAND t4 p1 p2
    KAND t4 t4 t1
    KADD t5 t2 t3
    KADD r t5 t4
    
  11. UKHADD lnk lnk Type: arth

    hadd(x,y), where x and y are unsigned long, and computed as (x>>1) + (y>>1) + (x&y)&1

    ICON t1 =i'1
    KURSHIFT t2 p1 t1
    KURSHIFT t3 p2 t1
    IKMV t1 t1
    KAND t4 p1 p2
    KAND t4 t4 t1
    UKADD t5 t2 t3
    UKADD r t5 t4
    
  12. RHADD lnk lnk Type: arth

    rhadd(x,y), where x and y are char or short, and computed as (x+y+1) >> 1

    ICON t1 =i'1
    IADD t2 p1 p2
    IADD t2 t2 t1
    RSHIFT r t2 t1
    
  13. URHADD lnk lnk Type: arth

    rhadd(x,y), where x and y are unsigned char or unsigned short, and computed as (x+y+1) >> 1

    ICON t1 =i'1
    UIADD t2 p1 p2
    UIADD t2 t2 t1
    URSHIFT r t2 t1
    
  14. IRHADD lnk lnk Type: arth

    rhadd(x,y), where x and y are int, and computed as (x>>1) + (y>>1) + (x|y)&1

    ICON t1 =i'1
    ARSHIFT t2 p1 t1
    ARSHIFT t3 p2 t1
    OR t4 p1 p2
    AND t4 t4 t1
    IADD t5 t2 t3
    IADD r t5 t4
    
  15. UIRHADD lnk lnk Type: arth

    rhadd(x,y), where x and y are unsigned, and computed as (x>>1) + (y>>1) + (x|y)&1

    ICON t1 =i'1
    URSHIFT t2 p1 t1
    URSHIFT t3 p2 t1
    OR t4 p1 p2
    AND t4 t4 t1
    UIADD t5 t2 t3
    UIADD r t5 t4
    
  16. KRHADD lnk lnk Type: arth

    rhadd(x,y), where x and y are long, and computed as (x>>1) + (y>>1) + (x|y)&1

    ICON t1 =i'1
    KARSHIFT t2 p1 t1
    KARSHIFT t3 p2 t1
    IKMV t1 t1
    KOR t4 p1 p2
    KAND t4 t4 t1
    KADD t5 t2 t3
    KADD r t5 t4
    
  17. UKRHADD lnk lnk Type: arth

    rhadd(x,y), where x and y are unsigned long, and computed as (x>>1) + (y>>1) + (x|y)&1

    ICON t1 =i'1
    KURSHIFT t2 p1 t1
    KURSHIFT t3 p2 t1
    IKMV t1 t1
    KOR t4 p1 p2
    KAND t4 t4 t1
    UKADD t5 t2 t3
    UKADD r t5 t4
    
  18. VECTFUNC n lnk stc lnk* Type: proc

    Call function which returns a vector n - the number of arguments. lnk1 - address of the function being called stc - the function’s vector data type. lnk2 - address (a LOC ilm) of the temporary which is used to return the result of the function. lnk3 … - user arguments

    Attributes: spec

  19. VSCALAR lnk stc2 stc3 Type: ref

    Represents the address of a scalar component of a vector lnk - base address of vector stc2 - which component [0, n-1], where n is the number of components in the vector stc3 - element dtype

    Attributes: spec

  20. VSEL lnk sym stc Type: ref

    Represents the address of selecting multiple components from a vector lnk - base address of vector sym - component mask (int vector constant) stc - result vector data type of the components

    Attributes: spec

  21. VCON sym Type: cons

    VCON r v1
    
  22. VLD lnk stc Type: load

    Vector load.

    lnk - its address
    stc - its vector data type

    Attributes: spec

  23. VLDU lnk stc Type: load

    Vector load (unaligned)

    lnk - its address
    stc - its vector data type

    Attributes: spec

  24. VNEG lnk stc Type: arth

    VNEG r p1 v2
    
  25. VADD lnk lnk stc Type: arth

    VADD r p1 p2 v3
    
  26. VSUB lnk lnk stc Type: arth

    VSUB r p1 p2 v3
    
  27. VMUL lnk lnk stc Type: arth

    VMUL r p1 p2 v3
    
  28. VDIV lnk lnk stc Type: arth

    VDIV r p1 p2 v3
    
  29. VDIVZ lnk lnk stc Type: arth

    Vector divide where divide by zero does not fault.

    VDIVZ r p1 p2 v3
    
  30. VMOD lnk lnk stc Type: arth

    VMOD r p1 p2 v3
    
  31. VMODZ lnk lnk stc Type: arth

    Vector remainder where divide by zero does not fault.

    VMODZ r p1 p2 v3
    
  32. VCVTV lnk stc stc Type: arth

    Vector convert from vector

    VCVTV r p1 v2 v3
    
  33. VCVTS lnk stc Type: arth

    Vector convert from scalar

    VCVTS r p1 v2
    
  34. VNOT lnk stc Type: arth

    VNOT r p1 v2
    
  35. VAND lnk lnk stc Type: arth

    VAND r p1 p2 v3
    
  36. VOR lnk lnk stc Type: arth

    VOR r p1 p2 v3
    
  37. VXOR lnk lnk stc Type: arth

    VXOR r p1 p2 v3
    
  38. VLSHIFTV lnk lnk stc Type: arth

    Vector >> by scalar

    VLSHIFTV r p1 p2 v3
    
  39. VRSHIFTV lnk lnk stc Type: arth

    Vector >> by vector

    VRSHIFTV r p1 p2 v3
    
  40. VLSHIFTS lnk lnk stc Type: arth

    Vector << by scalar

    VLSHIFTS r p1 p2 v3
    
  41. VRSHIFTS lnk lnk stc Type: arth

    Vector >> by scalar

    VRSHIFTS r p1 p2 v3
    
  42. VCMP lnk lnk stc Type: arth

    Attributes: spec

  43. VST lnk lnk stc Type: store

    Vector store. lnk1 - destination lnk2 - source stc - its vector data type

    Attributes: spec trm

  44. VSTU lnk lnk stc Type: store

    Vector store (unaligned) lnk1 - destination lnk2 - source stc - its vector data type

    Attributes: spec trm

  45. ADJARR sym sym sym Type: misc

    This ILM is emitted after every “entry” if the entry has adjustable array arguments. This ILM is used control any additional setup necessary for the array bounds information of the entry’s adjustable arrays. This ILM will do nothing if the this is for the primary entry and code has already been emitted for its adjustable arrays. 'sym1’ entry symbol 'sym2’ label of the additional code 'sym3’ label to which the code branches (returns)

    Attributes: spec trm

  46. VFENTER sym Type: misc

    Enter a “function” which computes the value of an expression in a variable format item (<expr>). This ILM is “closed” by a VFRET.

    Attributes: spec trm

  47. VFRET lnk Type: misc

    Return the value of an expression in a variable format item (<expr>).

    Attributes: spec trm

  48. PRAGMA stc1 stc2 stc3 Type: misc

    pragma/directive ILM

  49. FLOATK lnk Type: arth

    Convert long long to real number (REAL and FLOAT intrinsics).

    Attributes: i8

    FLOATK r p1
    
  50. FLOATUK lnk Type: arth

    Convert unsigned long long to real

    Attributes: spec i8

    FLOATK r t1
    
  51. DFLOATK lnk Type: arth

    Convert long long to double precision (DFLOAT intrinsic).

    Attributes: i8

    DFLOATK r p1
    
  52. DFLOATUK lnk Type: arth

    Convert unsigned long long integer to double precision (DFLOAT intrinsic).

    Attributes: spec i8

    DFLOATUK r p1
    
  53. KNEG lnk Type: arth

    Integer negation.

    Attributes: i8

    KNEG r p1
    
  54. UKNEG lnk Type: arth

    Integer negation.

    Attributes: i8

    UKNEG r p1
    
  55. KADD lnk lnk Type: arth

    Attributes: i8

    KADD r p1 p2
    
  56. UKADD lnk lnk Type: arth

    Attributes: i8

    UKADD kr p1 p2
    
  57. KSUB lnk lnk Type: arth

    Attributes: i8

    KSUB r p1 p2
    
  58. UKSUB lnk lnk Type: arth

    Attributes: i8

    UKSUB kr p1 p2
    
  59. KMUL lnk lnk Type: arth

    Attributes: i8

    KMUL r p1 p2
    
  60. UKMUL lnk lnk Type: arth

    Attributes: i8

    UKMUL kr p1 p2
    
  61. KDIV lnk lnk Type: arth

    Attributes: i8

    KDIV r p1 p2
    
  62. UKDIV lnk lnk Type: arth

    Attributes: i8

    UKDIV kr p1 p2
    
  63. IDIVZ lnk lnk Type: arth

    Signed integer divide where divide by zero does not fault.

    IDIVZ r p1 p2
    
  64. UIDIVZ lnk lnk Type: arth

    Unsigned integer divide where divide by zero does not fault.

    UIDIVZ r p1 p2
    
  65. KDIVZ lnk lnk Type: arth

    Signed integer64 divide where divide by zero does not fault.

    Attributes: i8

    KDIVZ r p1 p2
    
  66. UKDIVZ lnk lnk Type: arth

    Unsigned integer64 divide where divide by zero does not fault.

    Attributes: i8

    UKDIVZ kr p1 p2
    
  67. KTOI lnk lnk Type: intr

    Exponentiation - integer to an integer power.

    Attributes: i8

    KPOWI r p1 p2
    
  68. KTOK lnk lnk Type: intr

    Exponentiation - integer to an integer power.

    Attributes: i8

    KPOWK r p1 p2
    
  69. RTOK lnk lnk Type: intr

    FPOWK r p1 p2
    
  70. DTOK lnk lnk Type: intr

    DPOWK r p1 p2
    
  71. CTOK lnk lnk Type: intr

    Attributes: spec

  72. CDTOK lnk lnk Type: intr

    Attributes: spec dcmplx

  73. KCMP lnk lnk Type: arth

    Attributes: spec

  74. UKCMP lnk lnk Type: arth

    Attributes: spec i8

  75. KABS lnk Type: arth

    Attributes: i8

    KABS r p1
    
  76. KFIX lnk Type: arth

    Convert real number to integer*8 (INT and IFIX intrinsics).

    Attributes: i8

    FIXK r p1
    
  77. UKFIX lnk Type: arth

    Convert real number to integer*8 (INT and IFIX intrinsics).

    Attributes: spec i8

    FIXUK r p1
    
  78. KDFIX lnk Type: arth

    Convert double precision floating point number to integer*8.

    Attributes: i8

    DFIXK r p1
    
  79. UKDFIX lnk Type: arth

    Convert double precision floating point number to integer*8.

    Attributes: spec i8

    DFIXUK r p1
    
  80. ITOI8 lnk Type: arth

    Convert int to long (long long) Convert integer to integer*8

    Attributes: i8

    IKMV kr p1
    
  81. ITOUI8 lnk Type: arth

    Convert long to unsigned long (unsigned long long)

    Attributes: i8

    IKMV kr p1
    
  82. UITOI8 lnk Type: arth

    Convert unsigned int to long (long long)

    Attributes: i8

    UIKMV kr p1
    
  83. UITOUI8 lnk Type: arth

    Convert unsigned int to unsigned long (unsigned long long)

    Attributes: i8

    UIKMV kr p1
    
  84. I8TOI lnk Type: arth

    Convert long long to long Convert integer*8 to integer*4

    KIMV r p1
    
  85. I8TOUI lnk Type: arth

    Convert long long to long

    KIMV r p1
    
  86. UI8TOI lnk Type: arth

    Convert long long to long

    KIMV r p1
    
  87. UI8TOUI lnk Type: arth

    Convert long long to long

    KIMV r p1
    
  88. KNINT lnk Type: intr

    NINT intrinsic (converts real to integer*8).

    Attributes: i8

    NULL t1 iv0
    DASP t1 p1 sp(0) t1
    QJSR t2 =e'%l%__mth_i_knint t1
    DFRKR r t2 krret
    
  89. KDNINT lnk Type: intr

    KIDNINT intrinsic (converts double to integer).

    Attributes: i8

    NULL t1 iv0
    DADP t1 p1 dp(0) t1
    QJSR t2 =e'%l%__mth_i_kidnnt t1
    DFRKR r t2 krret
    
  90. KMAX lnk lnk Type: arth

    Attributes: i8

    KMAX r p1 p2
    
  91. UKMAX lnk lnk Type: arth

    Attributes: i8

    UKMAX r p1 p2
    
  92. KMIN lnk lnk Type: arth

    Attributes: i8

    KMIN r p1 p2
    
  93. UKMIN lnk lnk Type: arth

    Attributes: i8

    UKMIN r p1 p2
    
  94. KDIM lnk lnk Type: intr

    Attributes: i8

    NULL t1 iv0
    DAKR t1 p2 dr(1) t1
    DAKR t2 p1 dr(0) t1
    QJSR t2 =e'ftn_i_kidim t2
    DFRKR r t2 krret
    
  95. KMOD lnk lnk Type: arth

    Integer remainder (MOD intrinsic).

    Attributes: i8

    KMOD r p1 p2
    
  96. UKMOD lnk lnk Type: arth

    Integer remainder (MOD intrinsic).

    Attributes: i8

    KUMOD r p1 p2
    
  97. MODZ lnk lnk Type: arth

    Integer remainder where divide by zero does not fault.

    MODZ r p1 p2
    

    Integer remainder (MODZ intrinsic).

    MODZ r p1 p2
    
  98. UIMODZ lnk lnk Type: arth

    Unsigned integer mod where divide by zero does not fault.

    UIMODZ r p1 p2
    
  99. KMODZ lnk lnk Type: arth

    Integer64 remainder where divide by zero does not fault.

    Attributes: i8

    KMODZ r p1 p2
    
  100. UKMODZ lnk lnk Type: arth

    Unsigned integer64 remainder where divide by zero does not fault.

    Attributes: i8

    KUMODZ r p1 p2
    
  101. KSIGN lnk lnk Type: arth

    Attributes: i8

    KCMPZ t1 p2 lt
    KABS t2 p1
    KNEG t3 t2
    KSELECT r t1 t2 t3
    
  102. KAND lnk lnk Type: arth

    Bitwise logical and of two 64 bit values (AND intrinsic).

    Attributes: i8

    KAND r p1 p2
    
  103. KOR lnk lnk Type: arth

    Bitwise logical or of two 64 bit values (OR intrinsic).

    Attributes: i8

    KOR r p1 p2
    
  104. KXOR lnk lnk Type: arth

    Bitwise exclusive or of two 64 bit values (^ operator / EOR intrinsic).

    Attributes: i8

    KXOR r p1 p2
    
  105. KNOT lnk Type: arth

    Bitwise negation of 64 bit signed value (NOT intrinsic).

    Attributes: i8

    KNOT r p1
    
  106. UKNOT lnk Type: arth

    Bitwise negation of 64 bit signed value (NOT intrinsic).

    Attributes: i8

    UKNOT r p1
    
  107. KBITS lnk lnk lnk Type: arth

    IBITS(p1, p2, p3) - extract p3 bits beginning at p2 from p1.

    r = p3 != 0 ? (p1 >> p2) & (-1 >> (64 - p3)) : 0

    Attributes: i8

    KIMV t1 p2
    KARSHIFT t1 p1 t1
    KCON t2 =ll'-1
    KIMV t3 p3
    ICON t4 =i'64
    ISUB t4 t4 t3
    KURSHIFT t5 t2 t4
    KAND t6 t1 t5
    KCMPZ t7 p3 eq
    KSELECT r t7 t6 p3
    
  108. KBSET lnk lnk Type: arth

    IBSET(p1, p2) - set bit p2 of p1 to 1.

    r = p1 | (1 << p2)

    Attributes: i8

    KCON t1 =ll'1
    KIMV t2 p2
    KLSHIFT t2 t1 t2
    KOR r p1 t2
    
  109. KBTEST lnk lnk Type: arth

    BTEST(p1, p2) - .TRUE. if bit p2 of p1 is 1.

    r = (p1 & (1 << p2)) != 0

    Attributes: i8

    KCON t1 =ll'1
    KIMV t2 p2
    KLSHIFT t2 t1 t2
    KAND t3 p1 t2
    KCMPZ t4 t3 ne
    IKMV r t4
    
  110. KBCLR lnk lnk Type: arth

    IBLCR(p1, p2) - clear bit p2 of p1.

    r = p1 & ~(1 << p2)

    Attributes: i8

    KCON t1 =ll'1
    KIMV t2 p2
    KLSHIFT t2 t1 t2
    KNOT t3 t2
    KAND r p1 t3
    
  111. KSHFTC lnk lnk lnk Type: intr

    ISHFTC(p1, p2, p3) - circularly shift the rightmost p3 bits of p1 by p2.

    Attributes: i8

    NULL t1 iv0
    KIMV t2 p3
    DAIR t1 t2 dr(2) t1
    KIMV t2 p2
    DAIR t2 t2 dr(1) t1
    DAKR t3 p1 dr(0) t2
    QJSR t1 =e'%l%ftn_i_kishftc t3
    DFRKR r t1 krret
    
  112. KULSHIFT lnk lnk Type: arth

    Left shift operator (<<) - first operand is 64 bit unsigned integer value and second is a positive 64-bit integer.

    Attributes: i8

    KIMV t1 p2
    KLSHIFT r p1 t1
    
  113. KULSHIFT lnk lnk Type: arth

    Left shift operator (<<) - first operand is 64 bit unsigned integer value and second is a 32-bit positive integer.

    Attributes: i8

    KLSHIFT r p1 p2
    
  114. KURSHIFT lnk lnk Type: arth

    Right shift operator (>>). First operand is 64 bit unsigned integer value and second is assumed to be a positive 64-bit integer.

    Attributes: i8

    KIMV t1 p2
    KURSHIFT r p1 t1
    
  115. KURSHIFT lnk lnk Type: arth

    Right shift operator (>>). First operand is 64 bit unsigned integer value and second is assumed to be a positive 32-bit integer.

    Attributes: i8

    KURSHIFT r p1 p2
    
  116. KAIF lnk sym1 sym2 sym3 Type: branch

    Attributes: spec trm

    ICJMPZ null p1 le v2
    ICJMPZ null p1 eq v3
    ICJMPZ null p1 gt v4
    
  117. KLD lnk Type: load

    Attributes: spec i8

  118. KLLD lnk Type: load

    Load logical value.

    Attributes: spec i8

  119. KST lnk lnk Type: store

    Attributes: spec trm

  120. KLST lnk lnk Type: store

    Attributes: spec trm

  121. KFUNC n sym lnk* Type: proc

    Attributes: spec trm i8

  122. KFUNCA n stc lnk lnk* Type: proc

    Attributes: spec trm i8

  123. PKFUNCA n stc sym lnk lnk* Type: proc

    Call a function which returns an integer*8 through a procedure pointer.

    Attributes: spec trm i8

  124. KVFUNCA n stc sym lnk sym lnk* Type: proc

    Attributes: spec trm i8

  125. KFUNC n lnk lnk* Type: proc

    Attributes: spec i8

  126. KCON sym Type: cons

    Attributes: spec i8

  127. KISHFT lnk lnk Type: intr

    ISHFT intrinsic - first operand is 64 bit value and second is positive or negative integer shift count. If the shift count <= -64 or >=64, the result is 0.

    Attributes: i8

    KISHFT r p1 p2
    
  128. DPREF8 lnk Type: misc

    This ILM is generated when integer*8/logical*8 arguments are passed in certains contexts and where the address needs to be adjusted by expand.

    Attributes: spec

  129. LNOT8 lnk Type: arth

    Logical negation. The link must be to an expression of type LOGICAL; depends on internal representation of logical values (VAX or UNIX)

    Attributes: spec i8

  130. LNOP8 lnk Type: arth

    Logical noop. Used by semant when space must be reserved for a potential LNOT ILM. ‘lnk’ points to a logical expression.

    Attributes: i8 spec

    MVIR r p1 iv-1
    
  131. LAND8 lnk lnk Type: arth

    Logical .AND. operation.

    Attributes: i8

    KAND r p1 p2
    
  132. LOR8 lnk lnk Type: arth

    Logical .OR. operation.

    Attributes: i8

    KOR r p1 p2
    
  133. LEQV8 lnk lnk Type: arth

    Logical .EQV. operation.

    Attributes: i8

    KCMP t1 p1 p2 eq
    IKMV r t1
    
  134. LNEQV8 lnk lnk Type: arth

    Logical .NEQV. operation.

    Attributes: i8

    KXOR r p1 p2
    
  135. EQ8 lnk Type: arth

    Generate true if compare is equal (lnk locates a compare FLM)

    Attributes: spec i8

  136. NE8 lnk Type: arth

    Generate true if compare is not equal

    Attributes: spec i8

  137. LT8 lnk Type: arth

    Generate true if compare is less than

    Attributes: spec i8

  138. GE8 lnk Type: arth

    Generate true if compare is greater than or equal to

    Attributes: spec i8

  139. LE8 lnk Type: arth

    Generate true if compare is less than or equal to

    Attributes: spec i8

  140. GT8 lnk Type: arth

    Generate true if compare is greater than

    Attributes: spec i8

  141. K2D lnk Type: arth

    Cast a 64-bit integer to a 64-bit unsigned integer (dword).

    MVKR r p1 iv-1
    
  142. K2R lnk Type: arth

    Cast a 64-bit integer to a single precision real.

    KR2SP r p1
    
  143. K2I lnk Type: arth

    Cast an integer to a 64-bit integer.

    KIMV r p1
    
  144. D2K lnk Type: arth

    Cast a 64-bit unsigned integer (dword) to a 64-bit integer.

    Attributes: i8

    MVKR r p1 iv-1
    
  145. R2K lnk Type: arth

    Cast a single precision real to a 64-bit integer.

    Attributes: i8

    SP2IR r rp1
    
  146. I2K lnk Type: arth

    Cast an integer to a 64-bit integer.

    Attributes: i8

    UIKMV r p1
    
  147. KEQV lnk lnk Type: arth

    Attributes: i8 Bitwise complement of the exclusive or of two 32 bit values

    KXOR t1 p1 p2
    KNOT r t1
    
  148. UKLD lnk Type: load

    Load unsigned double integer

    Attributes: spec i8

  149. UKST lnk lnk Type: store

    Attributes: spec i8 trm

  150. KAST lnk lnk Type: store

    Store address scalar. This ILM is used for an ASSIGN statement where varref is integer*8 ‘lnk’ points to an ACON ILM.

    Attributes: spec trm

  151. KLEN lnk Type: fstr

    Length of a character expression, returned as integer*8.

    Attributes: spec i8

  152. KINDEX lnk lnk Type: fstr

    KINDEX intrinsic (inputs are two character strings and result is an integer*8).

    Attributes: spec i8

  153. UI2K lnk Type: arth

    Cast an unsigned integer to a 64-bit integer.

    Attributes: i8

    UIKMV r p1
    
  154. BLEADZ lnk Type: intr

    8-bit integer LEADZ intrinsic

    ILEADZI r p1 iv0
    
  155. SLEADZ lnk Type: intr

    16-bit integer LEADZ intrinsic

    ILEADZI r p1 iv1
    
  156. ILEADZ lnk Type: intr

    32-bit integer LEADZ intrinsic

    ILEADZ r p1
    
  157. KLEADZ lnk Type: intr

    64-bit integer LEADZ intrinsic

    Attributes: i8

    KLEADZ r p1
    
  158. BTRAILZ lnk Type: intr

    8-bit integer TRAILZ intrinsic

    ITRAILZI r p1 iv0
    
  159. STRAILZ lnk Type: intr

    16-bit integer TRAILZ intrinsic

    ITRAILZI r p1 iv1
    
  160. ITRAILZ lnk Type: intr

    32-bit integer TRAILZ intrinsic

    ITRAILZ r p1
    
  161. KTRAILZ lnk Type: intr

    64-bit integer TRAILZ intrinsic

    Attributes: i8

    KTRAILZ r p1
    
  162. BPOPCNT lnk Type: intr

    8-bit integer POPCNT intrinsic

    IPOPCNTI r p1 iv0
    
  163. SPOPCNT lnk Type: intr

    16-bit integer POPCNT intrinsic

    IPOPCNTI r p1 iv1
    
  164. IPOPCNT lnk Type: intr

    32-bit integer POPCNT intrinsic

    IPOPCNT r p1
    
  165. KPOPCNT lnk Type: intr

    64-bit integer POPCNT intrinsic

    Attributes: i8

    KPOPCNT r p1
    
  166. BPOPPAR lnk Type: intr

    8-bit integer POPPAR intrinsic

    IPOPPARI r p1 iv0
    
  167. SPOPPAR lnk Type: intr

    16-bit integer POPPAR intrinsic

    IPOPPARI r p1 iv1
    
  168. IPOPPAR lnk Type: intr

    32-bit integer POPPAR intrinsic

    IPOPPAR r p1
    
  169. KPOPPAR lnk Type: intr

    64-bit integer POPPAR intrinsic

    Attributes: i8

    KPOPPAR r p1
    
ENLAB

Marks the position of the first executable statement within a function: Compiler generated

Attributes: spec trm

  1. BMPSCOPE sym Type: SMP

    Begin scope parallel/clause region.

    sym - symbol table entry to scope ST_BLOCK for this region

    Attributes: spec trm

EMPSCOPE

End scope for parallel/clause region. Always matches a BMPSCOPE ilm.

Attributes: spec trm

  1. BPAR lnk Type: SMP

    Begin parallel region.

    lnk - link to logical expression (inhibit parallel flag):
    0 – parallel execution
    nonzero – serial execution

    Attributes: spec trm

  2. BPARD lnk Type: SMP

    Begin nested parallel region.

    lnk - link to logical expression (inhibit parallel flag):
    0 – parallel execution
    nonzero – serial execution

    Attributes: spec trm

EPARD

End nested parallel region. Always matches a BPARD ilm.

Attributes: spec trm

EPAR

End parallel region. Always matches a BPAR ilm.

Attributes: spec trm

BCS

Begin critical section.

Attributes: spec trm

ECS

End critical section. Always matches a BCS ilm.

Attributes: spec trm

BARRIER

Barrier; thread synchronization point.

Attributes: spec trm

NULL t1 iv0
QJSR null =e'_mp_barrier2 t1
  1. PDO sym stc Type: SMP

    Marks the block associated with label as a parallel loop. 'sym’ - symbol table pointer to the label. ‘stc’ - encoded schedule information: stc&0xff (stc>>8)&Oxff 0 static 0 chunk not specified 0 static 1 chunk is 1 0 static 1 chunk is ‘n’ 1 dynamic NA 2 guided NA 3 interleaved NA 4 runtime NA

    Attributes: spec trm

  2. BSECTIONS sym Type: SMP

    Begin SECTIONS directive.

    The BSECTIONS, SECTION, and ESECTIONS ILMs define a sections
    control structure. The sequence of ILMs and generated code
    appear as:
    BSECTIONS L1
    if (_mp_lcpu2() .ne. 0) goto L1
    <section 0>
    SECTION 1 L2 L1
    L1:
    if (_mp_lcpu2() .ne. mod(1, _mp_ncpus2()) goto L2
    <section 1>
    SECTION 2 L3 L2
    L2:
    if (_mp_lcpu2() .ne. mod(2, _mp_ncpus2()) goto L3
    <section 2>
    SECTION n LL Ln
    Ln:
    if (_mp_lcpu2() .ne. mod(n, _mp_ncpus2()) goto LL
    <section n>
    ESECTIONS LL
    LL:

    sym - symbol table pointer of the label of the next lexical section

    Attributes: spec trm

    NULL t1 iv0
    JSR t2 =e'_mp_lcpu2 t1
    DFRIR t2 t2 drret
    ICJMPZ null t2 ne v1
    
  3. SECTION lnk sym1 sym2 Type: SMP

    SECTION directive.

    lnk - ILM representing the current section number.
    sym1 - symbol table pointer of the label of the next lexical section
    sym2 - symbol table pointer of the label which labels this section.

    Attributes: spec trm

    NULL t1 iv0
    JSR t2 =e'_mp_lcpu2 t1
    DFRIR t2 t2 drret
    JSR t3 =e'_mp_ncpus2 t1
    DFRIR t3 t3 drret
    MOD t3 p1 t3
    ICJMP null t3 t2 ne v2
    
  4. LSECTION lnk sym1 sym2 Type: SMP

    LSECTION represent the end of last section for llvm target.

    lnk - ILM representing the current section number.
    sym1 - symbol table pointer of the label of the next lexical section
    sym2 - symbol table pointer of the label which labels this section.

    Attributes: spec trm

    NULL t1 iv0
    JSR t2 =e'_mp_lcpu2 t1
    DFRIR t2 t2 drret
    JSR t3 =e'_mp_ncpus2 t1
    DFRIR t3 t3 drret
    MOD t3 p1 t3
    ICJMP null t3 t2 ne v2
    
  5. ESECTIONS sym Type: SMP

    End SECTIONS directive; always matches a BSECTIONS.

    sym - symbol table pointer of the label of the end of the
    sections/endsections control structure.

    Attributes: spec trm

  6. MASTER sym Type: SMP

    Begin master section.

    sym - symbol table pointer to the end of section label.

    Attributes: spec trm

    NULL t1 iv0
    JSR t2 =e'_mp_lcpu2 t1
    DFRIR t2 t2 drret
    ICJMPZ null t2 ne v1
    
  7. EMASTER sym Type: SMP

    End master section. Always matches a MASTER ilm.

    sym - symbol table pointer to the end of section label.

    Attributes: spec trm

  8. SINGLE lnk sym Type: SMP

    Single directive.

    lnk - ILM representing the current single section number.
    sym - symbol table pointer to the end of section label.

    Attributes: spec trm

    NULL t1 iv0
    JSR t2 =e'_mp_lcpu2 t1
    DFRIR t2 t2 drret
    JSR t3 =e'_mp_ncpus2 t1
    DFRIR t3 t3 drret
    MOD t3 p1 t3
    ICJMP null t3 t2 ne v2
    
  9. ESINGLE sym Type: SMP

    End single section. Always matches a SINGLE ilm.

    sym - symbol table pointer to the end of section label.

    Attributes: spec trm

LCPU

Intrinsic for computing the cpu/thread number - only works within the context of BPAR/EPAR.

Attributes: spec

NULL t1 iv0
JSR t2 =e'_mp_lcpu t1
DFRIR r t2 drret

LCPU2

Attributes: spec Intrinsic for computing the cpu/thread number - more general version of LCPU.

LCPU3

Attributes: spec Intrinsic for computing the cpu/thread number to be used as the subscript of a threadprivate’s vector.

NCPUS

Attributes: spec Intrinsic for computing the number of cpus/threads - only works within the context of BPAR/EPAR.

NULL t1 iv0
JSR t2 =e'_mp_ncpus t1
DFRIR r t2 drret

NCPUS2

Attributes: spec Intrinsic for computing the number of cpus/threads - more general version of NCPUS.

  1. PRE_TLS_COPY sym Type: SMP

    Prepare the copyin for threadprivate in TLS. Thread that comes upon the parallel region must save tls-threaprivate address.

    sym - symbol of the tls-threadprivate that is to be copied.

    Attributes: spec trm

BCOPYIN

Begin a copyin block.

Attributes: spec trm

NULL t1 iv0
QJSR null =e'_mp_copyin_init t1
  1. COPYIN sym Type: SMP

    Copyin a threadprivate common block or member

    sym - symbol table entry of the object to be copied in; if it’s
    ST_CMBLK, the whole common block is copied in.

    Attributes: spec trm

  2. COPYIN_A sym lnk Type: SMP

    Copyin a threadprivate allocatable

    sym - symbol table entry of the allocatable object to be copied in.
    lnk - size of the allocatable

    Attributes: spec trm

  3. COPYIN_CL sym1 sym2 Type: SMP

    Copyin a threadprivate common block or member

    sym1 - symbol table entry of the object to be copied in; if it’s
    ST_CMBLK, the whole common block is copied in.
    sym2 - symbol table entry of the assignment operator routine

    Attributes: spec trm

ECOPYIN

End a copyin block.

Attributes: spec trm

NULL t1 iv0
QJSR null =e'_mp_copyin_term t1
  1. BCOPYPRIVATE lnk Type: SMP

    Begin a copyprivate block.

    lnk - thread number of the thread from which the value(s) are to be copied

    Attributes: spec trm

    NULL t1 iv0
    QJSR null =e'_mp_copypriv_init t1
    
  2. COPYPRIVATE_P lnk1 lnk2 Type: SMP

    Copyprivate (out) a private variables

    lnk1 - thread number of the thread from which the value(s) are to be copied
    lnk2 - link to the data item that is the object of the COPYPRIVATE

    Attributes: spec trm

  3. COPYPRIVATE_PA lnk1 lnk2 lnk3 Type: SMP

    Copyprivate (out) a private allocatable variable

    lnk1 - thread number of the thread from which the value(s) are to be copied
    lnk2 - link to the data item that is the object of the COPYPRIVATE
    lnk3 - size of the allocatable

    Attributes: spec trm

  4. COPYPRIVATE_CL_P lnk1 lnk2 sym Type: SMP

    Copyprivate (out) a C++ private variable of type class

    lnk1 - thread number of the thread from which the value(s) are to be copied
    lnk2 - link to the data item that is the object of the COPYPRIVATE
    sym - symbol table enttry of the assignment operator routine

    Attributes: spec trm

  5. COPYPRIVATE lnk sym Type: SMP

    Copyprivate (out) a threadprivate common block, common block member, or variable

    lnk - thread number of the thread from which the value(s) are to be copied
    sym - symbol table entry of the object to be copied out; if it’s
    ST_CMBLK, the whole common block is copied out.

    Attributes: spec trm

  6. COPYPRIVATE_CL lnk1 sym1 sym2 Type: SMP

    Copyprivate (out) a threadprivate C++ variable of type class

    lnk1 - thread number of the thread from which the value(s) are to be copied
    sym1 - symbol table entry of the class object to be copied out
    sym2 - link to the ilms loading the assignment operator routine

    Attributes: spec trm

  7. ECOPYPRIVATE lnk Type: SMP

    End a copyprivate block.

    lnk - thread number of the thread from which the value(s) are to be copied

    Attributes: spec trm

    NULL t1 iv0
    QJSR null =e'_mp_copypriv_term t1
    
FLUSH

Flush to memory

Attributes: spec trm

  1. P sym Type: SMP

    P(semaphore) - begin a critical section.

    sym - symbol table entry of a semaphore variable

    Attributes: spec trm

  2. V sym Type: SMP

    V(semaphore) - end a critical section.

    sym - symbol table entry of a semaphore variable

    Attributes: spec trm

  3. PREFETCH lnk stc Type: misc

    Cache prefetch.

    lnk1 - ILM link to an address
    stc2 - prefetch flag (for future use).

    Attributes: spec trm

    PREFETCH null p1
    
  4. BBND sym stc Type: misc

    BBND begins the ILMs of the assignments of the bounds of an adjustable array when it’s unknown by semant that the array is dummy or allocatable at the time the array is declared. This could occur when an adjustable array is declared before its appearance in an ENTRY statement. If the array is a dummy argument, the expander will skip the ensuing bounds assignments.

    sym - symbol table entry of an array with adjustable bounds
    stc - number of words in the ensuing block of ILMs
    representing the adjustable bounds.

    Attributes: spec trm

  5. FILE stc stc stc Type: misc

    FILE gives file information when inlining a file. First operand is the line number. Second operand is the FIH index of the current file (source or include file). Third operand is the global ILM index.

    Attributes: spec trm

  6. ALLOC lnk Type: arth

    Allocate memory for a C or C++ variable length array.

    ALLOC r p1
    
  7. DEALLOC lnk Type: misc

    Deallocate memory that was allocated by ALLOC.

    Attributes: spec trm

  8. ALLOCA lnk lnk sym stc Type: arth

    Use the alloca builtin to create stack space.

    lnk - number of elements
    lnk - size (units of bytes) of the base type
    sym - symbol table entry of the automatic array
    stc - flags: 0 - function level; 1 - from inliner

    Attributes: spec

  9. DEALLOCA lnk sym1 sym2 stc Type: misc

    Deallocate memory that was allocated by ALLOCA. Generally, this is a no-op, but if IM_ALLOCA reverts to using the heap, need to explicitly free. lnk - load of array’s pointer variable sym1 - symbol table entry of the automatic array sym2 - symbol table entry of the deallocation routine stc - flags: 0 - function level; 1 - from inliner

    Attributes: spec trm

  10. BPARN lnk lnk Type: SMP

    Begin parallel region with num_threads.

    lnk1 - link to logical expression (inhibit parallel flag):
    0 – parallel execution
    nonzero – serial execution
    lnk2 - link to the num_threads values

    Attributes: spec trm

  11. BPARA lnk lnk stc1 stc2 Type: SMP

    Begin parallel region with num_threads and proc_bind.

    lnk1 - link to logical expression (inhibit parallel flag):
    0 – parallel execution
    nonzero – serial execution
    lnk2 - link to the num_threads values
    stc1 - bit vector:
    0x01 - proc_bind is present
    0x02 - num_thread is presetnt
    0x04 - if is present
    stc2:
    0x0 - proc_bind - false
    0x02 - proc_bind - master
    0x03 - proc_bind - close
    0x04 - proc_bind - spread

    Attributes: spec trm

EPARN

End parallel region. Always matches a BPARN ilm.

Attributes: spec trm

  1. BLOCK sym Type: misc

    Beginning of a lexical block; sym is the symbol table pointer to the block symbol.

    Attributes: spec trm

  2. PCMP lnk lnk Type: arth

    Pointer comparison for Fortran.

    Attributes: spec

  3. PRAGMASYM n stc stc sym* Type: misc

    Handles a pragma with a list of symbols. First stc is the pragma identifier, 2nd stc is the scope.

    Attributes: spec trm

  4. PRAGMAEXPR n stc stc lnk stc* Type: misc

    Handles a pragma with an expression argument First stc is the pragma identifier, 2nd stc is the scope. Link is the expression. List of stc gives any other arguments.

    Attributes: spec trm

  5. PRAGMASYMEXPR n stc stc sym lnk* Type: misc

    Handles a pragma with a symbol and a number of expression arguments. First stc is the pragma identifier, 2nd stc is the scope. Sym is the symbol. Links point to the arguments.

    Attributes: spec trm

  6. PRAGMAGEN n stc stc stc* Type: misc

    Handles a pragma with no expression and no symbol arguments. First stc is the pragma identifier, 2nd stc is the scope. List of stc gives any other arguments.

    Attributes: spec trm

  7. MPLOOP sym sym sym sym sym stc stc Type: SMP

    Begin parallel do/loop sym - lower bound sym - upper bound sym - stride sym - chunk sym - plast stc - dtype of loop bound type stc - schedule type

    Attributes: spec trm

  8. MPDISTLOOP sym sym sym sym sym sym stc stc Type: SMP

    Begin parallel do/loop sym - lower bound sym - upper bound sym - stride sym - chunk sym - plast sym - upperD stc - dtype of loop bound type stc - schedule type

    Attributes: spec trm

BTASKDUP

Begin taskdup routine

Attributes: spec trm

ETASKDUP

End taskdup routine

Attributes: spec trm

  1. MPTASKLOOP sym sym sym sym stc Type: SMP

    Begin taskloop sym - lower bound sym - upper bound sym - stride sym - last iteration stc - dtype of loop bound type

    Attributes: spec trm

  2. TASKLASTPRIV sym Type: SMP

    taskloop lastprivate offset on task structure sym - offset constant

    Attributes: spec trm

  3. MPLOOPFINI stc stc Type: SMP

    Begin parallel do/loop stc - dtype of loop bound type stc - schedule type

    Attributes: spec trm

  4. MPSCHED sym sym sym sym stc Type: SMP

    Begin parallel do/loop schedule sym - lower bound sym - upper bound sym - stride sym - plast stc - dtype of loop bound type

    Attributes: spec trm

MPBORDERED

Begin KMPC ordered region

Attributes: spec trm

MPEORDERED

End KMPC ordered region

Attributes: spec trm

BPDO

Begin parallel do/loop

Attributes: spec trm

EPDO

End parallel do/loop Always matches a BPDO ilm.

Attributes: spec trm

  1. CANCEL sym stc lnk Type: SMP

    Cancel construct

    sym - symbol table pointer to the end of construct label.
    stc - bit vector:
    0x01 - parallel
    0x02 - loop
    0x03 - sections
    0x04 - taskgroup
    lnk - link to the logical expression in the if clause; if the clause
    is absent, this field is 1 - always call cancel.

    Attributes: spec trm

  2. CANCELPOINT sym stc Type: SMP

    Cancellation construct

    sym - symbol table pointer to the end of construct label.
    stc - bit vector:
    0x01 - parallel
    0x02 - loop
    0x03 - sections
    0x04 - taskgroup

    Attributes: spec trm

  3. TASKFIRSTPRIV sym sym Type: SMP

    Task firstprivate sym - symbol table pointer to the shared variable. sym - symbol table pointer to the private copy.

    Attributes: spec trm

  4. BTASK sym stc lnk lnk Type: SMP

    Begin task Always matches a ETASK ilm

    sym - symbol table pointer to the end of task label.
    If this is llvm and C, this will actually be a symbol
    table pointer to the flags variable that should already be initialized.
    stc - bit vector:
    0x01 - untied clause is present
    0x02 - if clause is present
    lnk1 - link to the logical expression in the if clause; if the clause
    is absent, this field is ‘null’ (BOS_SIZE)
    lnk2 - link to the logical expression in the final clause; if the clause
    is absent, this field is ‘null’

    Attributes: spec trm

  5. BTASKLOOP sym stc lnk lnk lnk lnk Type: SMP

    Begin taskloop Always matches a ETASKLOOP ilm

    sym - symbol table pointer to the end of taskloop label.
    If this is llvm and C, this will actually be a symbol
    table pointer to the flags variable that should already be initialized.
    stc - bit vector:
    0x01 - untied clause is present
    0x02 - if clause is present
    0x20 - if final is present
    0x80 - if mergeable is present
    0x1000 - nogroup clause is present
    0x2000 - grainsize clause is present
    0x4000 - num_tasks clause is present
    lnk1 - link to the logical expression in the if clause; if the clause
    is absent, this field is ‘null’ (BOS_SIZE)
    lnk2 - link to the logical expression in the final clause; if the clause
    is absent, this field is ‘null’
    lnk3 - link to priority expression, if clause is absent, this file is 0
    lnk4 - link to grainsize or num_tasks, if clause is abssent, this field

    Attributes: spec trm

ETASKGROUP

Begin Task group.

Attributes: spec trm

TASKGROUP

End of Task group.

Attributes: spec trm

ETEAMS

End of Teams register.

Attributes: spec trm

BTEAMS

Teams register

Attributes: spec trm

  1. BTEAMSN lnk lnk Type: SMP

    Teams register lnk1 - link to num_teams expression. lnk2 - link to thread limit expression.

    Attributes: spec trm

ETARGETDATA

End of target data

Attributes: spec trm

  1. BTARGETDATA lnk Type: SMP

    Begin target data

    lnk - link to logical expression (inhibit target data flag):
    0 – target data execution on host(device is host)
    nonzero – target data execution on device

    Attributes: spec trm

  2. BTARGETUPDATE lnk stc Type: SMP

    Begin target update

    lnk - link to logical expression (inhibit target update flag):
    0 – nop
    nonzero – target update execution
    stc - flag for target [inout|out|in|nowait|if]

    Attributes: spec trm

  3. TARGETUPDATE n stc lnk lnk* Type: SMP

    Handles a to/from clause from target update with a link to a symbol and a number of expression arguments.

    n - number of extra args
    stc - map type
    lnk - symbol to be mapped

    Attributes: spec trm

ETARGETUPDATE

End target update

Attributes: spec trm

  1. TARGETENTERDATA lnk stc Type: SMP

    Begin target enter data

    lnk - link to logical expression (inhibit target enter data flag):
    0 – target enter data execution on host(device is host)
    nonzero – target enter execution on device
    stc - flag for target [inout|out|in|nowait|if]

    Attributes: spec trm

  2. TARGETEXITDATA lnk stc Type: SMP

    Begin target exit data

    lnk - link to logical expression (inhibit target exit data flag):
    0 – target exit data execution on host(device is host)
    nonzero – target exit data execution on device
    stc - flag for target [inout|out|in|nowait|if]

    Attributes: spec trm

ETARGET

End of Target register.

Attributes: spec trm

  1. BTARGET lnk stc Type: SMP

    Target register

    lnk - link to logical expression (inhibit target exit data flag):
    0 – target exit data execution on host(device is host)
    nonzero – target exit data execution on device
    stc - flag for target [inout|out|in|nowait|if]

    Attributes: spec trm

EDISTRIBUTE

End of Distribute register.

Attributes: spec trm

BDISTRIBUTE

Distribute register

Attributes: spec trm

ETASKREG

End of Task register used in llvm target to mark the end of task region.

Attributes: spec trm

TASKREG

Task register

Attributes: spec trm

ETASKLOOPREG

End of Taskloop register used in llvm target to mark the end of task region.

Attributes: spec trm

TASKLOOPVARS

Begin set up taskloop variables

Attributes: spec trm

  1. TASKLOOPREG lnk lnk lnk Type: SMP

    Begin taskloop register

    stc - bit vector
    lnk1 - lowerbound
    lnk2 - upperbound
    lnk3 - stride
    .AT spec trm
    .OP NULL t1 iv0
    .OP QJSR null =e’_mp_task_begin t1
    .IL ETASK SMP sym
    End task
    Always matches a BTASK ilm
    .nf
    sym - symbol table pointer to the end of task label.

    Attributes: spec trm

    NULL t1 iv0
    QJSR null =e'_mp_task_end t1
    
  2. ETASKLOOP sym Type: SMP

    End taskloop Always matches a BTASKLOOP ilm

    sym - symbol table pointer to the end of task label.

    Attributes: spec trm

TASKWAIT

Taskwait

Attributes: spec trm

NULL t1 iv0
QJSR null =e'_mp_task_wait t1
TASKYIELD

Taskyield

Attributes: spec trm

NULL t1 iv0
QJSR null =e'_mp_task_yield t1
BMPPG

Mark the block representing possible prologue of an mp region for the parallel, parallel do, parallel section, & task directives.

Attributes: spec trm

EMPPG

End the mp region to which the prologue applies. Always matches a BMPPG ilm.

Attributes: spec trm

BAMPPG

Add the ensuing code to the prologue

Attributes: spec trm

EAMPPG

End adding to the prologue. Always matches a BAMPPG ilm.

Attributes: spec trm

  1. INLINE_START sym Type: misc

    INLINE_START is put out at the beginning of an lined function to tell zc_eh processing to process a possible region

    Attributes: spec trm

  2. INLINE_END sym Type: misc

    INLINE_END is put out at the end of an lined function to tell zc_eh processing to process a possible region

    Attributes: spec trm

BEGIN_CATCH

Mark the beginning of a user’s C++ catch region for GSCOPE purposes

Attributes: spec trm

END_CATCH

Mark the end of a user’s C++ catch region for GSCOPE purposes

Attributes: spec trm

  1. EHREG_ST sym sym Type: misc

    Store catch_clause, caught_object to registers

    Attributes: spec trm

  2. EHRESUME sym sym Type: misc

    Resume propagation of an existing in-flight exception whose unwinding was interrupted to run some cleanup code.

    Attributes: spec trm

  3. PRAGMASLIST n stc stc lnk* Type: misc

    Handles a pragma with a list of links to symbols. First stc is the pragma identifier, 2nd stc is the scope.

    Attributes: spec trm

  4. PRAGMASELIST n stc stc lnk lnk* Type: misc

    Handles a pragma with a link to a symbol and a number of expression arguments. First stc is the pragma identifier, 2nd stc is the scope. Sym is the symbol link. Links point to the arguments.

    Attributes: spec trm

  5. SCOPEBEGIN sym sym Type: misc

    Start a new lexical scope; first symbol is the block symbol, second symbol is the label for the beginning of the scope.

  6. SCOPEEND sym sym Type: misc

    End an existing lexical scope; first symbol is the block symbol, second symbol is the label for the end of the scope.

  7. X87CON sym Type: cons

    x87 80-bit extended precision constant.

    X87CON r v1
    
  8. X87LD lnk Type: load

    x87 80-bit extended precision load.

    Attributes: spec

  9. X87ST lnk lnk Type: store

    x87 80-bit extended precision store.

    Attributes: spec trm

  10. X87FROM lnk stc Type: arth

    Convert the DT_xxx type encoded by ‘stc’ to x87 80-bit extended precision.

    Attributes: spec

  11. X87TO lnk stc Type: arth

    Convert x87 80-bit extended precision to the DT_xxx type encoded by ‘stc’.

    Attributes: spec

  12. X87NEG lnk Type: arth

    x87 80-bit extended precision negation.

    X87CHS r p1
    
  13. X87ADD lnk lnk Type: arth

    x87 80-bit extended precision addition.

    X87ADD r p1 p2
    
  14. X87SUB lnk lnk Type: arth

    x87 80-bit extended precision subtraction.

    X87SUB r p1 p2
    
  15. X87MUL lnk lnk Type: arth

    x87 80-bit extended precision multiplication.

    X87MUL r p1 p2
    
  16. X87DIV lnk lnk Type: arth

    x87 80-bit extended precision division.

    X87DIV r p1 p2
    
  17. X87CMP lnk lnk Type: arth

    x87 80-bit extended precision comparison.

    Attributes: spec

  18. X87FUNC n lnk lnk* Type: proc

    Call long double function returning x87 80-bit extended precision.

    Attributes: spec

  19. X87CMPLX lnk lnk Type: arth

    Attributes: spec

  20. X87REAL lnk Type: arth

    Attributes: spec

  21. X87IMAG lnk Type: arth

    Attributes: spec

  22. CX87CON sym Type: cons

    x87 80-bit extended precision complex constant.

    Attributes: spec x87cmplx

  23. CX87LD lnk Type: load

    x87 80-bit extended precision complex load.

    Attributes: spec x87cmplx

  24. CX87ST lnk lnk Type: store

    x87 80-bit extended precision complex store.

    Attributes: spec trm x87cmplx

  25. CX87STR lnk lnk Type: store

    Store the real part of a long double complex

    Attributes: spec trm

  26. CX87STI lnk lnk Type: store

    Store the imaginary part of a long double complex

    Attributes: spec trm

  27. CX87NEG lnk Type: arth

    x87 80-bit extended precision complex negation.

    Attributes: x87cmplx

    X87CHS rr rp1
    X87CHS ir ip1
    
  28. CX87ADD lnk lnk Type: arth

    x87 80-bit extended precision complex addition.

    Attributes: x87cmplx

    X87ADD rr rp1 rp2
    X87ADD ir ip1 ip2
    
  29. CX87SUB lnk lnk Type: arth

    x87 80-bit extended precision complex subtraction.

    Attributes: x87cmplx

    X87SUB rr rp1 rp2
    X87SUB ir ip1 ip2
    
  30. CX87MUL lnk lnk Type: arth

    x87 80-bit extended precision complex multiplication.

    Attributes: x87cmplx

    X87MUL t1 rp1 rp2
    X87MUL t2 ip1 ip2
    X87SUB rr t1 t2
    X87MUL t1 ip1 rp2
    X87MUL t2 ip2 rp1
    X87ADD ir t2 t1
    
  31. CX87DIV lnk lnk Type: arth

    x87 80-bit extended precision complex division.

    Attributes: x87cmplx

    X87MUL t1 rp2 rp2
    X87MUL t2 ip2 ip2
    X87ADD t1 t1 t2
    X87MUL t2 rp1 rp2
    X87MUL t3 ip1 ip2
    X87ADD t2 t2 t3
    X87DIV rr t2 t1
    X87MUL t2 ip1 rp2
    X87MUL t3 rp1 ip2
    X87SUB t2 t2 t3
    X87DIV ir t2 t1
    
  32. CX87CMP lnk lnk Type: arth

    x87 80-bit extended precision complex comparison.

    Attributes: spec x87cmplx

  33. CX87FUNC n lnk lnk* Type: proc

    Call long double complex function returning x87 80-bit extended precision complex.

    Attributes: spec x87cmplx

BEGINATOMIC

Start marker for an ACC Atomic statement.

Attributes: spec trm

ENDATOMIC

End marker for an ACC Atomic statement.

Attributes: spec trm

BEGINATOMICREAD

Start marker for an ACC Atomic Read statement.

Attributes: spec trm

ENDATOMICREAD

End marker for an ACC Atomic Read statement.

Attributes: spec trm

BEGINATOMICWRITE

Start marker for an ACC Atomic Write statement.

Attributes: spec trm

ENDATOMICWRITE

End marker for an ACC Atomic Write statement.

Attributes: spec trm

BEGINATOMICCAPTURE

Start marker for an ACC Atomic Capture block.

Attributes: spec trm

ENDATOMICCAPTURE

End marker for an ACC Atomic Capture block.

Attributes: spec trm

MP_ATOMIC

Begin atomic region. Always matches a ENDATOMIC ilm.

Attributes: spec trm

MP_ENDATOMIC

End atomic region. Always matches a MP_ATOMIC ilm.

Attributes: spec trm

  1. MP_ATOMICREAD lnk stc Type: SMP

    Atomic read

    lnk - link variable to be loaded
    stc - memory order
    .AT spec trm
    .IL MP_ATOMICWRITE SMP lnk lnk stc
    Atomic write
    .nf
    lnk1 - link to left hand side of atomic write
    lnk2 - link to right hand side of atomic write
    stc - memory order
    .AT spec trm
    .IL MP_ATOMICUPDATE SMP lnk lnk stc stc
    Atomic write
    .nf
    lnk1 - link to left hand side of atomic update
    lnk2 - link to rhs atomic update
    stc1 - memory order
    stc2 - aop
    .AT spec trm
    .IL MP_ATOMICCAPTURE SMP lnk lnk stc stc stc
    Atomic write
    .nf
    lnk1 - link to left hand side of atomic capture
    lnk2 - link to right hand side of capture statement
    stc1 - memory order
    stc2 - aop
    stc4 - bit vector(unused):
    0x01 - is update statment
    0x02 - need post operation on old value
    .AT spec trm
    .IL PRAGMADPSELIST misc n stc stc lnk stc lnk*
    Handles a pragma with a link to a symbol and a number of expression arguments.
    n is number of subscripts defined by this pragma
    First stc is the pragma identifier, 2nd stc is the scope, 3rd stc is the policy id.
    First link is the symbol link.
    Links point to the arguments.
    .AT spec trm
    .IL MP_TARGETMODE SMP stc lnk lnk lnk
    End of Target register.
    .nf
    stc Combined costruct mode
    lnk link to num_teams clause if exists
    lnk link to thread_limit clause if exists
    lnk link to num_threads clause if exists
    .AT spec trm
    .IL MP_TARGETLOOPTRIPCOUNT SMP sym
    loop trip count for target region
    .nf
    sym - trip count
    .AT spec trm
    .IL MP_MAP SMP lnk stc
    map with to map type
    .nf
    lnk - symbol to be mapped
    stc - map type

    Attributes: spec trm

  2. MP_REDUCTIONITEM sym sym stc Type: SMP

    Begin of reduction clause.

    sym - reduction shared symbol
    sym - reduction private symbol
    stc - reduction operation

    Attributes: spec trm

MP_BREDUCTION

Begin of reduction clause.

Attributes: spec trm

MP_EREDUCTION

End of reduction clause.

Attributes: spec trm

MP_EMAP

End of map clause.

Attributes: spec trm

MP_BEGIN_DIR

Begin directive

Attributes: spec trm

MP_END_DIR

End directive

Attributes: spec trm

  1. HFLD lnk Type: load

    Load half precision

    Attributes: spec

  2. HFST lnk lnk Type: store

    Store half precision

    Attributes: spec trm

  3. HFCON sym Type: cons

    Half precision constant

    HFCON r v1
    
  4. HFADD lnk lnk Type: arth

    Add half precision

    HFADD r p1 p2
    
  5. HFMUL lnk lnk Type: arth

    Multiply half precision

    HFMUL r p1 p2
    
  6. HFSUB lnk lnk Type: arth

    Subtract half precision

    HFSUB r p1 p2
    
  7. HFDIV lnk lnk Type: arth

    Divide half precision

    HFDIV r p1 p2
    
  8. HFNEG lnk Type: arth

    Negate half precision

    HFNEG r p1
    
  9. R2HF lnk Type: arth

    Convert single precision to half precision

    SP2HP r p1
    
  10. D2HF lnk Type: arth

    Convert double precision to half precision

    DP2HP r p1
    
  11. HF2R lnk Type: arth

    Convert half precision to single precision

    HP2SP r p1
    
  12. HFFUNC n lnk lnk* Type: proc

    Call half precision function

    Attributes: spec

  13. HFFUNC n sym lnk* Type: proc

    Call half precision function

    Attributes: spec

  14. HFCMP lnk lnk Type: arth

    Compare half precision

    Attributes: spec

  15. HFAIF lnk sym1 sym2 sym3 Type: branch

    Attributes: spec trm

    HFCJMPZ null p1 le v2
    HFCJMPZ null p1 eq v3
    HFCJMPZ null p1 gt v4
    
  16. HFMAX lnk lnk Type: arth

    HFMAX r p1 p2
    
  17. HFMIN lnk lnk Type: arth

    HFMIN r p1 p2
    
  18. UXLNEQV lnk lnk Type: arth

    Logical .LNEQV. operation for unixlogical

    ICMPZ t1 p1 eq
    ICMPZ t2 p2 eq
    ICMP r t1 t2 ne
    
  19. UXLEQV lnk lnk Type: arth

    Logical .LEQV. operation for unixlogical

    ICMPZ t1 p1 eq
    ICMPZ t2 p2 eq
    ICMP r t1 t2 eq
    
  20. UXLAND lnk lnk Type: arth

    Logical .LAND. operation for unixlogical

    ICMPZ t1 p1 eq
    ICMPZ t2 p2 eq
    IADD t3 t1 t2
    ICMPZ r t3 eq
    
  21. UXLNOT lnk Type: arth

    Logical .LNOT. operation for unixlogical

    ICMPZ r p1 eq
    
  22. UXLNEQV8 lnk lnk Type: arth

    Logical .LNEQV8. operation for unixlogical

    Attributes: i8

    KCMPZ t1 p1 eq
    KCMPZ t2 p2 eq
    IKMV t1 t1
    IKMV t2 t2
    KCMP kr t1 t2 ne
    
  23. UXLEQV8 lnk lnk Type: arth

    Logical .LEQV8. operation for unixlogical

    Attributes: i8

    KCMPZ t1 p1 eq
    KCMPZ t2 p2 eq
    IKMV t1 t1
    IKMV t2 t2
    KCMP kr t1 t2 eq
    
  24. UXLAND8 lnk lnk Type: arth

    Logical .LAND8. operation for unixlogical

    Attributes: i8

    KCMPZ t1 p1 eq
    KCMPZ t2 p2 eq
    KADD t3 t1 t2
    KCMPZ kr t3 eq
    
  25. UXLNOT8 lnk Type: arth

    Logical .LNOT8. operation for unixlogical

    Attributes: i8

    KCMPZ kr p1 eq
    
  26. QFLD lnk Type: load

    Load quad precision

    Attributes: spec

  27. QFST lnk lnk Type: store

    Store quad precision

    Attributes: spec trm

  28. QADD lnk lnk Type: arth

    Add quad precision

    QADD r p1 p2