Vlasiator ebf0dd394 on dev (v5.4.0 + 1054 commits)
Loading...
Searching...
No Matches
cpu_acc_load_blocks.cpp
Go to the documentation of this file.
1/*
2 * This file is part of Vlasiator.
3 * Copyright 2010-2016 Finnish Meteorological Institute,
4 * 2017 CSC - IT center for Science
5 *
6 * For details of usage, see the COPYING file and read the "Rules of the Road"
7 * at http://www.physics.helsinki.fi/vlasiator/
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 */
23
24
25#include "vec.h"
27
30 vmesh::VelocityBlockContainer* blockContainer,
31 const vmesh::GlobalID* blocks,
32 const vmesh::LocalID n_blocks,
33 const int dimension,
34 Vec* __restrict__ values) {
35 // first set the 0 values for the two empty blocks
36 // we store above and below the existing blocks
37
38 for (uint k=0; k<WID; ++k) {
39 for (uint j = 0; j < WID; j += VECL/WID){
40 values[i_pcolumnv(j, k, -1, n_blocks)] = Vec(0);
41 values[i_pcolumnv(j, k, n_blocks, n_blocks)] = Vec(0);
42 }
43 }
44
45 /*[[[cog
46import cog
47WIDs = [4,8]
48for wi, WID in enumerate(WIDs):
49 WID2 = WID * WID
50 if wi == 0:
51 cog.outl("#if WID == %d " % WID)
52 else:
53 cog.outl("#elif WID == %d " % WID)
54
55 for dimension in range(0, 2):
56 if dimension == 0:
57 cell_indices_to_id = [ WID2, WID, 1]
58 if dimension == 1:
59 cell_indices_to_id = [ 1, WID2, WID]
60 if dimension == 2:
61 cell_indices_to_id = [ 1, WID, WID2]
62
63 cellid_transpose=[]
64 for k in range(0,WID):
65 for j in range(0,WID):
66 for i in range(0,WID):
67 cellid_transpose.append(i * cell_indices_to_id[0] + j * cell_indices_to_id[1] + k * cell_indices_to_id[2])
68
69 cog.outl("if(dimension == %s) {" % dimension)
70 cog.outl(" for (vmesh::LocalID block_k=0; block_k<n_blocks; ++block_k) {")
71 cog.outl(" Realf* __restrict__ data = blockContainer->getData(vmesh->getLocalID(blocks[block_k]));")
72 init = True
73 noinitlist = False
74 if noinitlist:
75 for vecl in [4, 8, 16, 32, 64]:
76 # guard against WID2//vecl == 0 and more exotic truncations, and vecl < WID not supported
77 if vecl*(WID2//vecl) != WID2 or vecl < WID:
78 continue
79 # Agner supports up to 16elem f, 8elem d, so not going further than that!
80 for accuracy in ["f", "d"]:
81 if accuracy == "f" and vecl > 16:
82 continue
83 if accuracy == "d" and vecl > 8:
84 continue
85 if init:
86 cog.outl("#if defined(VEC%d%s_AGNER) && VECL == %d" % (vecl, accuracy.upper(), vecl))
87 init = False
88 else:
89 cog.outl("#elif defined(VEC%d%s_AGNER) && VECL == %d" % (vecl, accuracy.upper(), vecl))
90 cell = 0
91 cog.outl("// WID %d, vecl %d" % (WID, vecl))
92 for k in range(0, WID):
93 for planeVector in range(0, WID2//vecl):
94 cog.out(" values[i_pcolumnv_b(%d, %d, block_k, n_blocks)] = gather%d%s<" % (planeVector, k, vecl, accuracy) )
95 for vi in range(0,vecl):
96 cog.out("%d" %cellid_transpose[cell])
97 if vi < vecl-1:
98 cog.out(", ")
99 cell = cell + 1
100 cog.outl(">(data);")
101
102 cog.outl("#elif defined(VEC_FALLBACK_GENERIC) && VECL == %d " % vecl)
103 cog.outl("// WID %d, vecl %d" % (WID, vecl))
104 cell = 0
105 for k in range(0, WID):
106 for planeVector in range(0, WID2//vecl):
107 cog.out(" values[i_pcolumnv_b(%d, %d, block_k, n_blocks)] = Vec({" % (planeVector, k) )
108 for vi in range(0,vecl):
109 cog.out("data[%d]" %cellid_transpose[cell])
110 if vi < vecl-1:
111 cog.out(", ")
112 cell = cell + 1
113 cog.outl("});")
114 else:
115 for vecl in [4, 8, 16, 32, 64]:
116 # guard against WID2//vecl == 0 and more exotic truncations, and vecl < WID not supported
117 if vecl*(WID2//vecl) != WID2 or vecl < WID:
118 continue
119 if init:
120 cog.out("#if ")
121 init = False
122 else:
123 cog.out("#elif ")
124
125 # Agner supports up to 16elem f, 8elem d, so not going further than that!
126 if vecl > 16:
127 cog.outl("defined(VEC_FALLBACK_GENERIC) && VECL == %d" % vecl)
128 elif vecl > 8:
129 cog.outl("(defined(VEC%dF_AGNER) || defined(VEC_FALLBACK_GENERIC)) && VECL == %d" % (vecl, vecl))
130 else:
131 cog.outl("(defined(VEC%dD_AGNER) || defined(VEC%dF_AGNER) || defined(VEC_FALLBACK_GENERIC)) && VECL == %d" % (vecl, vecl, vecl))
132 cell = 0
133 cog.outl("// WID %d, vecl %d" % (WID, vecl))
134 for k in range(0, WID):
135 for planeVector in range(0, WID2//vecl):
136 cog.out(" values[i_pcolumnv_b(%d, %d, block_k, n_blocks)] = Vec({" % (planeVector, k) )
137 for vi in range(0,vecl):
138 cog.out("data[%d]" %cellid_transpose[cell])
139 if vi < vecl-1:
140 cog.out(", ")
141 cell = cell + 1
142 cog.outl("});")
143
144 cog.outl("#else // Fell through, never fall into this particular pit again")
145 cog.outl(" std::cerr << \"Undefined VECTORCLASS flag or implementation missing in loadColumnBlockData() before \" << __FILE__ << \":\" << __LINE__ << std::endl;")
146 cog.outl(" abort();")
147 cog.outl("#endif")
148
149
150
151 cog.outl(" //zero old output data")
152 cog.outl(" for (uint i=0; i<WID3; ++i) {")
153 cog.outl(" data[i]=0;")
154 cog.outl(" }")
155 cog.outl(" }")
156 cog.outl("}")
157
158cog.outl("#else")
159cog.outl(" std::cerr << \"Undefined WID (\" <<WID<< \") encountered in \" << __FILE__ << \":\" << __LINE__ << std::endl;")
160cog.outl(" abort();")
161cog.outl("#endif")
162
163 ]]]*/
164 #if WID == 4
165 if(dimension == 0) {
166 for (vmesh::LocalID block_k=0; block_k<n_blocks; ++block_k) {
167 Realf* __restrict__ data = blockContainer->getData(vmesh->getLocalID(blocks[block_k]));
168 #if (defined(VEC4D_AGNER) || defined(VEC4F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC4F_SVE) || defined(VEC4D_SVE)) && VECL == 4
169 // WID 4, vecl 4
170 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[16], data[32], data[48]});
171 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[4], data[20], data[36], data[52]});
172 values[i_pcolumnv_b(2, 0, block_k, n_blocks)] = Vec({data[8], data[24], data[40], data[56]});
173 values[i_pcolumnv_b(3, 0, block_k, n_blocks)] = Vec({data[12], data[28], data[44], data[60]});
174 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[1], data[17], data[33], data[49]});
175 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[5], data[21], data[37], data[53]});
176 values[i_pcolumnv_b(2, 1, block_k, n_blocks)] = Vec({data[9], data[25], data[41], data[57]});
177 values[i_pcolumnv_b(3, 1, block_k, n_blocks)] = Vec({data[13], data[29], data[45], data[61]});
178 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[2], data[18], data[34], data[50]});
179 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[6], data[22], data[38], data[54]});
180 values[i_pcolumnv_b(2, 2, block_k, n_blocks)] = Vec({data[10], data[26], data[42], data[58]});
181 values[i_pcolumnv_b(3, 2, block_k, n_blocks)] = Vec({data[14], data[30], data[46], data[62]});
182 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[3], data[19], data[35], data[51]});
183 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[7], data[23], data[39], data[55]});
184 values[i_pcolumnv_b(2, 3, block_k, n_blocks)] = Vec({data[11], data[27], data[43], data[59]});
185 values[i_pcolumnv_b(3, 3, block_k, n_blocks)] = Vec({data[15], data[31], data[47], data[63]});
186 #elif (defined(VEC8D_AGNER) || defined(VEC8F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC8F_SVE) || defined(VEC8D_SVE)) && VECL == 8
187 // WID 4, vecl 8
188 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[16], data[32], data[48], data[4], data[20], data[36], data[52]});
189 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[8], data[24], data[40], data[56], data[12], data[28], data[44], data[60]});
190 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[1], data[17], data[33], data[49], data[5], data[21], data[37], data[53]});
191 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[9], data[25], data[41], data[57], data[13], data[29], data[45], data[61]});
192 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[2], data[18], data[34], data[50], data[6], data[22], data[38], data[54]});
193 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[10], data[26], data[42], data[58], data[14], data[30], data[46], data[62]});
194 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[3], data[19], data[35], data[51], data[7], data[23], data[39], data[55]});
195 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[11], data[27], data[43], data[59], data[15], data[31], data[47], data[63]});
196 #elif (defined(VEC16F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC16F_SVE) || defined(VEC16D_SVE)) && VECL == 16
197 // WID 4, vecl 16
198 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[16], data[32], data[48], data[4], data[20], data[36], data[52], data[8], data[24], data[40], data[56], data[12], data[28], data[44], data[60]});
199 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[1], data[17], data[33], data[49], data[5], data[21], data[37], data[53], data[9], data[25], data[41], data[57], data[13], data[29], data[45], data[61]});
200 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[2], data[18], data[34], data[50], data[6], data[22], data[38], data[54], data[10], data[26], data[42], data[58], data[14], data[30], data[46], data[62]});
201 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[3], data[19], data[35], data[51], data[7], data[23], data[39], data[55], data[11], data[27], data[43], data[59], data[15], data[31], data[47], data[63]});
202 #else // Fell through, never fall into this particular pit again
203 std::cerr << "Undefined VECTORCLASS flag or implementation missing for WID=" << WID << " in loadColumnBlockData() before " << __FILE__ << ":" << __LINE__ << std::endl;
204 abort();
205 #endif
206 //zero old output data
207 for (uint i=0; i<WID3; ++i) {
208 data[i]=0;
209 }
210 }
211 }
212 if(dimension == 1) {
213 for (vmesh::LocalID block_k=0; block_k<n_blocks; ++block_k) {
214 Realf* __restrict__ data = blockContainer->getData(vmesh->getLocalID(blocks[block_k]));
215 #if (defined(VEC4D_AGNER) || defined(VEC4F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC4F_SVE) || defined(VEC4D_SVE)) && VECL == 4
216 // WID 4, vecl 4
217 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[1], data[2], data[3]});
218 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[16], data[17], data[18], data[19]});
219 values[i_pcolumnv_b(2, 0, block_k, n_blocks)] = Vec({data[32], data[33], data[34], data[35]});
220 values[i_pcolumnv_b(3, 0, block_k, n_blocks)] = Vec({data[48], data[49], data[50], data[51]});
221 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[4], data[5], data[6], data[7]});
222 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[20], data[21], data[22], data[23]});
223 values[i_pcolumnv_b(2, 1, block_k, n_blocks)] = Vec({data[36], data[37], data[38], data[39]});
224 values[i_pcolumnv_b(3, 1, block_k, n_blocks)] = Vec({data[52], data[53], data[54], data[55]});
225 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[8], data[9], data[10], data[11]});
226 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[24], data[25], data[26], data[27]});
227 values[i_pcolumnv_b(2, 2, block_k, n_blocks)] = Vec({data[40], data[41], data[42], data[43]});
228 values[i_pcolumnv_b(3, 2, block_k, n_blocks)] = Vec({data[56], data[57], data[58], data[59]});
229 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[12], data[13], data[14], data[15]});
230 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[28], data[29], data[30], data[31]});
231 values[i_pcolumnv_b(2, 3, block_k, n_blocks)] = Vec({data[44], data[45], data[46], data[47]});
232 values[i_pcolumnv_b(3, 3, block_k, n_blocks)] = Vec({data[60], data[61], data[62], data[63]});
233 #elif (defined(VEC8D_AGNER) || defined(VEC8F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC8F_SVE) || defined(VEC8D_SVE)) && VECL == 8
234 // WID 4, vecl 8
235 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[1], data[2], data[3], data[16], data[17], data[18], data[19]});
236 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[32], data[33], data[34], data[35], data[48], data[49], data[50], data[51]});
237 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[4], data[5], data[6], data[7], data[20], data[21], data[22], data[23]});
238 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[36], data[37], data[38], data[39], data[52], data[53], data[54], data[55]});
239 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[8], data[9], data[10], data[11], data[24], data[25], data[26], data[27]});
240 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[40], data[41], data[42], data[43], data[56], data[57], data[58], data[59]});
241 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[12], data[13], data[14], data[15], data[28], data[29], data[30], data[31]});
242 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[44], data[45], data[46], data[47], data[60], data[61], data[62], data[63]});
243 #elif (defined(VEC16F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC16F_SVE) || defined(VEC16D_SVE)) && VECL == 16
244 // WID 4, vecl 16
245 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[1], data[2], data[3], data[16], data[17], data[18], data[19], data[32], data[33], data[34], data[35], data[48], data[49], data[50], data[51]});
246 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[4], data[5], data[6], data[7], data[20], data[21], data[22], data[23], data[36], data[37], data[38], data[39], data[52], data[53], data[54], data[55]});
247 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[8], data[9], data[10], data[11], data[24], data[25], data[26], data[27], data[40], data[41], data[42], data[43], data[56], data[57], data[58], data[59]});
248 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[12], data[13], data[14], data[15], data[28], data[29], data[30], data[31], data[44], data[45], data[46], data[47], data[60], data[61], data[62], data[63]});
249 #else // Fell through, never fall into this particular pit again
250 std::cerr << "Undefined VECTORCLASS flag or implementation missing for WID=" << WID << " in loadColumnBlockData() before " << __FILE__ << ":" << __LINE__ << std::endl;
251 abort();
252 #endif
253 //zero old output data
254 for (uint i=0; i<WID3; ++i) {
255 data[i]=0;
256 }
257 }
258 }
259 #elif WID == 8
260 if(dimension == 0) {
261 for (vmesh::LocalID block_k=0; block_k<n_blocks; ++block_k) {
262 Realf* __restrict__ data = blockContainer->getData(vmesh->getLocalID(blocks[block_k]));
263 #if (defined(VEC8D_AGNER) || defined(VEC8F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC8F_SVE) || defined(VEC8D_SVE)) && VECL == 8
264 // WID 8, vecl 8
265 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[64], data[128], data[192], data[256], data[320], data[384], data[448]});
266 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[8], data[72], data[136], data[200], data[264], data[328], data[392], data[456]});
267 values[i_pcolumnv_b(2, 0, block_k, n_blocks)] = Vec({data[16], data[80], data[144], data[208], data[272], data[336], data[400], data[464]});
268 values[i_pcolumnv_b(3, 0, block_k, n_blocks)] = Vec({data[24], data[88], data[152], data[216], data[280], data[344], data[408], data[472]});
269 values[i_pcolumnv_b(4, 0, block_k, n_blocks)] = Vec({data[32], data[96], data[160], data[224], data[288], data[352], data[416], data[480]});
270 values[i_pcolumnv_b(5, 0, block_k, n_blocks)] = Vec({data[40], data[104], data[168], data[232], data[296], data[360], data[424], data[488]});
271 values[i_pcolumnv_b(6, 0, block_k, n_blocks)] = Vec({data[48], data[112], data[176], data[240], data[304], data[368], data[432], data[496]});
272 values[i_pcolumnv_b(7, 0, block_k, n_blocks)] = Vec({data[56], data[120], data[184], data[248], data[312], data[376], data[440], data[504]});
273 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[1], data[65], data[129], data[193], data[257], data[321], data[385], data[449]});
274 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[9], data[73], data[137], data[201], data[265], data[329], data[393], data[457]});
275 values[i_pcolumnv_b(2, 1, block_k, n_blocks)] = Vec({data[17], data[81], data[145], data[209], data[273], data[337], data[401], data[465]});
276 values[i_pcolumnv_b(3, 1, block_k, n_blocks)] = Vec({data[25], data[89], data[153], data[217], data[281], data[345], data[409], data[473]});
277 values[i_pcolumnv_b(4, 1, block_k, n_blocks)] = Vec({data[33], data[97], data[161], data[225], data[289], data[353], data[417], data[481]});
278 values[i_pcolumnv_b(5, 1, block_k, n_blocks)] = Vec({data[41], data[105], data[169], data[233], data[297], data[361], data[425], data[489]});
279 values[i_pcolumnv_b(6, 1, block_k, n_blocks)] = Vec({data[49], data[113], data[177], data[241], data[305], data[369], data[433], data[497]});
280 values[i_pcolumnv_b(7, 1, block_k, n_blocks)] = Vec({data[57], data[121], data[185], data[249], data[313], data[377], data[441], data[505]});
281 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[2], data[66], data[130], data[194], data[258], data[322], data[386], data[450]});
282 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[10], data[74], data[138], data[202], data[266], data[330], data[394], data[458]});
283 values[i_pcolumnv_b(2, 2, block_k, n_blocks)] = Vec({data[18], data[82], data[146], data[210], data[274], data[338], data[402], data[466]});
284 values[i_pcolumnv_b(3, 2, block_k, n_blocks)] = Vec({data[26], data[90], data[154], data[218], data[282], data[346], data[410], data[474]});
285 values[i_pcolumnv_b(4, 2, block_k, n_blocks)] = Vec({data[34], data[98], data[162], data[226], data[290], data[354], data[418], data[482]});
286 values[i_pcolumnv_b(5, 2, block_k, n_blocks)] = Vec({data[42], data[106], data[170], data[234], data[298], data[362], data[426], data[490]});
287 values[i_pcolumnv_b(6, 2, block_k, n_blocks)] = Vec({data[50], data[114], data[178], data[242], data[306], data[370], data[434], data[498]});
288 values[i_pcolumnv_b(7, 2, block_k, n_blocks)] = Vec({data[58], data[122], data[186], data[250], data[314], data[378], data[442], data[506]});
289 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[3], data[67], data[131], data[195], data[259], data[323], data[387], data[451]});
290 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[11], data[75], data[139], data[203], data[267], data[331], data[395], data[459]});
291 values[i_pcolumnv_b(2, 3, block_k, n_blocks)] = Vec({data[19], data[83], data[147], data[211], data[275], data[339], data[403], data[467]});
292 values[i_pcolumnv_b(3, 3, block_k, n_blocks)] = Vec({data[27], data[91], data[155], data[219], data[283], data[347], data[411], data[475]});
293 values[i_pcolumnv_b(4, 3, block_k, n_blocks)] = Vec({data[35], data[99], data[163], data[227], data[291], data[355], data[419], data[483]});
294 values[i_pcolumnv_b(5, 3, block_k, n_blocks)] = Vec({data[43], data[107], data[171], data[235], data[299], data[363], data[427], data[491]});
295 values[i_pcolumnv_b(6, 3, block_k, n_blocks)] = Vec({data[51], data[115], data[179], data[243], data[307], data[371], data[435], data[499]});
296 values[i_pcolumnv_b(7, 3, block_k, n_blocks)] = Vec({data[59], data[123], data[187], data[251], data[315], data[379], data[443], data[507]});
297 values[i_pcolumnv_b(0, 4, block_k, n_blocks)] = Vec({data[4], data[68], data[132], data[196], data[260], data[324], data[388], data[452]});
298 values[i_pcolumnv_b(1, 4, block_k, n_blocks)] = Vec({data[12], data[76], data[140], data[204], data[268], data[332], data[396], data[460]});
299 values[i_pcolumnv_b(2, 4, block_k, n_blocks)] = Vec({data[20], data[84], data[148], data[212], data[276], data[340], data[404], data[468]});
300 values[i_pcolumnv_b(3, 4, block_k, n_blocks)] = Vec({data[28], data[92], data[156], data[220], data[284], data[348], data[412], data[476]});
301 values[i_pcolumnv_b(4, 4, block_k, n_blocks)] = Vec({data[36], data[100], data[164], data[228], data[292], data[356], data[420], data[484]});
302 values[i_pcolumnv_b(5, 4, block_k, n_blocks)] = Vec({data[44], data[108], data[172], data[236], data[300], data[364], data[428], data[492]});
303 values[i_pcolumnv_b(6, 4, block_k, n_blocks)] = Vec({data[52], data[116], data[180], data[244], data[308], data[372], data[436], data[500]});
304 values[i_pcolumnv_b(7, 4, block_k, n_blocks)] = Vec({data[60], data[124], data[188], data[252], data[316], data[380], data[444], data[508]});
305 values[i_pcolumnv_b(0, 5, block_k, n_blocks)] = Vec({data[5], data[69], data[133], data[197], data[261], data[325], data[389], data[453]});
306 values[i_pcolumnv_b(1, 5, block_k, n_blocks)] = Vec({data[13], data[77], data[141], data[205], data[269], data[333], data[397], data[461]});
307 values[i_pcolumnv_b(2, 5, block_k, n_blocks)] = Vec({data[21], data[85], data[149], data[213], data[277], data[341], data[405], data[469]});
308 values[i_pcolumnv_b(3, 5, block_k, n_blocks)] = Vec({data[29], data[93], data[157], data[221], data[285], data[349], data[413], data[477]});
309 values[i_pcolumnv_b(4, 5, block_k, n_blocks)] = Vec({data[37], data[101], data[165], data[229], data[293], data[357], data[421], data[485]});
310 values[i_pcolumnv_b(5, 5, block_k, n_blocks)] = Vec({data[45], data[109], data[173], data[237], data[301], data[365], data[429], data[493]});
311 values[i_pcolumnv_b(6, 5, block_k, n_blocks)] = Vec({data[53], data[117], data[181], data[245], data[309], data[373], data[437], data[501]});
312 values[i_pcolumnv_b(7, 5, block_k, n_blocks)] = Vec({data[61], data[125], data[189], data[253], data[317], data[381], data[445], data[509]});
313 values[i_pcolumnv_b(0, 6, block_k, n_blocks)] = Vec({data[6], data[70], data[134], data[198], data[262], data[326], data[390], data[454]});
314 values[i_pcolumnv_b(1, 6, block_k, n_blocks)] = Vec({data[14], data[78], data[142], data[206], data[270], data[334], data[398], data[462]});
315 values[i_pcolumnv_b(2, 6, block_k, n_blocks)] = Vec({data[22], data[86], data[150], data[214], data[278], data[342], data[406], data[470]});
316 values[i_pcolumnv_b(3, 6, block_k, n_blocks)] = Vec({data[30], data[94], data[158], data[222], data[286], data[350], data[414], data[478]});
317 values[i_pcolumnv_b(4, 6, block_k, n_blocks)] = Vec({data[38], data[102], data[166], data[230], data[294], data[358], data[422], data[486]});
318 values[i_pcolumnv_b(5, 6, block_k, n_blocks)] = Vec({data[46], data[110], data[174], data[238], data[302], data[366], data[430], data[494]});
319 values[i_pcolumnv_b(6, 6, block_k, n_blocks)] = Vec({data[54], data[118], data[182], data[246], data[310], data[374], data[438], data[502]});
320 values[i_pcolumnv_b(7, 6, block_k, n_blocks)] = Vec({data[62], data[126], data[190], data[254], data[318], data[382], data[446], data[510]});
321 values[i_pcolumnv_b(0, 7, block_k, n_blocks)] = Vec({data[7], data[71], data[135], data[199], data[263], data[327], data[391], data[455]});
322 values[i_pcolumnv_b(1, 7, block_k, n_blocks)] = Vec({data[15], data[79], data[143], data[207], data[271], data[335], data[399], data[463]});
323 values[i_pcolumnv_b(2, 7, block_k, n_blocks)] = Vec({data[23], data[87], data[151], data[215], data[279], data[343], data[407], data[471]});
324 values[i_pcolumnv_b(3, 7, block_k, n_blocks)] = Vec({data[31], data[95], data[159], data[223], data[287], data[351], data[415], data[479]});
325 values[i_pcolumnv_b(4, 7, block_k, n_blocks)] = Vec({data[39], data[103], data[167], data[231], data[295], data[359], data[423], data[487]});
326 values[i_pcolumnv_b(5, 7, block_k, n_blocks)] = Vec({data[47], data[111], data[175], data[239], data[303], data[367], data[431], data[495]});
327 values[i_pcolumnv_b(6, 7, block_k, n_blocks)] = Vec({data[55], data[119], data[183], data[247], data[311], data[375], data[439], data[503]});
328 values[i_pcolumnv_b(7, 7, block_k, n_blocks)] = Vec({data[63], data[127], data[191], data[255], data[319], data[383], data[447], data[511]});
329 #elif (defined(VEC16F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC16F_SVE) || defined(VEC16D_SVE)) && VECL == 16
330 // WID 8, vecl 16
331 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[64], data[128], data[192], data[256], data[320], data[384], data[448], data[8], data[72], data[136], data[200], data[264], data[328], data[392], data[456]});
332 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[16], data[80], data[144], data[208], data[272], data[336], data[400], data[464], data[24], data[88], data[152], data[216], data[280], data[344], data[408], data[472]});
333 values[i_pcolumnv_b(2, 0, block_k, n_blocks)] = Vec({data[32], data[96], data[160], data[224], data[288], data[352], data[416], data[480], data[40], data[104], data[168], data[232], data[296], data[360], data[424], data[488]});
334 values[i_pcolumnv_b(3, 0, block_k, n_blocks)] = Vec({data[48], data[112], data[176], data[240], data[304], data[368], data[432], data[496], data[56], data[120], data[184], data[248], data[312], data[376], data[440], data[504]});
335 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[1], data[65], data[129], data[193], data[257], data[321], data[385], data[449], data[9], data[73], data[137], data[201], data[265], data[329], data[393], data[457]});
336 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[17], data[81], data[145], data[209], data[273], data[337], data[401], data[465], data[25], data[89], data[153], data[217], data[281], data[345], data[409], data[473]});
337 values[i_pcolumnv_b(2, 1, block_k, n_blocks)] = Vec({data[33], data[97], data[161], data[225], data[289], data[353], data[417], data[481], data[41], data[105], data[169], data[233], data[297], data[361], data[425], data[489]});
338 values[i_pcolumnv_b(3, 1, block_k, n_blocks)] = Vec({data[49], data[113], data[177], data[241], data[305], data[369], data[433], data[497], data[57], data[121], data[185], data[249], data[313], data[377], data[441], data[505]});
339 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[2], data[66], data[130], data[194], data[258], data[322], data[386], data[450], data[10], data[74], data[138], data[202], data[266], data[330], data[394], data[458]});
340 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[18], data[82], data[146], data[210], data[274], data[338], data[402], data[466], data[26], data[90], data[154], data[218], data[282], data[346], data[410], data[474]});
341 values[i_pcolumnv_b(2, 2, block_k, n_blocks)] = Vec({data[34], data[98], data[162], data[226], data[290], data[354], data[418], data[482], data[42], data[106], data[170], data[234], data[298], data[362], data[426], data[490]});
342 values[i_pcolumnv_b(3, 2, block_k, n_blocks)] = Vec({data[50], data[114], data[178], data[242], data[306], data[370], data[434], data[498], data[58], data[122], data[186], data[250], data[314], data[378], data[442], data[506]});
343 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[3], data[67], data[131], data[195], data[259], data[323], data[387], data[451], data[11], data[75], data[139], data[203], data[267], data[331], data[395], data[459]});
344 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[19], data[83], data[147], data[211], data[275], data[339], data[403], data[467], data[27], data[91], data[155], data[219], data[283], data[347], data[411], data[475]});
345 values[i_pcolumnv_b(2, 3, block_k, n_blocks)] = Vec({data[35], data[99], data[163], data[227], data[291], data[355], data[419], data[483], data[43], data[107], data[171], data[235], data[299], data[363], data[427], data[491]});
346 values[i_pcolumnv_b(3, 3, block_k, n_blocks)] = Vec({data[51], data[115], data[179], data[243], data[307], data[371], data[435], data[499], data[59], data[123], data[187], data[251], data[315], data[379], data[443], data[507]});
347 values[i_pcolumnv_b(0, 4, block_k, n_blocks)] = Vec({data[4], data[68], data[132], data[196], data[260], data[324], data[388], data[452], data[12], data[76], data[140], data[204], data[268], data[332], data[396], data[460]});
348 values[i_pcolumnv_b(1, 4, block_k, n_blocks)] = Vec({data[20], data[84], data[148], data[212], data[276], data[340], data[404], data[468], data[28], data[92], data[156], data[220], data[284], data[348], data[412], data[476]});
349 values[i_pcolumnv_b(2, 4, block_k, n_blocks)] = Vec({data[36], data[100], data[164], data[228], data[292], data[356], data[420], data[484], data[44], data[108], data[172], data[236], data[300], data[364], data[428], data[492]});
350 values[i_pcolumnv_b(3, 4, block_k, n_blocks)] = Vec({data[52], data[116], data[180], data[244], data[308], data[372], data[436], data[500], data[60], data[124], data[188], data[252], data[316], data[380], data[444], data[508]});
351 values[i_pcolumnv_b(0, 5, block_k, n_blocks)] = Vec({data[5], data[69], data[133], data[197], data[261], data[325], data[389], data[453], data[13], data[77], data[141], data[205], data[269], data[333], data[397], data[461]});
352 values[i_pcolumnv_b(1, 5, block_k, n_blocks)] = Vec({data[21], data[85], data[149], data[213], data[277], data[341], data[405], data[469], data[29], data[93], data[157], data[221], data[285], data[349], data[413], data[477]});
353 values[i_pcolumnv_b(2, 5, block_k, n_blocks)] = Vec({data[37], data[101], data[165], data[229], data[293], data[357], data[421], data[485], data[45], data[109], data[173], data[237], data[301], data[365], data[429], data[493]});
354 values[i_pcolumnv_b(3, 5, block_k, n_blocks)] = Vec({data[53], data[117], data[181], data[245], data[309], data[373], data[437], data[501], data[61], data[125], data[189], data[253], data[317], data[381], data[445], data[509]});
355 values[i_pcolumnv_b(0, 6, block_k, n_blocks)] = Vec({data[6], data[70], data[134], data[198], data[262], data[326], data[390], data[454], data[14], data[78], data[142], data[206], data[270], data[334], data[398], data[462]});
356 values[i_pcolumnv_b(1, 6, block_k, n_blocks)] = Vec({data[22], data[86], data[150], data[214], data[278], data[342], data[406], data[470], data[30], data[94], data[158], data[222], data[286], data[350], data[414], data[478]});
357 values[i_pcolumnv_b(2, 6, block_k, n_blocks)] = Vec({data[38], data[102], data[166], data[230], data[294], data[358], data[422], data[486], data[46], data[110], data[174], data[238], data[302], data[366], data[430], data[494]});
358 values[i_pcolumnv_b(3, 6, block_k, n_blocks)] = Vec({data[54], data[118], data[182], data[246], data[310], data[374], data[438], data[502], data[62], data[126], data[190], data[254], data[318], data[382], data[446], data[510]});
359 values[i_pcolumnv_b(0, 7, block_k, n_blocks)] = Vec({data[7], data[71], data[135], data[199], data[263], data[327], data[391], data[455], data[15], data[79], data[143], data[207], data[271], data[335], data[399], data[463]});
360 values[i_pcolumnv_b(1, 7, block_k, n_blocks)] = Vec({data[23], data[87], data[151], data[215], data[279], data[343], data[407], data[471], data[31], data[95], data[159], data[223], data[287], data[351], data[415], data[479]});
361 values[i_pcolumnv_b(2, 7, block_k, n_blocks)] = Vec({data[39], data[103], data[167], data[231], data[295], data[359], data[423], data[487], data[47], data[111], data[175], data[239], data[303], data[367], data[431], data[495]});
362 values[i_pcolumnv_b(3, 7, block_k, n_blocks)] = Vec({data[55], data[119], data[183], data[247], data[311], data[375], data[439], data[503], data[63], data[127], data[191], data[255], data[319], data[383], data[447], data[511]});
363 #elif (defined(VEC_FALLBACK_GENERIC) || defined(VEC32F_SVE) || defined(VEC32D_SVE)) && VECL == 32
364 // WID 8, vecl 32
365 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[64], data[128], data[192], data[256], data[320], data[384], data[448], data[8], data[72], data[136], data[200], data[264], data[328], data[392], data[456], data[16], data[80], data[144], data[208], data[272], data[336], data[400], data[464], data[24], data[88], data[152], data[216], data[280], data[344], data[408], data[472]});
366 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[32], data[96], data[160], data[224], data[288], data[352], data[416], data[480], data[40], data[104], data[168], data[232], data[296], data[360], data[424], data[488], data[48], data[112], data[176], data[240], data[304], data[368], data[432], data[496], data[56], data[120], data[184], data[248], data[312], data[376], data[440], data[504]});
367 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[1], data[65], data[129], data[193], data[257], data[321], data[385], data[449], data[9], data[73], data[137], data[201], data[265], data[329], data[393], data[457], data[17], data[81], data[145], data[209], data[273], data[337], data[401], data[465], data[25], data[89], data[153], data[217], data[281], data[345], data[409], data[473]});
368 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[33], data[97], data[161], data[225], data[289], data[353], data[417], data[481], data[41], data[105], data[169], data[233], data[297], data[361], data[425], data[489], data[49], data[113], data[177], data[241], data[305], data[369], data[433], data[497], data[57], data[121], data[185], data[249], data[313], data[377], data[441], data[505]});
369 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[2], data[66], data[130], data[194], data[258], data[322], data[386], data[450], data[10], data[74], data[138], data[202], data[266], data[330], data[394], data[458], data[18], data[82], data[146], data[210], data[274], data[338], data[402], data[466], data[26], data[90], data[154], data[218], data[282], data[346], data[410], data[474]});
370 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[34], data[98], data[162], data[226], data[290], data[354], data[418], data[482], data[42], data[106], data[170], data[234], data[298], data[362], data[426], data[490], data[50], data[114], data[178], data[242], data[306], data[370], data[434], data[498], data[58], data[122], data[186], data[250], data[314], data[378], data[442], data[506]});
371 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[3], data[67], data[131], data[195], data[259], data[323], data[387], data[451], data[11], data[75], data[139], data[203], data[267], data[331], data[395], data[459], data[19], data[83], data[147], data[211], data[275], data[339], data[403], data[467], data[27], data[91], data[155], data[219], data[283], data[347], data[411], data[475]});
372 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[35], data[99], data[163], data[227], data[291], data[355], data[419], data[483], data[43], data[107], data[171], data[235], data[299], data[363], data[427], data[491], data[51], data[115], data[179], data[243], data[307], data[371], data[435], data[499], data[59], data[123], data[187], data[251], data[315], data[379], data[443], data[507]});
373 values[i_pcolumnv_b(0, 4, block_k, n_blocks)] = Vec({data[4], data[68], data[132], data[196], data[260], data[324], data[388], data[452], data[12], data[76], data[140], data[204], data[268], data[332], data[396], data[460], data[20], data[84], data[148], data[212], data[276], data[340], data[404], data[468], data[28], data[92], data[156], data[220], data[284], data[348], data[412], data[476]});
374 values[i_pcolumnv_b(1, 4, block_k, n_blocks)] = Vec({data[36], data[100], data[164], data[228], data[292], data[356], data[420], data[484], data[44], data[108], data[172], data[236], data[300], data[364], data[428], data[492], data[52], data[116], data[180], data[244], data[308], data[372], data[436], data[500], data[60], data[124], data[188], data[252], data[316], data[380], data[444], data[508]});
375 values[i_pcolumnv_b(0, 5, block_k, n_blocks)] = Vec({data[5], data[69], data[133], data[197], data[261], data[325], data[389], data[453], data[13], data[77], data[141], data[205], data[269], data[333], data[397], data[461], data[21], data[85], data[149], data[213], data[277], data[341], data[405], data[469], data[29], data[93], data[157], data[221], data[285], data[349], data[413], data[477]});
376 values[i_pcolumnv_b(1, 5, block_k, n_blocks)] = Vec({data[37], data[101], data[165], data[229], data[293], data[357], data[421], data[485], data[45], data[109], data[173], data[237], data[301], data[365], data[429], data[493], data[53], data[117], data[181], data[245], data[309], data[373], data[437], data[501], data[61], data[125], data[189], data[253], data[317], data[381], data[445], data[509]});
377 values[i_pcolumnv_b(0, 6, block_k, n_blocks)] = Vec({data[6], data[70], data[134], data[198], data[262], data[326], data[390], data[454], data[14], data[78], data[142], data[206], data[270], data[334], data[398], data[462], data[22], data[86], data[150], data[214], data[278], data[342], data[406], data[470], data[30], data[94], data[158], data[222], data[286], data[350], data[414], data[478]});
378 values[i_pcolumnv_b(1, 6, block_k, n_blocks)] = Vec({data[38], data[102], data[166], data[230], data[294], data[358], data[422], data[486], data[46], data[110], data[174], data[238], data[302], data[366], data[430], data[494], data[54], data[118], data[182], data[246], data[310], data[374], data[438], data[502], data[62], data[126], data[190], data[254], data[318], data[382], data[446], data[510]});
379 values[i_pcolumnv_b(0, 7, block_k, n_blocks)] = Vec({data[7], data[71], data[135], data[199], data[263], data[327], data[391], data[455], data[15], data[79], data[143], data[207], data[271], data[335], data[399], data[463], data[23], data[87], data[151], data[215], data[279], data[343], data[407], data[471], data[31], data[95], data[159], data[223], data[287], data[351], data[415], data[479]});
380 values[i_pcolumnv_b(1, 7, block_k, n_blocks)] = Vec({data[39], data[103], data[167], data[231], data[295], data[359], data[423], data[487], data[47], data[111], data[175], data[239], data[303], data[367], data[431], data[495], data[55], data[119], data[183], data[247], data[311], data[375], data[439], data[503], data[63], data[127], data[191], data[255], data[319], data[383], data[447], data[511]});
381 #elif (defined(VEC_FALLBACK_GENERIC) || defined(VEC64F_SVE) || defined(VEC64D_SVE)) && VECL == 64
382 // WID 8, vecl 64
383 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[64], data[128], data[192], data[256], data[320], data[384], data[448], data[8], data[72], data[136], data[200], data[264], data[328], data[392], data[456], data[16], data[80], data[144], data[208], data[272], data[336], data[400], data[464], data[24], data[88], data[152], data[216], data[280], data[344], data[408], data[472], data[32], data[96], data[160], data[224], data[288], data[352], data[416], data[480], data[40], data[104], data[168], data[232], data[296], data[360], data[424], data[488], data[48], data[112], data[176], data[240], data[304], data[368], data[432], data[496], data[56], data[120], data[184], data[248], data[312], data[376], data[440], data[504]});
384 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[1], data[65], data[129], data[193], data[257], data[321], data[385], data[449], data[9], data[73], data[137], data[201], data[265], data[329], data[393], data[457], data[17], data[81], data[145], data[209], data[273], data[337], data[401], data[465], data[25], data[89], data[153], data[217], data[281], data[345], data[409], data[473], data[33], data[97], data[161], data[225], data[289], data[353], data[417], data[481], data[41], data[105], data[169], data[233], data[297], data[361], data[425], data[489], data[49], data[113], data[177], data[241], data[305], data[369], data[433], data[497], data[57], data[121], data[185], data[249], data[313], data[377], data[441], data[505]});
385 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[2], data[66], data[130], data[194], data[258], data[322], data[386], data[450], data[10], data[74], data[138], data[202], data[266], data[330], data[394], data[458], data[18], data[82], data[146], data[210], data[274], data[338], data[402], data[466], data[26], data[90], data[154], data[218], data[282], data[346], data[410], data[474], data[34], data[98], data[162], data[226], data[290], data[354], data[418], data[482], data[42], data[106], data[170], data[234], data[298], data[362], data[426], data[490], data[50], data[114], data[178], data[242], data[306], data[370], data[434], data[498], data[58], data[122], data[186], data[250], data[314], data[378], data[442], data[506]});
386 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[3], data[67], data[131], data[195], data[259], data[323], data[387], data[451], data[11], data[75], data[139], data[203], data[267], data[331], data[395], data[459], data[19], data[83], data[147], data[211], data[275], data[339], data[403], data[467], data[27], data[91], data[155], data[219], data[283], data[347], data[411], data[475], data[35], data[99], data[163], data[227], data[291], data[355], data[419], data[483], data[43], data[107], data[171], data[235], data[299], data[363], data[427], data[491], data[51], data[115], data[179], data[243], data[307], data[371], data[435], data[499], data[59], data[123], data[187], data[251], data[315], data[379], data[443], data[507]});
387 values[i_pcolumnv_b(0, 4, block_k, n_blocks)] = Vec({data[4], data[68], data[132], data[196], data[260], data[324], data[388], data[452], data[12], data[76], data[140], data[204], data[268], data[332], data[396], data[460], data[20], data[84], data[148], data[212], data[276], data[340], data[404], data[468], data[28], data[92], data[156], data[220], data[284], data[348], data[412], data[476], data[36], data[100], data[164], data[228], data[292], data[356], data[420], data[484], data[44], data[108], data[172], data[236], data[300], data[364], data[428], data[492], data[52], data[116], data[180], data[244], data[308], data[372], data[436], data[500], data[60], data[124], data[188], data[252], data[316], data[380], data[444], data[508]});
388 values[i_pcolumnv_b(0, 5, block_k, n_blocks)] = Vec({data[5], data[69], data[133], data[197], data[261], data[325], data[389], data[453], data[13], data[77], data[141], data[205], data[269], data[333], data[397], data[461], data[21], data[85], data[149], data[213], data[277], data[341], data[405], data[469], data[29], data[93], data[157], data[221], data[285], data[349], data[413], data[477], data[37], data[101], data[165], data[229], data[293], data[357], data[421], data[485], data[45], data[109], data[173], data[237], data[301], data[365], data[429], data[493], data[53], data[117], data[181], data[245], data[309], data[373], data[437], data[501], data[61], data[125], data[189], data[253], data[317], data[381], data[445], data[509]});
389 values[i_pcolumnv_b(0, 6, block_k, n_blocks)] = Vec({data[6], data[70], data[134], data[198], data[262], data[326], data[390], data[454], data[14], data[78], data[142], data[206], data[270], data[334], data[398], data[462], data[22], data[86], data[150], data[214], data[278], data[342], data[406], data[470], data[30], data[94], data[158], data[222], data[286], data[350], data[414], data[478], data[38], data[102], data[166], data[230], data[294], data[358], data[422], data[486], data[46], data[110], data[174], data[238], data[302], data[366], data[430], data[494], data[54], data[118], data[182], data[246], data[310], data[374], data[438], data[502], data[62], data[126], data[190], data[254], data[318], data[382], data[446], data[510]});
390 values[i_pcolumnv_b(0, 7, block_k, n_blocks)] = Vec({data[7], data[71], data[135], data[199], data[263], data[327], data[391], data[455], data[15], data[79], data[143], data[207], data[271], data[335], data[399], data[463], data[23], data[87], data[151], data[215], data[279], data[343], data[407], data[471], data[31], data[95], data[159], data[223], data[287], data[351], data[415], data[479], data[39], data[103], data[167], data[231], data[295], data[359], data[423], data[487], data[47], data[111], data[175], data[239], data[303], data[367], data[431], data[495], data[55], data[119], data[183], data[247], data[311], data[375], data[439], data[503], data[63], data[127], data[191], data[255], data[319], data[383], data[447], data[511]});
391 #else // Fell through, never fall into this particular pit again
392 std::cerr << "Undefined VECTORCLASS flag or implementation missing in loadColumnBlockData() before " << __FILE__ << ":" << __LINE__ << std::endl;
393 abort();
394 #endif
395 //zero old output data
396 for (uint i=0; i<WID3; ++i) {
397 data[i]=0;
398 }
399 }
400 }
401 if(dimension == 1) {
402 for (vmesh::LocalID block_k=0; block_k<n_blocks; ++block_k) {
403 Realf* __restrict__ data = blockContainer->getData(vmesh->getLocalID(blocks[block_k]));
404 #if (defined(VEC8D_AGNER) || defined(VEC8F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC8F_SVE) || defined(VEC8D_SVE)) && VECL == 8
405 // WID 8, vecl 8
406 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]});
407 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[64], data[65], data[66], data[67], data[68], data[69], data[70], data[71]});
408 values[i_pcolumnv_b(2, 0, block_k, n_blocks)] = Vec({data[128], data[129], data[130], data[131], data[132], data[133], data[134], data[135]});
409 values[i_pcolumnv_b(3, 0, block_k, n_blocks)] = Vec({data[192], data[193], data[194], data[195], data[196], data[197], data[198], data[199]});
410 values[i_pcolumnv_b(4, 0, block_k, n_blocks)] = Vec({data[256], data[257], data[258], data[259], data[260], data[261], data[262], data[263]});
411 values[i_pcolumnv_b(5, 0, block_k, n_blocks)] = Vec({data[320], data[321], data[322], data[323], data[324], data[325], data[326], data[327]});
412 values[i_pcolumnv_b(6, 0, block_k, n_blocks)] = Vec({data[384], data[385], data[386], data[387], data[388], data[389], data[390], data[391]});
413 values[i_pcolumnv_b(7, 0, block_k, n_blocks)] = Vec({data[448], data[449], data[450], data[451], data[452], data[453], data[454], data[455]});
414 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15]});
415 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[72], data[73], data[74], data[75], data[76], data[77], data[78], data[79]});
416 values[i_pcolumnv_b(2, 1, block_k, n_blocks)] = Vec({data[136], data[137], data[138], data[139], data[140], data[141], data[142], data[143]});
417 values[i_pcolumnv_b(3, 1, block_k, n_blocks)] = Vec({data[200], data[201], data[202], data[203], data[204], data[205], data[206], data[207]});
418 values[i_pcolumnv_b(4, 1, block_k, n_blocks)] = Vec({data[264], data[265], data[266], data[267], data[268], data[269], data[270], data[271]});
419 values[i_pcolumnv_b(5, 1, block_k, n_blocks)] = Vec({data[328], data[329], data[330], data[331], data[332], data[333], data[334], data[335]});
420 values[i_pcolumnv_b(6, 1, block_k, n_blocks)] = Vec({data[392], data[393], data[394], data[395], data[396], data[397], data[398], data[399]});
421 values[i_pcolumnv_b(7, 1, block_k, n_blocks)] = Vec({data[456], data[457], data[458], data[459], data[460], data[461], data[462], data[463]});
422 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[16], data[17], data[18], data[19], data[20], data[21], data[22], data[23]});
423 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[80], data[81], data[82], data[83], data[84], data[85], data[86], data[87]});
424 values[i_pcolumnv_b(2, 2, block_k, n_blocks)] = Vec({data[144], data[145], data[146], data[147], data[148], data[149], data[150], data[151]});
425 values[i_pcolumnv_b(3, 2, block_k, n_blocks)] = Vec({data[208], data[209], data[210], data[211], data[212], data[213], data[214], data[215]});
426 values[i_pcolumnv_b(4, 2, block_k, n_blocks)] = Vec({data[272], data[273], data[274], data[275], data[276], data[277], data[278], data[279]});
427 values[i_pcolumnv_b(5, 2, block_k, n_blocks)] = Vec({data[336], data[337], data[338], data[339], data[340], data[341], data[342], data[343]});
428 values[i_pcolumnv_b(6, 2, block_k, n_blocks)] = Vec({data[400], data[401], data[402], data[403], data[404], data[405], data[406], data[407]});
429 values[i_pcolumnv_b(7, 2, block_k, n_blocks)] = Vec({data[464], data[465], data[466], data[467], data[468], data[469], data[470], data[471]});
430 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[24], data[25], data[26], data[27], data[28], data[29], data[30], data[31]});
431 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[88], data[89], data[90], data[91], data[92], data[93], data[94], data[95]});
432 values[i_pcolumnv_b(2, 3, block_k, n_blocks)] = Vec({data[152], data[153], data[154], data[155], data[156], data[157], data[158], data[159]});
433 values[i_pcolumnv_b(3, 3, block_k, n_blocks)] = Vec({data[216], data[217], data[218], data[219], data[220], data[221], data[222], data[223]});
434 values[i_pcolumnv_b(4, 3, block_k, n_blocks)] = Vec({data[280], data[281], data[282], data[283], data[284], data[285], data[286], data[287]});
435 values[i_pcolumnv_b(5, 3, block_k, n_blocks)] = Vec({data[344], data[345], data[346], data[347], data[348], data[349], data[350], data[351]});
436 values[i_pcolumnv_b(6, 3, block_k, n_blocks)] = Vec({data[408], data[409], data[410], data[411], data[412], data[413], data[414], data[415]});
437 values[i_pcolumnv_b(7, 3, block_k, n_blocks)] = Vec({data[472], data[473], data[474], data[475], data[476], data[477], data[478], data[479]});
438 values[i_pcolumnv_b(0, 4, block_k, n_blocks)] = Vec({data[32], data[33], data[34], data[35], data[36], data[37], data[38], data[39]});
439 values[i_pcolumnv_b(1, 4, block_k, n_blocks)] = Vec({data[96], data[97], data[98], data[99], data[100], data[101], data[102], data[103]});
440 values[i_pcolumnv_b(2, 4, block_k, n_blocks)] = Vec({data[160], data[161], data[162], data[163], data[164], data[165], data[166], data[167]});
441 values[i_pcolumnv_b(3, 4, block_k, n_blocks)] = Vec({data[224], data[225], data[226], data[227], data[228], data[229], data[230], data[231]});
442 values[i_pcolumnv_b(4, 4, block_k, n_blocks)] = Vec({data[288], data[289], data[290], data[291], data[292], data[293], data[294], data[295]});
443 values[i_pcolumnv_b(5, 4, block_k, n_blocks)] = Vec({data[352], data[353], data[354], data[355], data[356], data[357], data[358], data[359]});
444 values[i_pcolumnv_b(6, 4, block_k, n_blocks)] = Vec({data[416], data[417], data[418], data[419], data[420], data[421], data[422], data[423]});
445 values[i_pcolumnv_b(7, 4, block_k, n_blocks)] = Vec({data[480], data[481], data[482], data[483], data[484], data[485], data[486], data[487]});
446 values[i_pcolumnv_b(0, 5, block_k, n_blocks)] = Vec({data[40], data[41], data[42], data[43], data[44], data[45], data[46], data[47]});
447 values[i_pcolumnv_b(1, 5, block_k, n_blocks)] = Vec({data[104], data[105], data[106], data[107], data[108], data[109], data[110], data[111]});
448 values[i_pcolumnv_b(2, 5, block_k, n_blocks)] = Vec({data[168], data[169], data[170], data[171], data[172], data[173], data[174], data[175]});
449 values[i_pcolumnv_b(3, 5, block_k, n_blocks)] = Vec({data[232], data[233], data[234], data[235], data[236], data[237], data[238], data[239]});
450 values[i_pcolumnv_b(4, 5, block_k, n_blocks)] = Vec({data[296], data[297], data[298], data[299], data[300], data[301], data[302], data[303]});
451 values[i_pcolumnv_b(5, 5, block_k, n_blocks)] = Vec({data[360], data[361], data[362], data[363], data[364], data[365], data[366], data[367]});
452 values[i_pcolumnv_b(6, 5, block_k, n_blocks)] = Vec({data[424], data[425], data[426], data[427], data[428], data[429], data[430], data[431]});
453 values[i_pcolumnv_b(7, 5, block_k, n_blocks)] = Vec({data[488], data[489], data[490], data[491], data[492], data[493], data[494], data[495]});
454 values[i_pcolumnv_b(0, 6, block_k, n_blocks)] = Vec({data[48], data[49], data[50], data[51], data[52], data[53], data[54], data[55]});
455 values[i_pcolumnv_b(1, 6, block_k, n_blocks)] = Vec({data[112], data[113], data[114], data[115], data[116], data[117], data[118], data[119]});
456 values[i_pcolumnv_b(2, 6, block_k, n_blocks)] = Vec({data[176], data[177], data[178], data[179], data[180], data[181], data[182], data[183]});
457 values[i_pcolumnv_b(3, 6, block_k, n_blocks)] = Vec({data[240], data[241], data[242], data[243], data[244], data[245], data[246], data[247]});
458 values[i_pcolumnv_b(4, 6, block_k, n_blocks)] = Vec({data[304], data[305], data[306], data[307], data[308], data[309], data[310], data[311]});
459 values[i_pcolumnv_b(5, 6, block_k, n_blocks)] = Vec({data[368], data[369], data[370], data[371], data[372], data[373], data[374], data[375]});
460 values[i_pcolumnv_b(6, 6, block_k, n_blocks)] = Vec({data[432], data[433], data[434], data[435], data[436], data[437], data[438], data[439]});
461 values[i_pcolumnv_b(7, 6, block_k, n_blocks)] = Vec({data[496], data[497], data[498], data[499], data[500], data[501], data[502], data[503]});
462 values[i_pcolumnv_b(0, 7, block_k, n_blocks)] = Vec({data[56], data[57], data[58], data[59], data[60], data[61], data[62], data[63]});
463 values[i_pcolumnv_b(1, 7, block_k, n_blocks)] = Vec({data[120], data[121], data[122], data[123], data[124], data[125], data[126], data[127]});
464 values[i_pcolumnv_b(2, 7, block_k, n_blocks)] = Vec({data[184], data[185], data[186], data[187], data[188], data[189], data[190], data[191]});
465 values[i_pcolumnv_b(3, 7, block_k, n_blocks)] = Vec({data[248], data[249], data[250], data[251], data[252], data[253], data[254], data[255]});
466 values[i_pcolumnv_b(4, 7, block_k, n_blocks)] = Vec({data[312], data[313], data[314], data[315], data[316], data[317], data[318], data[319]});
467 values[i_pcolumnv_b(5, 7, block_k, n_blocks)] = Vec({data[376], data[377], data[378], data[379], data[380], data[381], data[382], data[383]});
468 values[i_pcolumnv_b(6, 7, block_k, n_blocks)] = Vec({data[440], data[441], data[442], data[443], data[444], data[445], data[446], data[447]});
469 values[i_pcolumnv_b(7, 7, block_k, n_blocks)] = Vec({data[504], data[505], data[506], data[507], data[508], data[509], data[510], data[511]});
470 #elif (defined(VEC16F_AGNER) || defined(VEC_FALLBACK_GENERIC) || defined(VEC16F_SVE) || defined(VEC16D_SVE)) && VECL == 16
471 // WID 8, vecl 16
472 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[64], data[65], data[66], data[67], data[68], data[69], data[70], data[71]});
473 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[128], data[129], data[130], data[131], data[132], data[133], data[134], data[135], data[192], data[193], data[194], data[195], data[196], data[197], data[198], data[199]});
474 values[i_pcolumnv_b(2, 0, block_k, n_blocks)] = Vec({data[256], data[257], data[258], data[259], data[260], data[261], data[262], data[263], data[320], data[321], data[322], data[323], data[324], data[325], data[326], data[327]});
475 values[i_pcolumnv_b(3, 0, block_k, n_blocks)] = Vec({data[384], data[385], data[386], data[387], data[388], data[389], data[390], data[391], data[448], data[449], data[450], data[451], data[452], data[453], data[454], data[455]});
476 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15], data[72], data[73], data[74], data[75], data[76], data[77], data[78], data[79]});
477 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[136], data[137], data[138], data[139], data[140], data[141], data[142], data[143], data[200], data[201], data[202], data[203], data[204], data[205], data[206], data[207]});
478 values[i_pcolumnv_b(2, 1, block_k, n_blocks)] = Vec({data[264], data[265], data[266], data[267], data[268], data[269], data[270], data[271], data[328], data[329], data[330], data[331], data[332], data[333], data[334], data[335]});
479 values[i_pcolumnv_b(3, 1, block_k, n_blocks)] = Vec({data[392], data[393], data[394], data[395], data[396], data[397], data[398], data[399], data[456], data[457], data[458], data[459], data[460], data[461], data[462], data[463]});
480 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[16], data[17], data[18], data[19], data[20], data[21], data[22], data[23], data[80], data[81], data[82], data[83], data[84], data[85], data[86], data[87]});
481 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[144], data[145], data[146], data[147], data[148], data[149], data[150], data[151], data[208], data[209], data[210], data[211], data[212], data[213], data[214], data[215]});
482 values[i_pcolumnv_b(2, 2, block_k, n_blocks)] = Vec({data[272], data[273], data[274], data[275], data[276], data[277], data[278], data[279], data[336], data[337], data[338], data[339], data[340], data[341], data[342], data[343]});
483 values[i_pcolumnv_b(3, 2, block_k, n_blocks)] = Vec({data[400], data[401], data[402], data[403], data[404], data[405], data[406], data[407], data[464], data[465], data[466], data[467], data[468], data[469], data[470], data[471]});
484 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[24], data[25], data[26], data[27], data[28], data[29], data[30], data[31], data[88], data[89], data[90], data[91], data[92], data[93], data[94], data[95]});
485 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[152], data[153], data[154], data[155], data[156], data[157], data[158], data[159], data[216], data[217], data[218], data[219], data[220], data[221], data[222], data[223]});
486 values[i_pcolumnv_b(2, 3, block_k, n_blocks)] = Vec({data[280], data[281], data[282], data[283], data[284], data[285], data[286], data[287], data[344], data[345], data[346], data[347], data[348], data[349], data[350], data[351]});
487 values[i_pcolumnv_b(3, 3, block_k, n_blocks)] = Vec({data[408], data[409], data[410], data[411], data[412], data[413], data[414], data[415], data[472], data[473], data[474], data[475], data[476], data[477], data[478], data[479]});
488 values[i_pcolumnv_b(0, 4, block_k, n_blocks)] = Vec({data[32], data[33], data[34], data[35], data[36], data[37], data[38], data[39], data[96], data[97], data[98], data[99], data[100], data[101], data[102], data[103]});
489 values[i_pcolumnv_b(1, 4, block_k, n_blocks)] = Vec({data[160], data[161], data[162], data[163], data[164], data[165], data[166], data[167], data[224], data[225], data[226], data[227], data[228], data[229], data[230], data[231]});
490 values[i_pcolumnv_b(2, 4, block_k, n_blocks)] = Vec({data[288], data[289], data[290], data[291], data[292], data[293], data[294], data[295], data[352], data[353], data[354], data[355], data[356], data[357], data[358], data[359]});
491 values[i_pcolumnv_b(3, 4, block_k, n_blocks)] = Vec({data[416], data[417], data[418], data[419], data[420], data[421], data[422], data[423], data[480], data[481], data[482], data[483], data[484], data[485], data[486], data[487]});
492 values[i_pcolumnv_b(0, 5, block_k, n_blocks)] = Vec({data[40], data[41], data[42], data[43], data[44], data[45], data[46], data[47], data[104], data[105], data[106], data[107], data[108], data[109], data[110], data[111]});
493 values[i_pcolumnv_b(1, 5, block_k, n_blocks)] = Vec({data[168], data[169], data[170], data[171], data[172], data[173], data[174], data[175], data[232], data[233], data[234], data[235], data[236], data[237], data[238], data[239]});
494 values[i_pcolumnv_b(2, 5, block_k, n_blocks)] = Vec({data[296], data[297], data[298], data[299], data[300], data[301], data[302], data[303], data[360], data[361], data[362], data[363], data[364], data[365], data[366], data[367]});
495 values[i_pcolumnv_b(3, 5, block_k, n_blocks)] = Vec({data[424], data[425], data[426], data[427], data[428], data[429], data[430], data[431], data[488], data[489], data[490], data[491], data[492], data[493], data[494], data[495]});
496 values[i_pcolumnv_b(0, 6, block_k, n_blocks)] = Vec({data[48], data[49], data[50], data[51], data[52], data[53], data[54], data[55], data[112], data[113], data[114], data[115], data[116], data[117], data[118], data[119]});
497 values[i_pcolumnv_b(1, 6, block_k, n_blocks)] = Vec({data[176], data[177], data[178], data[179], data[180], data[181], data[182], data[183], data[240], data[241], data[242], data[243], data[244], data[245], data[246], data[247]});
498 values[i_pcolumnv_b(2, 6, block_k, n_blocks)] = Vec({data[304], data[305], data[306], data[307], data[308], data[309], data[310], data[311], data[368], data[369], data[370], data[371], data[372], data[373], data[374], data[375]});
499 values[i_pcolumnv_b(3, 6, block_k, n_blocks)] = Vec({data[432], data[433], data[434], data[435], data[436], data[437], data[438], data[439], data[496], data[497], data[498], data[499], data[500], data[501], data[502], data[503]});
500 values[i_pcolumnv_b(0, 7, block_k, n_blocks)] = Vec({data[56], data[57], data[58], data[59], data[60], data[61], data[62], data[63], data[120], data[121], data[122], data[123], data[124], data[125], data[126], data[127]});
501 values[i_pcolumnv_b(1, 7, block_k, n_blocks)] = Vec({data[184], data[185], data[186], data[187], data[188], data[189], data[190], data[191], data[248], data[249], data[250], data[251], data[252], data[253], data[254], data[255]});
502 values[i_pcolumnv_b(2, 7, block_k, n_blocks)] = Vec({data[312], data[313], data[314], data[315], data[316], data[317], data[318], data[319], data[376], data[377], data[378], data[379], data[380], data[381], data[382], data[383]});
503 values[i_pcolumnv_b(3, 7, block_k, n_blocks)] = Vec({data[440], data[441], data[442], data[443], data[444], data[445], data[446], data[447], data[504], data[505], data[506], data[507], data[508], data[509], data[510], data[511]});
504 #elif (defined(VEC_FALLBACK_GENERIC) || defined(VEC32F_SVE) || defined(VEC32D_SVE)) && VECL == 32
505 // WID 8, vecl 32
506 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[64], data[65], data[66], data[67], data[68], data[69], data[70], data[71], data[128], data[129], data[130], data[131], data[132], data[133], data[134], data[135], data[192], data[193], data[194], data[195], data[196], data[197], data[198], data[199]});
507 values[i_pcolumnv_b(1, 0, block_k, n_blocks)] = Vec({data[256], data[257], data[258], data[259], data[260], data[261], data[262], data[263], data[320], data[321], data[322], data[323], data[324], data[325], data[326], data[327], data[384], data[385], data[386], data[387], data[388], data[389], data[390], data[391], data[448], data[449], data[450], data[451], data[452], data[453], data[454], data[455]});
508 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15], data[72], data[73], data[74], data[75], data[76], data[77], data[78], data[79], data[136], data[137], data[138], data[139], data[140], data[141], data[142], data[143], data[200], data[201], data[202], data[203], data[204], data[205], data[206], data[207]});
509 values[i_pcolumnv_b(1, 1, block_k, n_blocks)] = Vec({data[264], data[265], data[266], data[267], data[268], data[269], data[270], data[271], data[328], data[329], data[330], data[331], data[332], data[333], data[334], data[335], data[392], data[393], data[394], data[395], data[396], data[397], data[398], data[399], data[456], data[457], data[458], data[459], data[460], data[461], data[462], data[463]});
510 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[16], data[17], data[18], data[19], data[20], data[21], data[22], data[23], data[80], data[81], data[82], data[83], data[84], data[85], data[86], data[87], data[144], data[145], data[146], data[147], data[148], data[149], data[150], data[151], data[208], data[209], data[210], data[211], data[212], data[213], data[214], data[215]});
511 values[i_pcolumnv_b(1, 2, block_k, n_blocks)] = Vec({data[272], data[273], data[274], data[275], data[276], data[277], data[278], data[279], data[336], data[337], data[338], data[339], data[340], data[341], data[342], data[343], data[400], data[401], data[402], data[403], data[404], data[405], data[406], data[407], data[464], data[465], data[466], data[467], data[468], data[469], data[470], data[471]});
512 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[24], data[25], data[26], data[27], data[28], data[29], data[30], data[31], data[88], data[89], data[90], data[91], data[92], data[93], data[94], data[95], data[152], data[153], data[154], data[155], data[156], data[157], data[158], data[159], data[216], data[217], data[218], data[219], data[220], data[221], data[222], data[223]});
513 values[i_pcolumnv_b(1, 3, block_k, n_blocks)] = Vec({data[280], data[281], data[282], data[283], data[284], data[285], data[286], data[287], data[344], data[345], data[346], data[347], data[348], data[349], data[350], data[351], data[408], data[409], data[410], data[411], data[412], data[413], data[414], data[415], data[472], data[473], data[474], data[475], data[476], data[477], data[478], data[479]});
514 values[i_pcolumnv_b(0, 4, block_k, n_blocks)] = Vec({data[32], data[33], data[34], data[35], data[36], data[37], data[38], data[39], data[96], data[97], data[98], data[99], data[100], data[101], data[102], data[103], data[160], data[161], data[162], data[163], data[164], data[165], data[166], data[167], data[224], data[225], data[226], data[227], data[228], data[229], data[230], data[231]});
515 values[i_pcolumnv_b(1, 4, block_k, n_blocks)] = Vec({data[288], data[289], data[290], data[291], data[292], data[293], data[294], data[295], data[352], data[353], data[354], data[355], data[356], data[357], data[358], data[359], data[416], data[417], data[418], data[419], data[420], data[421], data[422], data[423], data[480], data[481], data[482], data[483], data[484], data[485], data[486], data[487]});
516 values[i_pcolumnv_b(0, 5, block_k, n_blocks)] = Vec({data[40], data[41], data[42], data[43], data[44], data[45], data[46], data[47], data[104], data[105], data[106], data[107], data[108], data[109], data[110], data[111], data[168], data[169], data[170], data[171], data[172], data[173], data[174], data[175], data[232], data[233], data[234], data[235], data[236], data[237], data[238], data[239]});
517 values[i_pcolumnv_b(1, 5, block_k, n_blocks)] = Vec({data[296], data[297], data[298], data[299], data[300], data[301], data[302], data[303], data[360], data[361], data[362], data[363], data[364], data[365], data[366], data[367], data[424], data[425], data[426], data[427], data[428], data[429], data[430], data[431], data[488], data[489], data[490], data[491], data[492], data[493], data[494], data[495]});
518 values[i_pcolumnv_b(0, 6, block_k, n_blocks)] = Vec({data[48], data[49], data[50], data[51], data[52], data[53], data[54], data[55], data[112], data[113], data[114], data[115], data[116], data[117], data[118], data[119], data[176], data[177], data[178], data[179], data[180], data[181], data[182], data[183], data[240], data[241], data[242], data[243], data[244], data[245], data[246], data[247]});
519 values[i_pcolumnv_b(1, 6, block_k, n_blocks)] = Vec({data[304], data[305], data[306], data[307], data[308], data[309], data[310], data[311], data[368], data[369], data[370], data[371], data[372], data[373], data[374], data[375], data[432], data[433], data[434], data[435], data[436], data[437], data[438], data[439], data[496], data[497], data[498], data[499], data[500], data[501], data[502], data[503]});
520 values[i_pcolumnv_b(0, 7, block_k, n_blocks)] = Vec({data[56], data[57], data[58], data[59], data[60], data[61], data[62], data[63], data[120], data[121], data[122], data[123], data[124], data[125], data[126], data[127], data[184], data[185], data[186], data[187], data[188], data[189], data[190], data[191], data[248], data[249], data[250], data[251], data[252], data[253], data[254], data[255]});
521 values[i_pcolumnv_b(1, 7, block_k, n_blocks)] = Vec({data[312], data[313], data[314], data[315], data[316], data[317], data[318], data[319], data[376], data[377], data[378], data[379], data[380], data[381], data[382], data[383], data[440], data[441], data[442], data[443], data[444], data[445], data[446], data[447], data[504], data[505], data[506], data[507], data[508], data[509], data[510], data[511]});
522 #elif (defined(VEC_FALLBACK_GENERIC) || defined(VEC64F_SVE) || defined(VEC64D_SVE)) && VECL == 64
523 // WID 8, vecl 64
524 values[i_pcolumnv_b(0, 0, block_k, n_blocks)] = Vec({data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[64], data[65], data[66], data[67], data[68], data[69], data[70], data[71], data[128], data[129], data[130], data[131], data[132], data[133], data[134], data[135], data[192], data[193], data[194], data[195], data[196], data[197], data[198], data[199], data[256], data[257], data[258], data[259], data[260], data[261], data[262], data[263], data[320], data[321], data[322], data[323], data[324], data[325], data[326], data[327], data[384], data[385], data[386], data[387], data[388], data[389], data[390], data[391], data[448], data[449], data[450], data[451], data[452], data[453], data[454], data[455]});
525 values[i_pcolumnv_b(0, 1, block_k, n_blocks)] = Vec({data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15], data[72], data[73], data[74], data[75], data[76], data[77], data[78], data[79], data[136], data[137], data[138], data[139], data[140], data[141], data[142], data[143], data[200], data[201], data[202], data[203], data[204], data[205], data[206], data[207], data[264], data[265], data[266], data[267], data[268], data[269], data[270], data[271], data[328], data[329], data[330], data[331], data[332], data[333], data[334], data[335], data[392], data[393], data[394], data[395], data[396], data[397], data[398], data[399], data[456], data[457], data[458], data[459], data[460], data[461], data[462], data[463]});
526 values[i_pcolumnv_b(0, 2, block_k, n_blocks)] = Vec({data[16], data[17], data[18], data[19], data[20], data[21], data[22], data[23], data[80], data[81], data[82], data[83], data[84], data[85], data[86], data[87], data[144], data[145], data[146], data[147], data[148], data[149], data[150], data[151], data[208], data[209], data[210], data[211], data[212], data[213], data[214], data[215], data[272], data[273], data[274], data[275], data[276], data[277], data[278], data[279], data[336], data[337], data[338], data[339], data[340], data[341], data[342], data[343], data[400], data[401], data[402], data[403], data[404], data[405], data[406], data[407], data[464], data[465], data[466], data[467], data[468], data[469], data[470], data[471]});
527 values[i_pcolumnv_b(0, 3, block_k, n_blocks)] = Vec({data[24], data[25], data[26], data[27], data[28], data[29], data[30], data[31], data[88], data[89], data[90], data[91], data[92], data[93], data[94], data[95], data[152], data[153], data[154], data[155], data[156], data[157], data[158], data[159], data[216], data[217], data[218], data[219], data[220], data[221], data[222], data[223], data[280], data[281], data[282], data[283], data[284], data[285], data[286], data[287], data[344], data[345], data[346], data[347], data[348], data[349], data[350], data[351], data[408], data[409], data[410], data[411], data[412], data[413], data[414], data[415], data[472], data[473], data[474], data[475], data[476], data[477], data[478], data[479]});
528 values[i_pcolumnv_b(0, 4, block_k, n_blocks)] = Vec({data[32], data[33], data[34], data[35], data[36], data[37], data[38], data[39], data[96], data[97], data[98], data[99], data[100], data[101], data[102], data[103], data[160], data[161], data[162], data[163], data[164], data[165], data[166], data[167], data[224], data[225], data[226], data[227], data[228], data[229], data[230], data[231], data[288], data[289], data[290], data[291], data[292], data[293], data[294], data[295], data[352], data[353], data[354], data[355], data[356], data[357], data[358], data[359], data[416], data[417], data[418], data[419], data[420], data[421], data[422], data[423], data[480], data[481], data[482], data[483], data[484], data[485], data[486], data[487]});
529 values[i_pcolumnv_b(0, 5, block_k, n_blocks)] = Vec({data[40], data[41], data[42], data[43], data[44], data[45], data[46], data[47], data[104], data[105], data[106], data[107], data[108], data[109], data[110], data[111], data[168], data[169], data[170], data[171], data[172], data[173], data[174], data[175], data[232], data[233], data[234], data[235], data[236], data[237], data[238], data[239], data[296], data[297], data[298], data[299], data[300], data[301], data[302], data[303], data[360], data[361], data[362], data[363], data[364], data[365], data[366], data[367], data[424], data[425], data[426], data[427], data[428], data[429], data[430], data[431], data[488], data[489], data[490], data[491], data[492], data[493], data[494], data[495]});
530 values[i_pcolumnv_b(0, 6, block_k, n_blocks)] = Vec({data[48], data[49], data[50], data[51], data[52], data[53], data[54], data[55], data[112], data[113], data[114], data[115], data[116], data[117], data[118], data[119], data[176], data[177], data[178], data[179], data[180], data[181], data[182], data[183], data[240], data[241], data[242], data[243], data[244], data[245], data[246], data[247], data[304], data[305], data[306], data[307], data[308], data[309], data[310], data[311], data[368], data[369], data[370], data[371], data[372], data[373], data[374], data[375], data[432], data[433], data[434], data[435], data[436], data[437], data[438], data[439], data[496], data[497], data[498], data[499], data[500], data[501], data[502], data[503]});
531 values[i_pcolumnv_b(0, 7, block_k, n_blocks)] = Vec({data[56], data[57], data[58], data[59], data[60], data[61], data[62], data[63], data[120], data[121], data[122], data[123], data[124], data[125], data[126], data[127], data[184], data[185], data[186], data[187], data[188], data[189], data[190], data[191], data[248], data[249], data[250], data[251], data[252], data[253], data[254], data[255], data[312], data[313], data[314], data[315], data[316], data[317], data[318], data[319], data[376], data[377], data[378], data[379], data[380], data[381], data[382], data[383], data[440], data[441], data[442], data[443], data[444], data[445], data[446], data[447], data[504], data[505], data[506], data[507], data[508], data[509], data[510], data[511]});
532 #else // Fell through, never fall into this particular pit again
533 std::cerr << "Undefined VECTORCLASS flag or implementation missing in loadColumnBlockData() before " << __FILE__ << ":" << __LINE__ << std::endl;
534 abort();
535 #endif
536 //zero old output data
537 for (uint i=0; i<WID3; ++i) {
538 data[i]=0;
539 }
540 }
541 }
542 #else
543 std::cerr << "Undefined WID (" <<WID<< ") encountered in " << __FILE__ << ":" << __LINE__ << std::endl;
544 abort();
545 #endif
546//[[[end]]]
547
548 if (dimension == 2) {
549 // copy block data for all blocks. Dimension 2 is easy, here
550 // data is in the right order
551 for (vmesh::LocalID block_k=0; block_k<n_blocks; ++block_k) {
552 Realf* __restrict__ data = blockContainer->getData(vmesh->getLocalID(blocks[block_k]));
553 uint offset = 0;
554 for (uint k=0; k<WID; ++k) {
555 for(uint planeVector = 0; planeVector < VEC_PER_PLANE; planeVector++){
556 values[i_pcolumnv_b(planeVector, k, block_k, n_blocks)].load(data + offset);
557 offset += VECL;
558 }
559 }
560 //zero old output data
561 for (uint i=0; i<WID3; ++i) {
562 data[i]=0;
563 }
564 }
565 }
566}
for i
Definition Dispersion.m:24
#define WID
Definition common.h:514
const int WID3
Definition common.h:517
void loadColumnBlockData(const vmesh::VelocityMesh *vmesh, vmesh::VelocityBlockContainer *blockContainer, const vmesh::GlobalID *blocks, const vmesh::LocalID n_blocks, const int dimension, Vec *__restrict__ values)
#define i_pcolumnv(j, k, k_block, num_k_blocks)
#define i_pcolumnv_b(planeVectorIndex, k, k_block, num_k_blocks)
float Realf
Definition definitions.h:33
const int j
const int k
uint32_t LocalID
Definition definitions.h:60
uint32_t GlobalID
Definition definitions.h:59
An interface to a type with floating point values.