Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
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