This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
[Patch, fortran] Inline DOT_PRODUCT
Steven,
:ADDPATCH fortran:
Please find attached a patch to implement dot_product inline. This
version includes support for logical types and a corresponding test.
All dotprod.m4's and the corresponding generated functions have been
removed.
I note that I did not remember to update the copyright dateline in
libgfortran/makefile.am - I will do so before I commit the patch.
Whilst I have regtested and all is well, the main purpose of this patch
is to speed up execution of dot_product for small arrays. To this end,
I attach a test program that is not part of the patch but produces the
results below, on a quiet Athlon1700. It may be seen that, with -O3,
the patch removes the function call overhead of ~25-30ns, which is
highly significant for arrays of sizes below approximately 32. The
error on the timing is a few ns and there is a residual overhead, which
must(?) be the dot_product loop overhead, which is about 15ns. The
performance, with the patch, is identical to that of ifort.
It will be seen that I have replaced gfc_conv_expr's with
gfc_conv_expr_val's and have not, therefore, attached the corresponding
post blocks to the block enclosed by the loop. This does not, however,
change the generated code.
OK for trunk and, whenever, 4.1?
Paul
2006-02-27 Paul Thomas <pault@gcc.gnu.org>
* iresolve.c (gfc_resolve_dot_product): Remove any difference in
treatment of logical types.
* trans-intrinsic.c (gfc_conv_intrinsic_dot_product): New function.
* libgfortran/Makefile.in: Regenerated.
* libgfortran/Makefile.am: Remove all references to dotprod.
* libgfortran/aclocal.m4: Regenerated.
* libgfortran/m4/dotprodc.m4: Removed.
* libgfortran/m4/dotprodl.m4: Removed.
* libgfortran/m4/dotprod.m4: Removed.
* libgfortran/generated/dotprod_xx.c: All types removed.
2006-02-27 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/dot_product_logical.f90: New test.
PATCHED:
[prt@localhost dot_product]# /svn-4.2/bin/gfortran -O3
-fdump-tree-original dottest.f90;./a.out
DOT_PRODUCT test
array length time(ns)
4 21.50
8 15.70
16 56.10
32 100.20
64 191.70
128 372.50
256 735.60
512 1459.90
1024 2908.60
NOT PATCHED:
[prt@localhost dot_product]# export
LD_LIBRARY_PATH=/svn-4.1/lib:/opt/intel/fc/9.0/lib [prt@localhost
dot_product]# /svn-4.1/bin/gfortran -O3 -fdump-tree-original
dottest.f90;./a.out
DOT_PRODUCT test
array length time(ns)
4 44.60
8 39.90
16 80.70
32 126.30
64 216.90
128 398.50
256 760.50
512 1489.60
1024 2936.40
[prt@localhost dot_product]# ifort dottest.f90;./a.out DOT_PRODUCT test
array length time(ns)
4 20.90
8 18.90
16 52.70
32 98.90
64 189.50
128 370.90
256 732.70
512 1458.40
1024 2986.90
Index: gcc/fortran/iresolve.c
===================================================================
*** gcc/fortran/iresolve.c (revision 111450)
--- gcc/fortran/iresolve.c (working copy)
*************** gfc_resolve_dot_product (gfc_expr * f, g
*** 549,569 ****
{
gfc_expr temp;
! if (a->ts.type == BT_LOGICAL && b->ts.type == BT_LOGICAL)
! {
! f->ts.type = BT_LOGICAL;
! f->ts.kind = gfc_default_logical_kind;
! }
! else
! {
! temp.expr_type = EXPR_OP;
! gfc_clear_ts (&temp.ts);
! temp.value.op.operator = INTRINSIC_NONE;
! temp.value.op.op1 = a;
! temp.value.op.op2 = b;
! gfc_type_convert_binary (&temp);
! f->ts = temp.ts;
! }
f->value.function.name =
gfc_get_string (PREFIX("dot_product_%c%d"), gfc_type_letter (f->ts.type),
--- 549,561 ----
{
gfc_expr temp;
! temp.expr_type = EXPR_OP;
! gfc_clear_ts (&temp.ts);
! temp.value.op.operator = INTRINSIC_NONE;
! temp.value.op.op1 = a;
! temp.value.op.op2 = b;
! gfc_type_convert_binary (&temp);
! f->ts = temp.ts;
f->value.function.name =
gfc_get_string (PREFIX("dot_product_%c%d"), gfc_type_letter (f->ts.type),
Index: gcc/fortran/trans-intrinsic.c
===================================================================
*** gcc/fortran/trans-intrinsic.c (revision 111450)
--- gcc/fortran/trans-intrinsic.c (working copy)
*************** gfc_conv_intrinsic_arith (gfc_se * se, g
*** 1561,1566 ****
--- 1561,1671 ----
se->expr = resvar;
}
+
+ /* Inline implementation of the dot_product intrinsic. This function
+ is based on gfc_conv_intrinsic_arith (the previous function). */
+ static void
+ gfc_conv_intrinsic_dot_product (gfc_se * se, gfc_expr * expr)
+ {
+ tree resvar;
+ tree type;
+ stmtblock_t body;
+ stmtblock_t block;
+ tree tmp;
+ gfc_loopinfo loop;
+ gfc_actual_arglist *actual;
+ gfc_ss *arrayss1, *arrayss2;
+ gfc_se arrayse1, arrayse2;
+ gfc_expr *arrayexpr1, *arrayexpr2;
+
+ /* Use the library for kind > 8. */
+ if (expr->ts.kind > 8)
+ {
+ gfc_conv_intrinsic_funcall (se, expr);
+ return;
+ }
+
+ type = gfc_typenode_for_spec (&expr->ts);
+
+ /* Initialize the result. */
+ resvar = gfc_create_var (type, "val");
+ if (expr->ts.type == BT_LOGICAL)
+ tmp = convert (type, integer_zero_node);
+ else
+ tmp = gfc_build_const (type, integer_zero_node);
+
+ gfc_add_modify_expr (&se->pre, resvar, tmp);
+
+ /* Walk argument #1. */
+ actual = expr->value.function.actual;
+ arrayexpr1 = actual->expr;
+ arrayss1 = gfc_walk_expr (arrayexpr1);
+ gcc_assert (arrayss1 != gfc_ss_terminator);
+
+ /* Walk argument #2. */
+ actual = actual->next;
+ arrayexpr2 = actual->expr;
+ arrayss2 = gfc_walk_expr (arrayexpr2);
+ gcc_assert (arrayss2 != gfc_ss_terminator);
+
+ /* Initialize the scalarizer. */
+ gfc_init_loopinfo (&loop);
+ gfc_add_ss_to_loop (&loop, arrayss1);
+ gfc_add_ss_to_loop (&loop, arrayss2);
+
+ /* Initialize the loop. */
+ gfc_conv_ss_startstride (&loop);
+ gfc_conv_loop_setup (&loop);
+
+ gfc_mark_ss_chain_used (arrayss1, 1);
+ gfc_mark_ss_chain_used (arrayss2, 1);
+
+ /* Generate the loop body. */
+ gfc_start_scalarized_body (&loop, &body);
+ gfc_init_block (&block);
+
+ /* Make the tree expression for [conjg(]array1[)]. */
+ gfc_init_se (&arrayse1, NULL);
+ gfc_copy_loopinfo_to_se (&arrayse1, &loop);
+ arrayse1.ss = arrayss1;
+ gfc_conv_expr_val (&arrayse1, arrayexpr1);
+ if (expr->ts.type == BT_COMPLEX)
+ arrayse1.expr = build1 (CONJ_EXPR, type, arrayse1.expr);
+ gfc_add_block_to_block (&block, &arrayse1.pre);
+
+ /* Make the tree expression for array2. */
+ gfc_init_se (&arrayse2, NULL);
+ gfc_copy_loopinfo_to_se (&arrayse2, &loop);
+ arrayse2.ss = arrayss2;
+ gfc_conv_expr_val (&arrayse2, arrayexpr2);
+ gfc_add_block_to_block (&block, &arrayse2.pre);
+
+ /* Do the actual product and sum. */
+ if (expr->ts.type == BT_LOGICAL)
+ {
+ tmp = build2 (TRUTH_AND_EXPR, type, arrayse1.expr, arrayse2.expr);
+ tmp = build2 (TRUTH_OR_EXPR, type, resvar, tmp);
+ }
+ else
+ {
+ tmp = build2 (MULT_EXPR, type, arrayse1.expr, arrayse2.expr);
+ tmp = build2 (PLUS_EXPR, type, resvar, tmp);
+ }
+ gfc_add_modify_expr (&block, resvar, tmp);
+
+ /* Finish up the loop block and the loop. */
+ tmp = gfc_finish_block (&block);
+ gfc_add_expr_to_block (&body, tmp);
+
+ gfc_trans_scalarizing_loops (&loop, &body);
+ gfc_add_block_to_block (&se->pre, &loop.pre);
+ gfc_add_block_to_block (&se->pre, &loop.post);
+ gfc_cleanup_loop (&loop);
+
+ se->expr = resvar;
+ }
+
+
static void
gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, int op)
{
*************** gfc_conv_intrinsic_function (gfc_se * se
*** 3102,3107 ****
--- 3207,3216 ----
gfc_conv_intrinsic_dim (se, expr);
break;
+ case GFC_ISYM_DOT_PRODUCT:
+ gfc_conv_intrinsic_dot_product (se, expr);
+ break;
+
case GFC_ISYM_DPROD:
gfc_conv_intrinsic_dprod (se, expr);
break;
*************** gfc_conv_intrinsic_function (gfc_se * se
*** 3271,3277 ****
break;
case GFC_ISYM_CHDIR:
- case GFC_ISYM_DOT_PRODUCT:
case GFC_ISYM_ETIME:
case GFC_ISYM_FGET:
case GFC_ISYM_FGETC:
--- 3380,3385 ----
Index: libgfortran/Makefile.in
===================================================================
*** libgfortran/Makefile.in (revision 111450)
--- libgfortran/Makefile.in (working copy)
***************
*** 1,8 ****
! # Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
! # 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
--- 1,8 ----
! # Makefile.in generated by automake 1.9.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
! # 2003, 2004 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
***************
*** 14,19 ****
--- 14,21 ----
@SET_MAKE@
+ SOURCES = $(libgfortran_la_SOURCES) $(libgfortranbegin_la_SOURCES)
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
*************** am__objects_11 = product_i4.lo product_i
*** 112,149 ****
am__objects_12 = sum_i4.lo sum_i8.lo sum_i16.lo sum_r4.lo sum_r8.lo \
sum_r10.lo sum_r16.lo sum_c4.lo sum_c8.lo sum_c10.lo \
sum_c16.lo
! am__objects_13 = dotprod_i4.lo dotprod_i8.lo dotprod_i16.lo \
! dotprod_r4.lo dotprod_r8.lo dotprod_r10.lo dotprod_r16.lo
! am__objects_14 = dotprod_l4.lo dotprod_l8.lo dotprod_l16.lo
! am__objects_15 = dotprod_c4.lo dotprod_c8.lo dotprod_c10.lo \
! dotprod_c16.lo
! am__objects_16 = matmul_i4.lo matmul_i8.lo matmul_i16.lo matmul_r4.lo \
matmul_r8.lo matmul_r10.lo matmul_r16.lo matmul_c4.lo \
matmul_c8.lo matmul_c10.lo matmul_c16.lo
! am__objects_17 = matmul_l4.lo matmul_l8.lo matmul_l16.lo
! am__objects_18 = transpose_i4.lo transpose_i8.lo transpose_i16.lo \
transpose_c4.lo transpose_c8.lo transpose_c10.lo \
transpose_c16.lo
! am__objects_19 = shape_i4.lo shape_i8.lo shape_i16.lo
! am__objects_20 = eoshift1_4.lo eoshift1_8.lo eoshift1_16.lo
! am__objects_21 = eoshift3_4.lo eoshift3_8.lo eoshift3_16.lo
! am__objects_22 = cshift1_4.lo cshift1_8.lo cshift1_16.lo
! am__objects_23 = reshape_i4.lo reshape_i8.lo reshape_i16.lo \
reshape_c4.lo reshape_c8.lo reshape_c10.lo reshape_c16.lo
! am__objects_24 = in_pack_i4.lo in_pack_i8.lo in_pack_i16.lo \
in_pack_c4.lo in_pack_c8.lo in_pack_c10.lo in_pack_c16.lo
! am__objects_25 = in_unpack_i4.lo in_unpack_i8.lo in_unpack_i16.lo \
in_unpack_c4.lo in_unpack_c8.lo in_unpack_c10.lo \
in_unpack_c16.lo
! am__objects_26 = exponent_r4.lo exponent_r8.lo exponent_r10.lo \
exponent_r16.lo
! am__objects_27 = fraction_r4.lo fraction_r8.lo fraction_r10.lo \
fraction_r16.lo
! am__objects_28 = nearest_r4.lo nearest_r8.lo nearest_r10.lo \
nearest_r16.lo
! am__objects_29 = set_exponent_r4.lo set_exponent_r8.lo \
set_exponent_r10.lo set_exponent_r16.lo
! am__objects_30 = pow_i4_i4.lo pow_i8_i4.lo pow_i16_i4.lo pow_r4_i4.lo \
pow_r8_i4.lo pow_r10_i4.lo pow_r16_i4.lo pow_c4_i4.lo \
pow_c8_i4.lo pow_c10_i4.lo pow_c16_i4.lo pow_i4_i8.lo \
pow_i8_i8.lo pow_i16_i8.lo pow_r4_i8.lo pow_r8_i8.lo \
--- 114,146 ----
am__objects_12 = sum_i4.lo sum_i8.lo sum_i16.lo sum_r4.lo sum_r8.lo \
sum_r10.lo sum_r16.lo sum_c4.lo sum_c8.lo sum_c10.lo \
sum_c16.lo
! am__objects_13 = matmul_i4.lo matmul_i8.lo matmul_i16.lo matmul_r4.lo \
matmul_r8.lo matmul_r10.lo matmul_r16.lo matmul_c4.lo \
matmul_c8.lo matmul_c10.lo matmul_c16.lo
! am__objects_14 = matmul_l4.lo matmul_l8.lo matmul_l16.lo
! am__objects_15 = transpose_i4.lo transpose_i8.lo transpose_i16.lo \
transpose_c4.lo transpose_c8.lo transpose_c10.lo \
transpose_c16.lo
! am__objects_16 = shape_i4.lo shape_i8.lo shape_i16.lo
! am__objects_17 = eoshift1_4.lo eoshift1_8.lo eoshift1_16.lo
! am__objects_18 = eoshift3_4.lo eoshift3_8.lo eoshift3_16.lo
! am__objects_19 = cshift1_4.lo cshift1_8.lo cshift1_16.lo
! am__objects_20 = reshape_i4.lo reshape_i8.lo reshape_i16.lo \
reshape_c4.lo reshape_c8.lo reshape_c10.lo reshape_c16.lo
! am__objects_21 = in_pack_i4.lo in_pack_i8.lo in_pack_i16.lo \
in_pack_c4.lo in_pack_c8.lo in_pack_c10.lo in_pack_c16.lo
! am__objects_22 = in_unpack_i4.lo in_unpack_i8.lo in_unpack_i16.lo \
in_unpack_c4.lo in_unpack_c8.lo in_unpack_c10.lo \
in_unpack_c16.lo
! am__objects_23 = exponent_r4.lo exponent_r8.lo exponent_r10.lo \
exponent_r16.lo
! am__objects_24 = fraction_r4.lo fraction_r8.lo fraction_r10.lo \
fraction_r16.lo
! am__objects_25 = nearest_r4.lo nearest_r8.lo nearest_r10.lo \
nearest_r16.lo
! am__objects_26 = set_exponent_r4.lo set_exponent_r8.lo \
set_exponent_r10.lo set_exponent_r16.lo
! am__objects_27 = pow_i4_i4.lo pow_i8_i4.lo pow_i16_i4.lo pow_r4_i4.lo \
pow_r8_i4.lo pow_r10_i4.lo pow_r16_i4.lo pow_c4_i4.lo \
pow_c8_i4.lo pow_c10_i4.lo pow_c16_i4.lo pow_i4_i8.lo \
pow_i8_i8.lo pow_i16_i8.lo pow_r4_i8.lo pow_r8_i8.lo \
*************** am__objects_30 = pow_i4_i4.lo pow_i8_i4.
*** 152,158 ****
pow_i16_i16.lo pow_r4_i16.lo pow_r8_i16.lo pow_r10_i16.lo \
pow_r16_i16.lo pow_c4_i16.lo pow_c8_i16.lo pow_c10_i16.lo \
pow_c16_i16.lo
! am__objects_31 = $(am__objects_2) $(am__objects_3) $(am__objects_4) \
$(am__objects_5) $(am__objects_6) $(am__objects_7) \
$(am__objects_8) $(am__objects_9) $(am__objects_10) \
$(am__objects_11) $(am__objects_12) $(am__objects_13) \
--- 149,155 ----
pow_i16_i16.lo pow_r4_i16.lo pow_r8_i16.lo pow_r10_i16.lo \
pow_r16_i16.lo pow_c4_i16.lo pow_c8_i16.lo pow_c10_i16.lo \
pow_c16_i16.lo
! am__objects_28 = $(am__objects_2) $(am__objects_3) $(am__objects_4) \
$(am__objects_5) $(am__objects_6) $(am__objects_7) \
$(am__objects_8) $(am__objects_9) $(am__objects_10) \
$(am__objects_11) $(am__objects_12) $(am__objects_13) \
*************** am__objects_31 = $(am__objects_2) $(am__
*** 160,171 ****
$(am__objects_17) $(am__objects_18) $(am__objects_19) \
$(am__objects_20) $(am__objects_21) $(am__objects_22) \
$(am__objects_23) $(am__objects_24) $(am__objects_25) \
! $(am__objects_26) $(am__objects_27) $(am__objects_28) \
! $(am__objects_29) $(am__objects_30)
! am__objects_32 = close.lo file_pos.lo format.lo inquire.lo \
list_read.lo lock.lo open.lo read.lo size_from_kind.lo \
transfer.lo unit.lo unix.lo write.lo
! am__objects_33 = associated.lo abort.lo args.lo bessel.lo \
c99_functions.lo chdir.lo cpu_time.lo cshift0.lo ctime.lo \
date_and_time.lo env.lo erf.lo eoshift0.lo eoshift2.lo \
etime.lo exit.lo fget.lo flush.lo fnum.lo ftell.lo gerror.lo \
--- 157,167 ----
$(am__objects_17) $(am__objects_18) $(am__objects_19) \
$(am__objects_20) $(am__objects_21) $(am__objects_22) \
$(am__objects_23) $(am__objects_24) $(am__objects_25) \
! $(am__objects_26) $(am__objects_27)
! am__objects_29 = close.lo file_pos.lo format.lo inquire.lo \
list_read.lo lock.lo open.lo read.lo size_from_kind.lo \
transfer.lo unit.lo unix.lo write.lo
! am__objects_30 = associated.lo abort.lo args.lo bessel.lo \
c99_functions.lo chdir.lo cpu_time.lo cshift0.lo ctime.lo \
date_and_time.lo env.lo erf.lo eoshift0.lo eoshift2.lo \
etime.lo exit.lo fget.lo flush.lo fnum.lo ftell.lo gerror.lo \
*************** am__objects_33 = associated.lo abort.lo
*** 178,185 ****
system_clock.lo time.lo transpose_generic.lo tty.lo umask.lo \
unlink.lo unpack_generic.lo in_pack_generic.lo \
in_unpack_generic.lo normalize.lo
! am__objects_34 =
! am__objects_35 = _abs_c4.lo _abs_c8.lo _abs_c10.lo _abs_c16.lo \
_abs_i4.lo _abs_i8.lo _abs_i16.lo _abs_r4.lo _abs_r8.lo \
_abs_r10.lo _abs_r16.lo _exp_r4.lo _exp_r8.lo _exp_r10.lo \
_exp_r16.lo _exp_c4.lo _exp_c8.lo _exp_c10.lo _exp_c16.lo \
--- 174,181 ----
system_clock.lo time.lo transpose_generic.lo tty.lo umask.lo \
unlink.lo unpack_generic.lo in_pack_generic.lo \
in_unpack_generic.lo normalize.lo
! am__objects_31 =
! am__objects_32 = _abs_c4.lo _abs_c8.lo _abs_c10.lo _abs_c16.lo \
_abs_i4.lo _abs_i8.lo _abs_i16.lo _abs_r4.lo _abs_r8.lo \
_abs_r10.lo _abs_r16.lo _exp_r4.lo _exp_r8.lo _exp_r10.lo \
_exp_r16.lo _exp_c4.lo _exp_c8.lo _exp_c10.lo _exp_c16.lo \
*************** am__objects_35 = _abs_c4.lo _abs_c8.lo _
*** 199,214 ****
_conjg_c4.lo _conjg_c8.lo _conjg_c10.lo _conjg_c16.lo \
_aint_r4.lo _aint_r8.lo _aint_r10.lo _aint_r16.lo _anint_r4.lo \
_anint_r8.lo _anint_r10.lo _anint_r16.lo
! am__objects_36 = _sign_i4.lo _sign_i8.lo _sign_i16.lo _sign_r4.lo \
_sign_r8.lo _sign_r10.lo _sign_r16.lo _dim_i4.lo _dim_i8.lo \
_dim_i16.lo _dim_r4.lo _dim_r8.lo _dim_r10.lo _dim_r16.lo \
_atan2_r4.lo _atan2_r8.lo _atan2_r10.lo _atan2_r16.lo \
_mod_i4.lo _mod_i8.lo _mod_i16.lo _mod_r4.lo _mod_r8.lo
! am__objects_37 = $(am__objects_35) $(am__objects_36) dprod_r8.lo \
f2c_specifics.lo
! am_libgfortran_la_OBJECTS = $(am__objects_1) $(am__objects_31) \
! $(am__objects_32) $(am__objects_33) $(am__objects_34) \
! $(am__objects_37)
libgfortran_la_OBJECTS = $(am_libgfortran_la_OBJECTS)
libgfortranbegin_la_LIBADD =
am_libgfortranbegin_la_OBJECTS = fmain.lo
--- 195,210 ----
_conjg_c4.lo _conjg_c8.lo _conjg_c10.lo _conjg_c16.lo \
_aint_r4.lo _aint_r8.lo _aint_r10.lo _aint_r16.lo _anint_r4.lo \
_anint_r8.lo _anint_r10.lo _anint_r16.lo
! am__objects_33 = _sign_i4.lo _sign_i8.lo _sign_i16.lo _sign_r4.lo \
_sign_r8.lo _sign_r10.lo _sign_r16.lo _dim_i4.lo _dim_i8.lo \
_dim_i16.lo _dim_r4.lo _dim_r8.lo _dim_r10.lo _dim_r16.lo \
_atan2_r4.lo _atan2_r8.lo _atan2_r10.lo _atan2_r16.lo \
_mod_i4.lo _mod_i8.lo _mod_i16.lo _mod_r4.lo _mod_r8.lo
! am__objects_34 = $(am__objects_32) $(am__objects_33) dprod_r8.lo \
f2c_specifics.lo
! am_libgfortran_la_OBJECTS = $(am__objects_1) $(am__objects_28) \
! $(am__objects_29) $(am__objects_30) $(am__objects_31) \
! $(am__objects_34)
libgfortran_la_OBJECTS = $(am_libgfortran_la_OBJECTS)
libgfortranbegin_la_LIBADD =
am_libgfortranbegin_la_OBJECTS = fmain.lo
*************** LTPPFCCOMPILE = $(LIBTOOL) --mode=compil
*** 222,228 ****
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_FCFLAGS) $(FCFLAGS)
FCLD = $(FC)
! FCLINK = $(LIBTOOL) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--- 218,224 ----
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_FCFLAGS) $(FCFLAGS)
FCLD = $(FC)
! FCLINK = $(LIBTOOL) --mode=link $(FCLD) $(AM_FFLAGS) $(FCFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
*************** generated/product_c8.c \
*** 616,641 ****
generated/product_c10.c \
generated/product_c16.c
- i_dotprod_c = \
- generated/dotprod_i4.c \
- generated/dotprod_i8.c \
- generated/dotprod_i16.c \
- generated/dotprod_r4.c \
- generated/dotprod_r8.c \
- generated/dotprod_r10.c \
- generated/dotprod_r16.c
-
- i_dotprodl_c = \
- generated/dotprod_l4.c \
- generated/dotprod_l8.c \
- generated/dotprod_l16.c
-
- i_dotprodc_c = \
- generated/dotprod_c4.c \
- generated/dotprod_c8.c \
- generated/dotprod_c10.c \
- generated/dotprod_c16.c
-
i_matmul_c = \
generated/matmul_i4.c \
generated/matmul_i8.c \
--- 612,617 ----
*************** generated/pow_c16_i16.c
*** 772,778 ****
m4_files = m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
m4/any.m4 m4/count.m4 m4/maxloc0.m4 m4/maxloc1.m4 m4/maxval.m4 \
m4/minloc0.m4 m4/minloc1.m4 m4/minval.m4 m4/product.m4 m4/sum.m4 \
! m4/dotprod.m4 m4/dotprodl.m4 m4/dotprodc.m4 m4/matmul.m4 m4/matmull.m4 \
m4/ctrig.m4 m4/cexp.m4 m4/chyp.m4 m4/mtype.m4 \
m4/specific.m4 m4/specific2.m4 m4/head.m4 m4/shape.m4 m4/reshape.m4 \
m4/transpose.m4 m4/eoshift1.m4 m4/eoshift3.m4 m4/exponent.m4 \
--- 748,754 ----
m4_files = m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
m4/any.m4 m4/count.m4 m4/maxloc0.m4 m4/maxloc1.m4 m4/maxval.m4 \
m4/minloc0.m4 m4/minloc1.m4 m4/minval.m4 m4/product.m4 m4/sum.m4 \
! m4/matmul.m4 m4/matmull.m4 \
m4/ctrig.m4 m4/cexp.m4 m4/chyp.m4 m4/mtype.m4 \
m4/specific.m4 m4/specific2.m4 m4/head.m4 m4/shape.m4 m4/reshape.m4 \
m4/transpose.m4 m4/eoshift1.m4 m4/eoshift3.m4 m4/exponent.m4 \
*************** m4_files = m4/iparm.m4 m4/ifunction.m4 m
*** 780,790 ****
gfor_built_src = $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \
$(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \
! $(i_product_c) $(i_sum_c) $(i_dotprod_c) $(i_dotprodl_c) $(i_dotprodc_c) \
! $(i_matmul_c) $(i_matmull_c) $(i_transpose_c) $(i_shape_c) $(i_eoshift1_c) \
! $(i_eoshift3_c) $(i_cshift1_c) $(i_reshape_c) $(in_pack_c) $(in_unpack_c) \
! $(i_exponent_c) $(i_fraction_c) $(i_nearest_c) $(i_set_exponent_c) \
! $(i_pow_c) \
selected_int_kind.inc selected_real_kind.inc kinds.h \
kinds.inc c99_protos.inc fpu-target.h
--- 756,765 ----
gfor_built_src = $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \
$(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \
! $(i_product_c) $(i_sum_c) $(i_matmul_c) $(i_matmull_c) $(i_transpose_c) \
! $(i_shape_c) $(i_eoshift1_c) $(i_eoshift3_c) $(i_cshift1_c) \
! $(i_reshape_c) $(in_pack_c) $(in_unpack_c) $(i_exponent_c) \
! $(i_fraction_c) $(i_nearest_c) $(i_set_exponent_c) $(i_pow_c) \
selected_int_kind.inc selected_real_kind.inc kinds.h \
kinds.inc c99_protos.inc fpu-target.h
*************** sum_c10.lo: generated/sum_c10.c
*** 1835,1882 ****
sum_c16.lo: generated/sum_c16.c
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sum_c16.lo `test -f 'generated/sum_c16.c' || echo '$(srcdir)/'`generated/sum_c16.c
- dotprod_i4.lo: generated/dotprod_i4.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_i4.lo `test -f 'generated/dotprod_i4.c' || echo '$(srcdir)/'`generated/dotprod_i4.c
-
- dotprod_i8.lo: generated/dotprod_i8.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_i8.lo `test -f 'generated/dotprod_i8.c' || echo '$(srcdir)/'`generated/dotprod_i8.c
-
- dotprod_i16.lo: generated/dotprod_i16.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_i16.lo `test -f 'generated/dotprod_i16.c' || echo '$(srcdir)/'`generated/dotprod_i16.c
-
- dotprod_r4.lo: generated/dotprod_r4.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_r4.lo `test -f 'generated/dotprod_r4.c' || echo '$(srcdir)/'`generated/dotprod_r4.c
-
- dotprod_r8.lo: generated/dotprod_r8.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_r8.lo `test -f 'generated/dotprod_r8.c' || echo '$(srcdir)/'`generated/dotprod_r8.c
-
- dotprod_r10.lo: generated/dotprod_r10.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_r10.lo `test -f 'generated/dotprod_r10.c' || echo '$(srcdir)/'`generated/dotprod_r10.c
-
- dotprod_r16.lo: generated/dotprod_r16.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_r16.lo `test -f 'generated/dotprod_r16.c' || echo '$(srcdir)/'`generated/dotprod_r16.c
-
- dotprod_l4.lo: generated/dotprod_l4.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_l4.lo `test -f 'generated/dotprod_l4.c' || echo '$(srcdir)/'`generated/dotprod_l4.c
-
- dotprod_l8.lo: generated/dotprod_l8.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_l8.lo `test -f 'generated/dotprod_l8.c' || echo '$(srcdir)/'`generated/dotprod_l8.c
-
- dotprod_l16.lo: generated/dotprod_l16.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_l16.lo `test -f 'generated/dotprod_l16.c' || echo '$(srcdir)/'`generated/dotprod_l16.c
-
- dotprod_c4.lo: generated/dotprod_c4.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_c4.lo `test -f 'generated/dotprod_c4.c' || echo '$(srcdir)/'`generated/dotprod_c4.c
-
- dotprod_c8.lo: generated/dotprod_c8.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_c8.lo `test -f 'generated/dotprod_c8.c' || echo '$(srcdir)/'`generated/dotprod_c8.c
-
- dotprod_c10.lo: generated/dotprod_c10.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_c10.lo `test -f 'generated/dotprod_c10.c' || echo '$(srcdir)/'`generated/dotprod_c10.c
-
- dotprod_c16.lo: generated/dotprod_c16.c
- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dotprod_c16.lo `test -f 'generated/dotprod_c16.c' || echo '$(srcdir)/'`generated/dotprod_c16.c
-
matmul_i4.lo: generated/matmul_i4.c
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o matmul_i4.lo `test -f 'generated/matmul_i4.c' || echo '$(srcdir)/'`generated/matmul_i4.c
--- 1810,1815 ----
*************** fpu-target.h: $(srcdir)/$(FPU_HOST_HEADE
*** 2776,2790 ****
@MAINTAINER_MODE_TRUE@$(i_sum_c): m4/sum.m4 $(I_M4_DEPS1)
@MAINTAINER_MODE_TRUE@ m4 -Dfile=$@ -I$(srcdir)/m4 sum.m4 > $(srcdir)/$@
- @MAINTAINER_MODE_TRUE@$(i_dotprod_c): m4/dotprod.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@ m4 -Dfile=$@ -I$(srcdir)/m4 dotprod.m4 > $(srcdir)/$@
-
- @MAINTAINER_MODE_TRUE@$(i_dotprodl_c): m4/dotprodl.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@ m4 -Dfile=$@ -I$(srcdir)/m4 dotprodl.m4 > $(srcdir)/$@
-
- @MAINTAINER_MODE_TRUE@$(i_dotprodc_c): m4/dotprodc.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@ m4 -Dfile=$@ -I$(srcdir)/m4 dotprodc.m4 > $(srcdir)/$@
-
@MAINTAINER_MODE_TRUE@$(i_matmul_c): m4/matmul.m4 $(I_M4_DEPS)
@MAINTAINER_MODE_TRUE@ m4 -Dfile=$@ -I$(srcdir)/m4 matmul.m4 > $(srcdir)/$@
--- 2709,2714 ----
Index: libgfortran/Makefile.am
===================================================================
*** libgfortran/Makefile.am (revision 111450)
--- libgfortran/Makefile.am (working copy)
*************** generated/product_c8.c \
*** 270,295 ****
generated/product_c10.c \
generated/product_c16.c
- i_dotprod_c= \
- generated/dotprod_i4.c \
- generated/dotprod_i8.c \
- generated/dotprod_i16.c \
- generated/dotprod_r4.c \
- generated/dotprod_r8.c \
- generated/dotprod_r10.c \
- generated/dotprod_r16.c
-
- i_dotprodl_c= \
- generated/dotprod_l4.c \
- generated/dotprod_l8.c \
- generated/dotprod_l16.c
-
- i_dotprodc_c= \
- generated/dotprod_c4.c \
- generated/dotprod_c8.c \
- generated/dotprod_c10.c \
- generated/dotprod_c16.c
-
i_matmul_c= \
generated/matmul_i4.c \
generated/matmul_i8.c \
--- 270,275 ----
*************** generated/pow_c16_i16.c
*** 426,432 ****
m4_files= m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
m4/any.m4 m4/count.m4 m4/maxloc0.m4 m4/maxloc1.m4 m4/maxval.m4 \
m4/minloc0.m4 m4/minloc1.m4 m4/minval.m4 m4/product.m4 m4/sum.m4 \
! m4/dotprod.m4 m4/dotprodl.m4 m4/dotprodc.m4 m4/matmul.m4 m4/matmull.m4 \
m4/ctrig.m4 m4/cexp.m4 m4/chyp.m4 m4/mtype.m4 \
m4/specific.m4 m4/specific2.m4 m4/head.m4 m4/shape.m4 m4/reshape.m4 \
m4/transpose.m4 m4/eoshift1.m4 m4/eoshift3.m4 m4/exponent.m4 \
--- 406,412 ----
m4_files= m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
m4/any.m4 m4/count.m4 m4/maxloc0.m4 m4/maxloc1.m4 m4/maxval.m4 \
m4/minloc0.m4 m4/minloc1.m4 m4/minval.m4 m4/product.m4 m4/sum.m4 \
! m4/matmul.m4 m4/matmull.m4 \
m4/ctrig.m4 m4/cexp.m4 m4/chyp.m4 m4/mtype.m4 \
m4/specific.m4 m4/specific2.m4 m4/head.m4 m4/shape.m4 m4/reshape.m4 \
m4/transpose.m4 m4/eoshift1.m4 m4/eoshift3.m4 m4/exponent.m4 \
*************** m4_files= m4/iparm.m4 m4/ifunction.m4 m4
*** 434,444 ****
gfor_built_src= $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \
$(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \
! $(i_product_c) $(i_sum_c) $(i_dotprod_c) $(i_dotprodl_c) $(i_dotprodc_c) \
! $(i_matmul_c) $(i_matmull_c) $(i_transpose_c) $(i_shape_c) $(i_eoshift1_c) \
! $(i_eoshift3_c) $(i_cshift1_c) $(i_reshape_c) $(in_pack_c) $(in_unpack_c) \
! $(i_exponent_c) $(i_fraction_c) $(i_nearest_c) $(i_set_exponent_c) \
! $(i_pow_c) \
selected_int_kind.inc selected_real_kind.inc kinds.h \
kinds.inc c99_protos.inc fpu-target.h
--- 414,423 ----
gfor_built_src= $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \
$(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \
! $(i_product_c) $(i_sum_c) $(i_matmul_c) $(i_matmull_c) $(i_transpose_c) \
! $(i_shape_c) $(i_eoshift1_c) $(i_eoshift3_c) $(i_cshift1_c) \
! $(i_reshape_c) $(in_pack_c) $(in_unpack_c) $(i_exponent_c) \
! $(i_fraction_c) $(i_nearest_c) $(i_set_exponent_c) $(i_pow_c) \
selected_int_kind.inc selected_real_kind.inc kinds.h \
kinds.inc c99_protos.inc fpu-target.h
*************** $(i_product_c): m4/product.m4 $(I_M4_DEP
*** 644,658 ****
$(i_sum_c): m4/sum.m4 $(I_M4_DEPS1)
m4 -Dfile=$@ -I$(srcdir)/m4 sum.m4 > $(srcdir)/$@
- $(i_dotprod_c): m4/dotprod.m4 $(I_M4_DEPS)
- m4 -Dfile=$@ -I$(srcdir)/m4 dotprod.m4 > $(srcdir)/$@
-
- $(i_dotprodl_c): m4/dotprodl.m4 $(I_M4_DEPS)
- m4 -Dfile=$@ -I$(srcdir)/m4 dotprodl.m4 > $(srcdir)/$@
-
- $(i_dotprodc_c): m4/dotprodc.m4 $(I_M4_DEPS)
- m4 -Dfile=$@ -I$(srcdir)/m4 dotprodc.m4 > $(srcdir)/$@
-
$(i_matmul_c): m4/matmul.m4 $(I_M4_DEPS)
m4 -Dfile=$@ -I$(srcdir)/m4 matmul.m4 > $(srcdir)/$@
--- 623,628 ----
Index: libgfortran/aclocal.m4
===================================================================
*** libgfortran/aclocal.m4 (revision 111450)
--- libgfortran/aclocal.m4 (working copy)
***************
*** 1,7 ****
! # generated automatically by aclocal 1.9.6 -*- Autoconf -*-
! # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
! # 2005 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
--- 1,7 ----
! # generated automatically by aclocal 1.9.2 -*- Autoconf -*-
! # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
! # Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
***************
*** 11,21 ****
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
! # Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
! #
! # This file is free software; the Free Software Foundation
! # gives unlimited permission to copy and/or distribute it,
! # with or without modifications, as long as this notice is preserved.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
--- 11,33 ----
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
! # -*- Autoconf -*-
! # Copyright (C) 2002, 2003 Free Software Foundation, Inc.
! # Generated from amversion.in; do not edit by hand.
!
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
*************** AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api
*** 28,42 ****
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
! [AM_AUTOMAKE_VERSION([1.9.6])])
! # AM_AUX_DIR_EXPAND -*- Autoconf -*-
! # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
! #
! # This file is free software; the Free Software Foundation
! # gives unlimited permission to copy and/or distribute it,
! # with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
--- 40,65 ----
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
! [AM_AUTOMAKE_VERSION([1.9.2])])
! # AM_AUX_DIR_EXPAND
! # Copyright (C) 2001, 2003 Free Software Foundation, Inc.
!
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
*************** AC_PREREQ([2.50])dnl
*** 83,98 ****
am_aux_dir=`cd $ac_aux_dir && pwd`
])
! # AM_CONDITIONAL -*- Autoconf -*-
! # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
! # Free Software Foundation, Inc.
! #
! # This file is free software; the Free Software Foundation
! # gives unlimited permission to copy and/or distribute it,
! # with or without modifications, as long as this notice is preserved.
! # serial 7
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
--- 106,131 ----
am_aux_dir=`cd $ac_aux_dir && pwd`
])
! # AM_CONDITIONAL -*- Autoconf -*-
! # Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
! # serial 6
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
*************** AC_CONFIG_COMMANDS_PRE(
*** 116,134 ****
Usually this means the macro was only invoked conditionally.]])
fi])])
! # Do all the work for Automake. -*- Autoconf -*-
! # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
! # serial 12
! # This macro actually does too much. Some checks are only needed if
! # your package does certain things. But this isn't really a big deal.
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
--- 149,178 ----
Usually this means the macro was only invoked conditionally.]])
fi])])
! # Do all the work for Automake. -*- Autoconf -*-
! # This macro actually does too much some checks are only needed if
! # your package does certain things. But this isn't really a big deal.
!
! # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
# Free Software Foundation, Inc.
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
! # serial 11
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
*************** for _am_header in $config_headers :; do
*** 230,260 ****
done
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
install_sh=${install_sh-"$am_aux_dir/install-sh"}
AC_SUBST(install_sh)])
! # Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
! # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
! # serial 4
AC_DEFUN([AM_MAINTAINER_MODE],
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
--- 274,327 ----
done
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
+
+ # Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 2, or (at your option)
+ # any later version.
+
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ # GNU General Public License for more details.
+
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ # 02111-1307, USA.
+
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
install_sh=${install_sh-"$am_aux_dir/install-sh"}
AC_SUBST(install_sh)])
! # Add --enable-maintainer-mode option to configure.
# From Jim Meyering
! # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004
# Free Software Foundation, Inc.
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
! # serial 3
AC_DEFUN([AM_MAINTAINER_MODE],
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
*************** AC_DEFUN([AM_MAINTAINER_MODE],
*** 273,288 ****
AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
! # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
- # Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
! # serial 4
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
--- 340,366 ----
AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
! # -*- Autoconf -*-
! # Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
!
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
! # serial 3
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
*************** else
*** 308,323 ****
fi
])
- # Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-
# AM_PROG_MKDIR_P
# ---------------
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
! #
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
# created by `make install' are always world readable, even if the
# installer happens to have an overly restrictive umask (e.g. 077).
--- 386,412 ----
fi
])
# AM_PROG_MKDIR_P
# ---------------
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
!
! # Copyright (C) 2003, 2004 Free Software Foundation, Inc.
!
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
# created by `make install' are always world readable, even if the
# installer happens to have an overly restrictive umask (e.g. 077).
*************** else
*** 371,384 ****
fi
AC_SUBST([mkdir_p])])
! # Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005
# Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
! # serial 5
# AM_ENABLE_MULTILIB([MAKEFILE], [REL-TO-TOP-SRCDIR])
# ---------------------------------------------------
--- 460,484 ----
fi
AC_SUBST([mkdir_p])])
! # Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004
# Free Software Foundation, Inc.
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
! # serial 4
# AM_ENABLE_MULTILIB([MAKEFILE], [REL-TO-TOP-SRCDIR])
# ---------------------------------------------------
*************** multi_basedir="$multi_basedir"
*** 429,443 ****
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
CC="$CC"])])dnl
! # Helper functions for option handling. -*- Autoconf -*-
! # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
! #
! # This file is free software; the Free Software Foundation
! # gives unlimited permission to copy and/or distribute it,
! # with or without modifications, as long as this notice is preserved.
! # serial 3
# _AM_MANGLE_OPTION(NAME)
# -----------------------
--- 529,554 ----
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
CC="$CC"])])dnl
! # Helper functions for option handling. -*- Autoconf -*-
! # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
! # serial 2
# _AM_MANGLE_OPTION(NAME)
# -----------------------
*************** AC_DEFUN([_AM_SET_OPTIONS],
*** 462,477 ****
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
- # Check to make sure that the build environment is sane. -*- Autoconf -*-
-
- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
- # Free Software Foundation, Inc.
#
! # This file is free software; the Free Software Foundation
! # gives unlimited permission to copy and/or distribute it,
! # with or without modifications, as long as this notice is preserved.
! # serial 4
# AM_SANITY_CHECK
# ---------------
--- 573,600 ----
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
#
! # Check to make sure that the build environment is sane.
! #
! # Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
!
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
! # serial 3
# AM_SANITY_CHECK
# ---------------
*************** Check your system clock])
*** 514,527 ****
fi
AC_MSG_RESULT(yes)])
- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-
# AM_PROG_INSTALL_STRIP
! # ---------------------
# One issue with vendor `install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
--- 637,661 ----
fi
AC_MSG_RESULT(yes)])
# AM_PROG_INSTALL_STRIP
!
! # Copyright (C) 2001, 2003 Free Software Foundation, Inc.
!
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
# One issue with vendor `install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
*************** AC_SUBST([INSTALL_STRIP_PROGRAM])])
*** 544,556 ****
# Check how to create a tarball. -*- Autoconf -*-
! # Copyright (C) 2004, 2005 Free Software Foundation, Inc.
! #
! # This file is free software; the Free Software Foundation
! # gives unlimited permission to copy and/or distribute it,
! # with or without modifications, as long as this notice is preserved.
- # serial 2
# _AM_PROG_TAR(FORMAT)
# --------------------
--- 678,702 ----
# Check how to create a tarball. -*- Autoconf -*-
! # Copyright (C) 2004 Free Software Foundation, Inc.
!
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2, or (at your option)
! # any later version.
!
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
!
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! # 02111-1307, USA.
!
! # serial 1
# _AM_PROG_TAR(FORMAT)
# --------------------
! { dg-do run }
! Checks the LOGICAL version of dot_product
!
! Contributed by Paul Thomas <pault@gcc.gnu.org>
!
logical :: l1(4) = (/.TRUE.,.FALSE.,.TRUE.,.FALSE./)
logical :: l2(4) = (/.FALSE.,.TRUE.,.FALSE.,.TRUE./)
if (dot_product (l1, l2)) call abort ()
l2 = .TRUE.
if (.not.dot_product (l1, l2)) call abort ()
end implicit real(8) (x-z)
integer(8), parameter :: n= 10000000
real(8) :: t1 = 0.0, t2 = 0.0, t3 = 0.0
real(8) :: dt1
real(4) :: xin(1024), yin(1024), z(n)
integer(8) :: i, j, m
xin = (/(dble(j),j=1,1024)/)
yin = xin
print '(a/a/)', "DOT_PRODUCT test", " array length time(ns)"
do l = 2,10
m = 2**l
t1 = tim ()
do i = 1, n
z(i) = dot_product (xin(1:m), yin(1:m))
end do
t2 = tim ()
do i = 1, n
z(i) = 0d0
end do
t3 = tim ()
dt1 = 1e9_8 * (2d0*t2 - t1 - t3) / (dble (n))
print '(5x,i4,12x,f8.2,12x,f8.2)', m, dt1
end do
contains
! Do not use secnds - various compilers do not support it.
real(8) function tim ()
character(12) :: ddate, dtime, zone
integer(4) :: elems (8)
call date_and_time (ddate, dtime, zone, elems)
tim = 60.0_8 * elems(6) + elems(7) + 0.001_8 * elems(8)
end function tim
end