summaryrefslogtreecommitdiffstats
path: root/libgfortran/intrinsics/pack_generic.c
diff options
context:
space:
mode:
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-18 12:00:20 +0000
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-18 12:00:20 +0000
commit16d6b8e40280dfe7bec4376860ad7099e4235d3b (patch)
tree3ff478ceec1d56183aae95bb81a5d30776bd1ff4 /libgfortran/intrinsics/pack_generic.c
parentd1743da1fffc7986bd0d6dfd363f1ee840f89629 (diff)
downloadppe42-gcc-16d6b8e40280dfe7bec4376860ad7099e4235d3b.tar.gz
ppe42-gcc-16d6b8e40280dfe7bec4376860ad7099e4235d3b.zip
* runtime/select.c: Moved content to select_inc.c. Include it.
Add macros for different character types. * runtime/select_inc.c: New file. * runtime/convert_char.c: New file. * intrinsics/pack_generic.c (pack_char4, pack_s_char4): New functions. * intrinsics/transpose_generic.c (transpose_char4): New function. * intrinsics/spread_generic.c (spread_char4, spread_char4_scalar): New functions. * intrinsics/unpack_generic.c (unpack1_char4, unpack0_char4): New functions. * intrinsics/reshape_generic.c (reshape_char): Use gfc_charlen_type as type for length variables. (reshape_char4): New function. * gfortran.map (GFORTRAN_1.1): Add _gfortran_select_string_char4, _gfortran_convert_char1_to_char4, _gfortran_convert_char4_to_char1, _gfortran_transpose_char4, _gfortran_spread_char4, _gfortran_spread_char4_scalar, _gfortran_reshape_char4, _gfortran_pack_char4, _gfortran_pack_s_char4, _gfortran_unpack0_char4 and _gfortran_unpack1_char4. * Makefile.am: Add runtime/convert_char.c. * Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135496 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/intrinsics/pack_generic.c')
-rw-r--r--libgfortran/intrinsics/pack_generic.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/libgfortran/intrinsics/pack_generic.c b/libgfortran/intrinsics/pack_generic.c
index bb4abaeae4b..8f1e08cc2df 100644
--- a/libgfortran/intrinsics/pack_generic.c
+++ b/libgfortran/intrinsics/pack_generic.c
@@ -457,6 +457,7 @@ pack (gfc_array_char *ret, const gfc_array_char *array,
pack_internal (ret, array, mask, vector, size);
}
+
extern void pack_char (gfc_array_char *, GFC_INTEGER_4, const gfc_array_char *,
const gfc_array_l1 *, const gfc_array_char *,
GFC_INTEGER_4, GFC_INTEGER_4);
@@ -472,6 +473,23 @@ pack_char (gfc_array_char *ret,
pack_internal (ret, array, mask, vector, array_length);
}
+
+extern void pack_char4 (gfc_array_char *, GFC_INTEGER_4, const gfc_array_char *,
+ const gfc_array_l1 *, const gfc_array_char *,
+ GFC_INTEGER_4, GFC_INTEGER_4);
+export_proto(pack_char4);
+
+void
+pack_char4 (gfc_array_char *ret,
+ GFC_INTEGER_4 ret_length __attribute__((unused)),
+ const gfc_array_char *array, const gfc_array_l1 *mask,
+ const gfc_array_char *vector, GFC_INTEGER_4 array_length,
+ GFC_INTEGER_4 vector_length __attribute__((unused)))
+{
+ pack_internal (ret, array, mask, vector, array_length * sizeof (gfc_char4_t));
+}
+
+
static void
pack_s_internal (gfc_array_char *ret, const gfc_array_char *array,
const GFC_LOGICAL_4 *mask, const gfc_array_char *vector,
@@ -641,6 +659,7 @@ pack_s (gfc_array_char *ret, const gfc_array_char *array,
pack_s_internal (ret, array, mask, vector, GFC_DESCRIPTOR_SIZE (array));
}
+
extern void pack_s_char (gfc_array_char *ret, GFC_INTEGER_4,
const gfc_array_char *array, const GFC_LOGICAL_4 *,
const gfc_array_char *, GFC_INTEGER_4,
@@ -656,3 +675,21 @@ pack_s_char (gfc_array_char *ret,
{
pack_s_internal (ret, array, mask, vector, array_length);
}
+
+
+extern void pack_s_char4 (gfc_array_char *ret, GFC_INTEGER_4,
+ const gfc_array_char *array, const GFC_LOGICAL_4 *,
+ const gfc_array_char *, GFC_INTEGER_4,
+ GFC_INTEGER_4);
+export_proto(pack_s_char4);
+
+void
+pack_s_char4 (gfc_array_char *ret,
+ GFC_INTEGER_4 ret_length __attribute__((unused)),
+ const gfc_array_char *array, const GFC_LOGICAL_4 *mask,
+ const gfc_array_char *vector, GFC_INTEGER_4 array_length,
+ GFC_INTEGER_4 vector_length __attribute__((unused)))
+{
+ pack_s_internal (ret, array, mask, vector,
+ array_length * sizeof (gfc_char4_t));
+}
OpenPOWER on IntegriCloud