Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
target.m
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 /* USMID:  "\n@(#)5.0_pl/macros/target.m        5.10    10/08/99 08:26:21\n" */
00036 
00037 /* This module is for target specific information.                        */   
00038 
00039 # if defined(_HOST_OS_UNICOS) || defined(_HOST_OS_MAX)
00040 # define      RESTRICT        restrict
00041 # else
00042 # define      RESTRICT
00043 # endif
00044 
00045 # if defined(_TARGET64)
00046 
00047 #    define TARGET_CHARS_PER_WORD               8       /* Chars per word     */
00048 #    define TARGET_BITS_PER_WORD                64      /* Bits per word      */
00049 #    define TARGET_BYTES_PER_WORD               8       /* Bytes per word     */
00050 
00051 #    define TARGET_BYTES_TO_WORDS(BYTE_SIZE)    (((BYTE_SIZE)+7) >> 3)
00052 #    define TARGET_BITS_TO_WORDS(BIT_SIZE)      (((BIT_SIZE)+63) >> 6)
00053 #    define WORD_ALIGNED_BIT_LENGTH(BIT_SIZE)   ((((BIT_SIZE) + 63) >> 6) << 6)
00054 
00055 #    define MAX_WORDS_FOR_INTEGER               1
00056 #    define MAX_WORDS_FOR_NUMERIC               4
00057 #    define MAX_SHORT_TYPELESS_BITS             256
00058 #    define MAX_CHARS_IN_TYPELESS               32
00059 
00060 #    define WORD_ALIGN                          Align_64
00061 
00062 # elif defined(_TARGET32)
00063 
00064 #    define TARGET_CHARS_PER_WORD               4       /* Chars per word     */
00065 #    define TARGET_BITS_PER_WORD                32      /* Bits per word      */
00066 #    define TARGET_BYTES_PER_WORD               4       /* Bytes per word     */
00067 
00068 #    define TARGET_BYTES_TO_WORDS(BYTE_SIZE)    (((BYTE_SIZE)+3) >> 2)
00069 #    define TARGET_BITS_TO_WORDS(BIT_SIZE)      (((BIT_SIZE)+31) >> 5)
00070 #    define WORD_ALIGNED_BIT_LENGTH(BIT_SIZE)   ((((BIT_SIZE) + 31) >> 5) << 5)
00071 
00072 #    define MAX_WORDS_FOR_INTEGER               2
00073 #    define MAX_WORDS_FOR_NUMERIC               8
00074 #    define MAX_SHORT_TYPELESS_BITS             256
00075 #    define MAX_CHARS_IN_TYPELESS               32
00076 
00077 #    define WORD_ALIGN                          Align_32
00078 
00079 # endif
00080 
00081 # if defined(_TARGET64)
00082 # define MAX_DV_EL_LEN          4611686018427387904     /* 2**62  bits  */
00083 # elif defined(_TARGET32)
00084 # define MAX_DV_EL_LEN          1073741823              /* (2**30) -1 bits  */
00085 # endif
00086 
00087 # if (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
00088 # define UNNAMED_PROGRAM_NAME           "MAIN__"
00089 # define UNNAMED_PROGRAM_NAME_LEN       6
00090 # define BLANK_COMMON_NAME              "_BLNK__"
00091 # define BLANK_COMMON_NAME_LEN          7
00092 # else
00093 # define UNNAMED_PROGRAM_NAME           "$MAIN"
00094 # define UNNAMED_PROGRAM_NAME_LEN       5
00095 # define BLANK_COMMON_NAME              "//"
00096 # define BLANK_COMMON_NAME_LEN          2
00097 # endif
00098 
00099 # if 0
00100 /* This is the string that gives unique names to module and internal procs.   */
00101 # endif
00102 
00103 # if defined(_TARGET_OS_UNICOS) || defined(_TARGET_OS_MAX)
00104 #     define UNIQUE_PROC_CONNECTOR              "_in_"
00105 #     define UNIQUE_PROC_LEN                    4
00106 # else
00107 #     define UNIQUE_PROC_CONNECTOR              "_in_"
00108 #     define UNIQUE_PROC_LEN                    4
00109 # endif
00110 
00111 # if 0
00112 /*  On Cray systems, the environment variable CRAYLIBS is used as the path to */
00113 /*  libmodules.a.  The file libmodules.a contains optional system modules.    */
00114 /*  On IRIX systems, the system modules are not built into a library and the  */
00115 /*  CRAYLIBS environment variable is not used; environment variable           */
00116 /*  FTN_SYSTEM_MODULES is used instead as the path and the modules are        */
00117 /*  individually available in the specified directory.  Some time in the      */
00118 /*  future, Cray systems should probably also phase over to using             */
00119 /*  FTN_SYSTEM_MODULES so the location of the system modules can be decoupled */
00120 /*  from the location of the Cray libs.                                       */
00121 /*  Module processing checks these system modules after searching user        */
00122 /*  specified paths and the current directory.  If the shell variable is      */
00123 /*  unset, the compiler will just not look there.  No message is issued.      */
00124 /*  The MODULE_USE_SYSTEM_PATH stuff should be phased out.                    */
00125 # endif
00126 
00127 # if (defined(_HOST_OS_IRIX) || defined(_HOST_OS_LINUX))
00128 # define MODULE_USE_SYSTEM_PATH_VAR             "FTN_SYSTEM_MODULES"
00129 # else
00130 # define MODULE_USE_SYSTEM_PATH_VAR             "CRAYLIBS"
00131 # define MODULE_USE_SYSTEM_FILE                 "libmodules.a"
00132 # endif
00133 
00134 # define SYSTEM_MODULE_USE_VAR                  "FORTRAN_SYSTEM_MODULES"
00135 
00136 
00137 # if defined(_HOST_OS_MAX) || defined(_HOST_OS_UNICOS)
00138 # define MAX_FILE_NAME_SIZE     PATH_MAX+1
00139 # define MAX_PATH_NAME_SIZE     PATH_MAX+1
00140 # define MACHINENAMELEN         65
00141 
00142 # elif (defined(_HOST_OS_IRIX) || defined(_HOST_OS_LINUX)) || defined(_HOST_OS_SOLARIS)
00143 /* Irix: Filename limit defined in /usr/include/limits.h as "FILENAME_MAX" */
00144 # define MAX_FILE_NAME_SIZE     1025
00145 # define MAX_PATH_NAME_SIZE     1025
00146 # define MACHINENAMELEN         65
00147 
00148 # else
00149 /* Linux:                                                                    */
00150 /* 27Dec00[sos]: PV 764378 -- increase to match _POSIX_PATH_MAX as defined   */
00151 /*                            in /usr/include/bits/posix1_lim.h (included by */
00152 /*                            /usr/include/limits.h).                        */
00153 # define MAX_FILE_NAME_SIZE     256
00154 # define MAX_PATH_NAME_SIZE     256
00155 # define MACHINENAMELEN         65
00156 # endif
00157 
00158 
00159 # if defined(_HOST32) && defined(_TARGET64)
00160 # define LEX_STRTOL             strtoll
00161 
00162 # else
00163 # define LEX_STRTOL             strtol
00164 # endif
00165 
00166 # if 0
00167 /* Hard code for now, as gcc can't seem to get it correct. */
00168 # endif
00169 
00170 # if defined(_TARGET_SV2)
00171 # define        OUR_LONG_MAX            2147483647
00172 # else
00173 # define        OUR_LONG_MAX            LONG_MAX
00174 # endif
00175 
00176 
00177 # if 0
00178 /* Used to fill in the large word for table searches */
00179 # endif
00180 
00181 # if defined(_HOST_LITTLE_ENDIAN)
00182 
00183      /* Initialize byte storage with long data, swap it (without assuming    */
00184      /* any particular representation) - else symbol table lookups will fail */
00185 
00186 # ifdef _HOST64
00187 # define        LARGE_WORD_FOR_TBL_SRCH                                        \
00188                  ( (LONG_MAX &               0xffUL) << 56)                    \
00189                 |( (LONG_MAX &             0xff00UL) << 40)                    \
00190                 |( (LONG_MAX &           0xff0000UL) << 24)                    \
00191                 |( (LONG_MAX &         0xff000000UL) <<  8)                    \
00192                 |( (LONG_MAX                         >>  8) & 0xff000000UL)    \
00193                 |( (LONG_MAX                         >> 24) & 0x00ff0000UL)    \
00194                 |( (LONG_MAX                         >> 40) & 0x0000ff00UL)    \
00195                 |( (LONG_MAX                         >> 56) & 0x000000ffUL)
00196 # else
00197 # define        LARGE_WORD_FOR_TBL_SRCH                                        \
00198                  ( (LONG_MAX &           0xffUL) << 24)                        \
00199                 |( (LONG_MAX &         0xff00UL) <<  8)                        \
00200                 |( (LONG_MAX                     >>  8) & 0xff00UL)            \
00201                 |( (LONG_MAX                     >> 24) & 0x00ffUL)
00202 # endif
00203 
00204 # else
00205 # define        LARGE_WORD_FOR_TBL_SRCH         OUR_LONG_MAX
00206 # endif
00207 
00208 # if 0
00209 /* TYPE - defaults.  Please see type.h.                            */
00210 /* CG_LOGICAL_DEFAULT_TYPE is the compiler generated logical type. */
00211 # endif
00212 
00213 # define        LARGEST_INTEGER_TYPE    Integer_8
00214 
00215 # if defined(_TARGET32) || defined(_WHIRL_HOST64_TARGET64)
00216 # define CG_LOGICAL_DEFAULT_TYPE        Logical_4
00217 # elif defined(_TARGET64)
00218 # define CG_LOGICAL_DEFAULT_TYPE        Logical_8
00219 # endif
00220 
00221 # if (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
00222 
00223 # define SA_INTEGER_DEFAULT_TYPE ((cmd_line_flags.s_pointer8) ? \
00224                                          Integer_8 : Integer_4)
00225 # elif defined(_TARGET_OS_MAX)
00226 # define SA_INTEGER_DEFAULT_TYPE        CG_INTEGER_DEFAULT_TYPE
00227 # else
00228 # define SA_INTEGER_DEFAULT_TYPE        INTEGER_DEFAULT_TYPE
00229 # endif
00230 
00231 # define TARGET_MAX_HALF_WORD_STORAGE_TYPE(type_idx)                           \
00232         ((TYP_LINEAR(type_idx) == Real_4) ||                                   \
00233          (TYP_LINEAR(type_idx) == Integer_1) ||                                \
00234          (TYP_LINEAR(type_idx) == Integer_2) ||                                \
00235          (TYP_LINEAR(type_idx) == Integer_4) ||                                \
00236          (TYP_LINEAR(type_idx) == Logical_1) ||                                \
00237          (TYP_LINEAR(type_idx) == Logical_2) ||                                \
00238          (TYP_LINEAR(type_idx) == Logical_4))
00239 
00240 # define TARGET_32BIT_DOUBLE_WORD_STORAGE_TYPE(type_idx)                       \
00241         ((TYP_LINEAR(type_idx) == Real_8) ||                                   \
00242          (TYP_LINEAR(type_idx) == Real_16) ||                                  \
00243          (TYP_LINEAR(type_idx) == Complex_8) ||                                \
00244          (TYP_LINEAR(type_idx) == Complex_16) ||                               \
00245          (TYP_LINEAR(type_idx) == Integer_8) ||                                \
00246          (TYP_LINEAR(type_idx) == Logical_8))
00247  
00248 # ifdef _TARGET_OS_UNICOS
00249 #    define TRUE_VALUE          true_value
00250 #    define FALSE_VALUE         0
00251 # else
00252 #    define TRUE_VALUE          1
00253 #    define FALSE_VALUE         0
00254 # endif
00255 
00256 
00257 /*  Used for machine characteristics call */
00258 
00259 # ifdef _TARGET_OS_UNICOS
00260 
00261 #    ifdef _HOST_OS_UNICOS
00262 #       define MAX_STORAGE_SIZE_IN_WORDS        target_machine.fld.mcmsz
00263 #    else
00264 #       define MAX_STORAGE_SIZE_IN_WORDS        8388608         /* 2**23 */
00265 #    endif
00266 
00267 # elif (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
00268 #    undef MAX_STORAGE_SIZE_IN_WORDS            /* Hard coded inline. */
00269 
00270 # elif defined(_TARGET_OS_MAX)
00271 #    define MAX_STORAGE_SIZE_IN_WORDS           target_machine.fld.mcmsz
00272 # elif defined(_TARGET32)
00273 #    define MAX_STORAGE_SIZE_IN_WORDS           67108864-1      /* 2**26 */
00274 # else
00275 #    define MAX_STORAGE_SIZE_IN_WORDS           8388608         /* 2**23 */
00276 # endif
00277 
00278 # if (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
00279 # define        ISSUE_STORAGE_SIZE_EXCEEDED_MSG(ATTR_IDX, ERR_LVL)             \
00280                 PRINTMSG(AT_DEF_LINE(ATTR_IDX), 1435, ERR_LVL,                 \
00281                          AT_DEF_COLUMN(ATTR_IDX),                              \
00282                          AT_OBJ_NAME_PTR(ATTR_IDX),                            \
00283                          (cmd_line_flags.s_pointer8) ?                         \
00284                          "9,007,199,254,740,992" : "536,870,912");
00285 
00286 
00287 # define        ISSUE_EXPR_SIZE_EXCEEDED_MSG(LINE, COLUMN, ERR_LVL)            \
00288                 PRINTMSG(LINE, 1434, ERR_LVL, COLUMN,                          \
00289                          (cmd_line_flags.s_pointer8) ?                         \
00290                          "9,007,199,254,740,992" : "536,870,912");
00291 # else
00292 # define        ISSUE_STORAGE_SIZE_EXCEEDED_MSG(ATTR_IDX, ERR_LVL)             \
00293                 PRINTMSG(AT_DEF_LINE(ATTR_IDX), 614, ERR_LVL,                  \
00294                          AT_DEF_COLUMN(ATTR_IDX),                              \
00295                          AT_OBJ_NAME_PTR(ATTR_IDX),                            \
00296                          MAX_STORAGE_SIZE_IN_WORDS);
00297 
00298 # define        ISSUE_EXPR_SIZE_EXCEEDED_MSG(LINE, COLUMN, ERR_LVL)            \
00299                 PRINTMSG(LINE, 615, ERR_LVL, COLUMN,                           \
00300                          MAX_STORAGE_SIZE_IN_WORDS);
00301 # endif
00302 
00303 /* Used for IO processing */
00304 
00305 # if defined(_TARGET_OS_UNICOS) || defined(_TARGET_OS_MAX)
00306 #    define MAX_NUM_CILIST_WORDS        7
00307 # else
00308 #    define MAX_NUM_CILIST_WORDS        8
00309 # endif
00310 
00311 /* Used to set ATP_EXT_NAME_IDX */
00312 
00313 # if (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
00314 # define MAKE_EXTERNAL_NAME(ATTR_IDX, NAME_IDX, NAME_LEN)                      \
00315         make_external_name(ATTR_IDX, NAME_IDX, NAME_LEN);
00316 # else
00317 # define MAKE_EXTERNAL_NAME(ATTR_IDX, NAME_IDX, NAME_LEN)                      \
00318         ATP_EXT_NAME_IDX(ATTR_IDX)      = NAME_IDX;                            \
00319         ATP_EXT_NAME_LEN(ATTR_IDX)      = NAME_LEN;
00320 # endif
00321          
00322 
00323 /* Following are commandline options and directives that are not accepted   */
00324 /* on all supported platforms.  undef is not accepted, defined is accepted. */
00325 /* If a commandline option or a directive is added (or changed) so that it  */
00326 /* is not accepted on one or more platforms, it should be added here and    */
00327 /* the new ifdef used where ever platform dependent code is found.          */
00328 
00329 /* NOTE:  The PDGCS interface makes -ef/-df and -k mutually exclusive.      */
00330 /* NOTE:  On UNICOS, the unroll commandline options are not accepted, but   */
00331 /*        the directives are accepted.                                      */
00332 
00333 # if defined(_TARGET_SV2)
00334 #       define          _INLINE_INTRINSICS              TRUE
00335 
00336 #       undef           _ACCEPT_BL
00337 #       define          _ACCEPT_FLOW                    TRUE
00338 #       define          _ACCEPT_INLINE                  TRUE
00339 #       define          _ACCEPT_MIC_SEND                TRUE
00340 #       define          _ACCEPT_MIC_WAIT                TRUE
00341 #       define          _ACCEPT_PATTERN                 TRUE
00342 #       undef           _ACCEPT_SHORTCIRCUIT
00343 #       undef           _ACCEPT_SPLIT
00344 #       define          _ACCEPT_STREAM                  TRUE
00345 #       undef           _ACCEPT_TASK
00346 #       define          _ACCEPT_VECTOR                  TRUE
00347 #       define          _ACCEPT_VSEARCH                 TRUE
00348 
00349 #       undef           _ACCEPT_CMD_align
00350 #       undef           _ACCEPT_CMD_a_static_threadprivate
00351 #       undef           _ACCEPT_CMD_a_dalign
00352 #       undef           _ACCEPT_CMD_a_pad
00353 #       undef           _ACCEPT_CMD_k
00354 #       undef           _ACCEPT_CMD_Gd
00355 #       define          _ACCEPT_CMD_J                   TRUE
00356 #       undef           _ACCEPT_CMD_P
00357 #       define          _ACCEPT_CMD_s_cf77types         TRUE
00358 #       undef           _ACCEPT_CMD_s_32
00359 #       define          _ACCEPT_CMD_s_64                TRUE
00360 #       undef           _ACCEPT_CMD_X
00361 
00362 #       define          _ACCEPT_CMD_ed_g                TRUE
00363 
00364 # if defined(_INTEGER_1_AND_2)
00365 #       define          _ACCEPT_CMD_ed_h                TRUE
00366 # else
00367 #       undef           _ACCEPT_CMD_ed_h
00368 # endif
00369 #       define          _ACCEPT_CMD_ed_i                TRUE
00370 #       define          _ACCEPT_CMD_ed_j                TRUE
00371 #       define          _ACCEPT_CMD_ed_r                TRUE
00372 #       undef           _ACCEPT_CMD_ed_z
00373 #       undef           _ACCEPT_CMD_ed_A
00374 #       undef           _ACCEPT_CMD_ed_C
00375 #       define          _ACCEPT_CMD_ed_D                TRUE
00376 #       undef           _ACCEPT_CMD_ed_U
00377 #       define          _ACCEPT_CMD_ed_X                TRUE
00378 #       define          _ACCEPT_CMD_ed_0                TRUE
00379 
00380 #       define          _ACCEPT_CMD_O_FASTINT           TRUE
00381 #       define          _ACCEPT_CMD_O_FUSION            TRUE
00382 #       define          _ACCEPT_CMD_O_JUMP              TRUE
00383 #       define          _ACCEPT_CMD_O_LOOPALIGN         TRUE
00384 #       undef           _ACCEPT_CMD_O_MATMUL_INLINE
00385 #       define          _ACCEPT_CMD_O_OPT_INFO          TRUE
00386 #       undef           _ACCEPT_CMD_O_PIPELINE
00387 #       undef           _ACCEPT_CMD_O_RESHAPE
00388 #       undef           _ACCEPT_CMD_O_UNROLL
00389 #       define          _ACCEPT_CMD_O_ZEROINC           TRUE
00390 
00391 #       undef           _ACCEPT_DIR_SHORTLOOP128
00392 
00393 # elif defined(_TARGET_OS_UNICOS)
00394 #       define          _INLINE_INTRINSICS              TRUE
00395 
00396 #       define          _ACCEPT_BL                      TRUE
00397 #       define          _ACCEPT_FLOW                    TRUE
00398 #       define          _ACCEPT_INLINE                  TRUE
00399 #       define          _ACCEPT_MIC_SEND                TRUE
00400 #       define          _ACCEPT_MIC_WAIT                TRUE
00401 #       define          _ACCEPT_PATTERN                 TRUE
00402 #       undef           _ACCEPT_SHORTCIRCUIT
00403 #       undef           _ACCEPT_SPLIT
00404 #       define          _ACCEPT_STREAM                  TRUE
00405 #       define          _ACCEPT_TASK                    TRUE
00406 #       define          _ACCEPT_VECTOR                  TRUE
00407 #       define          _ACCEPT_VSEARCH                 TRUE
00408 
00409 #       undef           _ACCEPT_CMD_align
00410 #       undef           _ACCEPT_CMD_a_static_threadprivate
00411 #       undef           _ACCEPT_CMD_a_dalign
00412 #       undef           _ACCEPT_CMD_a_pad
00413 #       undef           _ACCEPT_CMD_k
00414 #       undef           _ACCEPT_CMD_Gd
00415 #       define          _ACCEPT_CMD_J                   TRUE
00416 #       undef           _ACCEPT_CMD_P
00417 #       define          _ACCEPT_CMD_s_cf77types         TRUE
00418 #       undef           _ACCEPT_CMD_s_32
00419 #       undef           _ACCEPT_CMD_s_64
00420 #       undef           _ACCEPT_CMD_X
00421 
00422 #       define          _ACCEPT_CMD_ed_g                TRUE
00423 
00424 # if defined(_INTEGER_1_AND_2)
00425 #       define          _ACCEPT_CMD_ed_h                TRUE
00426 # else
00427 #       undef           _ACCEPT_CMD_ed_h
00428 # endif
00429 #       define          _ACCEPT_CMD_ed_i                TRUE
00430 #       define          _ACCEPT_CMD_ed_j                TRUE
00431 #       define          _ACCEPT_CMD_ed_r                TRUE
00432 #       undef           _ACCEPT_CMD_ed_z
00433 #       undef           _ACCEPT_CMD_ed_A
00434 #       undef           _ACCEPT_CMD_ed_C
00435 #       define          _ACCEPT_CMD_ed_D                TRUE
00436 #       undef           _ACCEPT_CMD_ed_U
00437 #       define          _ACCEPT_CMD_ed_X                TRUE
00438 #       define          _ACCEPT_CMD_ed_0                TRUE
00439 
00440 #       define          _ACCEPT_CMD_O_FASTINT           TRUE
00441 #       undef           _ACCEPT_CMD_O_FUSION
00442 #       undef           _ACCEPT_CMD_O_JUMP
00443 #       define          _ACCEPT_CMD_O_LOOPALIGN         TRUE
00444 #       undef           _ACCEPT_CMD_O_MATMUL_INLINE
00445 #       define          _ACCEPT_CMD_O_OPT_INFO          TRUE
00446 #       undef           _ACCEPT_CMD_O_PIPELINE
00447 #       undef           _ACCEPT_CMD_O_RESHAPE
00448 #       undef           _ACCEPT_CMD_O_UNROLL
00449 #       define          _ACCEPT_CMD_O_ZEROINC           TRUE
00450 
00451 #       define          _ACCEPT_DIR_SHORTLOOP128        TRUE
00452 
00453 # elif defined(_TARGET_OS_MAX)
00454 #       define          _INLINE_INTRINSICS              TRUE
00455 
00456 #       define          _ACCEPT_BL                      TRUE
00457 #       undef           _ACCEPT_FLOW
00458 #       define          _ACCEPT_INLINE                  TRUE
00459 #       undef           _ACCEPT_MIC_SEND
00460 #       undef           _ACCEPT_MIC_WAIT
00461 #       define          _ACCEPT_PATTERN                 TRUE
00462 #       define          _ACCEPT_SPLIT                   TRUE
00463 #       undef           _ACCEPT_SHORTCIRCUIT
00464 #       undef           _ACCEPT_STREAM
00465 #       undef           _ACCEPT_TASK
00466 #       define          _ACCEPT_VECTOR                  TRUE
00467 #       undef           _ACCEPT_VSEARCH
00468 
00469 #       undef           _ACCEPT_CMD_align
00470 #       undef           _ACCEPT_CMD_a_dalign
00471 #       undef           _ACCEPT_CMD_a_static_threadprivate
00472 #       define          _ACCEPT_CMD_a_pad               TRUE
00473 #       undef           _ACCEPT_CMD_k
00474 #       define          _ACCEPT_CMD_s_cf77types         TRUE
00475 #       define          _ACCEPT_CMD_s_32                TRUE
00476 #       undef           _ACCEPT_CMD_s_64
00477 #       undef           _ACCEPT_CMD_Gd
00478 #       define          _ACCEPT_CMD_J                   TRUE
00479 #       undef           _ACCEPT_CMD_P
00480 #       define          _ACCEPT_CMD_X                   TRUE
00481 
00482 #       undef           _ACCEPT_CMD_ed_g
00483 #       undef           _ACCEPT_CMD_ed_h
00484 #       define          _ACCEPT_CMD_ed_i                TRUE
00485 #       undef           _ACCEPT_CMD_ed_j
00486 #       undef           _ACCEPT_CMD_ed_r
00487 #       undef           _ACCEPT_CMD_ed_z
00488 #       define          _ACCEPT_CMD_ed_A                TRUE
00489 #       define          _ACCEPT_CMD_ed_C                TRUE
00490 #       define          _ACCEPT_CMD_ed_D                TRUE
00491 #       undef           _ACCEPT_CMD_ed_U
00492 #       undef           _ACCEPT_CMD_ed_X
00493 #       define          _ACCEPT_CMD_ed_0                TRUE
00494 
00495 #       undef           _ACCEPT_CMD_O_FASTINT
00496 #       define          _ACCEPT_CMD_O_FUSION            TRUE
00497 #       define          _ACCEPT_CMD_O_JUMP              TRUE
00498 #       undef           _ACCEPT_CMD_O_LOOPALIGN
00499 #       undef           _ACCEPT_CMD_O_MATMUL_INLINE
00500 #       define          _ACCEPT_CMD_O_PIPELINE          TRUE
00501 #       define          _ACCEPT_CMD_O_RESHAPE           TRUE
00502 #       define          _ACCEPT_CMD_O_OPT_INFO          TRUE
00503 #       define          _ACCEPT_CMD_O_UNROLL            TRUE
00504 #       define          _ACCEPT_CMD_O_ZEROINC           TRUE
00505 
00506 #       undef           _ACCEPT_DIR_SHORTLOOP128
00507 
00508 # elif (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
00509 #       define          _INLINE_INTRINSICS              TRUE
00510 
00511 #       undef           _ACCEPT_BL
00512 #       undef           _ACCEPT_FLOW
00513 #       define          _ACCEPT_INLINE                  TRUE
00514 #       undef           _ACCEPT_MIC_SEND
00515 #       undef           _ACCEPT_MIC_WAIT
00516 #       undef           _ACCEPT_PATTERN
00517 #       undef           _ACCEPT_SPLIT
00518 #       define          _ACCEPT_SHORTCIRCUIT            TRUE
00519 #       undef           _ACCEPT_STREAM
00520 #       define          _ACCEPT_TASK                    TRUE
00521 #       undef           _ACCEPT_VECTOR
00522 #       undef           _ACCEPT_VSEARCH
00523 
00524 #       define          _ACCEPT_CMD_align               TRUE
00525 #       define          _ACCEPT_CMD_a_dalign            TRUE
00526 #       define          _ACCEPT_CMD_a_static_threadprivate      TRUE
00527 #       undef           _ACCEPT_CMD_a_pad
00528 #       define          _ACCEPT_CMD_k                   TRUE
00529 #       undef           _ACCEPT_CMD_s_cf77types
00530 #       undef           _ACCEPT_CMD_s_32
00531 #       define          _ACCEPT_CMD_s_64                TRUE
00532 #       define          _ACCEPT_CMD_Gd                  TRUE
00533 #       undef           _ACCEPT_CMD_J
00534 #       define          _ACCEPT_CMD_P                   TRUE
00535 #       undef           _ACCEPT_CMD_X
00536 
00537 #       define          _ACCEPT_CMD_ed_g                TRUE
00538 #       undef           _ACCEPT_CMD_ed_h
00539 #       undef           _ACCEPT_CMD_ed_i
00540 #       define          _ACCEPT_CMD_ed_j                TRUE
00541 #       undef           _ACCEPT_CMD_ed_r
00542 #       define          _ACCEPT_CMD_ed_z                TRUE
00543 #       undef           _ACCEPT_CMD_ed_A
00544 #       undef           _ACCEPT_CMD_ed_C
00545 #       undef           _ACCEPT_CMD_ed_D
00546 #       define          _ACCEPT_CMD_ed_U                TRUE
00547 #       define          _ACCEPT_CMD_ed_X                TRUE
00548 #       undef           _ACCEPT_CMD_ed_0
00549 
00550 #       undef           _ACCEPT_CMD_O_FASTINT
00551 #       undef           _ACCEPT_CMD_O_FUSION
00552 #       undef           _ACCEPT_CMD_O_JUMP
00553 #       undef           _ACCEPT_CMD_O_LOOPALIGN
00554 #       define          _ACCEPT_CMD_O_MATMUL_INLINE     TRUE
00555 #       undef           _ACCEPT_CMD_O_OPT_INFO
00556 #       undef           _ACCEPT_CMD_O_PIPELINE
00557 #       undef           _ACCEPT_CMD_O_RESHAPE
00558 #       define          _ACCEPT_CMD_O_UNROLL            TRUE
00559 #       define          _ACCEPT_CMD_O_ZEROINC           TRUE
00560 
00561 #       undef           _ACCEPT_DIR_SHORTLOOP128
00562 
00563 # elif defined(_TARGET_OS_SOLARIS)
00564 #       define          _INLINE_INTRINSICS              TRUE
00565 
00566 #       undef           _ACCEPT_BL
00567 #       undef           _ACCEPT_FLOW
00568 #       undef           _ACCEPT_INLINE
00569 #       undef           _ACCEPT_MIC_SEND
00570 #       undef           _ACCEPT_MIC_WAIT
00571 #       define          _ACCEPT_PATTERN                 TRUE
00572 #       undef           _ACCEPT_SPLIT
00573 #       undef           _ACCEPT_SHORTCIRCUIT
00574 #       undef           _ACCEPT_STREAM
00575 #       define          _ACCEPT_TASK                    TRUE
00576 #       undef           _ACCEPT_VECTOR
00577 #       undef           _ACCEPT_VSEARCH
00578 
00579 #       undef           _ACCEPT_CMD_align
00580 #       define          _ACCEPT_CMD_a_dalign            TRUE
00581 #       undef           _ACCEPT_CMD_a_static_threadprivate
00582 #       undef           _ACCEPT_CMD_a_pad
00583 #       define          _ACCEPT_CMD_k                   TRUE
00584 #       undef           _ACCEPT_CMD_s_cf77types
00585 #       undef           _ACCEPT_CMD_s_32
00586 #       define          _ACCEPT_CMD_s_64                TRUE
00587 #       undef           _ACCEPT_CMD_Gd
00588 #       undef           _ACCEPT_CMD_J
00589 #       define          _ACCEPT_CMD_P                   TRUE
00590 #       undef           _ACCEPT_CMD_X
00591 
00592 #       define          _ACCEPT_CMD_ed_g                TRUE
00593 #       undef           _ACCEPT_CMD_ed_h
00594 #       undef           _ACCEPT_CMD_ed_i
00595 #       define          _ACCEPT_CMD_ed_j                TRUE
00596 #       undef           _ACCEPT_CMD_ed_r
00597 #       undef           _ACCEPT_CMD_ed_z
00598 #       undef           _ACCEPT_CMD_ed_A
00599 #       undef           _ACCEPT_CMD_ed_C
00600 #       undef           _ACCEPT_CMD_ed_D
00601 #       define          _ACCEPT_CMD_ed_U                TRUE
00602 #       define          _ACCEPT_CMD_ed_X                TRUE
00603 #       undef           _ACCEPT_CMD_ed_0
00604 
00605 #       undef           _ACCEPT_CMD_O_FASTINT
00606 #       undef           _ACCEPT_CMD_O_FUSION
00607 #       undef           _ACCEPT_CMD_O_JUMP
00608 #       undef           _ACCEPT_CMD_O_LOOPALIGN
00609 #       undef           _ACCEPT_CMD_O_MATMUL_INLINE
00610 #       undef           _ACCEPT_CMD_O_OPT_INFO
00611 #       undef           _ACCEPT_CMD_O_PIPELINE
00612 #       undef           _ACCEPT_CMD_O_RESHAPE
00613 #       define          _ACCEPT_CMD_O_UNROLL            TRUE
00614 #       define          _ACCEPT_CMD_O_ZEROINC           TRUE
00615 
00616 #       undef           _ACCEPT_DIR_SHORTLOOP128
00617 
00618 # else 
00619 #       undef           _INLINE_INTRINSICS      
00620 
00621 #       undef           _ACCEPT_BL
00622 #       undef           _ACCEPT_FLOW
00623 #       undef           _ACCEPT_INLINE
00624 #       undef           _ACCEPT_MIC_SEND
00625 #       undef           _ACCEPT_MIC_WAIT
00626 #       undef           _ACCEPT_PATTERN
00627 #       undef           _ACCEPT_TASK
00628 #       undef           _ACCEPT_STREAM
00629 #       undef           _ACCEPT_VECTOR
00630 #       undef           _ACCEPT_VSEARCH
00631 
00632 #       undef           _ACCEPT_CMD_align
00633 #       undef           _ACCEPT_CMD_a_dalign
00634 #       undef           _ACCEPT_CMD_a_static_threadprivate
00635 #       undef           _ACCEPT_CMD_a_pad
00636 #       undef           _ACCEPT_CMD_k
00637 #       undef           _ACCEPT_CMD_s_32
00638 #       undef           _ACCEPT_CMD_s_64
00639 #       undef           _ACCEPT_CMD_Gd
00640 #       undef           _ACCEPT_CMD_J
00641 #       undef           _ACCEPT_CMD_P
00642 #       undef           _ACCEPT_CMD_X
00643 
00644 #       define          _ACCEPT_CMD_ed_g                TRUE
00645 #       undef           _ACCEPT_CMD_ed_h
00646 #       define          _ACCEPT_CMD_ed_i                TRUE
00647 #       define          _ACCEPT_CMD_ed_j                TRUE
00648 #       define          _ACCEPT_CMD_ed_r                TRUE
00649 #       undef           _ACCEPT_CMD_ed_z
00650 #       undef           _ACCEPT_CMD_ed_A
00651 #       undef           _ACCEPT_CMD_ed_C
00652 #       define          _ACCEPT_CMD_ed_X                TRUE
00653 #       undef           _ACCEPT_CMD_ed_0
00654 
00655 #       undef           _ACCEPT_CMD_O_FASTINT
00656 #       undef           _ACCEPT_CMD_O_FUSION
00657 #       undef           _ACCEPT_CMD_O_JUMP
00658 #       undef           _ACCEPT_CMD_O_LOOPALIGN
00659 #       undef           _ACCEPT_CMD_O_MATMUL_INLINE
00660 #       undef           _ACCEPT_CMD_O_OPT_INFO
00661 #       undef           _ACCEPT_CMD_O_PIPELINE
00662 #       undef           _ACCEPT_CMD_O_RESHAPE
00663 #       undef           _ACCEPT_CMD_O_UNROLL
00664 #       define          _ACCEPT_CMD_O_ZEROINC           TRUE
00665 
00666 #       undef           _ACCEPT_DIR_SHORTLOOP128
00667 
00668 # endif
00669 
00670 
00671 /* The following directive acceptance is based on command line */
00672 /* option acceptance and other ifdefs.                         */
00673 
00674 # if defined(_ACCEPT_BL)
00675 #    define             CDIR_BL                 TRUE
00676 # else
00677 #    define             CDIR_BL                 FALSE
00678 # endif
00679 
00680 # if defined(_ACCEPT_FLOW)
00681 #    define             CDIR_FLOW               TRUE
00682 # else
00683 #    define             CDIR_FLOW               FALSE
00684 # endif
00685 
00686 # if defined(_ACCEPT_INLINE)
00687 #    define             CDIR_INLINE             TRUE
00688 # else
00689 #    define             CDIR_INLINE             FALSE
00690 # endif
00691 
00692 # if defined(_ACCEPT_STREAM)
00693 #    define             CDIR_STREAM             TRUE
00694 # else
00695 #    define             CDIR_STREAM             FALSE
00696 # endif
00697 
00698 # if defined(_ACCEPT_PATTERN)
00699 #    define             CDIR_PATTERN            TRUE
00700 # else
00701 #    define             CDIR_PATTERN            FALSE
00702 # endif
00703 
00704 # if defined(_ACCEPT_SPLIT)
00705 #    define             CDIR_SPLIT              TRUE
00706 # else
00707 #    define             CDIR_SPLIT              FALSE
00708 # endif
00709 
00710 # if defined(_ACCEPT_TASK)
00711 #    define             CDIR_TASK               TRUE
00712 # else
00713 #    define             CDIR_TASK               FALSE
00714 # endif
00715 
00716 # if defined(_ACCEPT_VECTOR)
00717 #    define             CDIR_VECTOR             TRUE
00718 # else
00719 #    define             CDIR_VECTOR             FALSE
00720 # endif
00721 
00722 # if defined(_ACCEPT_VSEARCH)
00723 #    define             CDIR_VSEARCH            TRUE
00724 # else
00725 #    define             CDIR_VSEARCH            FALSE
00726 # endif
00727 
00728 # if defined(_TASK_COMMON_EXTENSION)
00729 #    define             CDIR_TASKCOMMON         TRUE
00730 # else
00731 #    define             CDIR_TASKCOMMON         FALSE
00732 # endif
00733 
00734 
00735 /* Directive acceptance for each platform */
00736 
00737 # if defined(_TARGET_SV2)
00738 
00739 #       define          CDIR_ALIGN                      FALSE
00740 #       define          CDIR_AUXILIARY                  FALSE
00741 #       define          CDIR_BLOCKABLE                  TRUE
00742 #       define          CDIR_CACHE_ALIGN                FALSE
00743 #       define          CDIR_CACHE_BLOCK                TRUE
00744 #       define          CDIR_CACHE_BYPASS               FALSE
00745 #       define          CDIR_CACHE_NOALLOCATE           TRUE
00746 #       define          CDIR_CONCURRENT                 TRUE
00747 #       define          CDIR_COPY_ASSUMED_SHAPE         TRUE
00748 #       define          CDIR_INTERCHANGE                TRUE
00749 #       define          CDIR_IVDEP                      TRUE
00750 #       define          CDIR_NOSIDEEFFECTS              TRUE
00751 #       define          CDIR_PREFERTASK                 TRUE
00752 #       define          CDIR_PREFERVECTOR               TRUE
00753 #       define          CDIR_RECURRENCE                 TRUE
00754 #       define          CDIR_SHORTLOOP                  TRUE
00755 #       define          CDIR_STACK                      TRUE
00756 #       define          CDIR_SUPPRESS                   TRUE
00757 #       define          CDIR_SYMMETRIC                  FALSE
00758 #       define          CDIR_UNROLL                     TRUE
00759 #       define          CDIR_USES_EREGS                 FALSE
00760 #       define          CDIR_VFUNCTION                  TRUE
00761 
00762 # elif defined(_TARGET_OS_UNICOS)
00763 
00764 #       define          CDIR_ALIGN                      TRUE
00765 #       define          CDIR_AUXILIARY                  TRUE
00766 #       define          CDIR_BLOCKABLE                  TRUE
00767 #       define          CDIR_CACHE_ALIGN                FALSE
00768 #       define          CDIR_CACHE_BLOCK                TRUE
00769 #       define          CDIR_CACHE_BYPASS               FALSE
00770 #       define          CDIR_CACHE_NOALLOCATE           FALSE
00771 #       define          CDIR_CONCURRENT                 TRUE
00772 #       define          CDIR_COPY_ASSUMED_SHAPE         TRUE
00773 #       define          CDIR_INTERCHANGE                TRUE
00774 #       define          CDIR_IVDEP                      TRUE
00775 #       define          CDIR_NOSIDEEFFECTS              TRUE
00776 #       define          CDIR_PREFERTASK                 TRUE
00777 #       define          CDIR_PREFERVECTOR               TRUE
00778 #       define          CDIR_RECURRENCE                 TRUE
00779 #       define          CDIR_SHORTLOOP                  TRUE
00780 #       define          CDIR_STACK                      TRUE
00781 #       define          CDIR_SUPPRESS                   TRUE
00782 #       define          CDIR_SYMMETRIC                  FALSE
00783 #       define          CDIR_UNROLL                     TRUE
00784 #       define          CDIR_USES_EREGS                 FALSE
00785 #       define          CDIR_VFUNCTION                  TRUE
00786 
00787 # elif defined(_TARGET_OS_MAX)
00788 
00789 #       define          CDIR_ALIGN                      FALSE
00790 #       define          CDIR_AUXILIARY                  FALSE
00791 #       define          CDIR_BLOCKABLE                  TRUE
00792 #       define          CDIR_CACHE_ALIGN                TRUE
00793 #       define          CDIR_CACHE_BLOCK                TRUE
00794 #       define          CDIR_CACHE_BYPASS               TRUE
00795 #       define          CDIR_CACHE_NOALLOCATE           FALSE
00796 #       define          CDIR_CONCURRENT                 TRUE
00797 #       define          CDIR_COPY_ASSUMED_SHAPE         TRUE
00798 #       define          CDIR_INTERCHANGE                TRUE
00799 #       define          CDIR_IVDEP                      TRUE
00800 #       define          CDIR_NOSIDEEFFECTS              FALSE
00801 #       define          CDIR_PREFERTASK                 FALSE
00802 #       define          CDIR_PREFERVECTOR               FALSE
00803 #       define          CDIR_RECURRENCE                 TRUE
00804 #       define          CDIR_SHORTLOOP                  TRUE
00805 #       define          CDIR_STACK                      TRUE
00806 #       define          CDIR_SUPPRESS                   TRUE
00807 #       define          CDIR_SYMMETRIC                  TRUE
00808 #       define          CDIR_UNROLL                     TRUE
00809 #       define          CDIR_USES_EREGS                 TRUE
00810 #       define          CDIR_VFUNCTION                  FALSE
00811 
00812 # elif (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
00813 #       define          CDIR_ALIGN                      FALSE
00814 #       define          CDIR_AUXILIARY                  FALSE
00815 #       define          CDIR_BLOCKABLE                  FALSE
00816 #       define          CDIR_CACHE_ALIGN                FALSE
00817 #       define          CDIR_CACHE_BLOCK                FALSE
00818 #       define          CDIR_CACHE_BYPASS               FALSE
00819 #       define          CDIR_CACHE_NOALLOCATE           FALSE
00820 #       define          CDIR_CONCURRENT                 FALSE
00821 #       define          CDIR_COPY_ASSUMED_SHAPE         FALSE
00822 #       define          CDIR_INTERCHANGE                FALSE
00823 #       define          CDIR_IVDEP                      TRUE
00824 #       define          CDIR_NOSIDEEFFECTS              TRUE
00825 #       define          CDIR_PREFERTASK                 TRUE
00826 #       define          CDIR_PREFERVECTOR               FALSE
00827 #       define          CDIR_RECURRENCE                 FALSE
00828 #       define          CDIR_SHORTLOOP                  FALSE
00829 #       define          CDIR_STACK                      FALSE
00830 #       define          CDIR_SUPPRESS                   FALSE
00831 #       define          CDIR_SYMMETRIC                  FALSE
00832 #       define          CDIR_UNROLL                     TRUE
00833 #       define          CDIR_USES_EREGS                 FALSE
00834 #       define          CDIR_VFUNCTION                  FALSE
00835 
00836 # elif defined(_TARGET_OS_SOLARIS)
00837 
00838 #       define          CDIR_ALIGN                      FALSE
00839 #       define          CDIR_AUXILIARY                  FALSE
00840 #       define          CDIR_BLOCKABLE                  FALSE
00841 #       define          CDIR_CACHE_ALIGN                FALSE
00842 #       define          CDIR_CACHE_BLOCK                FALSE
00843 #       define          CDIR_CACHE_BYPASS               FALSE
00844 #       define          CDIR_CACHE_NOALLOCATE           FALSE
00845 #       define          CDIR_CONCURRENT                 FALSE
00846 #       define          CDIR_COPY_ASSUMED_SHAPE         FALSE
00847 #       define          CDIR_INTERCHANGE                FALSE
00848 #       define          CDIR_IVDEP                      FALSE
00849 #       define          CDIR_NOSIDEEFFECTS              FALSE
00850 #       define          CDIR_PREFERTASK                 TRUE
00851 #       define          CDIR_PREFERVECTOR               FALSE
00852 #       define          CDIR_RECURRENCE                 TRUE
00853 #       define          CDIR_SHORTLOOP                  FALSE
00854 #       define          CDIR_STACK                      TRUE
00855 #       define          CDIR_SUPPRESS                   TRUE
00856 #       define          CDIR_SYMMETRIC                  FALSE
00857 #       define          CDIR_UNROLL                     TRUE
00858 #       define          CDIR_USES_EREGS                 FALSE
00859 #       define          CDIR_VFUNCTION                  FALSE
00860 
00861 # endif 
00862 
00863 #define _ACCEPT_CMD_J TRUE /*temp use for co-array ----fzhao*/
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines