mirror of git://gcc.gnu.org/git/gcc.git
lang.opt: New option -fdec-intrinsic-ints.
2016-08-03 Fritz Reese <fritzoreese@gmail.com> gcc/fortran/ * lang.opt: New option -fdec-intrinsic-ints. * options.c (set_dec_flags): Enable with -fdec. * gfortran.texi, invoke.texi, intrinsics.texi: Update documentation. * intrinsic.c (add_function, add_subroutine): New B/I/J/K intrinsic variants. gcc/testsuite/gfortran.dg/ * dec_intrinsic_ints.f90: New testcase. From-SVN: r239078
This commit is contained in:
parent
9ad1a1da40
commit
c98583e997
|
|
@ -1,3 +1,11 @@
|
||||||
|
2016-08-03 Fritz Reese <fritzoreese@gmail.com>
|
||||||
|
|
||||||
|
* lang.opt: New option -fdec-intrinsic-ints.
|
||||||
|
* options.c (set_dec_flags): Enable with -fdec.
|
||||||
|
* gfortran.texi, invoke.texi, intrinsics.texi: Update documentation.
|
||||||
|
* intrinsic.c (add_function, add_subroutine): New B/I/J/K intrinsic
|
||||||
|
variants.
|
||||||
|
|
||||||
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
|
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/41922
|
PR fortran/41922
|
||||||
|
|
|
||||||
|
|
@ -1461,6 +1461,7 @@ without warning.
|
||||||
* Read/Write after EOF marker::
|
* Read/Write after EOF marker::
|
||||||
* STRUCTURE and RECORD::
|
* STRUCTURE and RECORD::
|
||||||
* UNION and MAP::
|
* UNION and MAP::
|
||||||
|
* Type variants for integer intrinsics::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Old-style kind specifications
|
@node Old-style kind specifications
|
||||||
|
|
@ -2367,6 +2368,58 @@ a.h === '.C'
|
||||||
a.l === '.D'
|
a.l === '.D'
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@node Type variants for integer intrinsics
|
||||||
|
@subsection Type variants for integer intrinsics
|
||||||
|
@cindex intrinsics, integer
|
||||||
|
|
||||||
|
Similar to the D/C prefixes to real functions to specify the input/output
|
||||||
|
types, GNU Fortran offers B/I/J/K prefixes to integer functions for
|
||||||
|
compatibility with DEC programs. The types implied by each are:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@code{B} - @code{INTEGER(kind=1)}
|
||||||
|
@code{I} - @code{INTEGER(kind=2)}
|
||||||
|
@code{J} - @code{INTEGER(kind=4)}
|
||||||
|
@code{K} - @code{INTEGER(kind=8)}
|
||||||
|
@end example
|
||||||
|
|
||||||
|
GNU Fortran supports these with the flag @option{-fdec-intrinsic-ints}.
|
||||||
|
Intrinsics for which prefixed versions are available and in what form are noted
|
||||||
|
in @ref{Intrinsic Procedures}. The complete list of supported intrinsics is
|
||||||
|
here:
|
||||||
|
|
||||||
|
@multitable @columnfractions .2 .2 .2 .2 .2
|
||||||
|
|
||||||
|
@headitem Intrinsic @tab B @tab I @tab J @tab K
|
||||||
|
|
||||||
|
@item @code{@ref{ABS}}
|
||||||
|
@tab @code{BABS} @tab @code{IIABS} @tab @code{JIABS} @tab @code{KIABS}
|
||||||
|
@item @code{@ref{BTEST}}
|
||||||
|
@tab @code{BBTEST} @tab @code{BITEST} @tab @code{BJTEST} @tab @code{BKTEST}
|
||||||
|
@item @code{@ref{IAND}}
|
||||||
|
@tab @code{BIAND} @tab @code{IIAND} @tab @code{JIAND} @tab @code{KIAND}
|
||||||
|
@item @code{@ref{IBCLR}}
|
||||||
|
@tab @code{BBCLR} @tab @code{IIBCLR} @tab @code{JIBCLR} @tab @code{KIBCLR}
|
||||||
|
@item @code{@ref{IBITS}}
|
||||||
|
@tab @code{BBITS} @tab @code{IIBITS} @tab @code{JIBITS} @tab @code{KIBITS}
|
||||||
|
@item @code{@ref{IBSET}}
|
||||||
|
@tab @code{BBSET} @tab @code{IIBSET} @tab @code{JIBSET} @tab @code{KIBSET}
|
||||||
|
@item @code{@ref{IEOR}}
|
||||||
|
@tab @code{BIEOR} @tab @code{IIEOR} @tab @code{JIEOR} @tab @code{KIEOR}
|
||||||
|
@item @code{@ref{IOR}}
|
||||||
|
@tab @code{BIOR} @tab @code{IIOR} @tab @code{JIOR} @tab @code{KIOR}
|
||||||
|
@item @code{@ref{ISHFT}}
|
||||||
|
@tab @code{BSHFT} @tab @code{IISHFT} @tab @code{JISHFT} @tab @code{KISHFT}
|
||||||
|
@item @code{@ref{ISHFTC}}
|
||||||
|
@tab @code{BSHFTC} @tab @code{IISHFTC} @tab @code{JISHFTC} @tab @code{KISHFTC}
|
||||||
|
@item @code{@ref{MOD}}
|
||||||
|
@tab @code{BMOD} @tab @code{IMOD} @tab @code{JMOD} @tab @code{KMOD}
|
||||||
|
@item @code{@ref{NOT}}
|
||||||
|
@tab @code{BNOT} @tab @code{INOT} @tab @code{JNOT} @tab @code{KNOT}
|
||||||
|
@item @code{@ref{REAL}}
|
||||||
|
@tab @code{--} @tab @code{FLOATI} @tab @code{FLOATJ} @tab @code{FLOATK}
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
|
||||||
@node Extensions not implemented in GNU Fortran
|
@node Extensions not implemented in GNU Fortran
|
||||||
@section Extensions not implemented in GNU Fortran
|
@section Extensions not implemented in GNU Fortran
|
||||||
|
|
|
||||||
|
|
@ -1255,6 +1255,14 @@ add_functions (void)
|
||||||
gfc_check_abs, gfc_simplify_abs, gfc_resolve_abs,
|
gfc_check_abs, gfc_simplify_abs, gfc_resolve_abs,
|
||||||
a, BT_REAL, dr, REQUIRED);
|
a, BT_REAL, dr, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("babs", GFC_STD_GNU);
|
||||||
|
make_alias ("iiabs", GFC_STD_GNU);
|
||||||
|
make_alias ("jiabs", GFC_STD_GNU);
|
||||||
|
make_alias ("kiabs", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
add_sym_1 ("iabs", GFC_ISYM_ABS, CLASS_ELEMENTAL, ACTUAL_YES, BT_INTEGER, di, GFC_STD_F77,
|
add_sym_1 ("iabs", GFC_ISYM_ABS, CLASS_ELEMENTAL, ACTUAL_YES, BT_INTEGER, di, GFC_STD_F77,
|
||||||
NULL, gfc_simplify_abs, gfc_resolve_abs,
|
NULL, gfc_simplify_abs, gfc_resolve_abs,
|
||||||
a, BT_INTEGER, di, REQUIRED);
|
a, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
@ -1557,6 +1565,14 @@ add_functions (void)
|
||||||
gfc_check_bitfcn, gfc_simplify_btest, gfc_resolve_btest,
|
gfc_check_bitfcn, gfc_simplify_btest, gfc_resolve_btest,
|
||||||
i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED);
|
i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bbtest", GFC_STD_GNU);
|
||||||
|
make_alias ("bitest", GFC_STD_GNU);
|
||||||
|
make_alias ("bjtest", GFC_STD_GNU);
|
||||||
|
make_alias ("bktest", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("btest", GFC_ISYM_BTEST, GFC_STD_F95);
|
make_generic ("btest", GFC_ISYM_BTEST, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_2 ("ceiling", GFC_ISYM_CEILING, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
|
add_sym_2 ("ceiling", GFC_ISYM_CEILING, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
|
||||||
|
|
@ -1950,6 +1966,14 @@ add_functions (void)
|
||||||
gfc_check_iand, gfc_simplify_iand, gfc_resolve_iand,
|
gfc_check_iand, gfc_simplify_iand, gfc_resolve_iand,
|
||||||
i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED);
|
i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("biand", GFC_STD_GNU);
|
||||||
|
make_alias ("iiand", GFC_STD_GNU);
|
||||||
|
make_alias ("jiand", GFC_STD_GNU);
|
||||||
|
make_alias ("kiand", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("iand", GFC_ISYM_IAND, GFC_STD_F95);
|
make_generic ("iand", GFC_ISYM_IAND, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_2 ("and", GFC_ISYM_AND, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL,
|
add_sym_2 ("and", GFC_ISYM_AND, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL,
|
||||||
|
|
@ -1981,6 +2005,14 @@ add_functions (void)
|
||||||
gfc_check_bitfcn, gfc_simplify_ibclr, gfc_resolve_ibclr,
|
gfc_check_bitfcn, gfc_simplify_ibclr, gfc_resolve_ibclr,
|
||||||
i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED);
|
i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bbclr", GFC_STD_GNU);
|
||||||
|
make_alias ("iibclr", GFC_STD_GNU);
|
||||||
|
make_alias ("jibclr", GFC_STD_GNU);
|
||||||
|
make_alias ("kibclr", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("ibclr", GFC_ISYM_IBCLR, GFC_STD_F95);
|
make_generic ("ibclr", GFC_ISYM_IBCLR, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_3 ("ibits", GFC_ISYM_IBITS, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
|
add_sym_3 ("ibits", GFC_ISYM_IBITS, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
|
||||||
|
|
@ -1988,12 +2020,28 @@ add_functions (void)
|
||||||
i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED,
|
i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED,
|
||||||
ln, BT_INTEGER, di, REQUIRED);
|
ln, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bbits", GFC_STD_GNU);
|
||||||
|
make_alias ("iibits", GFC_STD_GNU);
|
||||||
|
make_alias ("jibits", GFC_STD_GNU);
|
||||||
|
make_alias ("kibits", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("ibits", GFC_ISYM_IBITS, GFC_STD_F95);
|
make_generic ("ibits", GFC_ISYM_IBITS, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_2 ("ibset", GFC_ISYM_IBSET, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
|
add_sym_2 ("ibset", GFC_ISYM_IBSET, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
|
||||||
gfc_check_bitfcn, gfc_simplify_ibset, gfc_resolve_ibset,
|
gfc_check_bitfcn, gfc_simplify_ibset, gfc_resolve_ibset,
|
||||||
i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED);
|
i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bbset", GFC_STD_GNU);
|
||||||
|
make_alias ("iibset", GFC_STD_GNU);
|
||||||
|
make_alias ("jibset", GFC_STD_GNU);
|
||||||
|
make_alias ("kibset", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("ibset", GFC_ISYM_IBSET, GFC_STD_F95);
|
make_generic ("ibset", GFC_ISYM_IBSET, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_2 ("ichar", GFC_ISYM_ICHAR, CLASS_ELEMENTAL, ACTUAL_NO,
|
add_sym_2 ("ichar", GFC_ISYM_ICHAR, CLASS_ELEMENTAL, ACTUAL_NO,
|
||||||
|
|
@ -2007,6 +2055,14 @@ add_functions (void)
|
||||||
gfc_check_ieor, gfc_simplify_ieor, gfc_resolve_ieor,
|
gfc_check_ieor, gfc_simplify_ieor, gfc_resolve_ieor,
|
||||||
i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED);
|
i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bieor", GFC_STD_GNU);
|
||||||
|
make_alias ("iieor", GFC_STD_GNU);
|
||||||
|
make_alias ("jieor", GFC_STD_GNU);
|
||||||
|
make_alias ("kieor", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("ieor", GFC_ISYM_IEOR, GFC_STD_F95);
|
make_generic ("ieor", GFC_ISYM_IEOR, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_2 ("xor", GFC_ISYM_XOR, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL,
|
add_sym_2 ("xor", GFC_ISYM_XOR, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL,
|
||||||
|
|
@ -2072,6 +2128,14 @@ add_functions (void)
|
||||||
gfc_check_ior, gfc_simplify_ior, gfc_resolve_ior,
|
gfc_check_ior, gfc_simplify_ior, gfc_resolve_ior,
|
||||||
i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED);
|
i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bior", GFC_STD_GNU);
|
||||||
|
make_alias ("iior", GFC_STD_GNU);
|
||||||
|
make_alias ("jior", GFC_STD_GNU);
|
||||||
|
make_alias ("kior", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("ior", GFC_ISYM_IOR, GFC_STD_F95);
|
make_generic ("ior", GFC_ISYM_IOR, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_2 ("or", GFC_ISYM_OR, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL,
|
add_sym_2 ("or", GFC_ISYM_OR, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL,
|
||||||
|
|
@ -2139,6 +2203,14 @@ add_functions (void)
|
||||||
gfc_check_ishft, gfc_simplify_ishft, gfc_resolve_ishft,
|
gfc_check_ishft, gfc_simplify_ishft, gfc_resolve_ishft,
|
||||||
i, BT_INTEGER, di, REQUIRED, sh, BT_INTEGER, di, REQUIRED);
|
i, BT_INTEGER, di, REQUIRED, sh, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bshft", GFC_STD_GNU);
|
||||||
|
make_alias ("iishft", GFC_STD_GNU);
|
||||||
|
make_alias ("jishft", GFC_STD_GNU);
|
||||||
|
make_alias ("kishft", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("ishft", GFC_ISYM_ISHFT, GFC_STD_F95);
|
make_generic ("ishft", GFC_ISYM_ISHFT, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_3 ("ishftc", GFC_ISYM_ISHFTC, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
|
add_sym_3 ("ishftc", GFC_ISYM_ISHFTC, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
|
||||||
|
|
@ -2146,6 +2218,14 @@ add_functions (void)
|
||||||
i, BT_INTEGER, di, REQUIRED, sh, BT_INTEGER, di, REQUIRED,
|
i, BT_INTEGER, di, REQUIRED, sh, BT_INTEGER, di, REQUIRED,
|
||||||
sz, BT_INTEGER, di, OPTIONAL);
|
sz, BT_INTEGER, di, OPTIONAL);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bshftc", GFC_STD_GNU);
|
||||||
|
make_alias ("iishftc", GFC_STD_GNU);
|
||||||
|
make_alias ("jishftc", GFC_STD_GNU);
|
||||||
|
make_alias ("kishftc", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("ishftc", GFC_ISYM_ISHFTC, GFC_STD_F95);
|
make_generic ("ishftc", GFC_ISYM_ISHFTC, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_2 ("kill", GFC_ISYM_KILL, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER,
|
add_sym_2 ("kill", GFC_ISYM_KILL, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER,
|
||||||
|
|
@ -2456,6 +2536,14 @@ add_functions (void)
|
||||||
gfc_check_a_p, gfc_simplify_mod, gfc_resolve_mod,
|
gfc_check_a_p, gfc_simplify_mod, gfc_resolve_mod,
|
||||||
a, BT_INTEGER, di, REQUIRED, p, BT_INTEGER, di, REQUIRED);
|
a, BT_INTEGER, di, REQUIRED, p, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bmod", GFC_STD_GNU);
|
||||||
|
make_alias ("imod", GFC_STD_GNU);
|
||||||
|
make_alias ("jmod", GFC_STD_GNU);
|
||||||
|
make_alias ("kmod", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
add_sym_2 ("amod", GFC_ISYM_MOD, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77,
|
add_sym_2 ("amod", GFC_ISYM_MOD, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77,
|
||||||
NULL, gfc_simplify_mod, gfc_resolve_mod,
|
NULL, gfc_simplify_mod, gfc_resolve_mod,
|
||||||
a, BT_REAL, dr, REQUIRED, p, BT_REAL, dr, REQUIRED);
|
a, BT_REAL, dr, REQUIRED, p, BT_REAL, dr, REQUIRED);
|
||||||
|
|
@ -2498,6 +2586,14 @@ add_functions (void)
|
||||||
gfc_check_i, gfc_simplify_not, gfc_resolve_not,
|
gfc_check_i, gfc_simplify_not, gfc_resolve_not,
|
||||||
i, BT_INTEGER, di, REQUIRED);
|
i, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bnot", GFC_STD_GNU);
|
||||||
|
make_alias ("inot", GFC_STD_GNU);
|
||||||
|
make_alias ("jnot", GFC_STD_GNU);
|
||||||
|
make_alias ("knot", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
make_generic ("not", GFC_ISYM_NOT, GFC_STD_F95);
|
make_generic ("not", GFC_ISYM_NOT, GFC_STD_F95);
|
||||||
|
|
||||||
add_sym_2 ("norm2", GFC_ISYM_NORM2, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr,
|
add_sym_2 ("norm2", GFC_ISYM_NORM2, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr,
|
||||||
|
|
@ -2608,6 +2704,13 @@ add_functions (void)
|
||||||
gfc_check_float, gfc_simplify_float, NULL,
|
gfc_check_float, gfc_simplify_float, NULL,
|
||||||
a, BT_INTEGER, di, REQUIRED);
|
a, BT_INTEGER, di, REQUIRED);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("floati", GFC_STD_GNU);
|
||||||
|
make_alias ("floatj", GFC_STD_GNU);
|
||||||
|
make_alias ("floatk", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
add_sym_1 ("dfloat", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU,
|
add_sym_1 ("dfloat", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU,
|
||||||
gfc_check_float, gfc_simplify_dble, gfc_resolve_dble,
|
gfc_check_float, gfc_simplify_dble, gfc_resolve_dble,
|
||||||
a, BT_REAL, dr, REQUIRED);
|
a, BT_REAL, dr, REQUIRED);
|
||||||
|
|
@ -3306,6 +3409,14 @@ add_subroutines (void)
|
||||||
t, BT_INTEGER, di, REQUIRED, INTENT_INOUT,
|
t, BT_INTEGER, di, REQUIRED, INTENT_INOUT,
|
||||||
tp, BT_INTEGER, di, REQUIRED, INTENT_IN);
|
tp, BT_INTEGER, di, REQUIRED, INTENT_IN);
|
||||||
|
|
||||||
|
if (flag_dec_intrinsic_ints)
|
||||||
|
{
|
||||||
|
make_alias ("bmvbits", GFC_STD_GNU);
|
||||||
|
make_alias ("imvbits", GFC_STD_GNU);
|
||||||
|
make_alias ("jmvbits", GFC_STD_GNU);
|
||||||
|
make_alias ("kmvbits", GFC_STD_GNU);
|
||||||
|
}
|
||||||
|
|
||||||
add_sym_1s ("random_number", GFC_ISYM_RANDOM_NUMBER, CLASS_IMPURE,
|
add_sym_1s ("random_number", GFC_ISYM_RANDOM_NUMBER, CLASS_IMPURE,
|
||||||
BT_UNKNOWN, 0, GFC_STD_F95,
|
BT_UNKNOWN, 0, GFC_STD_F95,
|
||||||
gfc_check_random_number, NULL, gfc_resolve_random_number,
|
gfc_check_random_number, NULL, gfc_resolve_random_number,
|
||||||
|
|
|
||||||
|
|
@ -401,6 +401,10 @@ end program test_abort
|
||||||
@fnindex IABS
|
@fnindex IABS
|
||||||
@fnindex ZABS
|
@fnindex ZABS
|
||||||
@fnindex CDABS
|
@fnindex CDABS
|
||||||
|
@fnindex BABS
|
||||||
|
@fnindex IIABS
|
||||||
|
@fnindex JIABS
|
||||||
|
@fnindex KIABS
|
||||||
@cindex absolute value
|
@cindex absolute value
|
||||||
|
|
||||||
@table @asis
|
@table @asis
|
||||||
|
|
@ -446,6 +450,10 @@ end program test_abs
|
||||||
@item @code{CABS(A)} @tab @code{COMPLEX(4) A} @tab @code{REAL(4)} @tab Fortran 77 and later
|
@item @code{CABS(A)} @tab @code{COMPLEX(4) A} @tab @code{REAL(4)} @tab Fortran 77 and later
|
||||||
@item @code{DABS(A)} @tab @code{REAL(8) A} @tab @code{REAL(8)} @tab Fortran 77 and later
|
@item @code{DABS(A)} @tab @code{REAL(8) A} @tab @code{REAL(8)} @tab Fortran 77 and later
|
||||||
@item @code{IABS(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab Fortran 77 and later
|
@item @code{IABS(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab Fortran 77 and later
|
||||||
|
@item @code{BABS(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IIABS(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JIABS(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KIABS(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
@item @code{ZABS(A)} @tab @code{COMPLEX(8) A} @tab @code{COMPLEX(8)} @tab GNU extension
|
@item @code{ZABS(A)} @tab @code{COMPLEX(8) A} @tab @code{COMPLEX(8)} @tab GNU extension
|
||||||
@item @code{CDABS(A)} @tab @code{COMPLEX(8) A} @tab @code{COMPLEX(8)} @tab GNU extension
|
@item @code{CDABS(A)} @tab @code{COMPLEX(8) A} @tab @code{COMPLEX(8)} @tab GNU extension
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
@ -2666,6 +2674,10 @@ The return value is of type @code{LOGICAL} and of the default kind.
|
||||||
@node BTEST
|
@node BTEST
|
||||||
@section @code{BTEST} --- Bit test function
|
@section @code{BTEST} --- Bit test function
|
||||||
@fnindex BTEST
|
@fnindex BTEST
|
||||||
|
@fnindex BBTEST
|
||||||
|
@fnindex BITEST
|
||||||
|
@fnindex BJTEST
|
||||||
|
@fnindex BKTEST
|
||||||
@cindex bits, testing
|
@cindex bits, testing
|
||||||
|
|
||||||
@table @asis
|
@table @asis
|
||||||
|
|
@ -2674,7 +2686,7 @@ The return value is of type @code{LOGICAL} and of the default kind.
|
||||||
in @var{I} is set. The counting of the bits starts at 0.
|
in @var{I} is set. The counting of the bits starts at 0.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -2703,8 +2715,17 @@ program test_btest
|
||||||
end do
|
end do
|
||||||
end program test_btest
|
end program test_btest
|
||||||
@end smallexample
|
@end smallexample
|
||||||
@end table
|
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{BTEST(I,POS)} @tab @code{INTEGER I,POS} @tab @code{LOGICAL} @tab F95 and later
|
||||||
|
@item @code{BBTEST(I,POS)} @tab @code{INTEGER(1) I,POS} @tab @code{LOGICAL(1)} @tab GNU extension
|
||||||
|
@item @code{BITEST(I,POS)} @tab @code{INTEGER(2) I,POS} @tab @code{LOGICAL(2)} @tab GNU extension
|
||||||
|
@item @code{BJTEST(I,POS)} @tab @code{INTEGER(4) I,POS} @tab @code{LOGICAL(4)} @tab GNU extension
|
||||||
|
@item @code{BKTEST(I,POS)} @tab @code{INTEGER(8) I,POS} @tab @code{LOGICAL(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
@end table
|
||||||
|
|
||||||
@node C_ASSOCIATED
|
@node C_ASSOCIATED
|
||||||
@section @code{C_ASSOCIATED} --- Status of a C pointer
|
@section @code{C_ASSOCIATED} --- Status of a C pointer
|
||||||
|
|
@ -6972,6 +6993,10 @@ END PROGRAM
|
||||||
@node IAND
|
@node IAND
|
||||||
@section @code{IAND} --- Bitwise logical and
|
@section @code{IAND} --- Bitwise logical and
|
||||||
@fnindex IAND
|
@fnindex IAND
|
||||||
|
@fnindex BIAND
|
||||||
|
@fnindex IIAND
|
||||||
|
@fnindex JIAND
|
||||||
|
@fnindex KIAND
|
||||||
@cindex bitwise logical and
|
@cindex bitwise logical and
|
||||||
@cindex logical and, bitwise
|
@cindex logical and, bitwise
|
||||||
|
|
||||||
|
|
@ -6980,7 +7005,7 @@ END PROGRAM
|
||||||
Bitwise logical @code{AND}.
|
Bitwise logical @code{AND}.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -7010,6 +7035,16 @@ PROGRAM test_iand
|
||||||
END PROGRAM
|
END PROGRAM
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{IAND(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BIAND(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IIAND(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JIAND(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KIAND(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{IOR}, @ref{IEOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
|
@ref{IOR}, @ref{IEOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
|
||||||
|
|
||||||
|
|
@ -7124,6 +7159,10 @@ Fortran 2003 functions and subroutines: @ref{GET_COMMAND},
|
||||||
@node IBCLR
|
@node IBCLR
|
||||||
@section @code{IBCLR} --- Clear bit
|
@section @code{IBCLR} --- Clear bit
|
||||||
@fnindex IBCLR
|
@fnindex IBCLR
|
||||||
|
@fnindex BBCLR
|
||||||
|
@fnindex IIBCLR
|
||||||
|
@fnindex JIBCLR
|
||||||
|
@fnindex KIBCLR
|
||||||
@cindex bits, unset
|
@cindex bits, unset
|
||||||
@cindex bits, clear
|
@cindex bits, clear
|
||||||
|
|
||||||
|
|
@ -7133,7 +7172,7 @@ Fortran 2003 functions and subroutines: @ref{GET_COMMAND},
|
||||||
@var{POS} set to zero.
|
@var{POS} set to zero.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -7151,6 +7190,16 @@ Elemental function
|
||||||
The return value is of type @code{INTEGER} and of the same kind as
|
The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@var{I}.
|
@var{I}.
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{IBCLR(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BBCLR(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IIBCLR(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JIBCLR(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KIBCLR(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{IBITS}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}, @ref{MVBITS}
|
@ref{IBITS}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}, @ref{MVBITS}
|
||||||
|
|
||||||
|
|
@ -7161,6 +7210,10 @@ The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@node IBITS
|
@node IBITS
|
||||||
@section @code{IBITS} --- Bit extraction
|
@section @code{IBITS} --- Bit extraction
|
||||||
@fnindex IBITS
|
@fnindex IBITS
|
||||||
|
@fnindex BBITS
|
||||||
|
@fnindex IIBITS
|
||||||
|
@fnindex JIBITS
|
||||||
|
@fnindex KIBITS
|
||||||
@cindex bits, get
|
@cindex bits, get
|
||||||
@cindex bits, extract
|
@cindex bits, extract
|
||||||
|
|
||||||
|
|
@ -7173,7 +7226,7 @@ zeroed. The value of @code{POS+LEN} must be less than or equal to the
|
||||||
value @code{BIT_SIZE(I)}.
|
value @code{BIT_SIZE(I)}.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -7192,6 +7245,16 @@ Elemental function
|
||||||
The return value is of type @code{INTEGER} and of the same kind as
|
The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@var{I}.
|
@var{I}.
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{IBITS(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BBITS(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IIBITS(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JIBITS(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KIBITS(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{BIT_SIZE}, @ref{IBCLR}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
|
@ref{BIT_SIZE}, @ref{IBCLR}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
|
||||||
@end table
|
@end table
|
||||||
|
|
@ -7201,6 +7264,10 @@ The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@node IBSET
|
@node IBSET
|
||||||
@section @code{IBSET} --- Set bit
|
@section @code{IBSET} --- Set bit
|
||||||
@fnindex IBSET
|
@fnindex IBSET
|
||||||
|
@fnindex BBSET
|
||||||
|
@fnindex IIBSET
|
||||||
|
@fnindex JIBSET
|
||||||
|
@fnindex KIBSET
|
||||||
@cindex bits, set
|
@cindex bits, set
|
||||||
|
|
||||||
@table @asis
|
@table @asis
|
||||||
|
|
@ -7209,7 +7276,7 @@ The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@var{POS} set to one.
|
@var{POS} set to one.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -7227,6 +7294,16 @@ Elemental function
|
||||||
The return value is of type @code{INTEGER} and of the same kind as
|
The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@var{I}.
|
@var{I}.
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{IBSET(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BBSET(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IIBSET(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JIBSET(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KIBSET(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{IBCLR}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}, @ref{MVBITS}
|
@ref{IBCLR}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}, @ref{MVBITS}
|
||||||
|
|
||||||
|
|
@ -7358,6 +7435,10 @@ end program test_idate
|
||||||
@node IEOR
|
@node IEOR
|
||||||
@section @code{IEOR} --- Bitwise logical exclusive or
|
@section @code{IEOR} --- Bitwise logical exclusive or
|
||||||
@fnindex IEOR
|
@fnindex IEOR
|
||||||
|
@fnindex BIEOR
|
||||||
|
@fnindex IIEOR
|
||||||
|
@fnindex JIEOR
|
||||||
|
@fnindex KIEOR
|
||||||
@cindex bitwise logical exclusive or
|
@cindex bitwise logical exclusive or
|
||||||
@cindex logical exclusive or, bitwise
|
@cindex logical exclusive or, bitwise
|
||||||
|
|
||||||
|
|
@ -7367,7 +7448,7 @@ end program test_idate
|
||||||
@var{J}.
|
@var{J}.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -7388,6 +7469,16 @@ The return type is @code{INTEGER}, of the same kind as the
|
||||||
arguments. (If the argument kinds differ, it is of the same kind as
|
arguments. (If the argument kinds differ, it is of the same kind as
|
||||||
the larger argument.)
|
the larger argument.)
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{IEOR(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BIEOR(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IIEOR(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JIEOR(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KIEOR(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{IOR}, @ref{IAND}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
|
@ref{IOR}, @ref{IAND}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
|
||||||
@end table
|
@end table
|
||||||
|
|
@ -7662,6 +7753,10 @@ The return value is a @code{INTEGER(8)} variable.
|
||||||
@node IOR
|
@node IOR
|
||||||
@section @code{IOR} --- Bitwise logical or
|
@section @code{IOR} --- Bitwise logical or
|
||||||
@fnindex IOR
|
@fnindex IOR
|
||||||
|
@fnindex BIOR
|
||||||
|
@fnindex IIOR
|
||||||
|
@fnindex JIOR
|
||||||
|
@fnindex KIOR
|
||||||
@cindex bitwise logical or
|
@cindex bitwise logical or
|
||||||
@cindex logical or, bitwise
|
@cindex logical or, bitwise
|
||||||
|
|
||||||
|
|
@ -7671,7 +7766,7 @@ The return value is a @code{INTEGER(8)} variable.
|
||||||
@var{J}.
|
@var{J}.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -7692,6 +7787,16 @@ The return type is @code{INTEGER}, of the same kind as the
|
||||||
arguments. (If the argument kinds differ, it is of the same kind as
|
arguments. (If the argument kinds differ, it is of the same kind as
|
||||||
the larger argument.)
|
the larger argument.)
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{IOR(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BIOR(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IIOR(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JIOR(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KIOR(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{IEOR}, @ref{IAND}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
|
@ref{IEOR}, @ref{IAND}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
|
||||||
@end table
|
@end table
|
||||||
|
|
@ -7945,6 +8050,10 @@ END PROGRAM
|
||||||
@node ISHFT
|
@node ISHFT
|
||||||
@section @code{ISHFT} --- Shift bits
|
@section @code{ISHFT} --- Shift bits
|
||||||
@fnindex ISHFT
|
@fnindex ISHFT
|
||||||
|
@fnindex BSHFT
|
||||||
|
@fnindex IISHFT
|
||||||
|
@fnindex JISHFT
|
||||||
|
@fnindex KISHFT
|
||||||
@cindex bits, shift
|
@cindex bits, shift
|
||||||
|
|
||||||
@table @asis
|
@table @asis
|
||||||
|
|
@ -7958,7 +8067,7 @@ value is undefined. Bits shifted out from the left end or right end are
|
||||||
lost; zeros are shifted in from the opposite end.
|
lost; zeros are shifted in from the opposite end.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -7976,6 +8085,16 @@ Elemental function
|
||||||
The return value is of type @code{INTEGER} and of the same kind as
|
The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@var{I}.
|
@var{I}.
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{ISHFT(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BSHFT(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IISHFT(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JISHFT(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KISHFT(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{ISHFTC}
|
@ref{ISHFTC}
|
||||||
@end table
|
@end table
|
||||||
|
|
@ -7985,6 +8104,10 @@ The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@node ISHFTC
|
@node ISHFTC
|
||||||
@section @code{ISHFTC} --- Shift bits circularly
|
@section @code{ISHFTC} --- Shift bits circularly
|
||||||
@fnindex ISHFTC
|
@fnindex ISHFTC
|
||||||
|
@fnindex BSHFTC
|
||||||
|
@fnindex IISHFTC
|
||||||
|
@fnindex JISHFTC
|
||||||
|
@fnindex KISHFTC
|
||||||
@cindex bits, shift circular
|
@cindex bits, shift circular
|
||||||
|
|
||||||
@table @asis
|
@table @asis
|
||||||
|
|
@ -7999,7 +8122,7 @@ a right shift. The absolute value of @var{SHIFT} must be less than
|
||||||
equivalent to @code{BIT_SIZE(I)}.
|
equivalent to @code{BIT_SIZE(I)}.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -8020,6 +8143,16 @@ the value must be greater than zero and less than or equal to
|
||||||
The return value is of type @code{INTEGER} and of the same kind as
|
The return value is of type @code{INTEGER} and of the same kind as
|
||||||
@var{I}.
|
@var{I}.
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{ISHFTC(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BSHFTC(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IISHFTC(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JISHFTC(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KISHFTC(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{ISHFT}
|
@ref{ISHFT}
|
||||||
@end table
|
@end table
|
||||||
|
|
@ -9843,6 +9976,10 @@ cases, the result is of the same type and kind as @var{ARRAY}.
|
||||||
@fnindex MOD
|
@fnindex MOD
|
||||||
@fnindex AMOD
|
@fnindex AMOD
|
||||||
@fnindex DMOD
|
@fnindex DMOD
|
||||||
|
@fnindex BMOD
|
||||||
|
@fnindex IMOD
|
||||||
|
@fnindex JMOD
|
||||||
|
@fnindex KMOD
|
||||||
@cindex remainder
|
@cindex remainder
|
||||||
@cindex division, remainder
|
@cindex division, remainder
|
||||||
|
|
||||||
|
|
@ -9851,7 +9988,7 @@ cases, the result is of the same type and kind as @var{ARRAY}.
|
||||||
@code{MOD(A,P)} computes the remainder of the division of A by P@.
|
@code{MOD(A,P)} computes the remainder of the division of A by P@.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 77 and later
|
Fortran 77 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -9898,6 +10035,10 @@ end program test_mod
|
||||||
@item @code{MOD(A,P)} @tab @code{INTEGER A,P} @tab @code{INTEGER} @tab Fortran 95 and later
|
@item @code{MOD(A,P)} @tab @code{INTEGER A,P} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
@item @code{AMOD(A,P)} @tab @code{REAL(4) A,P} @tab @code{REAL(4)} @tab Fortran 95 and later
|
@item @code{AMOD(A,P)} @tab @code{REAL(4) A,P} @tab @code{REAL(4)} @tab Fortran 95 and later
|
||||||
@item @code{DMOD(A,P)} @tab @code{REAL(8) A,P} @tab @code{REAL(8)} @tab Fortran 95 and later
|
@item @code{DMOD(A,P)} @tab @code{REAL(8) A,P} @tab @code{REAL(8)} @tab Fortran 95 and later
|
||||||
|
@item @code{BMOD(A,P)} @tab @code{INTEGER(1) A,P} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IMOD(A,P)} @tab @code{INTEGER(2) A,P} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JMOD(A,P)} @tab @code{INTEGER(4) A,P} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KMOD(A,P)} @tab @code{INTEGER(8) A,P} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
|
|
@ -10017,6 +10158,10 @@ end program test_move_alloc
|
||||||
@node MVBITS
|
@node MVBITS
|
||||||
@section @code{MVBITS} --- Move bits from one integer to another
|
@section @code{MVBITS} --- Move bits from one integer to another
|
||||||
@fnindex MVBITS
|
@fnindex MVBITS
|
||||||
|
@fnindex BMVBITS
|
||||||
|
@fnindex IMVBITS
|
||||||
|
@fnindex JMVBITS
|
||||||
|
@fnindex KMVBITS
|
||||||
@cindex bits, move
|
@cindex bits, move
|
||||||
|
|
||||||
@table @asis
|
@table @asis
|
||||||
|
|
@ -10029,7 +10174,7 @@ affected by the movement of bits is unchanged. The values of
|
||||||
@code{BIT_SIZE(FROM)}.
|
@code{BIT_SIZE(FROM)}.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental subroutine
|
Elemental subroutine
|
||||||
|
|
@ -10047,6 +10192,16 @@ same kind as @var{FROM}.
|
||||||
@item @var{TOPOS} @tab The type shall be @code{INTEGER}.
|
@item @var{TOPOS} @tab The type shall be @code{INTEGER}.
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{MVBITS(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BMVBITS(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{IMVBITS(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JMVBITS(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KMVBITS(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{IBCLR}, @ref{IBSET}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
|
@ref{IBCLR}, @ref{IBSET}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
|
||||||
@end table
|
@end table
|
||||||
|
|
@ -10250,6 +10405,10 @@ END PROGRAM
|
||||||
@node NOT
|
@node NOT
|
||||||
@section @code{NOT} --- Logical negation
|
@section @code{NOT} --- Logical negation
|
||||||
@fnindex NOT
|
@fnindex NOT
|
||||||
|
@fnindex BNOT
|
||||||
|
@fnindex INOT
|
||||||
|
@fnindex JNOT
|
||||||
|
@fnindex KNOT
|
||||||
@cindex bits, negate
|
@cindex bits, negate
|
||||||
@cindex bitwise logical not
|
@cindex bitwise logical not
|
||||||
@cindex logical not, bitwise
|
@cindex logical not, bitwise
|
||||||
|
|
@ -10259,7 +10418,7 @@ END PROGRAM
|
||||||
@code{NOT} returns the bitwise Boolean inverse of @var{I}.
|
@code{NOT} returns the bitwise Boolean inverse of @var{I}.
|
||||||
|
|
||||||
@item @emph{Standard}:
|
@item @emph{Standard}:
|
||||||
Fortran 95 and later
|
Fortran 95 and later, has overloads that are GNU extensions
|
||||||
|
|
||||||
@item @emph{Class}:
|
@item @emph{Class}:
|
||||||
Elemental function
|
Elemental function
|
||||||
|
|
@ -10276,6 +10435,16 @@ Elemental function
|
||||||
The return type is @code{INTEGER}, of the same kind as the
|
The return type is @code{INTEGER}, of the same kind as the
|
||||||
argument.
|
argument.
|
||||||
|
|
||||||
|
@item @emph{Specific names}:
|
||||||
|
@multitable @columnfractions .20 .20 .20 .25
|
||||||
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
|
@item @code{NOT(A)} @tab @code{INTEGER A} @tab @code{INTEGER} @tab Fortran 95 and later
|
||||||
|
@item @code{BNOT(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
|
||||||
|
@item @code{INOT(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
|
||||||
|
@item @code{JNOT(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
|
||||||
|
@item @code{KNOT(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item @emph{See also}:
|
@item @emph{See also}:
|
||||||
@ref{IAND}, @ref{IEOR}, @ref{IOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}
|
@ref{IAND}, @ref{IEOR}, @ref{IOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}
|
||||||
|
|
||||||
|
|
@ -11192,6 +11361,9 @@ end program test_rank
|
||||||
@fnindex REALPART
|
@fnindex REALPART
|
||||||
@fnindex FLOAT
|
@fnindex FLOAT
|
||||||
@fnindex DFLOAT
|
@fnindex DFLOAT
|
||||||
|
@fnindex FLOATI
|
||||||
|
@fnindex FLOATJ
|
||||||
|
@fnindex FLOATK
|
||||||
@fnindex SNGL
|
@fnindex SNGL
|
||||||
@cindex conversion, to real
|
@cindex conversion, to real
|
||||||
@cindex complex numbers, real part
|
@cindex complex numbers, real part
|
||||||
|
|
@ -11252,6 +11424,9 @@ end program test_real
|
||||||
@item Name @tab Argument @tab Return type @tab Standard
|
@item Name @tab Argument @tab Return type @tab Standard
|
||||||
@item @code{FLOAT(A)} @tab @code{INTEGER(4)} @tab @code{REAL(4)} @tab Fortran 77 and later
|
@item @code{FLOAT(A)} @tab @code{INTEGER(4)} @tab @code{REAL(4)} @tab Fortran 77 and later
|
||||||
@item @code{DFLOAT(A)} @tab @code{INTEGER(4)} @tab @code{REAL(8)} @tab GNU extension
|
@item @code{DFLOAT(A)} @tab @code{INTEGER(4)} @tab @code{REAL(8)} @tab GNU extension
|
||||||
|
@item @code{FLOATI(A)} @tab @code{INTEGER(2)} @tab @code{REAL(4)} @tab GNU extension
|
||||||
|
@item @code{FLOATJ(A)} @tab @code{INTEGER(4)} @tab @code{REAL(4)} @tab GNU extension
|
||||||
|
@item @code{FLOATK(A)} @tab @code{INTEGER(8)} @tab @code{REAL(4)} @tab GNU extension
|
||||||
@item @code{SNGL(A)} @tab @code{INTEGER(8)} @tab @code{REAL(4)} @tab Fortran 77 and later
|
@item @code{SNGL(A)} @tab @code{INTEGER(8)} @tab @code{REAL(4)} @tab Fortran 77 and later
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,8 @@ by type. Explanations are in the following sections.
|
||||||
@xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
|
@xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
|
||||||
@gccoptlist{-fall-intrinsics -fbackslash -fcray-pointer -fd-lines-as-code @gol
|
@gccoptlist{-fall-intrinsics -fbackslash -fcray-pointer -fd-lines-as-code @gol
|
||||||
-fd-lines-as-comments @gol
|
-fd-lines-as-comments @gol
|
||||||
-fdec -fdec-structure -fdefault-double-8 -fdefault-integer-8 @gol
|
-fdec -fdec-structure -fdec-intrinsic-ints @gol
|
||||||
|
-fdefault-double-8 -fdefault-integer-8 @gol
|
||||||
-fdefault-real-8 -fdollar-ok -ffixed-line-length-@var{n} @gol
|
-fdefault-real-8 -fdollar-ok -ffixed-line-length-@var{n} @gol
|
||||||
-ffixed-line-length-none -ffree-form -ffree-line-length-@var{n} @gol
|
-ffixed-line-length-none -ffree-form -ffree-line-length-@var{n} @gol
|
||||||
-ffree-line-length-none -fimplicit-none -finteger-4-integer-8 @gol
|
-ffree-line-length-none -fimplicit-none -finteger-4-integer-8 @gol
|
||||||
|
|
@ -239,6 +240,7 @@ full documentation.
|
||||||
|
|
||||||
Other flags enabled by this switch are:
|
Other flags enabled by this switch are:
|
||||||
@option{-fdollar-ok} @option{-fcray-pointer} @option{-fdec-structure}
|
@option{-fdollar-ok} @option{-fcray-pointer} @option{-fdec-structure}
|
||||||
|
@option{-fdec-intrinsic-ints}
|
||||||
|
|
||||||
@item -fdec-structure
|
@item -fdec-structure
|
||||||
@opindex @code{fdec-structure}
|
@opindex @code{fdec-structure}
|
||||||
|
|
@ -247,6 +249,11 @@ Enable DEC @code{STRUCTURE} and @code{RECORD} as well as @code{UNION},
|
||||||
provided for compatibility only; Fortran 90 derived types should be used
|
provided for compatibility only; Fortran 90 derived types should be used
|
||||||
instead where possible.
|
instead where possible.
|
||||||
|
|
||||||
|
@item -fdec-intrinsic-ints
|
||||||
|
@opindex @code{fdec-intrinsic-ints}
|
||||||
|
Enable B/I/J/K kind variants of existing integer functions (e.g. BIAND, IIAND,
|
||||||
|
JIAND, etc...). For a complete list of intrinsics see the full documentation.
|
||||||
|
|
||||||
@item -fdollar-ok
|
@item -fdollar-ok
|
||||||
@opindex @code{fdollar-ok}
|
@opindex @code{fdollar-ok}
|
||||||
@cindex @code{$}
|
@cindex @code{$}
|
||||||
|
|
|
||||||
|
|
@ -424,6 +424,10 @@ fdec
|
||||||
Fortran
|
Fortran
|
||||||
Enable all DEC language extensions.
|
Enable all DEC language extensions.
|
||||||
|
|
||||||
|
fdec-intrinsic-ints
|
||||||
|
Fortran Var(flag_dec_intrinsic_ints)
|
||||||
|
Enable kind-specific variants of integer intrinsic functions.
|
||||||
|
|
||||||
fdec-structure
|
fdec-structure
|
||||||
Fortran
|
Fortran
|
||||||
Enable support for DEC STRUCTURE/RECORD.
|
Enable support for DEC STRUCTURE/RECORD.
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ static void
|
||||||
set_dec_flags (int value)
|
set_dec_flags (int value)
|
||||||
{
|
{
|
||||||
gfc_option.flag_dec_structure = value;
|
gfc_option.flag_dec_structure = value;
|
||||||
|
flag_dec_intrinsic_ints = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
2016-08-03 Fritz Reese <fritzoreese@gmail.com>
|
||||||
|
|
||||||
|
* gfortran.dg/dec_intrinsic_ints.f90: New testcase.
|
||||||
|
|
||||||
2016-08-03 Richard Biener <rguenther@suse.de>
|
2016-08-03 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
* c-c++-common/ubsan/pr71403-1.c: Use dg-additional-options
|
* c-c++-common/ubsan/pr71403-1.c: Use dg-additional-options
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,165 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
! { dg-options "-fdec-intrinsic-ints" }
|
||||||
|
!
|
||||||
|
! Test B/I/J/K integer intrinsics.
|
||||||
|
!
|
||||||
|
program main
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer*1 :: ab = 9_1, bb = 3_1, cb
|
||||||
|
integer*2 :: ai = 9_2, bi = 3_2, ci
|
||||||
|
integer*4 :: aj = 9_4, bj = 3_4, cj
|
||||||
|
integer*8 :: ak = 9_8, bk = 3_8, ck
|
||||||
|
integer :: a = 9 , b = 3 , c
|
||||||
|
|
||||||
|
integer*1 :: ib = 9_1, bpos = 3_1
|
||||||
|
integer*2 :: ii = 9_2, ipos = 3_2
|
||||||
|
integer*4 :: ij = 9_4, jpos = 3_4
|
||||||
|
integer*8 :: ik = 9_8, kpos = 3_8
|
||||||
|
integer :: i = 9 , pos = 3
|
||||||
|
|
||||||
|
integer*1 :: ba, bc, bd
|
||||||
|
integer*2 :: ia, ic, id
|
||||||
|
integer*4 :: ja, jb, jc, jd
|
||||||
|
integer*8 :: ka, kb, kc, kd
|
||||||
|
|
||||||
|
logical*1 :: lb
|
||||||
|
logical*2 :: li
|
||||||
|
logical*4 :: lj
|
||||||
|
logical*8 :: lk
|
||||||
|
logical :: l
|
||||||
|
|
||||||
|
real :: r
|
||||||
|
|
||||||
|
lb = bbtest(ib, bpos)
|
||||||
|
li = bitest(ii, ipos)
|
||||||
|
lj = bjtest(ij, jpos)
|
||||||
|
lk = bktest(ik, kpos)
|
||||||
|
l = btest(i , pos)
|
||||||
|
|
||||||
|
lb = bbtest(9_1, 3_1)
|
||||||
|
li = bitest(9_2, 3_2)
|
||||||
|
lj = bjtest(9_4, 3_4)
|
||||||
|
lk = bktest(9_8, 3_8)
|
||||||
|
l = btest(9 , 3 )
|
||||||
|
|
||||||
|
r = floati(ai)
|
||||||
|
r = floatj(aj)
|
||||||
|
r = floatk(ak)
|
||||||
|
r = float (a )
|
||||||
|
|
||||||
|
r = floati(9_2)
|
||||||
|
r = floatj(9_4)
|
||||||
|
r = floatk(9_8)
|
||||||
|
r = float (9 )
|
||||||
|
|
||||||
|
bb = babs(ab)
|
||||||
|
bi = iiabs(ai)
|
||||||
|
bj = jiabs(aj)
|
||||||
|
bk = kiabs(ak)
|
||||||
|
b = iabs(a )
|
||||||
|
|
||||||
|
bb = babs(9_1)
|
||||||
|
bi = iiabs(9_2)
|
||||||
|
bj = jiabs(9_4)
|
||||||
|
bk = kiabs(9_8)
|
||||||
|
b = iabs(9 )
|
||||||
|
|
||||||
|
cb = biand(ab, bb)
|
||||||
|
ci = iiand(ai, bi)
|
||||||
|
cj = jiand(aj, bj)
|
||||||
|
ck = kiand(ak, bk)
|
||||||
|
c = iand(a , b )
|
||||||
|
|
||||||
|
cb = biand(9_1, 3_1)
|
||||||
|
ci = iiand(9_2, 3_2)
|
||||||
|
cj = jiand(9_4, 3_4)
|
||||||
|
ck = kiand(9_8, 3_8)
|
||||||
|
c = iand(9 , 3 )
|
||||||
|
|
||||||
|
cb = bbclr(ib, bpos)
|
||||||
|
ci = iibclr(ii, ipos)
|
||||||
|
cj = jibclr(ij, jpos)
|
||||||
|
ck = kibclr(ik, kpos)
|
||||||
|
c = ibclr(i , pos)
|
||||||
|
|
||||||
|
cb = bbclr(9_1, 3_1)
|
||||||
|
ci = iibclr(9_2, 3_2)
|
||||||
|
cj = jibclr(9_4, 3_4)
|
||||||
|
ck = kibclr(9_8, 3_8)
|
||||||
|
c = ibclr(i , pos)
|
||||||
|
|
||||||
|
cb = bbset(ib, bpos)
|
||||||
|
ci = iibset(ii, ipos)
|
||||||
|
cj = jibset(ij, jpos)
|
||||||
|
ck = kibset(ik, kpos)
|
||||||
|
c = ibset(i , pos)
|
||||||
|
|
||||||
|
cb = bbset(9_1, 3_1)
|
||||||
|
ci = iibset(9_2, 3_2)
|
||||||
|
cj = jibset(9_4, 3_4)
|
||||||
|
ck = kibset(9_8, 3_8)
|
||||||
|
c = ibset(i , pos)
|
||||||
|
|
||||||
|
cb = bieor(ab, bb)
|
||||||
|
ci = iieor(ai, bi)
|
||||||
|
cj = jieor(aj, bj)
|
||||||
|
ck = kieor(ak, bk)
|
||||||
|
c = ieor(a , b )
|
||||||
|
|
||||||
|
cb = bieor(9_1, 3_1)
|
||||||
|
ci = iieor(9_2, 3_2)
|
||||||
|
cj = jieor(9_4, 3_4)
|
||||||
|
ck = kieor(9_8, 3_8)
|
||||||
|
c = ieor(9 , 3 )
|
||||||
|
|
||||||
|
cb = bior(ab, bb)
|
||||||
|
ci = iior(ai, bi)
|
||||||
|
cj = jior(aj, bj)
|
||||||
|
ck = kior(ak, bk)
|
||||||
|
c = ior(a , b )
|
||||||
|
|
||||||
|
cb = bior(9_1, 3_1)
|
||||||
|
ci = iior(9_2, 3_2)
|
||||||
|
cj = jior(9_4, 3_4)
|
||||||
|
ck = kior(9_8, 3_8)
|
||||||
|
c = ior(9 , 3 )
|
||||||
|
|
||||||
|
cb = bmod(ab, bb)
|
||||||
|
ci = imod(ai, bi)
|
||||||
|
cj = jmod(aj, bj)
|
||||||
|
ck = kmod(ak, bk)
|
||||||
|
c = mod(a , b )
|
||||||
|
|
||||||
|
cb = bmod(9_1, 3_1)
|
||||||
|
ci = imod(9_2, 3_2)
|
||||||
|
cj = jmod(9_4, 3_4)
|
||||||
|
ck = kmod(9_8, 3_8)
|
||||||
|
c = mod(9 , 3 )
|
||||||
|
|
||||||
|
ba = bbits(121, 10, 5)
|
||||||
|
call bmvbits(121_1, 2, 3, ba, 1)
|
||||||
|
bc = bshftc(ba, 3, 6)
|
||||||
|
bd = bshft(bc, -3)
|
||||||
|
ba = bnot(bd)
|
||||||
|
|
||||||
|
ia = iibits(357, 10, 5)
|
||||||
|
call imvbits(357_2, 8, 3, ia, 1)
|
||||||
|
ic = iishftc(ia, 3, 6)
|
||||||
|
id = iishft(ic, -3)
|
||||||
|
ia = inot(id)
|
||||||
|
|
||||||
|
ja = jibits(357, 10, 5)
|
||||||
|
call jmvbits(357_4, 8, 3, ja, 1)
|
||||||
|
jc = jishftc(ja, 3, 6)
|
||||||
|
jd = jishft(jc, -3)
|
||||||
|
ja = jnot(jd)
|
||||||
|
|
||||||
|
ka = kibits(357_8, 10_8, 5_8)
|
||||||
|
call kmvbits(357_8, 8_8, 3_8, ka, 1_8)
|
||||||
|
kc = kishftc(ka, 3_8, 6_8)
|
||||||
|
kd = kishft(kc, -3_8)
|
||||||
|
ka = knot(kd)
|
||||||
|
|
||||||
|
end program
|
||||||
Loading…
Reference in New Issue