IO Library
Intrinsic functions and subroutines
Some formatted IO of integers. The current implementation will silently ignore many IO commands.
The library is not thread-safe. This will have to be fixed because OpenMP allows threaded IO.
TODO: Figure out what the IO library can really do
Some intrinsics map directly to library functions, and in most
cases the name of the library function used depends on the type of
the arguments. For some intrinsics we generate inline code, and for
others, such as sin, cos and sqrt, we rely on the backend to use
special instructions in the floating point unit of the CPU if
available, or to fall back to a call to libm
if not.
Implementation of some non-elemental intrinsic functions (eg. DOT_PRODUCT, AVERAGE) is not yet optimal. This is hard because we have to make decisions whether to use inline code (good for small arrays as no function call overhead occurs) or generate function calls (good for large arrays as it allows use of hand-optimized assembly routines, SIMD instructions, etc.)
Implementations marked * are performed by the frontend, and are never seen by the code generation routines. Other calls may also be eliminated if their value is known at compile time. Intrinsics marked ** are implemented by means of inline code. There is no code for these in the library.
Name | Status | Testsuite |
---|---|---|
ABS | Implemented | YES |
ACHAR | Implemented | NO |
ACOS | Implemented | YES |
ADJUSTL | Implemented | NO |
ADJUSTR | Implemented | NO |
AIMAG | Implemented | YES |
AINT | Implemented | YES |
ALL | Implemented | YES |
ALLOCATED | Implemented** | NO |
ANINT | Implemented | YES |
ANY | Implemented | YES |
ASIN | Implemented | YES |
ASSOCIATED | Implemented | YES |
ATAN | Implemented | YES |
ATAN2 | Implemented | YES |
BIT_SIZE | Implemented* | NO |
BTEST | Implemented | YES |
CEILING | Implemented | YES |
CHAR | ASCII only | NO |
CMPLX | Implemented | YES |
CONJG | Implemented | YES |
COS | Implemented | YES |
COSH | Implemented | YES |
COUNT | Implemented | YES |
CPU_TIME | Implemented | NO |
CSHIFT | Not implemented | NO |
DATE_AND_TIME | Implemented | NO |
DBLE | Implemented | NO |
DIGITS | Implemented* | NO |
DIM | Implemented | YES |
DOT_PRODUCT | Implemented | YES |
DPROD | Implemented | YES |
EOSHIFT | Implemented | YES |
EPSILON | Implemented* | NO |
EXP | Implemented | YES |
EXPONENT | Implemented | YES |
FLOOR | Implemented | YES |
FRACTION | Implemented | YES |
HUGE | Implemented* | NO |
IACHAR | Implemented | NO |
IAND | Implemented | YES |
IBCLR | Implemented | YES |
IBITS | Implemented | YES |
IBSET | Implemented | YES |
ICHAR | ASCII only | NO |
IEOR | Implemented | YES |
INDEX | Implemented | NO |
INT | Implemented | YES |
IOR | Implemented | YES |
ISHFT | Implemented | YES |
ISHFTC | Implemented | YES |
KIND | Implemented* | NO |
LBOUND | Implemented | NO |
LEN | Implemented | NO |
LEN_TRIM | ASCII only | NO |
LGE | ASCII only | NO |
LGT | ASCII only | NO |
LLE | ASCII only | NO |
LLT | ASCII only | NO |
LOG | Implemented | YES |
LOG10 | Implemented | YES |
LOGICAL | Implemented | NO |
MATMUL | Implemented | YES |
MAX | Implemented | YES |
MAXEXPONENT | Implemented* | NO |
MAXVAL | Implemented | YES |
MAXLOC | Implemented | YES |
MERGE | Implemented | YES |
MIN | Implemented | YES |
MINEXPONENT | Implemented* | NO |
MINLOC | Implemented | YES |
MINVAL | Implemented | YES |
MOD | Implemented | YES |
MODULO | Implemented | YES |
MVBITS | Not implemented | NO |
NEAREST | Implemented | YES |
NINT | Implemented | YES |
NOT | Implemented | YES |
NULL | Implemented | NO |
PACK | Implemented | YES |
PRECISION | Implemented* | NO |
PRESENT | Implemented | YES |
PRODUCT | Implemented | YES |
RADIX | Implemented* | NO |
RANDOM_NUMBER | Not implemented | NO |
RANDOM_SEED | Not implemented | NO |
RANGE | Implemented* | NO |
REAL | Implemented | NO |
REPEAT | Not implemented | NO |
RESHAPE | Implemented | NO |
RRSPACING | Not implemented | NO |
SCALE | Implemented | YES |
SCAN | Not implemented | NO |
SELECTED_INT_KIND | Implemented | YES |
SELECTED_REAL_KIND | Implemented | YES |
SET_EXPONENT | Implemented | YES |
SHAPE | Implemented | YES |
SIGN | Implemented | YES |
SIN | Implemented | YES |
SINH | Implemented | YES |
SIZE | Implemented | YES |
SPACING | Implemented | YES |
SPREAD | Implemented | YES |
SQRT | Implemented | YES |
SUM | Implemented | YES |
SYSTEM_CLOCK | Implemented | NO |
TAN | Implemented | NO |
TANH | Implemented | NO |
TINY | Implemented* | NO |
TRANSFER | Not implemented | NO |
TRANSPOSE | Implemented | YES |
TRIM | Not implemented | NO |
UBOUND | Implemented | NO |
UNPACK | Implemented | YES |
VERIFY | Not implemented | NO |
Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.
These pages are maintained by the GCC team.
For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help.Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
Last modified 2006-06-21 |