summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordan Henderson <jhenderson@hdfgroup.org>2024-03-13 00:21:06 (GMT)
committerJordan Henderson <jhenderson@hdfgroup.org>2024-03-13 02:27:34 (GMT)
commit16826a88b9602b9167c22bfd9d270660cfc94806 (patch)
tree4dc3bac48e733bfaa730cf16ec70c3015efca3a4
parent15a1fb88317abc7276e2cf1d2bc0866494169ae7 (diff)
downloadhdf5-16826a88b9602b9167c22bfd9d270660cfc94806.zip
hdf5-16826a88b9602b9167c22bfd9d270660cfc94806.tar.gz
hdf5-16826a88b9602b9167c22bfd9d270660cfc94806.tar.bz2
Add _Float16 h5dump XML test
Fix a few warnings in dt_arith.c test when _Float16 isn't available
-rw-r--r--src/H5Tconv.c182
-rw-r--r--src/H5Tpkg.h130
-rw-r--r--test/dt_arith.c88
-rw-r--r--tools/test/h5dump/CMakeTestsXML.cmake5
-rw-r--r--tools/test/h5dump/expected/xml/tfloat16.h5.xml302
-rw-r--r--tools/test/h5dump/testh5dumpxml.sh.in5
6 files changed, 539 insertions, 173 deletions
diff --git a/src/H5Tconv.c b/src/H5Tconv.c
index 3114896..168370c 100644
--- a/src/H5Tconv.c
+++ b/src/H5Tconv.c
@@ -722,9 +722,9 @@
#define H5T_CONV_Xf_CORE(STYPE, DTYPE, S, D, ST, DT, D_MIN, D_MAX) \
{ \
if (*(S) > (ST)(D_MAX) || (sprec < dprec && *(S) == (ST)(D_MAX))) { \
- H5T_conv_ret_t except_ret = \
- (conv_ctx->u.conv.cb_struct.func)(H5T_CONV_EXCEPT_RANGE_HI, conv_ctx->u.conv.src_type_id, \
- conv_ctx->u.conv.dst_type_id, S, D, conv_ctx->u.conv.cb_struct.user_data); \
+ H5T_conv_ret_t except_ret = (conv_ctx->u.conv.cb_struct.func)( \
+ H5T_CONV_EXCEPT_RANGE_HI, conv_ctx->u.conv.src_type_id, conv_ctx->u.conv.dst_type_id, S, D, \
+ conv_ctx->u.conv.cb_struct.user_data); \
if (except_ret == H5T_CONV_UNHANDLED) \
/* Let compiler convert if case is ignored by user handler*/ \
*(D) = H5_GLUE3(H5T_NATIVE_, DTYPE, _POS_INF_g); \
@@ -733,9 +733,9 @@
/* if(except_ret==H5T_CONV_HANDLED): Fall through, user handled it */ \
} \
else if (*(S) < (ST)(D_MIN)) { \
- H5T_conv_ret_t except_ret = \
- (conv_ctx->u.conv.cb_struct.func)(H5T_CONV_EXCEPT_RANGE_LOW, conv_ctx->u.conv.src_type_id, \
- conv_ctx->u.conv.dst_type_id, S, D, conv_ctx->u.conv.cb_struct.user_data); \
+ H5T_conv_ret_t except_ret = (conv_ctx->u.conv.cb_struct.func)( \
+ H5T_CONV_EXCEPT_RANGE_LOW, conv_ctx->u.conv.src_type_id, conv_ctx->u.conv.dst_type_id, S, D, \
+ conv_ctx->u.conv.cb_struct.user_data); \
if (except_ret == H5T_CONV_UNHANDLED) \
/* Let compiler convert if case is ignored by user handler*/ \
*(D) = H5_GLUE3(H5T_NATIVE_, DTYPE, _NEG_INF_g); \
@@ -751,10 +751,9 @@
\
/* Check for more bits of precision in src than available in dst */ \
if ((high_bit_pos - low_bit_pos) >= dprec) { \
- H5T_conv_ret_t except_ret = \
- (conv_ctx->u.conv.cb_struct.func)(H5T_CONV_EXCEPT_PRECISION, \
- conv_ctx->u.conv.src_type_id, conv_ctx->u.conv.dst_type_id, S, D, \
- conv_ctx->u.conv.cb_struct.user_data); \
+ H5T_conv_ret_t except_ret = (conv_ctx->u.conv.cb_struct.func)( \
+ H5T_CONV_EXCEPT_PRECISION, conv_ctx->u.conv.src_type_id, conv_ctx->u.conv.dst_type_id, \
+ S, D, conv_ctx->u.conv.cb_struct.user_data); \
if (except_ret == H5T_CONV_UNHANDLED) \
/* Let compiler convert if case is ignored by user handler*/ \
*(D) = (DT)(*(S)); \
@@ -8260,29 +8259,33 @@ H5T__conv_ldouble_ullong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_con
/* Conversions for _Float16 type */
#ifdef H5_HAVE__FLOAT16
herr_t
-H5T__conv_schar__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_schar__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_xF(SCHAR, FLOAT16, signed char, H5__Float16, -, -);
}
herr_t
-H5T__conv_uchar__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_uchar__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_xF(UCHAR, FLOAT16, unsigned char, H5__Float16, -, -);
}
herr_t
-H5T__conv_short__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_short__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_xF(SHORT, FLOAT16, short, H5__Float16, -, -);
}
herr_t
-H5T__conv_ushort__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_ushort__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8291,8 +8294,9 @@ H5T__conv_ushort__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_co
}
herr_t
-H5T__conv_int__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_int__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8301,8 +8305,9 @@ H5T__conv_int__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_
}
herr_t
-H5T__conv_uint__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_uint__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8311,8 +8316,9 @@ H5T__conv_uint__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv
}
herr_t
-H5T__conv_long__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_long__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8321,8 +8327,9 @@ H5T__conv_long__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv
}
herr_t
-H5T__conv_ulong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_ulong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8331,8 +8338,9 @@ H5T__conv_ulong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_con
}
herr_t
-H5T__conv_llong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_llong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8341,8 +8349,9 @@ H5T__conv_llong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_con
}
herr_t
-H5T__conv_ullong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_ullong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8351,8 +8360,9 @@ H5T__conv_ullong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_co
}
herr_t
-H5T__conv_float__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_float__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8361,8 +8371,9 @@ H5T__conv_float__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_con
}
herr_t
-H5T__conv_double__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_double__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8372,8 +8383,9 @@ H5T__conv_double__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_co
#ifdef H5T_CONV_INTERNAL_LDOUBLE_FLOAT16
herr_t
-H5T__conv_ldouble__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv_ldouble__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -8383,8 +8395,9 @@ H5T__conv_ldouble__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_c
#endif
herr_t
-H5T__conv__Float16_schar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_schar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5_GCC_CLANG_DIAG_OFF("float-equal")
H5T_CONV_Fx(FLOAT16, SCHAR, H5__Float16, signed char, SCHAR_MIN, SCHAR_MAX);
@@ -8392,8 +8405,9 @@ H5T__conv__Float16_schar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_con
}
herr_t
-H5T__conv__Float16_uchar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_uchar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5_GCC_CLANG_DIAG_OFF("float-equal")
H5T_CONV_Fx(FLOAT16, UCHAR, H5__Float16, unsigned char, 0, UCHAR_MAX);
@@ -8401,8 +8415,9 @@ H5T__conv__Float16_uchar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_con
}
herr_t
-H5T__conv__Float16_short(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_short(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5_GCC_CLANG_DIAG_OFF("float-equal")
H5T_CONV_Fx(FLOAT16, SHORT, H5__Float16, short, SHRT_MIN, SHRT_MAX);
@@ -8410,71 +8425,81 @@ H5T__conv__Float16_short(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_con
}
herr_t
-H5T__conv__Float16_ushort(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_ushort(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fX(FLOAT16, USHORT, H5__Float16, unsigned short, 0, USHRT_MAX);
}
herr_t
-H5T__conv__Float16_int(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_int(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fX(FLOAT16, INT, H5__Float16, int, INT_MIN, INT_MAX);
}
herr_t
-H5T__conv__Float16_uint(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_uint(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fX(FLOAT16, UINT, H5__Float16, unsigned int, 0, UINT_MAX);
}
herr_t
-H5T__conv__Float16_long(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_long(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fX(FLOAT16, LONG, H5__Float16, long, LONG_MIN, LONG_MAX);
}
herr_t
-H5T__conv__Float16_ulong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_ulong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fX(FLOAT16, ULONG, H5__Float16, unsigned long, 0, ULONG_MAX);
}
herr_t
-H5T__conv__Float16_llong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_llong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fX(FLOAT16, LLONG, H5__Float16, long long, LLONG_MIN, LLONG_MAX);
}
herr_t
-H5T__conv__Float16_ullong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_ullong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fX(FLOAT16, ULLONG, H5__Float16, unsigned long long, 0, ULLONG_MAX);
}
herr_t
-H5T__conv__Float16_float(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_float(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fF(FLOAT16, FLOAT, H5__Float16, float, -, -);
}
herr_t
-H5T__conv__Float16_double(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_double(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fF(FLOAT16, DOUBLE, H5__Float16, double, -, -);
}
herr_t
-H5T__conv__Float16_ldouble(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
- size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg)
+H5T__conv__Float16_ldouble(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf,
+ void H5_ATTR_UNUSED *bkg)
{
H5T_CONV_fF(FLOAT16, LDOUBLE, H5__Float16, long double, -, -);
}
@@ -8509,18 +8534,18 @@ H5T__conv_f_i(H5T_t *src_p, H5T_t *dst_p, H5T_cdata_t *cdata, const H5T_conv_ctx
uint8_t tmp1, tmp2; /*temp variables for swapping bytes*/
/* Conversion-related variables */
- hssize_t expo; /*source exponent */
- hssize_t sign; /*source sign bit value */
- uint8_t *int_buf = NULL; /*buffer for temporary value */
- size_t buf_size; /*buffer size for temporary value */
- size_t i; /*miscellaneous counters */
- ssize_t msb_pos_s; /*first bit(MSB) in an integer */
- ssize_t new_msb_pos; /*MSB position after shifting mantissa by exponent */
- hssize_t shift_val; /*shift value when shifting mantissa by exponent */
- bool truncated; /*if fraction value is dropped */
- bool reverse; /*if reverse order of destination at the end */
- H5T_conv_ret_t except_ret; /*return of callback function */
- herr_t ret_value = SUCCEED; /* Return value */
+ hssize_t expo; /*source exponent */
+ hssize_t sign; /*source sign bit value */
+ uint8_t *int_buf = NULL; /*buffer for temporary value */
+ size_t buf_size; /*buffer size for temporary value */
+ size_t i; /*miscellaneous counters */
+ ssize_t msb_pos_s; /*first bit(MSB) in an integer */
+ ssize_t new_msb_pos; /*MSB position after shifting mantissa by exponent */
+ hssize_t shift_val; /*shift value when shifting mantissa by exponent */
+ bool truncated; /*if fraction value is dropped */
+ bool reverse; /*if reverse order of destination at the end */
+ H5T_conv_ret_t except_ret; /*return of callback function */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -8944,7 +8969,8 @@ H5T__conv_f_i(H5T_t *src_p, H5T_t *dst_p, H5T_cdata_t *cdata, const H5T_conv_ctx
"can't handle conversion exception");
}
else {
- if (truncated && conv_ctx->u.conv.cb_struct.func) { /*If user's exception handler is present, use it*/
+ if (truncated && conv_ctx->u.conv.cb_struct
+ .func) { /*If user's exception handler is present, use it*/
/*reverse order first*/
H5T__reverse_order(src_rev, s, src_p->shared->size,
src_p->shared->u.atomic.order);
@@ -8973,7 +8999,8 @@ H5T__conv_f_i(H5T_t *src_p, H5T_t *dst_p, H5T_cdata_t *cdata, const H5T_conv_ctx
else if (H5T_SGN_2 == dst.u.i.sign) { /*Destination is signed*/
if (sign) { /*source is negative*/
if ((new_msb_pos >= 0) && ((size_t)new_msb_pos < dst.prec - 1)) {
- if (truncated && conv_ctx->u.conv.cb_struct.func) { /*If user's exception handler is present, use it*/
+ if (truncated && conv_ctx->u.conv.cb_struct
+ .func) { /*If user's exception handler is present, use it*/
/*reverse order first*/
H5T__reverse_order(src_rev, s, src_p->shared->size,
src_p->shared->u.atomic.order);
@@ -9054,7 +9081,8 @@ H5T__conv_f_i(H5T_t *src_p, H5T_t *dst_p, H5T_cdata_t *cdata, const H5T_conv_ctx
}
}
else if (new_msb_pos < (ssize_t)dst.prec - 1) {
- if (truncated && conv_ctx->u.conv.cb_struct.func) { /*If user's exception handler is present, use it*/
+ if (truncated && conv_ctx->u.conv.cb_struct
+ .func) { /*If user's exception handler is present, use it*/
/*reverse order first*/
H5T__reverse_order(src_rev, s, src_p->shared->size,
src_p->shared->u.atomic.order);
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h
index d5640af..626c9d5 100644
--- a/src/H5Tpkg.h
+++ b/src/H5Tpkg.h
@@ -986,60 +986,86 @@ H5_DLL herr_t H5T__conv_ldouble_ullong(H5T_t *src, H5T_t *dst, H5T_cdata_t *cdat
size_t bkg_stride, void *buf, void *bkg);
#ifdef H5_HAVE__FLOAT16
-H5_DLL herr_t H5T__conv_schar__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_uchar__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_short__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_ushort__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_int__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_uint__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_long__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_ulong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_llong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_ullong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_float__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv_double__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_schar__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_uchar__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_short__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_ushort__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_int__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t bkg_stride, void *buf,
+ void *bkg);
+H5_DLL herr_t H5T__conv_uint__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_long__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_ulong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_llong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_ullong__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_float__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_double__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
#ifdef H5T_CONV_INTERNAL_LDOUBLE_FLOAT16
-H5_DLL herr_t H5T__conv_ldouble__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv_ldouble__Float16(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
#endif
-H5_DLL herr_t H5T__conv__Float16_schar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_uchar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_short(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_ushort(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_int(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_uint(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_long(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_ulong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_llong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_ullong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_float(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_double(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
-H5_DLL herr_t H5T__conv__Float16_ldouble(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts,
- size_t buf_stride, size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_schar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_uchar(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_short(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_ushort(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_int(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx,
+ size_t nelmts, size_t buf_stride, size_t bkg_stride, void *buf,
+ void *bkg);
+H5_DLL herr_t H5T__conv__Float16_uint(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_long(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_ulong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_llong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_ullong(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_float(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_double(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
+H5_DLL herr_t H5T__conv__Float16_ldouble(H5T_t *st, H5T_t *dt, H5T_cdata_t *cdata,
+ const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride,
+ size_t bkg_stride, void *buf, void *bkg);
#endif
/* Bit twiddling functions */
diff --git a/test/dt_arith.c b/test/dt_arith.c
index e2788e2..3c21896 100644
--- a/test/dt_arith.c
+++ b/test/dt_arith.c
@@ -2951,8 +2951,19 @@ test_conv_flt_1_hw_conv_from_flt(void *hw_dst, unsigned char *src_buf, size_t id
memcpy(&aligned, src_buf + idx * sizeof(float), sizeof(float));
switch (dst_type) {
-#ifdef H5_HAVE__FLOAT16
+ case FLT_FLOAT:
+ *((float *)hw_dst) = aligned;
+ break;
+ case FLT_DOUBLE:
+ *((double *)hw_dst) = (double)aligned;
+ break;
+#if H5_SIZEOF_LONG_DOUBLE != H5_SIZEOF_DOUBLE
+ case FLT_LDOUBLE:
+ *((long double *)hw_dst) = (long double)aligned;
+ break;
+#endif
case FLT_FLOAT16:
+#ifdef H5_HAVE__FLOAT16
/* Suppress warning about non-standard floating-point literal suffix */
H5_GCC_CLANG_DIAG_OFF("pedantic")
@@ -2967,17 +2978,6 @@ test_conv_flt_1_hw_conv_from_flt(void *hw_dst, unsigned char *src_buf, size_t id
H5_GCC_CLANG_DIAG_ON("pedantic")
break;
#endif
- case FLT_FLOAT:
- *((float *)hw_dst) = aligned;
- break;
- case FLT_DOUBLE:
- *((double *)hw_dst) = (double)aligned;
- break;
-#if H5_SIZEOF_LONG_DOUBLE != H5_SIZEOF_DOUBLE
- case FLT_LDOUBLE:
- *((long double *)hw_dst) = (long double)aligned;
- break;
-#endif
case INT_SCHAR:
case INT_UCHAR:
case INT_SHORT:
@@ -3024,22 +3024,6 @@ test_conv_flt_1_hw_conv_from_double(void *hw_dst, unsigned char *src_buf, size_t
memcpy(&aligned, src_buf + idx * sizeof(double), sizeof(double));
switch (dst_type) {
-#ifdef H5_HAVE__FLOAT16
- case FLT_FLOAT16:
- /* Suppress warning about non-standard floating-point literal suffix */
- H5_GCC_CLANG_DIAG_OFF("pedantic")
-
- *((H5__Float16 *)hw_dst) = (H5__Float16)aligned;
-
- /* Check for overflow and underflow */
- if (fabs(aligned) > (double)FLT16_MAX)
- ret = 1;
- else if (fabs(aligned) < (double)FLT16_MIN)
- ret = 2;
-
- H5_GCC_CLANG_DIAG_ON("pedantic")
- break;
-#endif
case FLT_FLOAT:
*((float *)hw_dst) = (float)aligned;
@@ -3058,6 +3042,22 @@ test_conv_flt_1_hw_conv_from_double(void *hw_dst, unsigned char *src_buf, size_t
*((long double *)hw_dst) = (long double)aligned;
break;
#endif
+ case FLT_FLOAT16:
+#ifdef H5_HAVE__FLOAT16
+ /* Suppress warning about non-standard floating-point literal suffix */
+ H5_GCC_CLANG_DIAG_OFF("pedantic")
+
+ *((H5__Float16 *)hw_dst) = (H5__Float16)aligned;
+
+ /* Check for overflow and underflow */
+ if (fabs(aligned) > (double)FLT16_MAX)
+ ret = 1;
+ else if (fabs(aligned) < (double)FLT16_MIN)
+ ret = 2;
+
+ H5_GCC_CLANG_DIAG_ON("pedantic")
+ break;
+#endif
case INT_SCHAR:
case INT_UCHAR:
case INT_SHORT:
@@ -3105,22 +3105,6 @@ test_conv_flt_1_hw_conv_from_ldouble(void *hw_dst, unsigned char *src_buf, size_
memcpy(&aligned, src_buf + idx * sizeof(long double), sizeof(long double));
switch (dst_type) {
-#ifdef H5_HAVE__FLOAT16
- case FLT_FLOAT16:
- /* Suppress warning about non-standard floating-point literal suffix */
- H5_GCC_CLANG_DIAG_OFF("pedantic")
-
- *((H5__Float16 *)hw_dst) = (H5__Float16)aligned;
-
- /* Check for overflow and underflow */
- if (fabsl(aligned) > (long double)FLT16_MAX)
- ret = 1;
- else if (fabsl(aligned) < (long double)FLT16_MIN)
- ret = 2;
-
- H5_GCC_CLANG_DIAG_ON("pedantic")
- break;
-#endif
case FLT_FLOAT:
*((float *)hw_dst) = (float)aligned;
@@ -3144,6 +3128,22 @@ test_conv_flt_1_hw_conv_from_ldouble(void *hw_dst, unsigned char *src_buf, size_
case FLT_LDOUBLE:
*((long double *)hw_dst) = aligned;
break;
+ case FLT_FLOAT16:
+#ifdef H5_HAVE__FLOAT16
+ /* Suppress warning about non-standard floating-point literal suffix */
+ H5_GCC_CLANG_DIAG_OFF("pedantic")
+
+ *((H5__Float16 *)hw_dst) = (H5__Float16)aligned;
+
+ /* Check for overflow and underflow */
+ if (fabsl(aligned) > (long double)FLT16_MAX)
+ ret = 1;
+ else if (fabsl(aligned) < (long double)FLT16_MIN)
+ ret = 2;
+
+ H5_GCC_CLANG_DIAG_ON("pedantic")
+ break;
+#endif
case INT_SCHAR:
case INT_UCHAR:
case INT_SHORT:
diff --git a/tools/test/h5dump/CMakeTestsXML.cmake b/tools/test/h5dump/CMakeTestsXML.cmake
index b322d76..c666733 100644
--- a/tools/test/h5dump/CMakeTestsXML.cmake
+++ b/tools/test/h5dump/CMakeTestsXML.cmake
@@ -57,6 +57,7 @@
tdset.h5
tempty.h5
textlink.h5
+ tfloat16.h5
tfpformat.h5
tgroup.h5
thlink.h5
@@ -106,6 +107,7 @@
tenum.h5.xml
test35.nc.xml
textlink.h5.xml
+ tfloat16.h5.xml
tfpformat.h5.xml
tgroup.h5.xml
thlink.h5.xml
@@ -294,6 +296,9 @@
ADD_XML_H5_TEST (torderattr3.h5 0 -H --sort_by=creation_order --sort_order=ascending torderattr.h5)
ADD_XML_H5_TEST (torderattr4.h5 0 -H --sort_by=creation_order --sort_order=descending torderattr.h5)
+ # Add test for _Float16 type
+ ADD_XML_H5_TEST (tfloat16.h5 0 tfloat16.h5)
+
# tests for floating point user defined printf format
ADD_XML_H5_TEST (tfpformat.h5 0 -u -m %.7f tfpformat.h5)
diff --git a/tools/test/h5dump/expected/xml/tfloat16.h5.xml b/tools/test/h5dump/expected/xml/tfloat16.h5.xml
new file mode 100644
index 0000000..6b2c041
--- /dev/null
+++ b/tools/test/h5dump/expected/xml/tfloat16.h5.xml
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hdf5:HDF5-File xmlns:hdf5="http://hdfgroup.org/HDF5/XML/schema/HDF5-File.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hdfgroup.org/HDF5/XML/schema/HDF5-File http://www.hdfgroup.org/HDF5/XML/schema/HDF5-File.xsd">
+<hdf5:RootGroup OBJ-XID="xid_96" H5Path="/">
+ <hdf5:Dataset Name="DS16BITS" OBJ-XID="xid_800" H5Path= "/DS16BITS" Parents="xid_96" H5ParentPaths="/">
+ <hdf5:StorageLayout>
+ <hdf5:ContiguousLayout/>
+ </hdf5:StorageLayout>
+ <hdf5:FillValueInfo FillTime="FillIfSet" AllocationTime="Late">
+ <hdf5:FillValue>
+ <hdf5:NoFill/>
+ </hdf5:FillValue>
+ </hdf5:FillValueInfo>
+ <hdf5:Dataspace>
+ <hdf5:SimpleDataspace Ndims="2">
+ <hdf5:Dimension DimSize="8" MaxDimSize="8"/>
+ <hdf5:Dimension DimSize="16" MaxDimSize="16"/>
+ </hdf5:SimpleDataspace>
+ </hdf5:Dataspace>
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="LE" Size="2" SignBitLocation="15" ExponentBits="5" ExponentLocation="10" MantissaBits="10" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ <hdf5:Attribute Name="DS16BITS">
+ <hdf5:Dataspace>
+ <hdf5:SimpleDataspace Ndims="1">
+ <hdf5:Dimension DimSize="128" MaxDimSize="128"/>
+ </hdf5:SimpleDataspace>
+ </hdf5:Dataspace>
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="LE" Size="2" SignBitLocation="15" ExponentBits="5" ExponentLocation="10" MantissaBits="10" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ <hdf5:Data>
+ <hdf5:DataFromFile>
+ 16
+ 0.5
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 15
+ 0.5625
+ 1.0625
+ 1.5625
+ 2.0625
+ 2.5625
+ 3.0625
+ 3.5625
+ 4.0625
+ 4.5625
+ 5.0625
+ 5.5625
+ 6.0625
+ 6.5625
+ 7.0625
+ 7.5625
+ 14
+ 0.625
+ 1.125
+ 1.625
+ 2.125
+ 2.625
+ 3.125
+ 3.625
+ 4.125
+ 4.625
+ 5.125
+ 5.625
+ 6.125
+ 6.625
+ 7.125
+ 7.625
+ 13
+ 0.6875
+ 1.1875
+ 1.6875
+ 2.1875
+ 2.6875
+ 3.1875
+ 3.6875
+ 4.1875
+ 4.6875
+ 5.1875
+ 5.6875
+ 6.1875
+ 6.6875
+ 7.1875
+ 7.6875
+ 12
+ 0.75
+ 1.25
+ 1.75
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4.25
+ 4.75
+ 5.25
+ 5.75
+ 6.25
+ 6.75
+ 7.25
+ 7.75
+ 11
+ 0.8125
+ 1.3125
+ 1.8125
+ 2.3125
+ 2.8125
+ 3.3125
+ 3.8125
+ 4.3125
+ 4.8125
+ 5.3125
+ 5.8125
+ 6.3125
+ 6.8125
+ 7.3125
+ 7.8125
+ 10
+ 0.875
+ 1.375
+ 1.875
+ 2.375
+ 2.875
+ 3.375
+ 3.875
+ 4.375
+ 4.875
+ 5.375
+ 5.875
+ 6.375
+ 6.875
+ 7.375
+ 7.875
+ 9
+ 0.9375
+ 1.4375
+ 1.9375
+ 2.4375
+ 2.9375
+ 3.4375
+ 3.9375
+ 4.4375
+ 4.9375
+ 5.4375
+ 5.9375
+ 6.4375
+ 6.9375
+ 7.4375
+ 7.9375
+ </hdf5:DataFromFile>
+ </hdf5:Data>
+ </hdf5:Attribute>
+ <hdf5:Data>
+ <hdf5:DataFromFile>
+ 16
+ 0.5
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 15
+ 0.5625
+ 1.0625
+ 1.5625
+ 2.0625
+ 2.5625
+ 3.0625
+ 3.5625
+ 4.0625
+ 4.5625
+ 5.0625
+ 5.5625
+ 6.0625
+ 6.5625
+ 7.0625
+ 7.5625
+ 14
+ 0.625
+ 1.125
+ 1.625
+ 2.125
+ 2.625
+ 3.125
+ 3.625
+ 4.125
+ 4.625
+ 5.125
+ 5.625
+ 6.125
+ 6.625
+ 7.125
+ 7.625
+ 13
+ 0.6875
+ 1.1875
+ 1.6875
+ 2.1875
+ 2.6875
+ 3.1875
+ 3.6875
+ 4.1875
+ 4.6875
+ 5.1875
+ 5.6875
+ 6.1875
+ 6.6875
+ 7.1875
+ 7.6875
+ 12
+ 0.75
+ 1.25
+ 1.75
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4.25
+ 4.75
+ 5.25
+ 5.75
+ 6.25
+ 6.75
+ 7.25
+ 7.75
+ 11
+ 0.8125
+ 1.3125
+ 1.8125
+ 2.3125
+ 2.8125
+ 3.3125
+ 3.8125
+ 4.3125
+ 4.8125
+ 5.3125
+ 5.8125
+ 6.3125
+ 6.8125
+ 7.3125
+ 7.8125
+ 10
+ 0.875
+ 1.375
+ 1.875
+ 2.375
+ 2.875
+ 3.375
+ 3.875
+ 4.375
+ 4.875
+ 5.375
+ 5.875
+ 6.375
+ 6.875
+ 7.375
+ 7.875
+ 9
+ 0.9375
+ 1.4375
+ 1.9375
+ 2.4375
+ 2.9375
+ 3.4375
+ 3.9375
+ 4.4375
+ 4.9375
+ 5.4375
+ 5.9375
+ 6.4375
+ 6.9375
+ 7.4375
+ 7.9375
+ </hdf5:DataFromFile>
+ </hdf5:Data>
+ </hdf5:Dataset>
+</hdf5:RootGroup>
+</hdf5:HDF5-File>
diff --git a/tools/test/h5dump/testh5dumpxml.sh.in b/tools/test/h5dump/testh5dumpxml.sh.in
index 880fc6b..95a4bd5 100644
--- a/tools/test/h5dump/testh5dumpxml.sh.in
+++ b/tools/test/h5dump/testh5dumpxml.sh.in
@@ -100,6 +100,7 @@ $SRC_H5DUMP_TESTFILES/tdatareg.h5
$SRC_H5DUMP_TESTFILES/tdset.h5
$SRC_H5DUMP_TESTFILES/tempty.h5
$SRC_H5DUMP_TESTFILES/textlink.h5
+$SRC_H5DUMP_TESTFILES/tfloat16.h5
$SRC_H5DUMP_TESTFILES/tfpformat.h5
$SRC_H5DUMP_TESTFILES/tgroup.h5
$SRC_H5DUMP_TESTFILES/thlink.h5
@@ -150,6 +151,7 @@ $SRC_H5DUMP_OUTFILES/xml/tempty-ns-2.h5.xml
$SRC_H5DUMP_OUTFILES/xml/tenum.h5.xml
$SRC_H5DUMP_OUTFILES/xml/test35.nc.xml
$SRC_H5DUMP_OUTFILES/xml/textlink.h5.xml
+$SRC_H5DUMP_OUTFILES/xml/tfloat16.h5.xml
$SRC_H5DUMP_OUTFILES/xml/tfpformat.h5.xml
$SRC_H5DUMP_OUTFILES/xml/tgroup.h5.xml
$SRC_H5DUMP_OUTFILES/xml/thlink.h5.xml
@@ -383,6 +385,9 @@ TOOLTEST torderattr2.h5.xml --xml -H --sort_by=name --sort_order=descending tord
TOOLTEST torderattr3.h5.xml --xml -H --sort_by=creation_order --sort_order=ascending torderattr.h5
TOOLTEST torderattr4.h5.xml --xml -H --sort_by=creation_order --sort_order=descending torderattr.h5
+# test for _Float16 type
+TOOLTEST tfloat16.h5.xml --xml tfloat16.h5
+
# tests for floating point user defined printf format
TOOLTEST tfpformat.h5.xml -u -m %.7f tfpformat.h5