27 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
29 int64_t n = blocks.size();
31 if (start_block_index >= n)
35#pragma omp parallel for
37 for (int64_t i = start_block_index; i < n; ++i)
38 blocks[i].position += delta;
45 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
47 int64_t n = blocks.size();
49 if (start_block_index >= n)
53 int64_t len = n - start_block_index;
54 int64_t rem = len & 3;
56 len += start_block_index;
58#pragma omp parallel for
60 for (int64_t i = start_block_index; i < len; i += 4)
62 blocks[i].position += delta;
63 blocks[i + 1].position += delta;
64 blocks[i + 2].position += delta;
65 blocks[i + 3].position += delta;
69 for (int64_t i = len; i < rem; ++i)
70 blocks[i].position += delta;
77 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
79 int64_t n = blocks.size();
81 if (start_block_index >= n)
85 int64_t len = n - start_block_index;
86 int64_t rem = len & 7;
88 len += start_block_index;
90#pragma omp parallel for
92 for (int64_t i = start_block_index; i < len; i += 8)
94 blocks[i].position += delta;
95 blocks[i + 1].position += delta;
96 blocks[i + 2].position += delta;
97 blocks[i + 3].position += delta;
98 blocks[i + 4].position += delta;
99 blocks[i + 5].position += delta;
100 blocks[i + 6].position += delta;
101 blocks[i + 7].position += delta;
105 for (int64_t i = len; i < rem; ++i)
106 blocks[i].position += delta;
113 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
115 int64_t n = blocks.size();
117 if (start_block_index >= n)
121 int64_t len = n - start_block_index;
122 int64_t rem = len & 15;
124 len += start_block_index;
126#pragma omp parallel for
128 for (int64_t i = start_block_index; i < len; i += 16)
130 blocks[i].position += delta;
131 blocks[i + 1].position += delta;
132 blocks[i + 2].position += delta;
133 blocks[i + 3].position += delta;
134 blocks[i + 4].position += delta;
135 blocks[i + 5].position += delta;
136 blocks[i + 6].position += delta;
137 blocks[i + 7].position += delta;
138 blocks[i + 8].position += delta;
139 blocks[i + 9].position += delta;
140 blocks[i + 10].position += delta;
141 blocks[i + 11].position += delta;
142 blocks[i + 12].position += delta;
143 blocks[i + 13].position += delta;
144 blocks[i + 14].position += delta;
145 blocks[i + 15].position += delta;
149 for (int64_t i = len; i < rem; ++i)
150 blocks[i].position += delta;
157 void operator()(Blks& blocks, int64_t start_block_index, int64_t delta)
const
159 int64_t n = blocks.size();
161 if (start_block_index >= n)
165 int64_t len = n - start_block_index;
166 int64_t rem = len & 31;
168 len += start_block_index;
170#pragma omp parallel for
172 for (int64_t i = start_block_index; i < len; i += 32)
174 blocks[i].position += delta;
175 blocks[i + 1].position += delta;
176 blocks[i + 2].position += delta;
177 blocks[i + 3].position += delta;
178 blocks[i + 4].position += delta;
179 blocks[i + 5].position += delta;
180 blocks[i + 6].position += delta;
181 blocks[i + 7].position += delta;
182 blocks[i + 8].position += delta;
183 blocks[i + 9].position += delta;
184 blocks[i + 10].position += delta;
185 blocks[i + 11].position += delta;
186 blocks[i + 12].position += delta;
187 blocks[i + 13].position += delta;
188 blocks[i + 14].position += delta;
189 blocks[i + 15].position += delta;
190 blocks[i + 16].position += delta;
191 blocks[i + 17].position += delta;
192 blocks[i + 18].position += delta;
193 blocks[i + 19].position += delta;
194 blocks[i + 20].position += delta;
195 blocks[i + 21].position += delta;
196 blocks[i + 22].position += delta;
197 blocks[i + 23].position += delta;
198 blocks[i + 24].position += delta;
199 blocks[i + 25].position += delta;
200 blocks[i + 26].position += delta;
201 blocks[i + 27].position += delta;
202 blocks[i + 28].position += delta;
203 blocks[i + 29].position += delta;
204 blocks[i + 30].position += delta;
205 blocks[i + 31].position += delta;
209 for (int64_t i = len; i < rem; ++i)
210 blocks[i].position += delta;