@@ -166,6 +166,240 @@ extern "C" {
166166 *A = (*v_A)->data ();
167167 }
168168
169+ // 4D flcl view allocation routines
170+ void c_kokkos_allocate_v_l_4d (bool ** A, flcl::view_l_4d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 ) {
171+ const size_t e0t = std::max (*e0 , one);
172+ const size_t e1t = std::max (*e1 , one);
173+ const size_t e2t = std::max (*e2 , one);
174+ const size_t e3t = std::max (*e3 , one);
175+ std::string c_label ( f_label );
176+ *v_A = (new flcl::view_l_4d_t (c_label, e0t, e1t, e2t, e3t));
177+ *A = (*v_A)->data ();
178+ }
179+
180+ void c_kokkos_allocate_v_i32_4d (int32_t ** A, flcl::view_i32_4d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 ) {
181+ const size_t e0t = std::max (*e0 , one);
182+ const size_t e1t = std::max (*e1 , one);
183+ const size_t e2t = std::max (*e2 , one);
184+ const size_t e3t = std::max (*e3 , one);
185+ std::string c_label ( f_label );
186+ *v_A = (new flcl::view_i32_4d_t (c_label, e0t, e1t, e2t, e3t));
187+ *A = (*v_A)->data ();
188+ }
189+
190+ void c_kokkos_allocate_v_i64_4d (int64_t ** A, flcl::view_i64_4d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 ) {
191+ const size_t e0t = std::max (*e0 , one);
192+ const size_t e1t = std::max (*e1 , one);
193+ const size_t e2t = std::max (*e2 , one);
194+ const size_t e3t = std::max (*e3 , one);
195+ std::string c_label ( f_label );
196+ *v_A = (new flcl::view_i64_4d_t (c_label, e0t, e1t, e2t, e3t));
197+ *A = (*v_A)->data ();
198+ }
199+
200+ void c_kokkos_allocate_v_r32_4d (float ** A, flcl::view_r32_4d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 ) {
201+ const size_t e0t = std::max (*e0 , one);
202+ const size_t e1t = std::max (*e1 , one);
203+ const size_t e2t = std::max (*e2 , one);
204+ const size_t e3t = std::max (*e3 , one);
205+ std::string c_label ( f_label );
206+ *v_A = (new flcl::view_r32_4d_t (c_label, e0t, e1t, e2t, e3t));
207+ *A = (*v_A)->data ();
208+ }
209+
210+ void c_kokkos_allocate_v_r64_4d (double ** A, flcl::view_r64_4d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 ) {
211+ const size_t e0t = std::max (*e0 , one);
212+ const size_t e1t = std::max (*e1 , one);
213+ const size_t e2t = std::max (*e2 , one);
214+ const size_t e3t = std::max (*e3 , one);
215+ std::string c_label ( f_label );
216+ *v_A = (new flcl::view_r64_4d_t (c_label, e0t, e1t, e2t, e3t));
217+ *A = (*v_A)->data ();
218+ }
219+
220+ // 5D flcl view allocation routines
221+ void c_kokkos_allocate_v_l_5d (bool ** A, flcl::view_l_5d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 ) {
222+ const size_t e0t = std::max (*e0 , one);
223+ const size_t e1t = std::max (*e1 , one);
224+ const size_t e2t = std::max (*e2 , one);
225+ const size_t e3t = std::max (*e3 , one);
226+ const size_t e4t = std::max (*e4 , one);
227+ std::string c_label ( f_label );
228+ *v_A = (new flcl::view_l_5d_t (c_label, e0t, e1t, e2t, e3t, e4t));
229+ *A = (*v_A)->data ();
230+ }
231+
232+ void c_kokkos_allocate_v_i32_5d (int32_t ** A, flcl::view_i32_5d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 ) {
233+ const size_t e0t = std::max (*e0 , one);
234+ const size_t e1t = std::max (*e1 , one);
235+ const size_t e2t = std::max (*e2 , one);
236+ const size_t e3t = std::max (*e3 , one);
237+ const size_t e4t = std::max (*e4 , one);
238+ std::string c_label ( f_label );
239+ *v_A = (new flcl::view_i32_5d_t (c_label, e0t, e1t, e2t, e3t, e4t));
240+ *A = (*v_A)->data ();
241+ }
242+
243+ void c_kokkos_allocate_v_i64_5d (int64_t ** A, flcl::view_i64_5d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 ) {
244+ const size_t e0t = std::max (*e0 , one);
245+ const size_t e1t = std::max (*e1 , one);
246+ const size_t e2t = std::max (*e2 , one);
247+ const size_t e3t = std::max (*e3 , one);
248+ const size_t e4t = std::max (*e4 , one);
249+ std::string c_label ( f_label );
250+ *v_A = (new flcl::view_i64_5d_t (c_label, e0t, e1t, e2t, e3t, e4t));
251+ *A = (*v_A)->data ();
252+ }
253+
254+ void c_kokkos_allocate_v_r32_5d (float ** A, flcl::view_r32_5d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 ) {
255+ const size_t e0t = std::max (*e0 , one);
256+ const size_t e1t = std::max (*e1 , one);
257+ const size_t e2t = std::max (*e2 , one);
258+ const size_t e3t = std::max (*e3 , one);
259+ const size_t e4t = std::max (*e4 , one);
260+ std::string c_label ( f_label );
261+ *v_A = (new flcl::view_r32_5d_t (c_label, e0t, e1t, e2t, e3t, e4t));
262+ *A = (*v_A)->data ();
263+ }
264+
265+ void c_kokkos_allocate_v_r64_5d (double ** A, flcl::view_r64_5d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 ) {
266+ const size_t e0t = std::max (*e0 , one);
267+ const size_t e1t = std::max (*e1 , one);
268+ const size_t e2t = std::max (*e2 , one);
269+ const size_t e3t = std::max (*e3 , one);
270+ const size_t e4t = std::max (*e4 , one);
271+ std::string c_label ( f_label );
272+ *v_A = (new flcl::view_r64_5d_t (c_label, e0t, e1t, e2t, e3t, e4t));
273+ *A = (*v_A)->data ();
274+ }
275+
276+ // 6D flcl view allocation routines
277+ void c_kokkos_allocate_v_l_6d (bool ** A, flcl::view_l_6d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 ) {
278+ const size_t e0t = std::max (*e0 , one);
279+ const size_t e1t = std::max (*e1 , one);
280+ const size_t e2t = std::max (*e2 , one);
281+ const size_t e3t = std::max (*e3 , one);
282+ const size_t e4t = std::max (*e4 , one);
283+ const size_t e5t = std::max (*e5 , one);
284+ std::string c_label ( f_label );
285+ *v_A = (new flcl::view_l_6d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t));
286+ *A = (*v_A)->data ();
287+ }
288+
289+ void c_kokkos_allocate_v_i32_6d (int32_t ** A, flcl::view_i32_6d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 ) {
290+ const size_t e0t = std::max (*e0 , one);
291+ const size_t e1t = std::max (*e1 , one);
292+ const size_t e2t = std::max (*e2 , one);
293+ const size_t e3t = std::max (*e3 , one);
294+ const size_t e4t = std::max (*e4 , one);
295+ const size_t e5t = std::max (*e5 , one);
296+ std::string c_label ( f_label );
297+ *v_A = (new flcl::view_i32_6d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t));
298+ *A = (*v_A)->data ();
299+ }
300+
301+ void c_kokkos_allocate_v_i64_6d (int64_t ** A, flcl::view_i64_6d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 ) {
302+ const size_t e0t = std::max (*e0 , one);
303+ const size_t e1t = std::max (*e1 , one);
304+ const size_t e2t = std::max (*e2 , one);
305+ const size_t e3t = std::max (*e3 , one);
306+ const size_t e4t = std::max (*e4 , one);
307+ const size_t e5t = std::max (*e5 , one);
308+ std::string c_label ( f_label );
309+ *v_A = (new flcl::view_i64_6d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t));
310+ *A = (*v_A)->data ();
311+ }
312+
313+ void c_kokkos_allocate_v_r32_6d (float ** A, flcl::view_r32_6d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 ) {
314+ const size_t e0t = std::max (*e0 , one);
315+ const size_t e1t = std::max (*e1 , one);
316+ const size_t e2t = std::max (*e2 , one);
317+ const size_t e3t = std::max (*e3 , one);
318+ const size_t e4t = std::max (*e4 , one);
319+ const size_t e5t = std::max (*e5 , one);
320+ std::string c_label ( f_label );
321+ *v_A = (new flcl::view_r32_6d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t));
322+ *A = (*v_A)->data ();
323+ }
324+
325+ void c_kokkos_allocate_v_r64_6d (double ** A, flcl::view_r64_6d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 ) {
326+ const size_t e0t = std::max (*e0 , one);
327+ const size_t e1t = std::max (*e1 , one);
328+ const size_t e2t = std::max (*e2 , one);
329+ const size_t e3t = std::max (*e3 , one);
330+ const size_t e4t = std::max (*e4 , one);
331+ const size_t e5t = std::max (*e5 , one);
332+ std::string c_label ( f_label );
333+ *v_A = (new flcl::view_r64_6d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t));
334+ *A = (*v_A)->data ();
335+ }
336+
337+ // 7D flcl view allocation routines
338+ void c_kokkos_allocate_v_l_7d (bool ** A, flcl::view_l_7d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 , const size_t * e6 ) {
339+ const size_t e0t = std::max (*e0 , one);
340+ const size_t e1t = std::max (*e1 , one);
341+ const size_t e2t = std::max (*e2 , one);
342+ const size_t e3t = std::max (*e3 , one);
343+ const size_t e4t = std::max (*e4 , one);
344+ const size_t e5t = std::max (*e5 , one);
345+ const size_t e6t = std::max (*e6 , one);
346+ std::string c_label ( f_label );
347+ *v_A = (new flcl::view_l_7d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
348+ *A = (*v_A)->data ();
349+ }
350+
351+ void c_kokkos_allocate_v_i32_7d (int32_t ** A, flcl::view_i32_7d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 , const size_t * e6 ) {
352+ const size_t e0t = std::max (*e0 , one);
353+ const size_t e1t = std::max (*e1 , one);
354+ const size_t e2t = std::max (*e2 , one);
355+ const size_t e3t = std::max (*e3 , one);
356+ const size_t e4t = std::max (*e4 , one);
357+ const size_t e5t = std::max (*e5 , one);
358+ const size_t e6t = std::max (*e6 , one);
359+ std::string c_label ( f_label );
360+ *v_A = (new flcl::view_i32_7d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
361+ *A = (*v_A)->data ();
362+ }
363+
364+ void c_kokkos_allocate_v_i64_7d (int64_t ** A, flcl::view_i64_7d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 , const size_t * e6 ) {
365+ const size_t e0t = std::max (*e0 , one);
366+ const size_t e1t = std::max (*e1 , one);
367+ const size_t e2t = std::max (*e2 , one);
368+ const size_t e3t = std::max (*e3 , one);
369+ const size_t e4t = std::max (*e4 , one);
370+ const size_t e5t = std::max (*e5 , one);
371+ const size_t e6t = std::max (*e6 , one);
372+ std::string c_label ( f_label );
373+ *v_A = (new flcl::view_i64_7d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
374+ *A = (*v_A)->data ();
375+ }
376+
377+ void c_kokkos_allocate_v_r32_7d (float ** A, flcl::view_r32_7d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 , const size_t * e6 ) {
378+ const size_t e0t = std::max (*e0 , one);
379+ const size_t e1t = std::max (*e1 , one);
380+ const size_t e2t = std::max (*e2 , one);
381+ const size_t e3t = std::max (*e3 , one);
382+ const size_t e4t = std::max (*e4 , one);
383+ const size_t e5t = std::max (*e5 , one);
384+ const size_t e6t = std::max (*e6 , one);
385+ std::string c_label ( f_label );
386+ *v_A = (new flcl::view_r32_7d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
387+ *A = (*v_A)->data ();
388+ }
389+
390+ void c_kokkos_allocate_v_r64_7d (double ** A, flcl::view_r64_7d_t ** v_A, const char * f_label, const size_t * e0 , const size_t * e1 , const size_t * e2 , const size_t * e3 , const size_t * e4 , const size_t * e5 , const size_t * e6 ) {
391+ const size_t e0t = std::max (*e0 , one);
392+ const size_t e1t = std::max (*e1 , one);
393+ const size_t e2t = std::max (*e2 , one);
394+ const size_t e3t = std::max (*e3 , one);
395+ const size_t e4t = std::max (*e4 , one);
396+ const size_t e5t = std::max (*e5 , one);
397+ const size_t e6t = std::max (*e6 , one);
398+ std::string c_label ( f_label );
399+ *v_A = (new flcl::view_r64_7d_t (c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
400+ *A = (*v_A)->data ();
401+ }
402+
169403 // 1D flcl dualview allocation routines
170404 void c_kokkos_allocate_dv_l_1d (bool ** A, flcl::dualview_l_1d_t ** v_A, const char * f_label, const size_t * e0 ) {
171405 const size_t e0t = std::max (*e0 , one);
@@ -354,6 +588,90 @@ extern "C" {
354588 delete (*v_A);
355589 }
356590
591+ // 4D flcl view deallocation routines
592+ void c_kokkos_deallocate_v_l_4d (flcl::view_l_4d_t ** v_A) {
593+ delete (*v_A);
594+ }
595+
596+ void c_kokkos_deallocate_v_i32_4d (flcl::view_i32_4d_t ** v_A) {
597+ delete (*v_A);
598+ }
599+
600+ void c_kokkos_deallocate_v_i64_4d (flcl::view_i64_4d_t ** v_A) {
601+ delete (*v_A);
602+ }
603+
604+ void c_kokkos_deallocate_v_r32_4d (flcl::view_r32_4d_t ** v_A) {
605+ delete (*v_A);
606+ }
607+
608+ void c_kokkos_deallocate_v_r64_4d (flcl::view_r64_4d_t ** v_A) {
609+ delete (*v_A);
610+ }
611+
612+ // 5D flcl view deallocation routines
613+ void c_kokkos_deallocate_v_l_5d (flcl::view_l_5d_t ** v_A) {
614+ delete (*v_A);
615+ }
616+
617+ void c_kokkos_deallocate_v_i32_5d (flcl::view_i32_5d_t ** v_A) {
618+ delete (*v_A);
619+ }
620+
621+ void c_kokkos_deallocate_v_i64_5d (flcl::view_i64_5d_t ** v_A) {
622+ delete (*v_A);
623+ }
624+
625+ void c_kokkos_deallocate_v_r32_5d (flcl::view_r32_5d_t ** v_A) {
626+ delete (*v_A);
627+ }
628+
629+ void c_kokkos_deallocate_v_r64_5d (flcl::view_r64_5d_t ** v_A) {
630+ delete (*v_A);
631+ }
632+
633+ // 6D flcl view deallocation routines
634+ void c_kokkos_deallocate_v_l_6d (flcl::view_l_6d_t ** v_A) {
635+ delete (*v_A);
636+ }
637+
638+ void c_kokkos_deallocate_v_i32_6d (flcl::view_i32_6d_t ** v_A) {
639+ delete (*v_A);
640+ }
641+
642+ void c_kokkos_deallocate_v_i64_6d (flcl::view_i64_6d_t ** v_A) {
643+ delete (*v_A);
644+ }
645+
646+ void c_kokkos_deallocate_v_r32_6d (flcl::view_r32_6d_t ** v_A) {
647+ delete (*v_A);
648+ }
649+
650+ void c_kokkos_deallocate_v_r64_6d (flcl::view_r64_6d_t ** v_A) {
651+ delete (*v_A);
652+ }
653+
654+ // 7D flcl view deallocation routines
655+ void c_kokkos_deallocate_v_l_7d (flcl::view_l_7d_t ** v_A) {
656+ delete (*v_A);
657+ }
658+
659+ void c_kokkos_deallocate_v_i32_7d (flcl::view_i32_7d_t ** v_A) {
660+ delete (*v_A);
661+ }
662+
663+ void c_kokkos_deallocate_v_i64_7d (flcl::view_i64_7d_t ** v_A) {
664+ delete (*v_A);
665+ }
666+
667+ void c_kokkos_deallocate_v_r32_7d (flcl::view_r32_7d_t ** v_A) {
668+ delete (*v_A);
669+ }
670+
671+ void c_kokkos_deallocate_v_r64_7d (flcl::view_r64_7d_t ** v_A) {
672+ delete (*v_A);
673+ }
674+
357675 // 1D flcl dualview deallocation routines
358676 void c_kokkos_deallocate_dv_l_1d (flcl::dualview_l_1d_t ** v_A) {
359677 delete (*v_A);
0 commit comments