Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
wintrinsic.h
Go to the documentation of this file.
00001 /*
00002 
00003   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
00004 
00005   This program is free software; you can redistribute it and/or modify it
00006   under the terms of version 2 of the GNU General Public License as
00007   published by the Free Software Foundation.
00008 
00009   This program is distributed in the hope that it would be useful, but
00010   WITHOUT ANY WARRANTY; without even the implied warranty of
00011   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
00012 
00013   Further, this software is distributed without any warranty that it is
00014   free of the rightful claim of any third person regarding infringement 
00015   or the like.  Any license provided herein, whether implied or 
00016   otherwise, applies only to this software file.  Patent licenses, if 
00017   any, provided herein do not apply to combinations of this program with 
00018   other software, or any other product whatsoever.  
00019 
00020   You should have received a copy of the GNU General Public License along
00021   with this program; if not, write the Free Software Foundation, Inc., 59
00022   Temple Place - Suite 330, Boston MA 02111-1307, USA.
00023 
00024   Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
00025   Mountain View, CA 94043, or:
00026 
00027   http://www.sgi.com
00028 
00029   For further information regarding this notice, see:
00030 
00031   http://oss.sgi.com/projects/GenInfo/NoticeExplan
00032 
00033 */
00034 
00035 
00074 #ifndef wintrinsic_INCLUDED
00075 #define wintrinsic_INCLUDED "wintrinsic.h"
00076 
00077 #ifdef __cplusplus
00078 extern "C" {
00079 #endif
00080 
00081 typedef enum {
00082 
00083   INTRINSIC_INVALID = -1,
00084   INTRINSIC_NONE = 0,
00085   INTRINSIC_FIRST = 1,
00086 
00087     /* F77 type conversions - INT, SHORT, LONG, REAL, FLOAT, SNGL, DBLE, CMPLX,
00088                               CHAR, ZEXT, etc. */
00089 
00090         /* All of these are already represented by existing WHIRL nodes.  F77
00091            semantics preclude them from being passed, so external versions
00092            aren't needed. */
00093 
00094     /* F77 '**' expressions */
00095 
00096         /* These functions are needed to support ** in expressions.  They are
00097            not directly callable, so external versions aren't needed.  F77
00098            semantic rules treat f**i specially.  Here are the details:
00099 
00100            a**b   \  b
00101                  a \  I1,I2,I4  I8    F4   F8   FQ   C4   C8   CQ
00102                     +--------------------------------------------
00103            I1,I2,I4 |    I4     I8    F4   F8   FQ   C4   C8   CQ
00104                  I8 |    I8     I8    F4   F8   FQ   C4   C8   CQ
00105                  F4 |   F4I4   F4I8   F4   F8   FQ   C4   C8   CQ
00106                  F8 |   F8I4   F8I8   F8   F8   FQ   C8   C8   CQ
00107                  FQ |   FQI4   FQI8   FQ   FQ   FQ   CQ   CQ   CQ
00108                  C4 |   C4I4   C4I8   C4   C8   CQ   C4   C8   CQ
00109                  C8 |   C8I4   C8I8   C8   C8   CQ   C8   C8   CQ
00110                  CQ |   CQI4   CQI8   CQ   CQ   CQ   CQ   CQ   CQ   */
00111 
00112   INTRN_I4EXPEXPR = 1,
00113   INTRN_I8EXPEXPR = 2,
00114   INTRN_F4EXPEXPR = 3,
00115   INTRN_F8EXPEXPR = 4,
00116   INTRN_FQEXPEXPR = 5,
00117   INTRN_C4EXPEXPR = 6,
00118   INTRN_C8EXPEXPR = 7,
00119   INTRN_CQEXPEXPR = 8,
00120   INTRN_F4I4EXPEXPR = 9,
00121   INTRN_F4I8EXPEXPR = 10,
00122   INTRN_F8I4EXPEXPR = 11,
00123   INTRN_F8I8EXPEXPR = 12,
00124   INTRN_FQI4EXPEXPR = 13,
00125   INTRN_FQI8EXPEXPR = 14,
00126   INTRN_C4I4EXPEXPR = 15,
00127   INTRN_C4I8EXPEXPR = 16,
00128   INTRN_C8I4EXPEXPR = 17,
00129   INTRN_C8I8EXPEXPR = 18,
00130   INTRN_CQI4EXPEXPR = 19,
00131   INTRN_CQI8EXPEXPR = 20,
00132 
00133     /* F77 character relational expressions */
00134 
00135         /* These functions are needed to support character relational logical
00136            expressions.  They are not directly callable, so external versions
00137            aren't needed. */
00138 
00139   INTRN_CEQEXPR = 21,
00140   INTRN_CNEEXPR = 22,
00141   INTRN_CGEEXPR = 23,
00142   INTRN_CGTEXPR = 24,
00143   INTRN_CLEEXPR = 25,
00144   INTRN_CLTEXPR = 26,
00145 
00146     /* F77 substring 'var(e1:e2)' expressions */
00147 
00148         /* These functions are needed to support character substrings in
00149            expressions.  They are not directly callable, so external versions
00150            aren't needed.  */
00151 
00152   INTRN_SUBSTRINGEXPR = 27,
00153 
00154     /* F77 concat '//' expressions */
00155 
00156         /* These functions are needed to support // in expressions.  They are
00157            not directly callable, so external versions aren't needed.  */
00158 
00159   INTRN_CONCATEXPR = 28,
00160 
00161     /* F77 character assignment statements */
00162 
00163         /* These functions are needed to support character assignment
00164            statements.  The normal OPC_MLOAD and OPC_MSTORE don't handle the
00165            blank padding F77 requires.  They are not directly callable, so
00166            external versions aren't needed.  */
00167 
00168   INTRN_CASSIGNSTMT = 29,
00169 
00170 
00171     /* F77 max/min intrinsics - MAX, AMAX, MIN, AMIN, etc. */
00172 
00173         /* All of these differ from the existing WHIRL nodes in that they
00174            take an arbitrary number of arguments.  However; they can all be
00175            transformed into a cascaded set of WHIRL OPC_MAX/MIN nodes with (if
00176            needed) an OPC_CVT node on top.  F77 semantics preclude them from
00177            being passed, so external versions aren't needed. */
00178 
00179     /* F77 abs intrinsics - ABS, etc. */
00180 
00181         /* All of these are already represented by existing WHIRL nodes.
00182            However; F77 semantics allow them to be passed, so external versions
00183            are needed. */
00184 
00185   INTRN_I2ABSe = 30,
00186   INTRN_I4ABSe = 31,
00187   INTRN_I8ABSe = 32,
00188   INTRN_F4ABSe = 33,
00189   INTRN_F8ABSe = 34,
00190   INTRN_FQABSe = 35,
00191   INTRN_F4C4ABS = 36,
00192   INTRN_F4C4ABSe = 37,
00193   INTRN_F8C8ABS = 38,
00194   INTRN_F8C8ABSe = 39,
00195   INTRN_FQCQABS = 40,
00196   INTRN_FQCQABSe = 41,
00197 
00198     /* F77 mod intrinsics - MOD, etc. */
00199 
00200         /* The integer cases are already represented by existing WHIRL nodes.
00201            F77 semantics allow them to be passed, so external versions are
00202            needed. */
00203 
00204   INTRN_I2MODe = 42,
00205   INTRN_I4MODe = 43,
00206   INTRN_I8MODe = 44,
00207   INTRN_F4MOD = 45,
00208   INTRN_F4MODe = 46,
00209   INTRN_F8MOD = 47,
00210   INTRN_F8MODe = 48,
00211   INTRN_FQMOD = 49,
00212   INTRN_FQMODe = 50,
00213 
00214     /* F77 sqrt intrinsics - SQRT, etc. */
00215 
00216         /* All of these are already represented by existing WHIRL nodes
00217            However; F77 semantics allow them to be passed, so external versions
00218            are needed. */
00219 
00220   INTRN_F4SQRTe = 51,
00221   INTRN_F8SQRTe = 52,
00222   INTRN_FQSQRTe = 53,
00223   INTRN_C4SQRTe = 54,
00224   INTRN_C8SQRTe = 55,
00225   INTRN_CQSQRTe = 56,
00226 
00227     /* F77 misc. math intrinsics - CONJG, DIM, PROD, SIGN, etc. */
00228 
00229         /* None of these have corresponding, single WHIRL nodes.  F77 semantics
00230            allow them to be passed, so external versions are needed. */
00231 
00232   INTRN_C4CONJG = 57,
00233   INTRN_C4CONJGe = 58,
00234   INTRN_C8CONJG = 59,
00235   INTRN_C8CONJGe = 60,
00236   INTRN_CQCONJG = 61,
00237   INTRN_CQCONJGe = 62,
00238 
00239   INTRN_I1DIM = 63,
00240   INTRN_I2DIM = 64,
00241   INTRN_I2DIMe = 65,
00242   INTRN_I4DIM = 66,
00243   INTRN_I4DIMe = 67,
00244   INTRN_I8DIM = 68,
00245   INTRN_I8DIMe = 69,
00246   INTRN_F4DIM = 70,
00247   INTRN_F4DIMe = 71,
00248   INTRN_F8DIM = 72,
00249   INTRN_F8DIMe = 73,
00250   INTRN_FQDIM = 74,
00251   INTRN_FQDIMe = 75,
00252 
00253   INTRN_F8F4PROD = 76,
00254   INTRN_F8F4PRODe = 77,
00255   INTRN_FQF8PROD = 78,
00256   INTRN_FQF8PRODe = 79,
00257 
00258   INTRN_I1SIGN = 80,
00259   INTRN_I2SIGN = 81,
00260   INTRN_I2SIGNe = 82,
00261   INTRN_I4SIGN = 83,
00262   INTRN_I4SIGNe = 84,
00263   INTRN_I8SIGN = 85,
00264   INTRN_I8SIGNe = 86,
00265   INTRN_F4SIGN = 87,
00266   INTRN_F4SIGNe = 88,
00267   INTRN_F8SIGN = 89,
00268   INTRN_F8SIGNe = 90,
00269   INTRN_FQSIGN = 91,
00270   INTRN_FQSIGNe = 92,
00271 
00272     /* F77 misc. math intrinsics - AIMAG, AINT, ANINT, IDINT, NINT, etc. */
00273 
00274         /* Some of these are already represented by existing WHIRL nodes.
00275            F77 semantics allow these to be passed, so external versions are
00276            needed.
00277            Note that some of these (e.g., IDINT) are explicitly disallowed
00278            as actual arguments by the F77 standard, but are allowed
00279            historically on our platform (as well as on others, e.g., DEC VAX).
00280            */
00281 
00282   INTRN_F4IMAGe = 93,
00283   INTRN_F8IMAGe = 94,
00284   INTRN_FQIMAGe = 95,
00285 
00286   INTRN_F4AINT = 96,
00287   INTRN_F4AINTe = 97,
00288   INTRN_F8AINT = 98,
00289   INTRN_F8AINTe = 99,
00290   INTRN_FQAINT = 100,
00291   INTRN_FQAINTe = 101,
00292 
00293   INTRN_I2F4INTe = 102,
00294   INTRN_I4F4INTe = 103,
00295   INTRN_I8F4INTe = 104,
00296 
00297   INTRN_I2F8IDINTe = 105,
00298   INTRN_I4F8IDINTe = 106,
00299   INTRN_I8F8IDINTe = 107,
00300 
00301   INTRN_I2FQIQINTe = 108,
00302   INTRN_I4FQIQINTe = 109,
00303   INTRN_I8FQIQINTe = 110,
00304 
00305   INTRN_I2F4NINT = 111,
00306   INTRN_I2F4NINTe = 112,
00307   INTRN_I4F4NINT = 113,
00308   INTRN_I4F4NINTe = 114,
00309   INTRN_I8F4NINT = 115,
00310   INTRN_I8F4NINTe = 116,
00311 
00312   INTRN_I2F8IDNINT = 117,
00313   INTRN_I2F8IDNINTe = 118,
00314   INTRN_I4F8IDNINT = 119,
00315   INTRN_I4F8IDNINTe = 120,
00316   INTRN_I8F8IDNINT = 121,
00317   INTRN_I8F8IDNINTe = 122,
00318 
00319   INTRN_I2FQIQNINT = 123,
00320   INTRN_I2FQIQNINTe = 124,
00321   INTRN_I4FQIQNINT = 125,
00322   INTRN_I4FQIQNINTe = 126,
00323   INTRN_I8FQIQNINT = 127,
00324   INTRN_I8FQIQNINTe = 128,
00325 
00326   INTRN_F4ANINT = 129,
00327   INTRN_F4ANINTe = 130,
00328   INTRN_F8ANINT = 131,
00329   INTRN_F8ANINTe = 132,
00330   INTRN_FQANINT = 133,
00331   INTRN_FQANINTe = 134,
00332 
00333     /* F77 bit intrisics - BNOT, BAND, BIOR, BXOR, BITS, BSET, BCLR, BTEST,
00334                            MVBITS, etc. */
00335 
00336         /* Some of these are already represented by existing WHIRL nodes.
00337            F77 semantics allow them to be passed, so external versions are
00338            needed. */
00339 
00340   INTRN_I2BNOTe = 135,
00341   INTRN_I4BNOTe = 136,
00342   INTRN_I8BNOTe = 137,
00343 
00344   INTRN_I2BANDe = 138,
00345   INTRN_I4BANDe = 139,
00346   INTRN_I8BANDe = 140,
00347 
00348   INTRN_I2BIORe = 141,
00349   INTRN_I4BIORe = 142,
00350   INTRN_I8BIORe = 143,
00351 
00352   INTRN_I2BXORe = 144,
00353   INTRN_I4BXORe = 145,
00354   INTRN_I8BXORe = 146,
00355 
00356   INTRN_I1BITS = 147,
00357   INTRN_I2BITS = 148,
00358   INTRN_I2BITSe = 149,
00359   INTRN_I4BITS = 150,
00360   INTRN_I4BITSe = 151,
00361   INTRN_I8BITS = 152,
00362   INTRN_I8BITSe = 153,
00363 
00364   INTRN_I1BSET = 154,
00365   INTRN_I2BSET = 155,
00366   INTRN_I2BSETe = 156,
00367   INTRN_I4BSET = 157,
00368   INTRN_I4BSETe = 158,
00369   INTRN_I8BSET = 159,
00370   INTRN_I8BSETe = 160,
00371 
00372   INTRN_I1BCLR = 161,
00373   INTRN_I2BCLR = 162,
00374   INTRN_I2BCLRe = 163,
00375   INTRN_I4BCLR = 164,
00376   INTRN_I4BCLRe = 165,
00377   INTRN_I8BCLR = 166,
00378   INTRN_I8BCLRe = 167,
00379 
00380   INTRN_I1BTEST = 168,
00381   INTRN_I2BTEST = 169,
00382   INTRN_I2BTESTe = 170,
00383   INTRN_I4BTEST = 171,
00384   INTRN_I4BTESTe = 172,
00385   INTRN_I8BTEST = 173,
00386   INTRN_I8BTESTe = 174,
00387 
00388   INTRN_I1MVBITS = 175,
00389   INTRN_I2MVBITS = 176,
00390   INTRN_I4MVBITS = 177,
00391   INTRN_I8MVBITS = 178,
00392 
00393     /* Fortran shift intrinsics - LSHIFT, RSHIFT, SHIFT, SHIFTC, etc. */
00394 
00395         /* Some of these are already represented by existing WHIRL nodes
00396            F77 semantics allow them to be passed, so external versions are
00397            needed. */
00398 
00399   INTRN_I1SHL = 179,
00400   INTRN_I2SHL = 180,
00401 
00402   INTRN_I1SHR = 181,
00403   INTRN_I2SHR = 182,
00404 
00405   INTRN_I1SHFT = 183,
00406   INTRN_I2SHFT = 184,
00407   INTRN_I2SHFTe = 185,
00408   INTRN_I4SHFT = 186,
00409   INTRN_I4SHFTe = 187,
00410   INTRN_I8SHFT = 188,
00411   INTRN_I8SHFTe = 189,
00412 
00413   INTRN_I1SHFTC = 190,
00414   INTRN_I2SHFTC = 191,
00415   INTRN_I2SHFTCe = 192,
00416   INTRN_I4SHFTC = 193,
00417   INTRN_I4SHFTCe = 194,
00418   INTRN_I8SHFTC = 195,
00419   INTRN_I8SHFTCe = 196,
00420 
00421     /* F77 character intrinsics - LEN, INDEX, LGE, LGT, LLE, LLT, etc. */
00422 
00423         /* None of these have corresponding, single WHIRL nodes.  F77 semantics
00424            allow them to be passed, so external versions are needed. */
00425 
00426   INTRN_I4CLEN = 197,
00427   INTRN_I4CLENe = 198,
00428 
00429   INTRN_I4CINDEX = 199,
00430   INTRN_I4CINDEXe = 200,
00431 
00432   INTRN_CLGE = 201,
00433   INTRN_CLGEe = 202,
00434 
00435   INTRN_CLGT = 203,
00436   INTRN_CLGTe = 204,
00437 
00438   INTRN_CLLE = 205,
00439   INTRN_CLLEe = 206,
00440 
00441   INTRN_CLLT = 207,
00442   INTRN_CLLTe = 208,
00443 
00444     /* F77 transcendental intrinsics - EXP, LOG, LOG10, etc. */
00445 
00446         /* None of these have corresponding, single WHIRL nodes.  F77 semantics
00447            allow them to be passed, so external versions are needed. */
00448 
00449   INTRN_F4EXP = 209,
00450   INTRN_F4EXPe = 210,
00451   INTRN_F8EXP = 211,
00452   INTRN_F8EXPe = 212,
00453   INTRN_FQEXP = 213,
00454   INTRN_FQEXPe = 214,
00455   INTRN_C4EXP = 215,
00456   INTRN_C4EXPe = 216,
00457   INTRN_C8EXP = 217,
00458   INTRN_C8EXPe = 218,
00459   INTRN_CQEXP = 219,
00460   INTRN_CQEXPe = 220,
00461 
00462   INTRN_F4LOG = 221,
00463   INTRN_F4LOGe = 222,
00464   INTRN_F8LOG = 223,
00465   INTRN_F8LOGe = 224,
00466   INTRN_FQLOG = 225,
00467   INTRN_FQLOGe = 226,
00468   INTRN_C4LOG = 227,
00469   INTRN_C4LOGe = 228,
00470   INTRN_C8LOG = 229,
00471   INTRN_C8LOGe = 230,
00472   INTRN_CQLOG = 231,
00473   INTRN_CQLOGe = 232,
00474 
00475   INTRN_F4LOG10 = 233,
00476   INTRN_F4LOG10e = 234,
00477   INTRN_F8LOG10 = 235,
00478   INTRN_F8LOG10e = 236,
00479   INTRN_FQLOG10 = 237,
00480   INTRN_FQLOG10e = 238,
00481 
00482     /* F77 trigonometic intrinsics - COS, SIN, CIS, TAN, COSD, SIND, TAND,
00483                                      COSH, SINH, TANH, ACOS, ASIN, ATAN, ACOSD,
00484                                      ASIND, ATAND, ATAN2, ATAN2D, etc. */
00485 
00486         /* None of these have corresponding, single WHIRL nodes.  F77 semantics
00487            allow them to be passed, so external versions are needed. */
00488 
00489   INTRN_F4COS = 239,
00490   INTRN_F4COSe = 240,
00491   INTRN_F8COS = 241,
00492   INTRN_F8COSe = 242,
00493   INTRN_FQCOS = 243,
00494   INTRN_FQCOSe = 244,
00495   INTRN_C4COS = 245,
00496   INTRN_C4COSe = 246,
00497   INTRN_C8COS = 247,
00498   INTRN_C8COSe = 248,
00499   INTRN_CQCOS = 249,
00500   INTRN_CQCOSe = 250,
00501 
00502   INTRN_F4SIN = 251,
00503   INTRN_F4SINe = 252,
00504   INTRN_F8SIN = 253,
00505   INTRN_F8SINe = 254,
00506   INTRN_FQSIN = 255,
00507   INTRN_FQSINe = 256,
00508   INTRN_C4SIN = 257,
00509   INTRN_C4SINe = 258,
00510   INTRN_C8SIN = 259,
00511   INTRN_C8SINe = 260,
00512   INTRN_CQSIN = 261,
00513   INTRN_CQSINe = 262,
00514 
00515   INTRN_F4CIS = 263,
00516   INTRN_F4CISe = 264,
00517   INTRN_F8CIS = 265,
00518   INTRN_F8CISe = 266,
00519   INTRN_FQCIS = 267,
00520   INTRN_FQCISe = 268,
00521 
00522   INTRN_F4TAN = 269,
00523   INTRN_F4TANe = 270,
00524   INTRN_F8TAN = 271,
00525   INTRN_F8TANe = 272,
00526   INTRN_FQTAN = 273,
00527   INTRN_FQTANe = 274,
00528 
00529   INTRN_F4COSD = 275,
00530   INTRN_F4COSDe = 276,
00531   INTRN_F8COSD = 277,
00532   INTRN_F8COSDe = 278,
00533   INTRN_FQCOSD = 279,
00534   INTRN_FQCOSDe = 280,
00535 
00536   INTRN_F4SIND = 281,
00537   INTRN_F4SINDe = 282,
00538   INTRN_F8SIND = 283,
00539   INTRN_F8SINDe = 284,
00540   INTRN_FQSIND = 285,
00541   INTRN_FQSINDe = 286,
00542 
00543   INTRN_F4TAND = 287,
00544   INTRN_F4TANDe = 288,
00545   INTRN_F8TAND = 289,
00546   INTRN_F8TANDe = 290,
00547   INTRN_FQTAND = 291,
00548   INTRN_FQTANDe = 292,
00549 
00550   INTRN_F4COSH = 293,
00551   INTRN_F4COSHe = 294,
00552   INTRN_F8COSH = 295,
00553   INTRN_F8COSHe = 296,
00554   INTRN_FQCOSH = 297,
00555   INTRN_FQCOSHe = 298,
00556 
00557   INTRN_F4SINH = 299,
00558   INTRN_F4SINHe = 300,
00559   INTRN_F8SINH = 301,
00560   INTRN_F8SINHe = 302,
00561   INTRN_FQSINH = 303,
00562   INTRN_FQSINHe = 304,
00563 
00564   INTRN_F4TANH = 305,
00565   INTRN_F4TANHe = 306,
00566   INTRN_F8TANH = 307,
00567   INTRN_F8TANHe = 308,
00568   INTRN_FQTANH = 309,
00569   INTRN_FQTANHe = 310,
00570 
00571   INTRN_F4ACOS = 311,
00572   INTRN_F4ACOSe = 312,
00573   INTRN_F8ACOS = 313,
00574   INTRN_F8ACOSe = 314,
00575   INTRN_FQACOS = 315,
00576   INTRN_FQACOSe = 316,
00577 
00578   INTRN_F4ASIN = 317,
00579   INTRN_F4ASINe = 318,
00580   INTRN_F8ASIN = 319,
00581   INTRN_F8ASINe = 320,
00582   INTRN_FQASIN = 321,
00583   INTRN_FQASINe = 322,
00584 
00585   INTRN_F4ATAN = 323,
00586   INTRN_F4ATANe = 324,
00587   INTRN_F8ATAN = 325,
00588   INTRN_F8ATANe = 326,
00589   INTRN_FQATAN = 327,
00590   INTRN_FQATANe = 328,
00591 
00592   INTRN_F4ACOSD = 329,
00593   INTRN_F4ACOSDe = 330,
00594   INTRN_F8ACOSD = 331,
00595   INTRN_F8ACOSDe = 332,
00596   INTRN_FQACOSD = 333,
00597   INTRN_FQACOSDe = 334,
00598 
00599   INTRN_F4ASIND = 335,
00600   INTRN_F4ASINDe = 336,
00601   INTRN_F8ASIND = 337,
00602   INTRN_F8ASINDe = 338,
00603   INTRN_FQASIND = 339,
00604   INTRN_FQASINDe = 340,
00605 
00606   INTRN_F4ATAND = 341,
00607   INTRN_F4ATANDe = 342,
00608   INTRN_F8ATAND = 343,
00609   INTRN_F8ATANDe = 344,
00610   INTRN_FQATAND = 345,
00611   INTRN_FQATANDe = 346,
00612 
00613   INTRN_F4ATAN2 = 347,
00614   INTRN_F4ATAN2e = 348,
00615   INTRN_F8ATAN2 = 349,
00616   INTRN_F8ATAN2e = 350,
00617   INTRN_FQATAN2 = 351,
00618   INTRN_FQATAN2e = 352,
00619 
00620   INTRN_F4ATAN2D = 353,
00621   INTRN_F4ATAN2De = 354,
00622   INTRN_F8ATAN2D = 355,
00623   INTRN_F8ATAN2De = 356,
00624   INTRN_FQATAN2D = 357,
00625   INTRN_FQATAN2De = 358,
00626 
00627     /* F77 sizeof intrinsic - SIZEOF, etc. */
00628 
00629         /* All of these will have been converted to either constant nodes or
00630            the LEN intrinsic. */
00631 
00632     /* F77 addressing intrinsics - %VAL, %REF, %LOC, etc. */
00633 
00634         /* All of these will have been converted to corresponding WHIRL
00635            nodes. */
00636 
00637     /* C misc. intrinsics - currently, just alloca(). */
00638 
00639   INTRN_U4I4ALLOCA = 359,
00640   INTRN_U8I8ALLOCA = 360,
00641 
00642     /* F77 misc. intrinsics - MALLOC, FREE, DATE, ERRSNS, EXIT, TIME,
00643                               SECNDS, etc. */
00644 
00645         /* None of these have corresponding, single WHIRL nodes.  F77 semantics
00646            do not allow them to be passed, so external versions aren't
00647            needed. */
00648 
00649   INTRN_U4I4MALLOC = 361,
00650   INTRN_U8I8MALLOC = 362,
00651 
00652   INTRN_U4FREE = 363,
00653   INTRN_U8FREE = 364,
00654 
00655   INTRN_MDATE = 365,
00656   INTRN_I1DATE = 366,
00657   INTRN_I2DATE = 367,
00658   INTRN_I4DATE = 368,
00659   INTRN_I8DATE = 369,
00660 
00661   INTRN_I1ERRSNS = 370,
00662   INTRN_I2ERRSNS = 371,
00663   INTRN_I4ERRSNS = 372,
00664   INTRN_I8ERRSNS = 373,
00665 
00666   INTRN_VEXIT = 374,
00667   INTRN_I1EXIT = 375,
00668   INTRN_I2EXIT = 376,
00669   INTRN_I4EXIT = 377,
00670   INTRN_I8EXIT = 378,
00671 
00672   INTRN_TIME = 379,
00673 
00674   INTRN_F4SECNDS = 380,
00675   INTRN_F8SECNDS = 381,
00676 
00677     /* Fortran pause/stop statement - PAUSE, STOP, etc. */
00678 
00679         /* These are made intrinsics so that the optimizer can make use of
00680            their special properties. */
00681 
00682   INTRN_PAUSE = 382,
00683   INTRN_STOP = 383,
00684 
00685     /* Fortran 90 intrinsics */
00686 
00687   INTRN_F4I4RAN = 384,
00688   INTRN_F4I8RAN = 385,
00689   INTRN_F8I4RAN = 386,
00690   INTRN_F8I8RAN = 387,
00691   INTRN_FQI4RAN = 388,
00692   INTRN_FQI8RAN = 389,
00693 
00694     /* C intrinsics */
00695 
00696     /* C++ intrinsics */
00697 
00698     /* LNO generated intrinsics */
00699 
00700         /* These additional intrinsics are potentially generated by LNO. */
00701 
00702   INTRN_I4DIVFLOOR = 390,
00703   INTRN_I8DIVFLOOR = 391,
00704   INTRN_U4DIVFLOOR = 392,
00705   INTRN_U8DIVFLOOR = 393,
00706 
00707   INTRN_I4DIVCEIL = 394,
00708   INTRN_I8DIVCEIL = 395,
00709   INTRN_U4DIVCEIL = 396,
00710   INTRN_U8DIVCEIL = 397,
00711 
00712   INTRN_I4MODFLOOR = 398,
00713   INTRN_I8MODFLOOR = 399,
00714   INTRN_U4MODFLOOR = 400,
00715   INTRN_U8MODFLOOR = 401,
00716 
00717   INTRN_I4MODCEIL = 402,
00718   INTRN_I8MODCEIL = 403,
00719   INTRN_U4MODCEIL = 404,
00720   INTRN_U8MODCEIL = 405,
00721 
00722     /* Internal to alloca */
00723   INTRN_U4I4SETSTACKPOINTER = 406,
00724   INTRN_U8I8SETSTACKPOINTER = 407,
00725   INTRN_U4READSTACKPOINTER = 408,
00726   INTRN_U8READSTACKPOINTER = 409,
00727 
00728     /* OS kernel intrinsics */
00729 
00730   INTRN_ADD_AND_FETCH_I4 = 410,
00731   INTRN_SUB_AND_FETCH_I4 = 411,
00732   INTRN_OR_AND_FETCH_I4 = 412,
00733   INTRN_XOR_AND_FETCH_I4 = 413,
00734   INTRN_AND_AND_FETCH_I4 = 414,
00735   INTRN_NAND_AND_FETCH_I4 = 415,
00736 
00737   INTRN_FETCH_AND_ADD_I4 = 416,
00738   INTRN_FETCH_AND_SUB_I4 = 417,
00739   INTRN_FETCH_AND_OR_I4 = 418,
00740   INTRN_FETCH_AND_XOR_I4 = 419,
00741   INTRN_FETCH_AND_AND_I4 = 420,
00742   INTRN_FETCH_AND_NAND_I4 = 421,
00743 
00744   INTRN_ADD_AND_FETCH_I8 = 422,
00745   INTRN_SUB_AND_FETCH_I8 = 423,
00746   INTRN_OR_AND_FETCH_I8 = 424,
00747   INTRN_XOR_AND_FETCH_I8 = 425,
00748   INTRN_AND_AND_FETCH_I8 = 426,
00749   INTRN_NAND_AND_FETCH_I8 = 427,
00750 
00751   INTRN_FETCH_AND_ADD_I8 = 428,
00752   INTRN_FETCH_AND_SUB_I8 = 429,
00753   INTRN_FETCH_AND_OR_I8 = 430,
00754   INTRN_FETCH_AND_XOR_I8 = 431,
00755   INTRN_FETCH_AND_AND_I8 = 432,
00756   INTRN_FETCH_AND_NAND_I8 = 433,
00757 
00758   INTRN_LOCK_TEST_AND_SET_I4 = 434,
00759   INTRN_LOCK_TEST_AND_SET_I8 = 435,
00760 
00761   INTRN_LOCK_RELEASE_I4 = 436,
00762   INTRN_LOCK_RELEASE_I8 = 437,
00763 
00764   INTRN_COMPARE_AND_SWAP_I4 = 438,
00765   INTRN_COMPARE_AND_SWAP_I8 = 439,
00766 
00767   INTRN_SYNCHRONIZE = 440,
00768 
00769   INTRN_RETURN_ADDRESS = 441,
00770 
00771     /* F77 (internal only) I/O intrinsics */
00772 
00773   INTRN_U4I1ADRTMP = 442,
00774   INTRN_U4I2ADRTMP = 443,
00775   INTRN_U4I4ADRTMP = 444,
00776   INTRN_U4I8ADRTMP = 445,
00777   INTRN_U4F4ADRTMP = 446,
00778   INTRN_U4F8ADRTMP = 447,
00779   INTRN_U4FQADRTMP = 448,
00780   INTRN_U4C4ADRTMP = 449,
00781   INTRN_U4C8ADRTMP = 450,
00782   INTRN_U4CQADRTMP = 451,
00783   INTRN_U4VADRTMP = 452,
00784   INTRN_U8I1ADRTMP = 453,
00785   INTRN_U8I2ADRTMP = 454,
00786   INTRN_U8I4ADRTMP = 455,
00787   INTRN_U8I8ADRTMP = 456,
00788   INTRN_U8F4ADRTMP = 457,
00789   INTRN_U8F8ADRTMP = 458,
00790   INTRN_U8FQADRTMP = 459,
00791   INTRN_U8C4ADRTMP = 460,
00792   INTRN_U8C8ADRTMP = 461,
00793   INTRN_U8CQADRTMP = 462,
00794   INTRN_U8VADRTMP = 463,
00795 
00796   INTRN_I4VALTMP = 464,
00797   INTRN_I8VALTMP = 465,
00798   INTRN_U4VALTMP = 466,
00799   INTRN_U8VALTMP = 467,
00800   INTRN_F4VALTMP = 468,
00801   INTRN_F8VALTMP = 469,
00802   INTRN_FQVALTMP = 470,
00803   INTRN_C4VALTMP = 471,
00804   INTRN_C8VALTMP = 472,
00805   INTRN_CQVALTMP = 473,
00806 
00807     /* C intrinsics */
00808 
00809   INTRN_BCOPY = 474,
00810   INTRN_BCMP = 475,
00811   INTRN_BZERO = 476,
00812 
00813   INTRN_MEMCCPY = 477,
00814   INTRN_MEMCHR = 478,
00815   INTRN_MEMCMP = 479,
00816   INTRN_MEMCPY = 480,
00817   INTRN_MEMMOVE = 481,
00818   INTRN_MEMSET = 482,
00819 
00820   INTRN_STRCMP = 483,
00821   INTRN_STRNCMP = 484,
00822   INTRN_STRCPY = 485,
00823   INTRN_STRNCPY = 486,
00824   INTRN_STRLEN = 487,
00825 
00826   INTRN_PRINTF = 488,
00827   INTRN_FPRINTF = 489,
00828   INTRN_SPRINTF = 490,
00829   INTRN_PRINTW = 491,
00830   INTRN_SCANF = 492,
00831   INTRN_FSCANF = 493,
00832   INTRN_SSCANF = 494,
00833   INTRN_FPUTC = 495,
00834   INTRN_FPUTS = 496,
00835   INTRN_FGETC = 497,
00836   INTRN_FGETS = 498,
00837 
00838   INTRN_F4VACOS = 499,
00839   INTRN_F8VACOS = 500,
00840   INTRN_F4VASIN = 501,
00841   INTRN_F8VASIN = 502,
00842   INTRN_F4VATAN = 503,
00843   INTRN_F8VATAN = 504,
00844   INTRN_F4VCOS = 505,
00845   INTRN_F8VCOS = 506,
00846   INTRN_F4VEXP = 507,
00847   INTRN_F8VEXP = 508,
00848   INTRN_F4VLOG = 509,
00849   INTRN_F8VLOG = 510,
00850   INTRN_F4VSIN = 511,
00851   INTRN_F8VSIN = 512,
00852   INTRN_F4VSQRT = 513,
00853   INTRN_F8VSQRT = 514,
00854   INTRN_F4VTAN = 515,
00855   INTRN_F8VTAN = 516,
00856 
00857   INTRN_NARY_ADD = 517,
00858   INTRN_NARY_MPY = 518,
00859 
00860     /* F77 intrinsics needed for -trapuv - MALLOC */
00861 
00862   INTRN_U4I4TRAPUV_MALLOC = 519,
00863   INTRN_U8I8TRAPUV_MALLOC = 520,
00864 
00865     /* F77 intrinsics needed for -check_bounds */
00866 
00867   INTRN_F77_BOUNDS_ERR = 521,
00868 
00869     /* F77 intrinsics needed for DSM */
00870 
00871   INTRN_DSM_NUMTHREADS = 522,
00872   INTRN_DSM_CHUNKSIZE = 523,
00873   INTRN_DSM_THIS_CHUNKSIZE = 524,
00874   INTRN_DSM_REM_CHUNKSIZE = 525,
00875   INTRN_DSM_NUMCHUNKS = 526,
00876   INTRN_DSM_THIS_THREADNUM = 527,
00877   INTRN_DSM_DISTRIBUTION_BLOCK = 528,
00878   INTRN_DSM_DISTRIBUTION_STAR = 529,
00879   INTRN_DSM_ISRESHAPED = 530,
00880   INTRN_DSM_ISDISTRIBUTED = 531,
00881   INTRN_DSM_THIS_STARTINDEX = 532,
00882   INTRN_DSM_DISTRIBUTION_CYCLIC = 533,
00883 
00884     /* More OS kernel intrinsics -- added here so we wouldn't have to
00885        make an incompatible Whirl change */
00886 
00887   INTRN_MPY_AND_FETCH_I4 = 534,
00888   INTRN_MIN_AND_FETCH_I4 = 535,
00889   INTRN_MAX_AND_FETCH_I4 = 536,
00890   INTRN_FETCH_AND_MPY_I4 = 537,
00891   INTRN_FETCH_AND_MIN_I4 = 538,
00892   INTRN_FETCH_AND_MAX_I4 = 539,
00893   INTRN_MPY_AND_FETCH_I8 = 540,
00894   INTRN_MIN_AND_FETCH_I8 = 541,
00895   INTRN_MAX_AND_FETCH_I8 = 542,
00896   INTRN_FETCH_AND_MPY_I8 = 543,
00897   INTRN_FETCH_AND_MIN_I8 = 544,
00898   INTRN_FETCH_AND_MAX_I8 = 545,
00899 
00900   INTRN_ADD_AND_FETCH_F4 = 546,
00901   INTRN_SUB_AND_FETCH_F4 = 547,
00902   INTRN_OR_AND_FETCH_F4 = 548,
00903   INTRN_XOR_AND_FETCH_F4 = 549,
00904   INTRN_AND_AND_FETCH_F4 = 550,
00905   INTRN_NAND_AND_FETCH_F4 = 551,
00906   INTRN_MPY_AND_FETCH_F4 = 552,
00907   INTRN_MIN_AND_FETCH_F4 = 553,
00908   INTRN_MAX_AND_FETCH_F4 = 554,
00909 
00910   INTRN_FETCH_AND_ADD_F4 = 555,
00911   INTRN_FETCH_AND_SUB_F4 = 556,
00912   INTRN_FETCH_AND_OR_F4 = 557,
00913   INTRN_FETCH_AND_XOR_F4 = 558,
00914   INTRN_FETCH_AND_AND_F4 = 559,
00915   INTRN_FETCH_AND_NAND_F4 = 560,
00916   INTRN_FETCH_AND_MPY_F4 = 561,
00917   INTRN_FETCH_AND_MIN_F4 = 562,
00918   INTRN_FETCH_AND_MAX_F4 = 563,
00919 
00920   INTRN_ADD_AND_FETCH_F8 = 564,
00921   INTRN_SUB_AND_FETCH_F8 = 565,
00922   INTRN_OR_AND_FETCH_F8 = 566,
00923   INTRN_XOR_AND_FETCH_F8 = 567,
00924   INTRN_AND_AND_FETCH_F8 = 568,
00925   INTRN_NAND_AND_FETCH_F8 = 569,
00926   INTRN_MPY_AND_FETCH_F8 = 570,
00927   INTRN_MIN_AND_FETCH_F8 = 571,
00928   INTRN_MAX_AND_FETCH_F8 = 572,
00929 
00930   INTRN_FETCH_AND_ADD_F8 = 573,
00931   INTRN_FETCH_AND_SUB_F8 = 574,
00932   INTRN_FETCH_AND_OR_F8 = 575,
00933   INTRN_FETCH_AND_XOR_F8 = 576,
00934   INTRN_FETCH_AND_AND_F8 = 577,
00935   INTRN_FETCH_AND_NAND_F8 = 578,
00936   INTRN_FETCH_AND_MPY_F8 = 579,
00937   INTRN_FETCH_AND_MIN_F8 = 580,
00938   INTRN_FETCH_AND_MAX_F8 = 581,
00939 
00940   INTRN_LOCK_ACQUIRE_I4 = 582,
00941   INTRN_LOCK_ACQUIRE_I8 = 583,
00942   
00943     /* Start of F90 specific intrinsics */
00944 
00945     /* The next four are for allocations produced by the F90 lowerer, and
00946        are internal to the lowerer */
00947   INTRN_F90_STACKTEMPALLOC = 584,
00948   INTRN_F90_HEAPTEMPALLOC = 585,
00949   INTRN_F90_STACKTEMPFREE = 586,
00950   INTRN_F90_HEAPTEMPFREE = 587,
00951 
00952   INTRN_FIRST_F90_INTRINSIC = 588,
00953 #include "wintrinsic90.h" /* INTRN_LAST_F90_INTRINSIC = 685 */
00954   INTRN_MP_IN_PARALLEL_REGION   = INTRN_LAST_F90_INTRINSIC + 1,
00955   INTRN_RT_ERR                  = INTRN_LAST_F90_INTRINSIC + 2,
00956   INTRN_OMP_DO_WORKSHARING      = INTRN_LAST_F90_INTRINSIC + 3,
00957   INTRN_OMP_TEST_LOCK           = INTRN_LAST_F90_INTRINSIC + 4,
00958   INTRN_OMP_GET_NUM_THREADS     = INTRN_LAST_F90_INTRINSIC + 5,
00959   INTRN_OMP_GET_MAX_THREADS     = INTRN_LAST_F90_INTRINSIC + 6,
00960   INTRN_OMP_GET_THREAD_NUM      = INTRN_LAST_F90_INTRINSIC + 7,
00961   INTRN_OMP_GET_NUM_PROCS       = INTRN_LAST_F90_INTRINSIC + 8,
00962   INTRN_OMP_IN_PARALLEL         = INTRN_LAST_F90_INTRINSIC + 9,
00963   INTRN_OMP_GET_DYNAMIC         = INTRN_LAST_F90_INTRINSIC + 10,
00964   INTRN_OMP_GET_NESTED          = INTRN_LAST_F90_INTRINSIC + 11,
00965 
00966 /* Hand-added F90 intrinsics */
00967 
00968     INTRN_I1IEEE_INT = INTRN_LAST_F90_INTRINSIC + 12,
00969     INTRN_I2IEEE_INT = INTRN_LAST_F90_INTRINSIC + 13,
00970     INTRN_I4IEEE_INT = INTRN_LAST_F90_INTRINSIC + 14,
00971     INTRN_I8IEEE_INT = INTRN_LAST_F90_INTRINSIC + 15,
00972     INTRN_F4IEEE_INT = INTRN_LAST_F90_INTRINSIC + 16,
00973     INTRN_F8IEEE_INT = INTRN_LAST_F90_INTRINSIC + 17,
00974     INTRN_FQIEEE_INT = INTRN_LAST_F90_INTRINSIC + 18,
00975     INTRN_F90BOUNDS_CHECK = INTRN_LAST_F90_INTRINSIC + 19,
00976  
00977 /* Two more intrisics used only by the F90 lowerer/front-end */
00978     INTRN_F90_DYNAMICTEMPALLOC = INTRN_LAST_F90_INTRINSIC + 20,
00979     INTRN_F90_DYNAMICTEMPFREE = INTRN_LAST_F90_INTRINSIC + 21,
00980 
00981 /* More checking */
00982     INTRN_F90CONFORM_CHECK = INTRN_LAST_F90_INTRINSIC + 22,
00983   
00984 
00985     /* End of intrinsics list */
00986 /* More C intrinsics */
00987 
00988   INTRN_C_F4FLOOR = 708,
00989   INTRN_C_F8FLOOR = 709,
00990   INTRN_C_FQFLOOR = 710,
00991   INTRN_C_F4CEIL  = 711,
00992   INTRN_C_F8CEIL  = 712,
00993   INTRN_C_FQCEIL  = 713,
00994   INTRN_C_F4TRUNC = 714,
00995   INTRN_C_F8TRUNC = 715,
00996   INTRN_C_FQTRUNC = 716,
00997 
00998 /* Super Computing ABI Intrinsics */
00999 
01000   INTRN_I4DSHIFTL = 717,
01001   INTRN_I8DSHIFTL = 718,
01002   INTRN_I4DSHIFTR = 719,
01003   INTRN_I8DSHIFTR = 720,
01004   INTRN_I4GBIT    = 721,
01005   INTRN_I8GBIT    = 722,
01006   INTRN_I4GBITS   = 723,
01007   INTRN_I8GBITS   = 724,
01008   INTRN_I4MASK    = 725,
01009   INTRN_I8MASK    = 726,
01010   INTRN_I4MASKL   = 727,
01011   INTRN_I8MASKL   = 728,
01012   INTRN_I4MASKR   = 729,
01013   INTRN_I8MASKR   = 730,
01014   INTRN_I4PBIT    = 731,
01015   INTRN_I8PBIT    = 732,
01016   INTRN_I4PBITS   = 733,
01017   INTRN_I8PBITS   = 734,
01018   INTRN_I4POPPAR  = 735,
01019   INTRN_I8POPPAR  = 736,
01020   INTRN_I4RTC     = 737,
01021   INTRN_I8RTC     = 738,
01022 
01023   INTRN_GETF_EXP  = 739,
01024   INTRN_SETF_EXP  = 740,
01025   INTRN_GETF_SIG  = 741,
01026   INTRN_SETF_SIG  = 742,
01027 
01028   INTRN_FMERGE_NS = 743,
01029   INTRN_FMERGE_S  = 744,
01030   INTRN_FMERGE_SE = 745,
01031 
01032   /* F90 stop */
01033   INTRN_STOP_F90  = 746,
01034 
01035   /* log10 */
01036   INTRN_F4VLOG10  = 747,
01037   INTRN_F8VLOG10  = 748,
01038 
01039   /* gcc divide intrinsics */
01040   INTRN_MODSI3    = 749,
01041   INTRN_UMODSI3   = 750,
01042   INTRN_DIVSI3    = 751,
01043   INTRN_UDIVSI3   = 752,
01044   INTRN_MODDI3    = 753,
01045   INTRN_UMODDI3   = 754,
01046   INTRN_DIVDI3    = 755,
01047   INTRN_UDIVDI3   = 756,
01048   INTRN_DIVSF3    = 757,
01049   INTRN_DIVDF3    = 758,
01050 
01051   /* gcc extensions */
01052   INTRN_I4FFS     = 759,
01053 
01054   /* linux intrinsics */
01055   INTRN_SINCOSF   = 760,
01056   INTRN_SINCOS    = 761,
01057   INTRN_SINCOSL   = 762,
01058 
01059   /* UPC specific */
01060   /* UPC blocking loads */
01061   
01062   INTRN_SILD     = 763,
01063   INTRN_SF4LD     = 764,
01064   INTRN_SF8LD     = 765,
01065   INTRN_SMLD      = 766,
01066   
01067   /* UPC blocking stores */
01068   INTRN_SIST     = 767,
01069   INTRN_SF4ST     = 768,
01070   INTRN_SF8ST     = 769,
01071   INTRN_SMST      = 770,
01072   
01073   /* UPC non-blocking loads */
01074   INTRN_SILD_NB = 771,
01075   INTRN_SF4LD_NB = 772,
01076   INTRN_SF8LD_NB = 773,
01077   INTRN_SMLD_NB = 774,
01078 
01079   /* UPC non-blocking strores */
01080   INTRN_SIST_NB = 775,
01081   INTRN_SF4ST_NB = 776,
01082   INTRN_SF8ST_NB = 777,
01083   INTRN_SMST_NB = 778,
01084 
01085   /* UPC put/get syncs */
01086   INTRN_WAIT_SYNC_MEM = 779,
01087   INTRN_WAIT_SYNC_REG = 780,
01088   INTRN_WAIT_SYNC_FLOAT = 781,
01089   INTRN_WAIT_SYNC_DOUBLE = 782,
01090 
01091   /* UPC pointer arithmetic */
01092   INTRN_SPTRADD   = 783,
01093   INTRN_SPTRDIFF  = 784,
01094   INTRN_SCVTADDR  = 785,
01095 
01096   /* UPC sync */
01097   INTRN_UPCBAR    = 786,
01098   INTRN_UPCWAIT   = 787,
01099   INTRN_UPCNTFY   = 788,
01100 
01101   
01102   INTRN_UPCIAFFT  = 789, 
01103 
01104   INTRN_EXIT   = 790,
01105   INTRN_MYTHREAD = 791,
01106   INTRN_THREADS = 792,
01107 
01108   /* UPC alloc */
01109   INTRN_ALL_ALLOC = 793,
01110   INTRN_GLOBAL_ALLOC = 794,
01111   INTRN_LOCAL_ALLOC = 795,
01112   INTRN_FREE = 796,
01113 
01114   /* various ***OF functions for shared data */
01115   INTRN_THREADOF_S = 797,
01116   INTRN_THREADOF_P = 798,
01117   INTRN_PHASEOF_S = 799,
01118   INTRN_PHASEOF_P = 800,
01119   INTRN_ADDROF_S = 801,
01120   INTRN_ADDROF_P = 802,
01121 
01122   /* UPC lock functions */
01123   INTRN_G_LOCK_ALLOC = 803,
01124   INTRN_A_LOCK_ALLOC = 804,
01125   INTRN_LOCK_FREE = 805,
01126   INTRN_LOCK = 806,
01127   INTRN_LOCK_ATTEMPT = 807,
01128   INTRN_LOCK_UNLOCK = 808,
01129 
01130   /* UPC bulk mem operations */
01131   INTRN_UPC_MEMCPY = 809,
01132   INTRN_UPC_MEMGET = 810,
01133   INTRN_UPC_MEMPUT = 811,
01134   INTRN_UPC_MEMSET = 812,
01135 
01136   /* UPC pointer conversion/test functions */
01137   INTRN_S_TO_L = 813,
01138   INTRN_P_TO_L = 814,
01139   INTRN_S_RESET = 815,
01140   INTRN_S_RESET_REF = 816,
01141   INTRN_ISNULL_S = 817,
01142   INTRN_ISNULL_P = 818,
01143 
01144   /* UPC pointer arithmetic */
01145   INTRN_ADD_S = 819,
01146   INTRN_INC_S = 820,
01147   INTRN_ADD_P1 = 821,
01148   INTRN_INC_P1 = 822,
01149   INTRN_EQ_S_S = 823,
01150   INTRN_EQ_S_P = 824,
01151   INTRN_EQ_P_P = 825,
01152   INTRN_SUB_S = 826,
01153   INTRN_SUB_P1 = 827,
01154 
01155   /* UPC shared pointer affinity check */ 
01156   INTRN_AFF_S = 828,
01157   INTRN_AFF_P = 829,
01158 
01159   /* UPC shared memory accesses */
01160   INTRN_PUT_S = 830,
01161   INTRN_PUT_P = 831,
01162   INTRN_GET_S = 832,
01163   INTRN_GET_P = 833,
01164 
01165   /* UPC non-blocking shared memory accesses */
01166   INTRN_PUT_NB_S = 834,
01167   INTRN_GET_NB_S = 835,
01168   INTRN_PUT_NB_P = 836,
01169   INTRN_GET_NB_P = 837,
01170   INTRN_WAIT_SYN = 838,
01171   INTRN_TRY_SYN = 839,
01172 
01173   /* UPC non-blocking shared memory accesses, implicit handle */ 
01174   INTRN_PUT_NBI_S = 840,
01175   INTRN_GET_NBI_S = 841,
01176   INTRN_PUT_NBI_P = 842,
01177   INTRN_GET_NBI_P = 843,
01178 
01179   /* UPC implicit handle synchronization */
01180   INTRN_WAIT_SYN_GET = 844,
01181   INTRN_WAIT_SYN_PUT = 845,
01182   INTRN_WAIT_SYN_ALL = 846,
01183   INTRN_TRY_SYN_GET = 847,
01184   INTRN_TRY_SYN_PUT = 848,
01185   INTRN_TRY_SYN_ALL = 849,
01186 
01187   /* UPC implicit region synchronization */
01188   INTRN_BEGIN_REGION = 850,
01189   INTRN_END_REGION = 851,
01190 
01191   /* UPC register memory operations */
01192   INTRN_PUT_S_VAL = 852,
01193   INTRN_PUT_NB_S_VAL = 853,
01194   INTRN_PUT_NBI_S_VAL = 854,
01195   INTRN_PUT_P_VAL = 855,
01196   INTRN_PUT_NB_P_VAL = 856,
01197   INTRN_PUT_NBI_P_VAL = 857,
01198   INTRN_GET_S_VAL = 858,
01199   INTRN_GET_P_VAL = 859,
01200   INTRN_GET_NB_S_VAL = 860,
01201   INTRN_GET_NB_P_VAL = 861,
01202 
01203   /* UPC float/double memory operations */
01204   INTRN_PUT_S_FVAL = 862,
01205   INTRN_PUT_S_DVAL = 863,
01206   INTRN_GET_S_FVAL = 864,
01207   INTRN_GET_S_DVAL = 865,
01208   INTRN_PUT_P_FVAL = 866,
01209   INTRN_PUT_P_DVAL = 867,
01210   INTRN_GET_P_FVAL = 868,
01211   INTRN_GET_P_DVAL = 869,
01212   INTRN_WAIT_SYN_VAL = 870,
01213 
01214   /* UPC TLD addr macro */
01215   INTRN_TLD_ADDR = 871,
01216   INTRN_ADD_PI = 872,
01217   INTRN_INC_PI = 873,
01218   INTRN_UPCFENCE = 874,
01219   INTRN_S_TO_P = 875,
01220   INTRN_P_TO_S = 876,
01221   
01222   /* UPC set ptr to NULL */
01223   INTRN_SETNULL_S = 877,
01224   INTRN_SETNULL_P = 878,
01225   INTRN_SETNULL_S_R = 879,
01226   INTRN_SETNULL_P_R = 880,
01227   
01228   /* this one somehow gets missing */
01229   INTRN_SUB_PI = 881,
01230   /* gcc stuff */
01231   INTRN_U4READFRAMEPOINTER = 882,
01232   INTRN_U8READFRAMEPOINTER = 883,
01233   INTRN_APPLY_ARGS = 884,
01234   INTRN_APPLY      = 885,
01235   INTRN_RETURN     = 886,
01236                                                                                                        
01237   /* x86-64 vararg support */
01238   INTRN_VA_START   = 887,
01239   INTRN_SAVE_XMMS  = 888,
01240                                                                                                        
01241   /* EH stuff */
01242   INTRN_LANDING_PAD_ENTRY = 889,
01243                                                                                                        
01244   /* C99 builtins */
01245   INTRN_ISGREATER       = 890,
01246   INTRN_ISGREATEREQUAL  = 891,
01247   INTRN_ISLESS          = 892,
01248   INTRN_ISLESSEQUAL     = 893,
01249   INTRN_ISLESSGREATER   = 894,
01250   INTRN_ISUNORDERED     = 895,
01251                                                                                                        
01252   /* Saturation arithmetic */
01253   INTRN_SUBSU2          = 896,
01254   INTRN_SUBSV16I2       = 897,
01255                                                                                                        
01256   INTRINSIC_LAST  = 897 
01257 
01258 } INTRINSIC;
01259 
01260 #ifdef __cplusplus
01261 }
01262 #endif
01263 
01264 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines