Coverage Report

Created: 2026-06-09 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/hdf5/src/H5VMprivate.h
Line
Count
Source
1
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
 * Copyright by The HDF Group.                                               *
3
 * All rights reserved.                                                      *
4
 *                                                                           *
5
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
6
 * terms governing use, modification, and redistribution, is contained in    *
7
 * the LICENSE file, which can be found at the root of the source code       *
8
 * distribution tree, or in https://www.hdfgroup.org/licenses.               *
9
 * If you do not have access to either file, you may request a copy from     *
10
 * help@hdfgroup.org.                                                        *
11
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
12
13
#ifndef H5VMprivate_H
14
#define H5VMprivate_H
15
16
/* Private headers needed by this file */
17
#include "H5private.h"   /* Generic Functions            */
18
#include "H5Eprivate.h"  /* Error handling              */
19
#include "H5MMprivate.h" /* Memory management            */
20
21
/* Vector-Vector sequence operation callback */
22
typedef herr_t (*H5VM_opvv_func_t)(hsize_t dst_off, hsize_t src_off, size_t len, void *udata);
23
24
/* Vector comparison functions like Fortran66 comparison operators */
25
#define H5VM_vector_eq_s(N, V1, V2) (H5VM_vector_cmp_s(N, V1, V2) == 0)
26
#define H5VM_vector_lt_s(N, V1, V2) (H5VM_vector_cmp_s(N, V1, V2) < 0)
27
#define H5VM_vector_gt_s(N, V1, V2) (H5VM_vector_cmp_s(N, V1, V2) > 0)
28
#define H5VM_vector_le_s(N, V1, V2) (H5VM_vector_cmp_s(N, V1, V2) <= 0)
29
#define H5VM_vector_ge_s(N, V1, V2) (H5VM_vector_cmp_s(N, V1, V2) >= 0)
30
0
#define H5VM_vector_eq_u(N, V1, V2) (H5VM_vector_cmp_u(N, V1, V2) == 0)
31
0
#define H5VM_vector_lt_u(N, V1, V2) (H5VM_vector_cmp_u(N, V1, V2) < 0)
32
#define H5VM_vector_gt_u(N, V1, V2) (H5VM_vector_cmp_u(N, V1, V2) > 0)
33
#define H5VM_vector_le_u(N, V1, V2) (H5VM_vector_cmp_u(N, V1, V2) <= 0)
34
0
#define H5VM_vector_ge_u(N, V1, V2) (H5VM_vector_cmp_u(N, V1, V2) >= 0)
35
36
/* Other functions */
37
#define H5VM_vector_cpy(N, DST, SRC)                                                                         \
38
0
    do {                                                                                                     \
39
0
        assert(sizeof(*(DST)) == sizeof(*(SRC)));                                                            \
40
0
        if (SRC)                                                                                             \
41
0
            H5MM_memcpy(DST, SRC, (N) * sizeof(*(DST)));                                                     \
42
0
        else                                                                                                 \
43
0
            memset(DST, 0, (N) * sizeof(*(DST)));                                                            \
44
0
    } while (0)
45
46
#define H5VM_vector_zero(N, DST) memset(DST, 0, (N) * sizeof(*(DST)))
47
48
/* Given a coordinate offset array (COORDS) of type TYPE, move the unlimited
49
 * dimension (UNLIM_DIM) value to offset 0, sliding any intermediate values down
50
 * one position. */
51
#define H5VM_swizzle_coords(TYPE, COORDS, UNLIM_DIM)                                                         \
52
0
    do {                                                                                                     \
53
0
        /* COORDS must be an array of type TYPE */                                                           \
54
0
        assert(sizeof(COORDS[0]) == sizeof(TYPE));                                                           \
55
0
                                                                                                             \
56
0
        /* Nothing to do when unlimited dimension is at position 0 */                                        \
57
0
        if (0 != (UNLIM_DIM)) {                                                                              \
58
0
            TYPE _tmp = (COORDS)[UNLIM_DIM];                                                                 \
59
0
                                                                                                             \
60
0
            memmove(&(COORDS)[1], &(COORDS)[0], sizeof(TYPE) * (UNLIM_DIM));                                 \
61
0
            (COORDS)[0] = _tmp;                                                                              \
62
0
        } /* end if */                                                                                       \
63
0
    } while (0)
64
65
/* Given a coordinate offset array (COORDS) of type TYPE, move the value at
66
 * offset 0 to offset of the unlimied dimension (UNLIM_DIM), sliding any
67
 * intermediate values up one position.  Undoes the "swizzle_coords" operation.
68
 */
69
#define H5VM_unswizzle_coords(TYPE, COORDS, UNLIM_DIM)                                                       \
70
    do {                                                                                                     \
71
        /* COORDS must be an array of type TYPE */                                                           \
72
        assert(sizeof(COORDS[0]) == sizeof(TYPE));                                                           \
73
                                                                                                             \
74
        /* Nothing to do when unlimited dimension is at position 0 */                                        \
75
        if (0 != (UNLIM_DIM)) {                                                                              \
76
            TYPE _tmp = (COORDS)[0];                                                                         \
77
                                                                                                             \
78
            memmove(&(COORDS)[0], &(COORDS)[1], sizeof(TYPE) * (UNLIM_DIM));                                 \
79
            (COORDS)[UNLIM_DIM] = _tmp;                                                                      \
80
        } /* end if */                                                                                       \
81
    } while (0)
82
83
/* A null pointer is equivalent to a zero vector */
84
#define H5VM_ZERO NULL
85
86
H5_DLL hsize_t H5VM_hyper_stride(unsigned n, const hsize_t *size, const hsize_t *total_size,
87
                                 const hsize_t *offset, hsize_t *stride);
88
H5_DLL htri_t  H5VM_hyper_eq(unsigned n, const hsize_t *offset1, const hsize_t *size1, const hsize_t *offset2,
89
                             const hsize_t *size2);
90
H5_DLL herr_t  H5VM_hyper_fill(unsigned n, const hsize_t *_size, const hsize_t *total_size,
91
                               const hsize_t *offset, void *_dst, unsigned fill_value);
92
H5_DLL herr_t  H5VM_hyper_copy(unsigned n, const hsize_t *size, const hsize_t *dst_total_size,
93
                               const hsize_t *dst_offset, void *_dst, const hsize_t *src_total_size,
94
                               const hsize_t *src_offset, const void *_src);
95
H5_DLL herr_t  H5VM_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size, const hsize_t *stride,
96
                                void *_dst, unsigned fill_value);
97
H5_DLL herr_t H5VM_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *_size, const hsize_t *dst_stride,
98
                               void *_dst, const hsize_t *src_stride, const void *_src);
99
H5_DLL herr_t H5VM_stride_copy_s(unsigned n, hsize_t elmt_size, const hsize_t *_size,
100
                                 const hssize_t *dst_stride, void *_dst, const hssize_t *src_stride,
101
                                 const void *_src);
102
H5_DLL herr_t H5VM_array_fill(void *_dst, const void *src, size_t size, size_t count);
103
H5_DLL void   H5VM_array_down(unsigned n, const hsize_t *total_size, hsize_t *down);
104
H5_DLL hsize_t H5VM_array_offset_pre(unsigned n, const hsize_t *acc, const hsize_t *offset);
105
H5_DLL hsize_t H5VM_array_offset(unsigned n, const hsize_t *total_size, const hsize_t *offset);
106
H5_DLL herr_t  H5VM_array_calc_pre(hsize_t offset, unsigned n, const hsize_t *down, hsize_t *coords);
107
H5_DLL herr_t  H5VM_array_calc(hsize_t offset, unsigned n, const hsize_t *total_size, hsize_t *coords);
108
H5_DLL hsize_t H5VM_chunk_index(unsigned ndims, const hsize_t *coord, const hsize_t *chunk,
109
                                const hsize_t *down_nchunks);
110
H5_DLL void    H5VM_chunk_scaled(unsigned ndims, const hsize_t *coord, const hsize_t *chunk, hsize_t *scaled);
111
H5_DLL hsize_t H5VM_chunk_index_scaled(unsigned ndims, const hsize_t *coord, const hsize_t *chunk,
112
                                       const hsize_t *down_nchunks, hsize_t *scaled);
113
H5_DLL ssize_t H5VM_opvv(size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[],
114
                         hsize_t dst_off_arr[], size_t src_max_nseq, size_t *src_curr_seq,
115
                         size_t src_len_arr[], hsize_t src_off_arr[], H5VM_opvv_func_t op, void *op_data);
116
H5_DLL ssize_t H5VM_memcpyvv(void *_dst, size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[],
117
                             hsize_t dst_off_arr[], const void *_src, size_t src_max_nseq,
118
                             size_t *src_curr_seq, size_t src_len_arr[], hsize_t src_off_arr[]);
119
120
/*-------------------------------------------------------------------------
121
 * Function:    H5VM_vector_reduce_product
122
 *
123
 * Purpose:     Product reduction of a vector.  Vector elements and return
124
 *              value are size_t because we usually want the number of
125
 *              elements in an array and array dimensions are always of type
126
 *              size_t.
127
 *
128
 * Note:        Although this routine is 'static' in this file, that's intended
129
 *              only as an optimization and the naming (with a single underscore)
130
 *              reflects its inclusion in a "private" header file.
131
 *
132
 * Return:      Success:    Product of elements
133
 *              Failure:    1 if N is zero
134
 *-------------------------------------------------------------------------
135
 */
136
static inline hsize_t H5_ATTR_UNUSED
137
H5VM_vector_reduce_product(unsigned n, const hsize_t *v)
138
0
{
139
0
    hsize_t ret_value = 1;
140
141
    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
142
0
    FUNC_ENTER_NOAPI_NOINIT_NOERR
143
144
0
    if (n && !v)
145
0
        HGOTO_DONE(0);
146
0
    while (n--)
147
0
        ret_value *= *v++;
148
149
0
done:
150
0
    FUNC_LEAVE_NOAPI(ret_value)
151
0
}
Unexecuted instantiation: H5MF.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Pdapl.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Pencdec.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Pfapl.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Plapl.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Pocpl.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Sall.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Sselect.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5T.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5VM.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5B2hdr.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5B2int.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dbtree.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dbtree2.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dchunk.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dcompact.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dcontig.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dearray.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dfarray.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dfill.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dint.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dnone.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Dselect.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EA.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAcache.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAdblkpage.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAdblock.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAhdr.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAiblock.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAint.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAsblock.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAstat.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5EAtest.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Faccum.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5FA.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5FAtest.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5FScache.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5FSsection.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5HFdblock.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5HFdtable.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5HFhdr.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5HFiblock.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5HFiter.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Odtype.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Pdcpl.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Pdxpl.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Shyper.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Spoint.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Ztrans.c:H5VM_vector_reduce_product
Unexecuted instantiation: H5Defl.c:H5VM_vector_reduce_product
152
153
/*-------------------------------------------------------------------------
154
 * Function:    H5VM_vector_zerop_u
155
 *
156
 * Purpose:     Determines if all elements of a vector are zero.
157
 *
158
 * Note:        Although this routine is 'static' in this file, that's intended
159
 *              only as an optimization and the naming (with a single underscore)
160
 *              reflects its inclusion in a "private" header file.
161
 *
162
 * Return:      Success:    true if all elements are zero,
163
 *              Failure:    true if N is zero
164
 *-------------------------------------------------------------------------
165
 */
166
static inline htri_t H5_ATTR_UNUSED
167
H5VM_vector_zerop_u(int n, const hsize_t *v)
168
0
{
169
0
    htri_t ret_value = true; /* Return value */
170
0
171
0
    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
172
0
    FUNC_ENTER_NOAPI_NOINIT_NOERR
173
0
174
0
    if (!v)
175
0
        HGOTO_DONE(true);
176
0
    while (n--)
177
0
        if (*v++)
178
0
            HGOTO_DONE(false);
179
0
180
0
done:
181
0
    FUNC_LEAVE_NOAPI(ret_value)
182
0
}
Unexecuted instantiation: H5MF.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Pdapl.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Pencdec.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Pfapl.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Plapl.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Pocpl.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Sall.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Sselect.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5T.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5VM.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5B2hdr.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5B2int.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dbtree.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dbtree2.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dchunk.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dcompact.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dcontig.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dearray.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dfarray.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dfill.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dint.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dnone.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Dselect.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EA.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAcache.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAdblkpage.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAdblock.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAhdr.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAiblock.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAint.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAsblock.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAstat.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5EAtest.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Faccum.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5FA.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5FAtest.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5FScache.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5FSsection.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5HFdblock.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5HFdtable.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5HFhdr.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5HFiblock.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5HFiter.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Odtype.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Pdcpl.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Pdxpl.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Shyper.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Spoint.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Ztrans.c:H5VM_vector_zerop_u
Unexecuted instantiation: H5Defl.c:H5VM_vector_zerop_u
183
184
/*-------------------------------------------------------------------------
185
 * Function:    H5VM_vector_zerop_s
186
 *
187
 * Purpose:     Determines if all elements of a vector are zero.
188
 *
189
 * Note:        Although this routine is 'static' in this file, that's intended
190
 *              only as an optimization and the naming (with a single underscore)
191
 *              reflects its inclusion in a "private" header file.
192
 *
193
 * Return:      Success:    true if all elements are zero,
194
 *                          false otherwise
195
 *              Failure:    true if N is zero
196
 *-------------------------------------------------------------------------
197
 */
198
static inline htri_t H5_ATTR_UNUSED
199
H5VM_vector_zerop_s(int n, const hssize_t *v)
200
0
{
201
0
    htri_t ret_value = true; /* Return value */
202
0
203
0
    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
204
0
    FUNC_ENTER_NOAPI_NOINIT_NOERR
205
0
206
0
    if (!v)
207
0
        HGOTO_DONE(true);
208
0
    while (n--)
209
0
        if (*v++)
210
0
            HGOTO_DONE(false);
211
0
212
0
done:
213
0
    FUNC_LEAVE_NOAPI(ret_value)
214
0
}
Unexecuted instantiation: H5MF.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Pdapl.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Pencdec.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Pfapl.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Plapl.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Pocpl.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Sall.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Sselect.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5T.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5VM.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5B2hdr.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5B2int.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dbtree.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dbtree2.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dchunk.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dcompact.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dcontig.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dearray.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dfarray.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dfill.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dint.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dnone.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Dselect.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EA.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAcache.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAdblkpage.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAdblock.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAhdr.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAiblock.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAint.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAsblock.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAstat.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5EAtest.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Faccum.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5FA.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5FAtest.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5FScache.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5FSsection.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5HFdblock.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5HFdtable.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5HFhdr.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5HFiblock.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5HFiter.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Odtype.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Pdcpl.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Pdxpl.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Shyper.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Spoint.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Ztrans.c:H5VM_vector_zerop_s
Unexecuted instantiation: H5Defl.c:H5VM_vector_zerop_s
215
216
/*-------------------------------------------------------------------------
217
 * Function:    H5VM_vector_cmp_u
218
 *
219
 * Purpose:     Compares two vectors of the same size and determines if V1 is
220
 *              lexicographically less than, equal, or greater than V2.
221
 *
222
 * Note:        Although this routine is 'static' in this file, that's intended
223
 *              only as an optimization and the naming (with a single underscore)
224
 *              reflects its inclusion in a "private" header file.
225
 *
226
 * Return:      Success:    -1 if V1 is less than V2
227
 *                          0 if they are equal
228
 *                          1 if V1 is greater than V2
229
 *
230
 *              Failure:    0 if N is zero
231
 *-------------------------------------------------------------------------
232
 */
233
static inline int H5_ATTR_UNUSED
234
H5VM_vector_cmp_u(unsigned n, const hsize_t *v1, const hsize_t *v2)
235
0
{
236
0
    int ret_value = 0; /* Return value */
237
238
    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
239
0
    FUNC_ENTER_NOAPI_NOINIT_NOERR
240
241
0
    if (v1 == v2)
242
0
        HGOTO_DONE(0);
243
0
    if (v1 == NULL)
244
0
        HGOTO_DONE(-1);
245
0
    if (v2 == NULL)
246
0
        HGOTO_DONE(1);
247
0
    while (n--) {
248
0
        if (*v1 < *v2)
249
0
            HGOTO_DONE(-1);
250
0
        if (*v1 > *v2)
251
0
            HGOTO_DONE(1);
252
0
        v1++;
253
0
        v2++;
254
0
    }
255
256
0
done:
257
0
    FUNC_LEAVE_NOAPI(ret_value)
258
0
}
Unexecuted instantiation: H5MF.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Pdapl.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Pencdec.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Pfapl.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Plapl.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Pocpl.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Sall.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Sselect.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5T.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5VM.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5B2hdr.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5B2int.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dbtree.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dbtree2.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dchunk.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dcompact.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dcontig.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dearray.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dfarray.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dfill.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dint.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dnone.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Dselect.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EA.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAcache.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAdblkpage.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAdblock.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAhdr.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAiblock.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAint.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAsblock.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAstat.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5EAtest.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Faccum.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5FA.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5FAtest.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5FScache.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5FSsection.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5HFdblock.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5HFdtable.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5HFhdr.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5HFiblock.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5HFiter.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Odtype.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Pdcpl.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Pdxpl.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Shyper.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Spoint.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Ztrans.c:H5VM_vector_cmp_u
Unexecuted instantiation: H5Defl.c:H5VM_vector_cmp_u
259
260
/*-------------------------------------------------------------------------
261
 * Function:    H5VM_vector_cmp_s
262
 *
263
 * Purpose:     Compares two vectors of the same size and determines if V1 is
264
 *              lexicographically less than, equal, or greater than V2.
265
 *
266
 * Note:        Although this routine is 'static' in this file, that's intended
267
 *              only as an optimization and the naming (with a single underscore)
268
 *              reflects its inclusion in a "private" header file.
269
 *
270
 * Return:      Success:    -1 if V1 is less than V2
271
 *                          0 if they are equal
272
 *                          1 if V1 is greater than V2
273
 *
274
 *              Failure:    0 if N is zero
275
 *-------------------------------------------------------------------------
276
 */
277
static inline int H5_ATTR_UNUSED
278
H5VM_vector_cmp_s(unsigned n, const hssize_t *v1, const hssize_t *v2)
279
0
{
280
0
    int ret_value = 0; /* Return value */
281
0
282
0
    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
283
0
    FUNC_ENTER_NOAPI_NOINIT_NOERR
284
0
285
0
    if (v1 == v2)
286
0
        HGOTO_DONE(0);
287
0
    if (v1 == NULL)
288
0
        HGOTO_DONE(-1);
289
0
    if (v2 == NULL)
290
0
        HGOTO_DONE(1);
291
0
    while (n--) {
292
0
        if (*v1 < *v2)
293
0
            HGOTO_DONE(-1);
294
0
        if (*v1 > *v2)
295
0
            HGOTO_DONE(1);
296
0
        v1++;
297
0
        v2++;
298
0
    }
299
0
300
0
done:
301
0
    FUNC_LEAVE_NOAPI(ret_value)
302
0
}
Unexecuted instantiation: H5MF.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Pdapl.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Pencdec.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Pfapl.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Plapl.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Pocpl.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Sall.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Sselect.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5T.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5VM.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5B2hdr.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5B2int.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dbtree.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dbtree2.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dchunk.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dcompact.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dcontig.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dearray.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dfarray.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dfill.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dint.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dnone.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Dselect.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EA.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAcache.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAdblkpage.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAdblock.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAhdr.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAiblock.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAint.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAsblock.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAstat.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5EAtest.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Faccum.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5FA.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5FAtest.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5FScache.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5FSsection.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5HFdblock.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5HFdtable.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5HFhdr.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5HFiblock.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5HFiter.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Odtype.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Pdcpl.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Pdxpl.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Shyper.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Spoint.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Ztrans.c:H5VM_vector_cmp_s
Unexecuted instantiation: H5Defl.c:H5VM_vector_cmp_s
303
304
/*-------------------------------------------------------------------------
305
 * Function:    H5VM_vector_inc
306
 *
307
 * Purpose:     Increments V1 by V2
308
 *
309
 * Note:        Although this routine is 'static' in this file, that's intended
310
 *              only as an optimization and the naming (with a single underscore)
311
 *              reflects its inclusion in a "private" header file.
312
 *
313
 * Return:      void
314
 *-------------------------------------------------------------------------
315
 */
316
static inline void H5_ATTR_UNUSED
317
H5VM_vector_inc(int n, hsize_t *v1, const hsize_t *v2)
318
0
{
319
0
    while (n--)
320
0
        *v1++ += *v2++;
321
0
}
Unexecuted instantiation: H5MF.c:H5VM_vector_inc
Unexecuted instantiation: H5Pdapl.c:H5VM_vector_inc
Unexecuted instantiation: H5Pencdec.c:H5VM_vector_inc
Unexecuted instantiation: H5Pfapl.c:H5VM_vector_inc
Unexecuted instantiation: H5Plapl.c:H5VM_vector_inc
Unexecuted instantiation: H5Pocpl.c:H5VM_vector_inc
Unexecuted instantiation: H5Sall.c:H5VM_vector_inc
Unexecuted instantiation: H5Sselect.c:H5VM_vector_inc
Unexecuted instantiation: H5T.c:H5VM_vector_inc
Unexecuted instantiation: H5VM.c:H5VM_vector_inc
Unexecuted instantiation: H5B2hdr.c:H5VM_vector_inc
Unexecuted instantiation: H5B2int.c:H5VM_vector_inc
Unexecuted instantiation: H5Dbtree.c:H5VM_vector_inc
Unexecuted instantiation: H5Dbtree2.c:H5VM_vector_inc
Unexecuted instantiation: H5Dchunk.c:H5VM_vector_inc
Unexecuted instantiation: H5Dcompact.c:H5VM_vector_inc
Unexecuted instantiation: H5Dcontig.c:H5VM_vector_inc
Unexecuted instantiation: H5Dearray.c:H5VM_vector_inc
Unexecuted instantiation: H5Dfarray.c:H5VM_vector_inc
Unexecuted instantiation: H5Dfill.c:H5VM_vector_inc
Unexecuted instantiation: H5Dint.c:H5VM_vector_inc
Unexecuted instantiation: H5Dnone.c:H5VM_vector_inc
Unexecuted instantiation: H5Dselect.c:H5VM_vector_inc
Unexecuted instantiation: H5EA.c:H5VM_vector_inc
Unexecuted instantiation: H5EAcache.c:H5VM_vector_inc
Unexecuted instantiation: H5EAdblkpage.c:H5VM_vector_inc
Unexecuted instantiation: H5EAdblock.c:H5VM_vector_inc
Unexecuted instantiation: H5EAhdr.c:H5VM_vector_inc
Unexecuted instantiation: H5EAiblock.c:H5VM_vector_inc
Unexecuted instantiation: H5EAint.c:H5VM_vector_inc
Unexecuted instantiation: H5EAsblock.c:H5VM_vector_inc
Unexecuted instantiation: H5EAstat.c:H5VM_vector_inc
Unexecuted instantiation: H5EAtest.c:H5VM_vector_inc
Unexecuted instantiation: H5Faccum.c:H5VM_vector_inc
Unexecuted instantiation: H5FA.c:H5VM_vector_inc
Unexecuted instantiation: H5FAtest.c:H5VM_vector_inc
Unexecuted instantiation: H5FScache.c:H5VM_vector_inc
Unexecuted instantiation: H5FSsection.c:H5VM_vector_inc
Unexecuted instantiation: H5HFdblock.c:H5VM_vector_inc
Unexecuted instantiation: H5HFdtable.c:H5VM_vector_inc
Unexecuted instantiation: H5HFhdr.c:H5VM_vector_inc
Unexecuted instantiation: H5HFiblock.c:H5VM_vector_inc
Unexecuted instantiation: H5HFiter.c:H5VM_vector_inc
Unexecuted instantiation: H5Odtype.c:H5VM_vector_inc
Unexecuted instantiation: H5Pdcpl.c:H5VM_vector_inc
Unexecuted instantiation: H5Pdxpl.c:H5VM_vector_inc
Unexecuted instantiation: H5Shyper.c:H5VM_vector_inc
Unexecuted instantiation: H5Spoint.c:H5VM_vector_inc
Unexecuted instantiation: H5Ztrans.c:H5VM_vector_inc
Unexecuted instantiation: H5Defl.c:H5VM_vector_inc
322
323
/* Lookup table for general log2(n) routine */
324
static const unsigned char LogTable256[] = {
325
    0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
326
    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
327
    6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
328
    6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
329
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
330
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
331
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
332
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7};
333
334
/*-------------------------------------------------------------------------
335
 * Function:    H5VM_log2_gen
336
 *
337
 * Purpose:     Determines the log base two of a number (i.e. log2(n)).
338
 *              (i.e. the highest bit set in a number)
339
 *
340
 * Note:        This is from the "Bit Twiddling Hacks" at:
341
 *                  http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogLookup
342
 *
343
 *              The version on the web-site is for 32-bit quantities and this
344
 *              version has been extended for 64-bit quantities.
345
 *
346
 * Note:        Although this routine is 'static' in this file, that's intended
347
 *              only as an optimization and the naming (with a single underscore)
348
 *              reflects its inclusion in a "private" header file.
349
 *
350
 * Return:      log2(n) (always - no failure condition)
351
 *-------------------------------------------------------------------------
352
 */
353
static inline unsigned H5_ATTR_UNUSED
354
H5VM_log2_gen(uint64_t n)
355
0
{
356
0
    unsigned     r;          /* r will be log2(n) */
357
0
    unsigned int t, tt, ttt; /* temporaries */
358
359
0
    if ((ttt = (unsigned)(n >> 32)))
360
0
        if ((tt = (unsigned)(n >> 48)))
361
0
            r = (t = (unsigned)(n >> 56)) ? 56 + (unsigned)LogTable256[t]
362
0
                                          : 48 + (unsigned)LogTable256[tt & 0xFF];
363
0
        else
364
0
            r = (t = (unsigned)(n >> 40)) ? 40 + (unsigned)LogTable256[t]
365
0
                                          : 32 + (unsigned)LogTable256[ttt & 0xFF];
366
0
    else if ((tt = (unsigned)(n >> 16)))
367
0
        r = (t = (unsigned)(n >> 24)) ? 24 + (unsigned)LogTable256[t] : 16 + (unsigned)LogTable256[tt & 0xFF];
368
0
    else
369
        /* Added 'uint8_t' cast to pacify PGCC compiler */
370
0
        r = (t = (unsigned)(n >> 8)) ? 8 + (unsigned)LogTable256[t] : (unsigned)LogTable256[(uint8_t)n];
371
372
0
    return (r);
373
0
} /* H5VM_log2_gen() */
Unexecuted instantiation: H5MF.c:H5VM_log2_gen
Unexecuted instantiation: H5Pdapl.c:H5VM_log2_gen
Unexecuted instantiation: H5Pencdec.c:H5VM_log2_gen
Unexecuted instantiation: H5Pfapl.c:H5VM_log2_gen
Unexecuted instantiation: H5Plapl.c:H5VM_log2_gen
Unexecuted instantiation: H5Pocpl.c:H5VM_log2_gen
Unexecuted instantiation: H5Sall.c:H5VM_log2_gen
Unexecuted instantiation: H5Sselect.c:H5VM_log2_gen
Unexecuted instantiation: H5T.c:H5VM_log2_gen
Unexecuted instantiation: H5VM.c:H5VM_log2_gen
Unexecuted instantiation: H5B2hdr.c:H5VM_log2_gen
Unexecuted instantiation: H5B2int.c:H5VM_log2_gen
Unexecuted instantiation: H5Dbtree.c:H5VM_log2_gen
Unexecuted instantiation: H5Dbtree2.c:H5VM_log2_gen
Unexecuted instantiation: H5Dchunk.c:H5VM_log2_gen
Unexecuted instantiation: H5Dcompact.c:H5VM_log2_gen
Unexecuted instantiation: H5Dcontig.c:H5VM_log2_gen
Unexecuted instantiation: H5Dearray.c:H5VM_log2_gen
Unexecuted instantiation: H5Dfarray.c:H5VM_log2_gen
Unexecuted instantiation: H5Dfill.c:H5VM_log2_gen
Unexecuted instantiation: H5Dint.c:H5VM_log2_gen
Unexecuted instantiation: H5Dnone.c:H5VM_log2_gen
Unexecuted instantiation: H5Dselect.c:H5VM_log2_gen
Unexecuted instantiation: H5EA.c:H5VM_log2_gen
Unexecuted instantiation: H5EAcache.c:H5VM_log2_gen
Unexecuted instantiation: H5EAdblkpage.c:H5VM_log2_gen
Unexecuted instantiation: H5EAdblock.c:H5VM_log2_gen
Unexecuted instantiation: H5EAhdr.c:H5VM_log2_gen
Unexecuted instantiation: H5EAiblock.c:H5VM_log2_gen
Unexecuted instantiation: H5EAint.c:H5VM_log2_gen
Unexecuted instantiation: H5EAsblock.c:H5VM_log2_gen
Unexecuted instantiation: H5EAstat.c:H5VM_log2_gen
Unexecuted instantiation: H5EAtest.c:H5VM_log2_gen
Unexecuted instantiation: H5Faccum.c:H5VM_log2_gen
Unexecuted instantiation: H5FA.c:H5VM_log2_gen
Unexecuted instantiation: H5FAtest.c:H5VM_log2_gen
Unexecuted instantiation: H5FScache.c:H5VM_log2_gen
Unexecuted instantiation: H5FSsection.c:H5VM_log2_gen
Unexecuted instantiation: H5HFdblock.c:H5VM_log2_gen
Unexecuted instantiation: H5HFdtable.c:H5VM_log2_gen
Unexecuted instantiation: H5HFhdr.c:H5VM_log2_gen
Unexecuted instantiation: H5HFiblock.c:H5VM_log2_gen
Unexecuted instantiation: H5HFiter.c:H5VM_log2_gen
Unexecuted instantiation: H5Odtype.c:H5VM_log2_gen
Unexecuted instantiation: H5Pdcpl.c:H5VM_log2_gen
Unexecuted instantiation: H5Pdxpl.c:H5VM_log2_gen
Unexecuted instantiation: H5Shyper.c:H5VM_log2_gen
Unexecuted instantiation: H5Spoint.c:H5VM_log2_gen
Unexecuted instantiation: H5Ztrans.c:H5VM_log2_gen
Unexecuted instantiation: H5Defl.c:H5VM_log2_gen
374
375
/* Lookup table for specialized log2(n) of power of two routine */
376
static const unsigned MultiplyDeBruijnBitPosition[32] = {0,  1,  28, 2,  29, 14, 24, 3,  30, 22, 20,
377
                                                         15, 25, 17, 4,  8,  31, 27, 13, 23, 21, 19,
378
                                                         16, 7,  26, 12, 18, 6,  11, 5,  10, 9};
379
380
/*-------------------------------------------------------------------------
381
 * Function:    H5VM_log2_of2
382
 *
383
 * Purpose:     Determines the log base two of a number (i.e. log2(n)).
384
 *              (i.e. the highest bit set in a number)
385
 *
386
 * Note:        **N must be a power of two** and is limited to 32-bit quantities.
387
 *
388
 *              This is from the "Bit Twiddling Hacks" at:
389
 *                  http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn
390
 *
391
 * Note:        Although this routine is 'static' in this file, that's intended
392
 *              only as an optimization and the naming (with a single underscore)
393
 *              reflects its inclusion in a "private" header file.
394
 *
395
 * Return:      log2(n) (always - no failure condition)
396
 *-------------------------------------------------------------------------
397
 */
398
static inline H5_ATTR_PURE unsigned
399
H5VM_log2_of2(uint32_t n)
400
0
{
401
#ifndef NDEBUG
402
    assert(POWER_OF_TWO(n));
403
#endif /* NDEBUG */
404
0
    return (MultiplyDeBruijnBitPosition[(n * (uint32_t)0x077CB531UL) >> 27]);
405
0
} /* H5VM_log2_of2() */
Unexecuted instantiation: H5MF.c:H5VM_log2_of2
Unexecuted instantiation: H5Pdapl.c:H5VM_log2_of2
Unexecuted instantiation: H5Pencdec.c:H5VM_log2_of2
Unexecuted instantiation: H5Pfapl.c:H5VM_log2_of2
Unexecuted instantiation: H5Plapl.c:H5VM_log2_of2
Unexecuted instantiation: H5Pocpl.c:H5VM_log2_of2
Unexecuted instantiation: H5Sall.c:H5VM_log2_of2
Unexecuted instantiation: H5Sselect.c:H5VM_log2_of2
Unexecuted instantiation: H5T.c:H5VM_log2_of2
Unexecuted instantiation: H5VM.c:H5VM_log2_of2
Unexecuted instantiation: H5B2hdr.c:H5VM_log2_of2
Unexecuted instantiation: H5B2int.c:H5VM_log2_of2
Unexecuted instantiation: H5Dbtree.c:H5VM_log2_of2
Unexecuted instantiation: H5Dbtree2.c:H5VM_log2_of2
Unexecuted instantiation: H5Dchunk.c:H5VM_log2_of2
Unexecuted instantiation: H5Dcompact.c:H5VM_log2_of2
Unexecuted instantiation: H5Dcontig.c:H5VM_log2_of2
Unexecuted instantiation: H5Dearray.c:H5VM_log2_of2
Unexecuted instantiation: H5Dfarray.c:H5VM_log2_of2
Unexecuted instantiation: H5Dfill.c:H5VM_log2_of2
Unexecuted instantiation: H5Dint.c:H5VM_log2_of2
Unexecuted instantiation: H5Dnone.c:H5VM_log2_of2
Unexecuted instantiation: H5Dselect.c:H5VM_log2_of2
Unexecuted instantiation: H5EA.c:H5VM_log2_of2
Unexecuted instantiation: H5EAcache.c:H5VM_log2_of2
Unexecuted instantiation: H5EAdblkpage.c:H5VM_log2_of2
Unexecuted instantiation: H5EAdblock.c:H5VM_log2_of2
Unexecuted instantiation: H5EAhdr.c:H5VM_log2_of2
Unexecuted instantiation: H5EAiblock.c:H5VM_log2_of2
Unexecuted instantiation: H5EAint.c:H5VM_log2_of2
Unexecuted instantiation: H5EAsblock.c:H5VM_log2_of2
Unexecuted instantiation: H5EAstat.c:H5VM_log2_of2
Unexecuted instantiation: H5EAtest.c:H5VM_log2_of2
Unexecuted instantiation: H5Faccum.c:H5VM_log2_of2
Unexecuted instantiation: H5FA.c:H5VM_log2_of2
Unexecuted instantiation: H5FAtest.c:H5VM_log2_of2
Unexecuted instantiation: H5FScache.c:H5VM_log2_of2
Unexecuted instantiation: H5FSsection.c:H5VM_log2_of2
Unexecuted instantiation: H5HFdblock.c:H5VM_log2_of2
Unexecuted instantiation: H5HFdtable.c:H5VM_log2_of2
Unexecuted instantiation: H5HFhdr.c:H5VM_log2_of2
Unexecuted instantiation: H5HFiblock.c:H5VM_log2_of2
Unexecuted instantiation: H5HFiter.c:H5VM_log2_of2
Unexecuted instantiation: H5Odtype.c:H5VM_log2_of2
Unexecuted instantiation: H5Pdcpl.c:H5VM_log2_of2
Unexecuted instantiation: H5Pdxpl.c:H5VM_log2_of2
Unexecuted instantiation: H5Shyper.c:H5VM_log2_of2
Unexecuted instantiation: H5Spoint.c:H5VM_log2_of2
Unexecuted instantiation: H5Ztrans.c:H5VM_log2_of2
Unexecuted instantiation: H5Defl.c:H5VM_log2_of2
406
407
/*-------------------------------------------------------------------------
408
 * Function:    H5VM_power2up
409
 *
410
 * Purpose:     Round up a number to the next power of 2
411
 *
412
 * Note:        Although this routine is 'static' in this file, that's intended
413
 *              only as an optimization and the naming (with a single underscore)
414
 *              reflects its inclusion in a "private" header file.
415
 *
416
 * Return:      Return the number which is a power of 2
417
 *-------------------------------------------------------------------------
418
 */
419
static inline H5_ATTR_CONST hsize_t
420
H5VM_power2up(hsize_t n)
421
0
{
422
0
    hsize_t ret_value = 1; /* Return value */
423
424
    /* Returns 0 when n exceeds 2^63 */
425
0
    if (n >= (hsize_t)1 << ((sizeof(hsize_t) * CHAR_BIT) - 1))
426
0
        ret_value = 0;
427
428
0
    while (ret_value && ret_value < n)
429
0
        ret_value <<= 1;
430
431
0
    return (ret_value);
432
0
} /* H5VM_power2up */
Unexecuted instantiation: H5MF.c:H5VM_power2up
Unexecuted instantiation: H5Pdapl.c:H5VM_power2up
Unexecuted instantiation: H5Pencdec.c:H5VM_power2up
Unexecuted instantiation: H5Pfapl.c:H5VM_power2up
Unexecuted instantiation: H5Plapl.c:H5VM_power2up
Unexecuted instantiation: H5Pocpl.c:H5VM_power2up
Unexecuted instantiation: H5Sall.c:H5VM_power2up
Unexecuted instantiation: H5Sselect.c:H5VM_power2up
Unexecuted instantiation: H5T.c:H5VM_power2up
Unexecuted instantiation: H5VM.c:H5VM_power2up
Unexecuted instantiation: H5B2hdr.c:H5VM_power2up
Unexecuted instantiation: H5B2int.c:H5VM_power2up
Unexecuted instantiation: H5Dbtree.c:H5VM_power2up
Unexecuted instantiation: H5Dbtree2.c:H5VM_power2up
Unexecuted instantiation: H5Dchunk.c:H5VM_power2up
Unexecuted instantiation: H5Dcompact.c:H5VM_power2up
Unexecuted instantiation: H5Dcontig.c:H5VM_power2up
Unexecuted instantiation: H5Dearray.c:H5VM_power2up
Unexecuted instantiation: H5Dfarray.c:H5VM_power2up
Unexecuted instantiation: H5Dfill.c:H5VM_power2up
Unexecuted instantiation: H5Dint.c:H5VM_power2up
Unexecuted instantiation: H5Dnone.c:H5VM_power2up
Unexecuted instantiation: H5Dselect.c:H5VM_power2up
Unexecuted instantiation: H5EA.c:H5VM_power2up
Unexecuted instantiation: H5EAcache.c:H5VM_power2up
Unexecuted instantiation: H5EAdblkpage.c:H5VM_power2up
Unexecuted instantiation: H5EAdblock.c:H5VM_power2up
Unexecuted instantiation: H5EAhdr.c:H5VM_power2up
Unexecuted instantiation: H5EAiblock.c:H5VM_power2up
Unexecuted instantiation: H5EAint.c:H5VM_power2up
Unexecuted instantiation: H5EAsblock.c:H5VM_power2up
Unexecuted instantiation: H5EAstat.c:H5VM_power2up
Unexecuted instantiation: H5EAtest.c:H5VM_power2up
Unexecuted instantiation: H5Faccum.c:H5VM_power2up
Unexecuted instantiation: H5FA.c:H5VM_power2up
Unexecuted instantiation: H5FAtest.c:H5VM_power2up
Unexecuted instantiation: H5FScache.c:H5VM_power2up
Unexecuted instantiation: H5FSsection.c:H5VM_power2up
Unexecuted instantiation: H5HFdblock.c:H5VM_power2up
Unexecuted instantiation: H5HFdtable.c:H5VM_power2up
Unexecuted instantiation: H5HFhdr.c:H5VM_power2up
Unexecuted instantiation: H5HFiblock.c:H5VM_power2up
Unexecuted instantiation: H5HFiter.c:H5VM_power2up
Unexecuted instantiation: H5Odtype.c:H5VM_power2up
Unexecuted instantiation: H5Pdcpl.c:H5VM_power2up
Unexecuted instantiation: H5Pdxpl.c:H5VM_power2up
Unexecuted instantiation: H5Shyper.c:H5VM_power2up
Unexecuted instantiation: H5Spoint.c:H5VM_power2up
Unexecuted instantiation: H5Ztrans.c:H5VM_power2up
Unexecuted instantiation: H5Defl.c:H5VM_power2up
433
434
/*-------------------------------------------------------------------------
435
 * Function:    H5VM_limit_enc_size
436
 *
437
 * Purpose:     Determine the # of bytes needed to encode values within a
438
 *              range from 0 to a given limit
439
 *
440
 * Note:        Although this routine is 'static' in this file, that's intended
441
 *              only as an optimization and the naming (with a single underscore)
442
 *              reflects its inclusion in a "private" header file.
443
 *
444
 * Return:      Number of bytes needed
445
 *-------------------------------------------------------------------------
446
 */
447
static inline unsigned H5_ATTR_UNUSED
448
H5VM_limit_enc_size(uint64_t limit)
449
0
{
450
0
    return (H5VM_log2_gen(limit) / 8) + 1;
451
0
} /* end H5VM_limit_enc_size() */
Unexecuted instantiation: H5MF.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Pdapl.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Pencdec.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Pfapl.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Plapl.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Pocpl.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Sall.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Sselect.c:H5VM_limit_enc_size
Unexecuted instantiation: H5T.c:H5VM_limit_enc_size
Unexecuted instantiation: H5VM.c:H5VM_limit_enc_size
Unexecuted instantiation: H5B2hdr.c:H5VM_limit_enc_size
Unexecuted instantiation: H5B2int.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dbtree.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dbtree2.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dchunk.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dcompact.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dcontig.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dearray.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dfarray.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dfill.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dint.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dnone.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Dselect.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EA.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAcache.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAdblkpage.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAdblock.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAhdr.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAiblock.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAint.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAsblock.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAstat.c:H5VM_limit_enc_size
Unexecuted instantiation: H5EAtest.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Faccum.c:H5VM_limit_enc_size
Unexecuted instantiation: H5FA.c:H5VM_limit_enc_size
Unexecuted instantiation: H5FAtest.c:H5VM_limit_enc_size
Unexecuted instantiation: H5FScache.c:H5VM_limit_enc_size
Unexecuted instantiation: H5FSsection.c:H5VM_limit_enc_size
Unexecuted instantiation: H5HFdblock.c:H5VM_limit_enc_size
Unexecuted instantiation: H5HFdtable.c:H5VM_limit_enc_size
Unexecuted instantiation: H5HFhdr.c:H5VM_limit_enc_size
Unexecuted instantiation: H5HFiblock.c:H5VM_limit_enc_size
Unexecuted instantiation: H5HFiter.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Odtype.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Pdcpl.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Pdxpl.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Shyper.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Spoint.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Ztrans.c:H5VM_limit_enc_size
Unexecuted instantiation: H5Defl.c:H5VM_limit_enc_size
452
453
static const unsigned char H5VM_bit_set_g[8]   = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
454
static const unsigned char H5VM_bit_clear_g[8] = {0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE};
455
456
/*-------------------------------------------------------------------------
457
 * Function:    H5VM_bit_get
458
 *
459
 * Purpose:     Determine the value of the n'th bit in a buffer.
460
 *
461
 * Note:        No range checking on <offset> is performed!
462
 *
463
 * Note #2:     Bits are sequentially stored in the buffer, starting with bit
464
 *              offset 0 in the first byte's high-bit position, proceeding down
465
 *              to bit offset 7 in the first byte's low-bit position, then to
466
 *              bit offset 8 in the second byte's high-bit position, etc.
467
 *
468
 * Note:        Although this routine is 'static' in this file, that's intended
469
 *              only as an optimization and the naming (with a single underscore)
470
 *              reflects its inclusion in a "private" header file.
471
 *
472
 * Return:      true/false
473
 *-------------------------------------------------------------------------
474
 */
475
static inline bool H5_ATTR_UNUSED
476
H5VM_bit_get(const unsigned char *buf, size_t offset)
477
0
{
478
    /* Test the appropriate bit in the buffer */
479
0
    return (bool)((buf[offset / 8] & (H5VM_bit_set_g[offset % 8])) ? true : false);
480
0
} /* end H5VM_bit_get() */
Unexecuted instantiation: H5MF.c:H5VM_bit_get
Unexecuted instantiation: H5Pdapl.c:H5VM_bit_get
Unexecuted instantiation: H5Pencdec.c:H5VM_bit_get
Unexecuted instantiation: H5Pfapl.c:H5VM_bit_get
Unexecuted instantiation: H5Plapl.c:H5VM_bit_get
Unexecuted instantiation: H5Pocpl.c:H5VM_bit_get
Unexecuted instantiation: H5Sall.c:H5VM_bit_get
Unexecuted instantiation: H5Sselect.c:H5VM_bit_get
Unexecuted instantiation: H5T.c:H5VM_bit_get
Unexecuted instantiation: H5VM.c:H5VM_bit_get
Unexecuted instantiation: H5B2hdr.c:H5VM_bit_get
Unexecuted instantiation: H5B2int.c:H5VM_bit_get
Unexecuted instantiation: H5Dbtree.c:H5VM_bit_get
Unexecuted instantiation: H5Dbtree2.c:H5VM_bit_get
Unexecuted instantiation: H5Dchunk.c:H5VM_bit_get
Unexecuted instantiation: H5Dcompact.c:H5VM_bit_get
Unexecuted instantiation: H5Dcontig.c:H5VM_bit_get
Unexecuted instantiation: H5Dearray.c:H5VM_bit_get
Unexecuted instantiation: H5Dfarray.c:H5VM_bit_get
Unexecuted instantiation: H5Dfill.c:H5VM_bit_get
Unexecuted instantiation: H5Dint.c:H5VM_bit_get
Unexecuted instantiation: H5Dnone.c:H5VM_bit_get
Unexecuted instantiation: H5Dselect.c:H5VM_bit_get
Unexecuted instantiation: H5EA.c:H5VM_bit_get
Unexecuted instantiation: H5EAcache.c:H5VM_bit_get
Unexecuted instantiation: H5EAdblkpage.c:H5VM_bit_get
Unexecuted instantiation: H5EAdblock.c:H5VM_bit_get
Unexecuted instantiation: H5EAhdr.c:H5VM_bit_get
Unexecuted instantiation: H5EAiblock.c:H5VM_bit_get
Unexecuted instantiation: H5EAint.c:H5VM_bit_get
Unexecuted instantiation: H5EAsblock.c:H5VM_bit_get
Unexecuted instantiation: H5EAstat.c:H5VM_bit_get
Unexecuted instantiation: H5EAtest.c:H5VM_bit_get
Unexecuted instantiation: H5Faccum.c:H5VM_bit_get
Unexecuted instantiation: H5FA.c:H5VM_bit_get
Unexecuted instantiation: H5FAtest.c:H5VM_bit_get
Unexecuted instantiation: H5FScache.c:H5VM_bit_get
Unexecuted instantiation: H5FSsection.c:H5VM_bit_get
Unexecuted instantiation: H5HFdblock.c:H5VM_bit_get
Unexecuted instantiation: H5HFdtable.c:H5VM_bit_get
Unexecuted instantiation: H5HFhdr.c:H5VM_bit_get
Unexecuted instantiation: H5HFiblock.c:H5VM_bit_get
Unexecuted instantiation: H5HFiter.c:H5VM_bit_get
Unexecuted instantiation: H5Odtype.c:H5VM_bit_get
Unexecuted instantiation: H5Pdcpl.c:H5VM_bit_get
Unexecuted instantiation: H5Pdxpl.c:H5VM_bit_get
Unexecuted instantiation: H5Shyper.c:H5VM_bit_get
Unexecuted instantiation: H5Spoint.c:H5VM_bit_get
Unexecuted instantiation: H5Ztrans.c:H5VM_bit_get
Unexecuted instantiation: H5Defl.c:H5VM_bit_get
481
482
/*-------------------------------------------------------------------------
483
 * Function:    H5VM_bit_set
484
 *
485
 * Purpose:     Set/reset the n'th bit in a buffer.
486
 *
487
 * Note:        No range checking on <offset> is performed!
488
 *
489
 * Note #2:     Bits are sequentially stored in the buffer, starting with bit
490
 *              offset 0 in the first byte's high-bit position, proceeding down
491
 *              to bit offset 7 in the first byte's low-bit position, then to
492
 *              bit offset 8 in the second byte's high-bit position, etc.
493
 *
494
 * Note:        Although this routine is 'static' in this file, that's intended
495
 *              only as an optimization and the naming (with a single underscore)
496
 *              reflects its inclusion in a "private" header file.
497
 *
498
 * Return:      void
499
 *-------------------------------------------------------------------------
500
 */
501
static inline void H5_ATTR_UNUSED
502
H5VM_bit_set(unsigned char *buf, size_t offset, bool val)
503
0
{
504
    /* Set/reset the appropriate bit in the buffer */
505
0
    if (val)
506
0
        buf[offset / 8] |= H5VM_bit_set_g[offset % 8];
507
0
    else
508
0
        buf[offset / 8] &= H5VM_bit_clear_g[offset % 8];
509
0
} /* end H5VM_bit_set() */
Unexecuted instantiation: H5MF.c:H5VM_bit_set
Unexecuted instantiation: H5Pdapl.c:H5VM_bit_set
Unexecuted instantiation: H5Pencdec.c:H5VM_bit_set
Unexecuted instantiation: H5Pfapl.c:H5VM_bit_set
Unexecuted instantiation: H5Plapl.c:H5VM_bit_set
Unexecuted instantiation: H5Pocpl.c:H5VM_bit_set
Unexecuted instantiation: H5Sall.c:H5VM_bit_set
Unexecuted instantiation: H5Sselect.c:H5VM_bit_set
Unexecuted instantiation: H5T.c:H5VM_bit_set
Unexecuted instantiation: H5VM.c:H5VM_bit_set
Unexecuted instantiation: H5B2hdr.c:H5VM_bit_set
Unexecuted instantiation: H5B2int.c:H5VM_bit_set
Unexecuted instantiation: H5Dbtree.c:H5VM_bit_set
Unexecuted instantiation: H5Dbtree2.c:H5VM_bit_set
Unexecuted instantiation: H5Dchunk.c:H5VM_bit_set
Unexecuted instantiation: H5Dcompact.c:H5VM_bit_set
Unexecuted instantiation: H5Dcontig.c:H5VM_bit_set
Unexecuted instantiation: H5Dearray.c:H5VM_bit_set
Unexecuted instantiation: H5Dfarray.c:H5VM_bit_set
Unexecuted instantiation: H5Dfill.c:H5VM_bit_set
Unexecuted instantiation: H5Dint.c:H5VM_bit_set
Unexecuted instantiation: H5Dnone.c:H5VM_bit_set
Unexecuted instantiation: H5Dselect.c:H5VM_bit_set
Unexecuted instantiation: H5EA.c:H5VM_bit_set
Unexecuted instantiation: H5EAcache.c:H5VM_bit_set
Unexecuted instantiation: H5EAdblkpage.c:H5VM_bit_set
Unexecuted instantiation: H5EAdblock.c:H5VM_bit_set
Unexecuted instantiation: H5EAhdr.c:H5VM_bit_set
Unexecuted instantiation: H5EAiblock.c:H5VM_bit_set
Unexecuted instantiation: H5EAint.c:H5VM_bit_set
Unexecuted instantiation: H5EAsblock.c:H5VM_bit_set
Unexecuted instantiation: H5EAstat.c:H5VM_bit_set
Unexecuted instantiation: H5EAtest.c:H5VM_bit_set
Unexecuted instantiation: H5Faccum.c:H5VM_bit_set
Unexecuted instantiation: H5FA.c:H5VM_bit_set
Unexecuted instantiation: H5FAtest.c:H5VM_bit_set
Unexecuted instantiation: H5FScache.c:H5VM_bit_set
Unexecuted instantiation: H5FSsection.c:H5VM_bit_set
Unexecuted instantiation: H5HFdblock.c:H5VM_bit_set
Unexecuted instantiation: H5HFdtable.c:H5VM_bit_set
Unexecuted instantiation: H5HFhdr.c:H5VM_bit_set
Unexecuted instantiation: H5HFiblock.c:H5VM_bit_set
Unexecuted instantiation: H5HFiter.c:H5VM_bit_set
Unexecuted instantiation: H5Odtype.c:H5VM_bit_set
Unexecuted instantiation: H5Pdcpl.c:H5VM_bit_set
Unexecuted instantiation: H5Pdxpl.c:H5VM_bit_set
Unexecuted instantiation: H5Shyper.c:H5VM_bit_set
Unexecuted instantiation: H5Spoint.c:H5VM_bit_set
Unexecuted instantiation: H5Ztrans.c:H5VM_bit_set
Unexecuted instantiation: H5Defl.c:H5VM_bit_set
510
511
#endif /* H5VMprivate_H */