49 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
51 int64_t n = blocks.size();
53 if (start_block_index >= n)
57#pragma omp parallel for
59 for (int64_t i = start_block_index; i < n; ++i)
60 blocks[i].position += delta;
67 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
69 int64_t n = blocks.size();
71 if (start_block_index >= n)
75 int64_t len = n - start_block_index;
76 int64_t rem = len & 3;
78 len += start_block_index;
80#pragma omp parallel for
82 for (int64_t i = start_block_index; i < len; i += 4)
84 blocks[i].position += delta;
85 blocks[i + 1].position += delta;
86 blocks[i + 2].position += delta;
87 blocks[i + 3].position += delta;
91 for (int64_t i = len; i < rem; ++i)
92 blocks[i].position += delta;
99 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
101 int64_t n = blocks.size();
103 if (start_block_index >= n)
107 int64_t len = n - start_block_index;
108 int64_t rem = len & 7;
110 len += start_block_index;
112#pragma omp parallel for
114 for (int64_t i = start_block_index; i < len; i += 8)
116 blocks[i].position += delta;
117 blocks[i + 1].position += delta;
118 blocks[i + 2].position += delta;
119 blocks[i + 3].position += delta;
120 blocks[i + 4].position += delta;
121 blocks[i + 5].position += delta;
122 blocks[i + 6].position += delta;
123 blocks[i + 7].position += delta;
127 for (int64_t i = len; i < rem; ++i)
128 blocks[i].position += delta;
135 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
137 int64_t n = blocks.size();
139 if (start_block_index >= n)
143 int64_t len = n - start_block_index;
144 int64_t rem = len & 15;
146 len += start_block_index;
148#pragma omp parallel for
150 for (int64_t i = start_block_index; i < len; i += 16)
152 blocks[i].position += delta;
153 blocks[i + 1].position += delta;
154 blocks[i + 2].position += delta;
155 blocks[i + 3].position += delta;
156 blocks[i + 4].position += delta;
157 blocks[i + 5].position += delta;
158 blocks[i + 6].position += delta;
159 blocks[i + 7].position += delta;
160 blocks[i + 8].position += delta;
161 blocks[i + 9].position += delta;
162 blocks[i + 10].position += delta;
163 blocks[i + 11].position += delta;
164 blocks[i + 12].position += delta;
165 blocks[i + 13].position += delta;
166 blocks[i + 14].position += delta;
167 blocks[i + 15].position += delta;
171 for (int64_t i = len; i < rem; ++i)
172 blocks[i].position += delta;
179 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
181 int64_t n = blocks.size();
183 if (start_block_index >= n)
187 int64_t len = n - start_block_index;
188 int64_t rem = len & 31;
190 len += start_block_index;
192#pragma omp parallel for
194 for (int64_t i = start_block_index; i < len; i += 32)
196 blocks[i].position += delta;
197 blocks[i + 1].position += delta;
198 blocks[i + 2].position += delta;
199 blocks[i + 3].position += delta;
200 blocks[i + 4].position += delta;
201 blocks[i + 5].position += delta;
202 blocks[i + 6].position += delta;
203 blocks[i + 7].position += delta;
204 blocks[i + 8].position += delta;
205 blocks[i + 9].position += delta;
206 blocks[i + 10].position += delta;
207 blocks[i + 11].position += delta;
208 blocks[i + 12].position += delta;
209 blocks[i + 13].position += delta;
210 blocks[i + 14].position += delta;
211 blocks[i + 15].position += delta;
212 blocks[i + 16].position += delta;
213 blocks[i + 17].position += delta;
214 blocks[i + 18].position += delta;
215 blocks[i + 19].position += delta;
216 blocks[i + 20].position += delta;
217 blocks[i + 21].position += delta;
218 blocks[i + 22].position += delta;
219 blocks[i + 23].position += delta;
220 blocks[i + 24].position += delta;
221 blocks[i + 25].position += delta;
222 blocks[i + 26].position += delta;
223 blocks[i + 27].position += delta;
224 blocks[i + 28].position += delta;
225 blocks[i + 29].position += delta;
226 blocks[i + 30].position += delta;
227 blocks[i + 31].position += delta;
231 for (int64_t i = len; i < rem; ++i)
232 blocks[i].position += delta;