51 for (
size_t k = 0; k < num_stripes; ++k) {
52#ifndef XT_IDXSECTION_STRIPES_ISECT_CREATE_STRIPE_MASK
53 if (isect_stripes_bm[k/size_t_bits] & ((
size_t)1 << (k % size_t_bits)))
57#ifdef XT_IDXSECTION_STRIPES_ISECT_CREATE_STRIPE_MASK
58 size_t num_result_stripes = 0;
59 bool any_match =
false;
61 for (
int j = 0; j < query.
nstrides; ++j) {
63 running_index = insert_index;
64 bool out_of_bounds =
false;
65#ifdef XT_IDXSECTION_STRIPES_ISECT_SINGLE_MATCH_ONLY
69 XT_INT_DIV_T pos =
Xt_div(running_index, dims[i].agsmd,
70 dims[i].global_stride);
72 running_index = (
Xt_int)pos.rem;
73 out_of_bounds |= (curr_global_position < dims[i].local_start)
74 | (curr_global_position >= dims[i].local_start + dims[i].local_size);
75#ifdef XT_IDXSECTION_STRIPES_ISECT_SINGLE_MATCH_ONLY
76 int curr_local_pos = (int)(curr_global_position - dims[i].local_start);
77 local_pos += curr_local_pos * (int)dims[i].local_stride;
80#ifdef XT_IDXSECTION_STRIPES_ISECT_SINGLE_MATCH_ONLY
81 out_of_bounds = out_of_bounds ||
82 (pos_used_bm[local_pos/size_t_bits] >> (local_pos % size_t_bits))&1;
85#ifdef XT_IDXSECTION_STRIPES_ISECT_CREATE_STRIPE_MASK
88 if (insert_index == index_continuation || buf_nstrides == 1) {
91 if (insert_index != index_continuation)
92 buf_stride = (
Xt_int)(insert_index - accum_start);
94#ifndef XT_IDXSECTION_STRIPES_ISECT_CREATE_STRIPE_MASK
95 result_stripes[num_result_stripes].nstrides = buf_nstrides;
96 result_stripes[num_result_stripes].stride = buf_stride;
100 ++num_result_stripes;
101#ifndef XT_IDXSECTION_STRIPES_ISECT_CREATE_STRIPE_MASK
102 result_stripes[num_result_stripes].start =
104 accum_start = insert_index;
106 index_continuation = (
Xt_int)(insert_index + buf_stride);
107#ifdef XT_IDXSECTION_STRIPES_ISECT_SINGLE_MATCH_ONLY
108 pos_used_bm[local_pos/size_t_bits]
109 |= ((size_t)1 << (local_pos % size_t_bits));
113#ifdef XT_IDXSECTION_STRIPES_ISECT_CREATE_STRIPE_MASK
114 num_result_stripes_total += num_result_stripes;
115 isect_mask |= (size_t)any_match << (k % size_t_bits);
116 if ((k+1) % size_t_bits == 0) {
117 isect_stripes_bm[k/size_t_bits] = isect_mask;