NN-512

Back

Index

Files

Top || Input graph file

Config Prefix=Example4 Platform=AVX512Float32 L1DataCachePerThread=32KiB L2CachePerThreadExL1=960KiB L3CachePerThreadExL1L2=1408KiB
Input ToTensor=in Channels=1256 Height=127 Width=60
Conv FromTensor=in ToTensor=out ToChannels=744 FilterH=4 FilterW=4 StrideH=2 StrideW=2 PaddingH=0 PaddingW=3 DilationH=3 DilationW=3 Groups=8
Output FromTensor=out

Top || Output Example4.h file

#pragma once

// NN-512 (https://NN-512.com)
//
// Copyright (C) 2019 [
// 37ef ced3 3727 60b4
// 3c29 f9c6 dc30 d518
// f4f3 4106 6964 cab4
// a06f c1a3 83fd 090e
// ]
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the
// distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#include <pthread.h>
#include <stddef.h>

#ifdef __cplusplus
extern "C" { /**/
#endif

// All weights, biases, and other trained parameters are passed into
// the initialization code through the Params struct that is declared
// just below this comment. The corresponding struct definition can be
// found near the end of this header file.
//
// Each field of the Params struct is an array of float that holds a
// parameter tensor in NCHW format with no padding. The struct fields
// are ordered by name, lexically bytewise. If you concatenate all the
// trained parameter tensors to a file in this same format and order
// you can load the struct as follows (error checking omitted here):
//
// size_t size = sizeof(Example4Params);
// Example4Params* to = malloc(size);
// FILE* from = fopen("ParamsFile", "r");
// fread(to, size, 1, from);
// fclose(from);
//
// Be careful to match endianness (and floating point format).

typedef struct Example4Params Example4Params;

// The Net contains weights, biases, and other trained parameters in a
// form that enables efficient inference. It is created from the input
// parameter struct without modifying that struct. The input parameter
// struct is no longer needed once the Net has been created. Threads
// that are used to create the Net are temporary (in particular, those
// threads are not used for inference).
//
// Example4Params* params = malloc(sizeof(Example4Params));
//
// ... Load params (read from a file, perhaps) ...
//
// Example4Net* net; // For example, 4 threads:
// char* err = Example4NetCreate(&net, params, 4);
// free(params);
//
// if (err) { // Nonzero err indicates failure; net is unmodified.
// printf("%s\n", err); // Explain the failure, add a newline.
// free(err); // Free the error string to avoid a memory leak.
// exit(1); // Exit, or propagate the failure some other way.
// }
//
// ... Perform all inference that depends on net ...
//
// Example4NetDestroy(net);
//
// The Net can be shared and reused without restriction because it is
// never modified (not even temporarily) after being created. The Net
// should be destroyed (to free memory) once all dependent inference
// is complete.

typedef struct Example4Net Example4Net;

char* Example4NetCreate(
Example4Net**,
Example4Params*,
ptrdiff_t threads
);

void Example4NetDestroy(Example4Net*);

// An Engine performs inference. It contains inference threads, scratch
// memory, and a pointer to the Net. Any number of Engines can share the
// same Net (and perform inference in parallel) because the Net is never
// modified. For best performance the number of inference threads should
// not exceed the number of CPU cores.
//
// Example4Net* net;
//
// ... Create net ...
//
// Example4Engine* engine; // For example, 4 inference threads:
// char* err = Example4EngineCreate(&engine, net, 4);
//
// if (err) { // Nonzero err means failure; engine is unmodified.
// printf("%s\n", err); // Explain the failure, add a newline.
// free(err); // Free the error string to avoid a memory leak.
//
// ... Destroy net ...
//
// exit(1); // Exit, or propagate the failure some other way.
// }
//
// ... Use the POSIX threads API to adjust engine's threads ...
// ... Use engine to perform inference (dependent on net) ...
//
// Example4EngineDestroy(engine); // Terminate threads, free memory.
//
// ... Destroy net ...
//
// The POSIX threads API can be used to adjust an Engine's threads. If
// an Engine has N threads, those threads are indexed 0, 1, 2, ..., N-1
// and a pthread_t identifier is associated with each index. To set the
// CPU affinity mask for the first inference thread, for example:
//
// pthread_t thread; // The first thread has index 0:
// char* err = Example4EnginePthreadT(engine, 0, &thread);
//
// assert(!err); // Can only fail if the thread index is invalid.
//
// pthread_setaffinity_np(thread, ...); // Details omitted.
//
// The inference function reads floats from (one or more) input tensors
// and writes floats to (one or more) output tensors. All the input and
// output tensors are owned (allocated and freed) by the caller and are
// in CHW format, 32-bit floating point, fully packed (in other words,
// C has the largest pitch, W has the smallest pitch, and there is no
// padding anywhere).
//
// float* inData = malloc(sizeof(float)*1256*127*60);
// float* outData = malloc(sizeof(float)*744*59*29);
//
// for (...) { // Reuse the input and output tensors.
//
// ... Write the input floats ...
//
// Example4EngineInference( // This function cannot fail.
// engine, // Pass an Engine as the first argument.
// inData, // The tensor arguments are sorted by name.
// outData
// );
//
// ... Read the output floats ...
//
// }
//
// free(inData);
// free(outData);
//
// The tensor parameters of the inference function are ordered by name,
// lexically bytewise. In other words, the function parameters have been
// sorted by name using Go's "<" string comparison operator (a bytewise
// lexical string sort).

typedef struct Example4Engine Example4Engine;

char* Example4EngineCreate(
Example4Engine**,
Example4Net*,
ptrdiff_t threads
);

char* Example4EnginePthreadT(
Example4Engine*,
ptrdiff_t threadIdx,
pthread_t* to
);

void Example4EngineInference(
Example4Engine*,
float* inData,
float* outData
);

void Example4EngineDestroy(Example4Engine*);

// The fields of the following struct have been sorted by name using
// Go's "<" string comparison operator (bytewise lexical string sort).
// Tensor dimensions are NxCxHxW where N is the outermost/slowest and
// W is the innermost/fastest. There is no padding anywhere.

struct Example4Params {
float outBiases[744]; // 1x744x1x1
float outWeights[1868928]; // 744x157x4x4
} __attribute__((packed));

#ifdef __cplusplus
/**/ }
#endif

// End of file.

Top || Output Example4.c file

// To build an object file:
// gcc -c -w -std=c99 -pthread -Ofast -mavx512f Example4.c

// NN-512 (https://NN-512.com)
//
// Copyright (C) 2019 [
// 37ef ced3 3727 60b4
// 3c29 f9c6 dc30 d518
// f4f3 4106 6964 cab4
// a06f c1a3 83fd 090e
// ]
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the
// distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#include <errno.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <immintrin.h>

#include "Example4.h"

static char* Example4Errmsg1(ptrdiff_t lineNum1, char* format1, ...) {
char* msg1 = malloc(276);
int step1 = sprintf(msg1, "Example4: line %td: ", lineNum1);
va_list ap1;
va_start(ap1, format1);
vsnprintf(msg1+step1, 276-step1, format1, ap1);
va_end(ap1);
return msg1;
}

typedef struct Example4ThreaderTask1 Example4ThreaderTask1;
typedef void (*Example4ThreaderCallee1)(Example4ThreaderTask1*, int64_t*);
typedef struct Example4ThreaderHub1 Example4ThreaderHub1;
typedef struct Example4ThreaderNode1 Example4ThreaderNode1;
typedef struct Example4ThreaderUnwind1 Example4ThreaderUnwind1;
typedef struct Example4ThreaderTeam1 Example4ThreaderTeam1;

struct Example4ThreaderTask1 {
Example4ThreaderCallee1 callee1;
void* any1;
ptrdiff_t nd1;
int64_t hull1[4];
};

struct Example4ThreaderHub1 {
pthread_mutex_t mut1;
pthread_cond_t cond1;
ptrdiff_t pending1;
ptrdiff_t offset1;
long mask1;
long status1[];
};

struct Example4ThreaderNode1 {
pthread_mutex_t mut2;
int64_t np1;
int64_t pt1[4];
Example4ThreaderTask1* task1;
pthread_cond_t cond2;
Example4ThreaderTeam1* team1;
pthread_t thr1;
} __attribute__((aligned(64)));

struct Example4ThreaderUnwind1 {
ptrdiff_t join1;
ptrdiff_t nodeConds1;
ptrdiff_t nodeMuts1;
ptrdiff_t hubCond1;
ptrdiff_t hubMut1;
void* nodes1;
void* hub1;
};

struct Example4ThreaderTeam1 {
ptrdiff_t nt1;
Example4ThreaderHub1* hub2;
Example4ThreaderNode1* nodes2;
Example4ThreaderUnwind1 unwind1;
};

static void Example4ThreaderInc1(
ptrdiff_t nd2,
int64_t*restrict hull2,
int64_t*restrict pt2
) {
for (ptrdiff_t i1 = 0; i1 < nd2; ++i1) {
int64_t elem1 = pt2[i1];
if (++elem1 == hull2[i1]) {
pt2[i1] = 0;
} else {
pt2[i1] = elem1;
break;
}
}
}

static void Example4ThreaderPut1(
ptrdiff_t nd3,
int64_t*restrict hull3,
int64_t*restrict pt3,
int64_t val1
) {
ptrdiff_t i2 = 0;
for (; i2 < nd3 && val1; ) {
int64_t wrap1 = hull3[i2];
int64_t carry1 = val1/wrap1;
pt3[i2++] = val1-carry1*wrap1;
val1 = carry1;
}
for (; i2 < nd3; pt3[i2++] = 0);
}

static void Example4ThreaderAdd1(
ptrdiff_t nd4,
int64_t*restrict hull4,
int64_t*restrict pt4,
int64_t*restrict plus1,
int64_t carry2
) {
for (ptrdiff_t i3 = 0; i3 < nd4; ++i3) {
int64_t wrap2 = hull4[i3];
int64_t sum1 = pt4[i3]+plus1[i3]+carry2;
if (sum1 < wrap2) {
pt4[i3] = sum1;
carry2 = 0;
} else {
pt4[i3] = sum1-wrap2;
carry2 = 1;
}
}
}

static void* Example4ThreaderMain1(void* arg1) {
Example4ThreaderNode1* node1 = arg1;
Example4ThreaderTeam1* team2 = node1->team1;
ptrdiff_t nt2 = team2->nt1;
Example4ThreaderHub1* hub3 = team2->hub2;
Example4ThreaderNode1* nodes3 = team2->nodes2;
size_t role1 = node1-nodes3;
for (; __builtin_expect(pthread_mutex_lock(&node1->mut2), 0); );
for (; ; ) {
Example4ThreaderTask1* task2 = node1->task1;
if (!task2) {
for (; __builtin_expect(pthread_cond_wait(&node1->cond2, &node1->mut2), 0); );
continue;
}
int64_t np2 = node1->np1;
if (np2 < 0) {
for (; __builtin_expect(pthread_mutex_unlock(&node1->mut2), 0); );
return 0;
}
node1->task1 = 0;
Example4ThreaderCallee1 callee2 = task2->callee1;
ptrdiff_t nd5 = task2->nd1;
int64_t pt5[4];
for (; np2; np2 = node1->np1) {
memcpy(pt5, node1->pt1, sizeof(pt5));
node1->np1 = np2-1;
Example4ThreaderInc1(nd5, task2->hull1, node1->pt1);
for (; __builtin_expect(pthread_mutex_unlock(&node1->mut2), 0); );
callee2(task2, pt5);
for (; __builtin_expect(pthread_mutex_lock(&node1->mut2), 0); );
}
for (; __builtin_expect(pthread_mutex_unlock(&node1->mut2), 0); );
for (; __builtin_expect(pthread_mutex_lock(&hub3->mut1), 0); );
hub3->status1[role1/(sizeof(long)*8)] &= ~((long)1<<role1%(sizeof(long)*8));
ptrdiff_t offset2 = hub3->offset1;
long mask2 = hub3->mask1;
ptrdiff_t wrapped1 = 0;
for (; ; ) {
long hand1 = hub3->status1[offset2]&mask2;
if (!hand1) {
++offset2;
mask2 = -1;
continue;
}
ptrdiff_t target1 = offset2*(sizeof(long)*8)+__builtin_ctzl(hand1);
if (target1 == nt2) {
if (wrapped1) break;
offset2 = 0;
mask2 = -1;
wrapped1 = 1;
continue;
}
hand1 &= -hand1;
hub3->offset1 = offset2;
hub3->mask1 = mask2-hand1;
for (; __builtin_expect(pthread_mutex_unlock(&hub3->mut1), 0); );
Example4ThreaderNode1* node2 = nodes3+target1;
for (; __builtin_expect(pthread_mutex_lock(&node2->mut2), 0); );
for (np2 = node2->np1; np2; np2 = node2->np1) {
memcpy(pt5, node2->pt1, sizeof(pt5));
node2->np1 = np2-1;
Example4ThreaderInc1(nd5, task2->hull1, node2->pt1);
for (; __builtin_expect(pthread_mutex_unlock(&node2->mut2), 0); );
callee2(task2, pt5);
for (; __builtin_expect(pthread_mutex_lock(&node2->mut2), 0); );
}
for (; __builtin_expect(pthread_mutex_unlock(&node2->mut2), 0); );
for (; __builtin_expect(pthread_mutex_lock(&hub3->mut1), 0); );
hub3->status1[offset2] &= ~hand1;
offset2 = hub3->offset1;
mask2 = hub3->mask1;
wrapped1 = 0;
}
ptrdiff_t pending2 = --hub3->pending1;
for (; __builtin_expect(pthread_mutex_unlock(&hub3->mut1), 0); );
if (!pending2) for (; __builtin_expect(pthread_cond_signal(&hub3->cond1), 0); );
for (; __builtin_expect(pthread_mutex_lock(&node1->mut2), 0); );
}
}

static void Example4ThreaderDestroy1(Example4ThreaderTeam1* team3) {
if (!team3) return;
Example4ThreaderNode1* nodes4 = team3->nodes2;
Example4ThreaderNode1* stop1 = nodes4+team3->unwind1.join1;
for (Example4ThreaderNode1* node3 = nodes4; node3 != stop1; ++node3) {
for (; __builtin_expect(pthread_mutex_lock(&node3->mut2), 0); );
node3->np1 = -1;
node3->task1 = (Example4ThreaderTask1*)1;
for (; __builtin_expect(pthread_mutex_unlock(&node3->mut2), 0); );
for (; __builtin_expect(pthread_cond_signal(&node3->cond2), 0); );
}
for (Example4ThreaderNode1* node3 = nodes4; node3 != stop1; ++node3) {
for (; __builtin_expect(pthread_join(node3->thr1, 0), 0); );
}
stop1 = nodes4+team3->unwind1.nodeConds1;
for (Example4ThreaderNode1* node3 = nodes4; node3 != stop1; ++node3) {
for (; __builtin_expect(pthread_cond_destroy(&node3->cond2), 0); );
}
stop1 = nodes4+team3->unwind1.nodeMuts1;
for (Example4ThreaderNode1* node3 = nodes4; node3 != stop1; ++node3) {
for (; __builtin_expect(pthread_mutex_destroy(&node3->mut2), 0); );
}
Example4ThreaderHub1* hub4 = team3->hub2;
if (team3->unwind1.hubCond1) {
for (; __builtin_expect(pthread_cond_destroy(&hub4->cond1), 0); );
}
if (team3->unwind1.hubMut1) {
for (; __builtin_expect(pthread_mutex_destroy(&hub4->mut1), 0); );
}
free(team3->unwind1.nodes1);
free(team3->unwind1.hub1);
free(team3);
}

static char* Example4ThreaderCreate1Up4(Example4ThreaderTeam1* team8, ptrdiff_t nt7) {
Example4ThreaderNode1* nodes5 = team8->nodes2;
for (Example4ThreaderNode1* node4 = nodes5; node4 != nodes5+nt7; ++node4) {
int err2 = pthread_mutex_init(&node4->mut2, 0);
if (__builtin_expect(err2, 0)) {
char* msg2 = Example4Errmsg1(__LINE__, "errno %d", err2);
team8->unwind1.nodeMuts1 = node4-nodes5;
team8->unwind1.nodeConds1 = node4-nodes5;
team8->unwind1.join1 = node4-nodes5;
return msg2;
}
node4->task1 = 0;
int err3 = pthread_cond_init(&node4->cond2, 0);
if (__builtin_expect(err3, 0)) {
char* msg3 = Example4Errmsg1(__LINE__, "errno %d", err3);
team8->unwind1.nodeMuts1 = node4-nodes5+1;
team8->unwind1.nodeConds1 = node4-nodes5;
team8->unwind1.join1 = node4-nodes5;
return msg3;
}
node4->team1 = team8;
int err4 = pthread_create(&node4->thr1, 0, Example4ThreaderMain1, node4);
if (__builtin_expect(err4, 0)) {
char* msg4 = Example4Errmsg1(__LINE__, "errno %d", err4);
team8->unwind1.nodeMuts1 = node4-nodes5+1;
team8->unwind1.nodeConds1 = node4-nodes5+1;
team8->unwind1.join1 = node4-nodes5;
return msg4;
}
}
team8->unwind1.nodeMuts1 = nt7;
team8->unwind1.nodeConds1 = nt7;
team8->unwind1.join1 = nt7;
return 0;
}

static char* Example4ThreaderCreate1Up3(Example4ThreaderTeam1* team7, ptrdiff_t nt6) {
Example4ThreaderHub1* hub5 = team7->hub2;
int err5 = pthread_mutex_init(&hub5->mut1, 0);
if (__builtin_expect(err5, 0)) {
return Example4Errmsg1(__LINE__, "errno %d", err5);
}
team7->unwind1.hubMut1 = 1;
int err6 = pthread_cond_init(&hub5->cond1, 0);
if (__builtin_expect(err6, 0)) {
return Example4Errmsg1(__LINE__, "errno %d", err6);
}
team7->unwind1.hubCond1 = 1;
return Example4ThreaderCreate1Up4(team7, nt6);
}

static char* Example4ThreaderCreate1Up2(Example4ThreaderTeam1* team6, ptrdiff_t nt5) {
size_t size2 = nt5*sizeof(Example4ThreaderNode1);
if (__builtin_expect(size2/sizeof(Example4ThreaderNode1) != (size_t)nt5, 0)) {
return Example4Errmsg1(__LINE__, "too many threads");
}
void* addr3 = malloc(size2+63);
if (__builtin_expect(!addr3, 0)) {
return Example4Errmsg1(__LINE__, "errno %d", errno);
}
team6->unwind1.nodes1 = addr3;
team6->nodes2 = (void*)(((size_t)addr3+63)&-64);
return Example4ThreaderCreate1Up3(team6, nt5);
}

static char* Example4ThreaderCreate1Up1(Example4ThreaderTeam1* team5, ptrdiff_t nt4) {
team5->nt1 = nt4;
size_t size1 = sizeof(Example4ThreaderHub1);
size1 += sizeof(long)*((size_t)nt4/(sizeof(long)*8)+1);
size1 = (size1+63)&-64;
void* addr2 = malloc(size1+63);
if (__builtin_expect(!addr2, 0)) {
return Example4Errmsg1(__LINE__, "errno %d", errno);
}
team5->unwind1.hub1 = addr2;
team5->hub2 = (void*)(((size_t)addr2+63)&-64);
return Example4ThreaderCreate1Up2(team5, nt4);
}

static char* Example4ThreaderCreate1(Example4ThreaderTeam1** team4, ptrdiff_t nt3) {
if (__builtin_expect(nt3 < 1, 0)) {
return Example4Errmsg1(__LINE__, "too few threads");
}
void* addr1 = calloc(1, sizeof(Example4ThreaderTeam1));
if (__builtin_expect(!addr1, 0)) {
return Example4Errmsg1(__LINE__, "errno %d", errno);
}
char* err1 = Example4ThreaderCreate1Up1(addr1, nt3);
if (__builtin_expect(!!err1, 0)) {
Example4ThreaderDestroy1(addr1);
} else {
*team4 = addr1;
}
return err1;
}

static char* Example4ThreaderPthreadT1(
pthread_t* thr2,
Example4ThreaderTeam1* team9,
ptrdiff_t idx1
) {
if (__builtin_expect(idx1 < 0 || idx1 >= team9->nt1, 0)) {
return Example4Errmsg1(__LINE__, "bad thread idx");
}
*thr2 = team9->nodes2[idx1].thr1;
return 0;
}

static void Example4ThreaderDo1(Example4ThreaderTeam1* team10, Example4ThreaderTask1* task3) {
ptrdiff_t nd6 = task3->nd1;
if (nd6 < 1) return;
int64_t tot1 = task3->hull1[0];
for (ptrdiff_t i4 = 1; i4 < nd6; tot1 *= task3->hull1[i4++]);
ptrdiff_t nt8 = team10->nt1;
int64_t each1 = tot1/nt8;
ptrdiff_t more1 = tot1%nt8;
int64_t plus2[4];
Example4ThreaderPut1(nd6, task3->hull1, plus2, each1);
int64_t pt6[4] = {0};
Example4ThreaderHub1* hub6 = team10->hub2;
for (; __builtin_expect(pthread_mutex_lock(&hub6->mut1), 0); );
Example4ThreaderNode1* node5 = team10->nodes2;
for (ptrdiff_t i4 = 0; ; ++node5) {
for (; __builtin_expect(pthread_mutex_lock(&node5->mut2), 0); );
int64_t carry3 = i4 < more1;
node5->np1 = each1+carry3;
memcpy(node5->pt1, pt6, sizeof(pt6));
node5->task1 = task3;
for (; __builtin_expect(pthread_mutex_unlock(&node5->mut2), 0); );
for (; __builtin_expect(pthread_cond_signal(&node5->cond2), 0); );
if (++i4 == nt8) break;
Example4ThreaderAdd1(nd6, task3->hull1, pt6, plus2, carry3);
}
hub6->offset1 = 0;
hub6->mask1 = -1;
for (ptrdiff_t i4 = (size_t)nt8/(sizeof(long)*8); i4 >= 0; ) {
hub6->status1[i4--] = -1;
}
for (hub6->pending1 = nt8; hub6->pending1; ) {
for (; __builtin_expect(pthread_cond_wait(&hub6->cond1, &hub6->mut1), 0); );
}
for (; __builtin_expect(pthread_mutex_unlock(&hub6->mut1), 0); );
}

static __m512 Example4Exp1(__m512 x1) {
x1 = _mm512_max_ps(x1, _mm512_set1_ps(-8.733654e+01f));
x1 = _mm512_min_ps(x1, _mm512_set1_ps(8.872284e+01f));
__m512 t1 = _mm512_mul_ps(x1, _mm512_set1_ps(1.442695e+00f));
__m512 r1 = _mm512_roundscale_ps(t1, _MM_FROUND_TO_NEAREST_INT|_MM_FROUND_NO_EXC);
__m512 f1 = _mm512_fmadd_ps(r1, _mm512_set1_ps(-6.9314575e-01f), x1);
f1 = _mm512_fmadd_ps(r1, _mm512_set1_ps(-1.4286068e-06f), f1);
__m512 g1 = _mm512_set1_ps(4.194439e-02f);
g1 = _mm512_fmadd_ps(g1, f1, _mm512_set1_ps(1.6800667e-01f));
g1 = _mm512_fmadd_ps(g1, f1, _mm512_set1_ps(4.9999994e-01f));
g1 = _mm512_fmadd_ps(g1, f1, _mm512_set1_ps(9.999569e-01f));
g1 = _mm512_fmadd_ps(g1, f1, _mm512_set1_ps(9.9999964e-01f));
__m512i y1 = _mm512_slli_epi32(_mm512_cvtps_epi32(t1), 23);
return _mm512_castsi512_ps(_mm512_add_epi32(y1, _mm512_castps_si512(g1)));
}

static __m512 Example4Rsqrt1(__m512 x2) {
__m512 y2 = _mm512_rsqrt14_ps(x2);
__m512 z1 = _mm512_mul_ps(x2, y2);
__m512 a1 = _mm512_mul_ps(y2, _mm512_set1_ps(5e-01f));
__m512 b1 = _mm512_fnmadd_ps(y2, z1, _mm512_set1_ps(3e+00f));
return _mm512_mul_ps(a1, b1);
}

static void Example4LoomArrangeFilts1Callee1(Example4ThreaderTask1* task4, int64_t* pt7) {
char** tensors2 = task4->any1;
ptrdiff_t b2 = pt7[0];
ptrdiff_t g2 = pt7[1];
ptrdiff_t e1 = 0;
char*restrict arrangedB1 = tensors2[2]+2976*e1;
char*restrict arrangedW1 = tensors2[2]+2976+39759360*e1;
char*restrict wtPtr1 = tensors2[0]+53440*e1;
char*restrict biasPtr1 = tensors2[1];
ptrdiff_t i5 = 1*g2;
ptrdiff_t j1 = 1*b2;
ptrdiff_t jj1 = j1+0;
if (j1 < 5) {
for (; j1 != 5; ++j1) {
__m512 bias1 = _mm512_setzero_ps();
if (!e1) {
bias1 = _mm512_maskz_loadu_ps(65535, biasPtr1-0+372*i5+64*j1);
}
_mm512_mask_storeu_ps(arrangedB1-0+372*i5+64*j1, 65535, bias1);
ptrdiff_t c1 = (size_t)(0+16*j1)/6;
switch ((size_t)(0+16*j1)%6) {
case 0: {
ptrdiff_t k1 = 0;
for (; k1 != 157; ++k1) {
__m512 wt1 = _mm512_maskz_loadu_ps(65535, wtPtr1+0+934464*i5+160768*j1+64*k1);
__m512 wt2 = _mm512_maskz_loadu_ps(65535, wtPtr1+10048+934464*i5+160768*j1+64*k1);
__m512 wt3 = _mm512_maskz_loadu_ps(65535, wtPtr1+20096+934464*i5+160768*j1+64*k1);
__m512 wt4 = _mm512_maskz_loadu_ps(65535, wtPtr1+30144+934464*i5+160768*j1+64*k1);
__m512 wt5 = _mm512_maskz_loadu_ps(65535, wtPtr1+40192+934464*i5+160768*j1+64*k1);
__m512 wt6 = _mm512_maskz_loadu_ps(65535, wtPtr1+50240+934464*i5+160768*j1+64*k1);
__m512 wt7 = _mm512_maskz_loadu_ps(65535, wtPtr1+60288+934464*i5+160768*j1+64*k1);
__m512 wt8 = _mm512_maskz_loadu_ps(65535, wtPtr1+70336+934464*i5+160768*j1+64*k1);
__m512 wt9 = _mm512_maskz_loadu_ps(65535, wtPtr1+80384+934464*i5+160768*j1+64*k1);
__m512 wt10 = _mm512_maskz_loadu_ps(65535, wtPtr1+90432+934464*i5+160768*j1+64*k1);
__m512 wt11 = _mm512_maskz_loadu_ps(65535, wtPtr1+100480+934464*i5+160768*j1+64*k1);
__m512 wt12 = _mm512_maskz_loadu_ps(65535, wtPtr1+110528+934464*i5+160768*j1+64*k1);
__m512 wt13 = _mm512_maskz_loadu_ps(65535, wtPtr1+120576+934464*i5+160768*j1+64*k1);
__m512 wt14 = _mm512_maskz_loadu_ps(65535, wtPtr1+130624+934464*i5+160768*j1+64*k1);
__m512 wt15 = _mm512_maskz_loadu_ps(65535, wtPtr1+140672+934464*i5+160768*j1+64*k1);
__m512 wt16 = _mm512_maskz_loadu_ps(65535, wtPtr1+150720+934464*i5+160768*j1+64*k1);
__m512 tmp1 = _mm512_unpacklo_ps(wt1, wt2);
__m512 tmp2 = _mm512_unpackhi_ps(wt1, wt2);
__m512 tmp3 = _mm512_unpacklo_ps(wt3, wt4);
__m512 tmp4 = _mm512_unpackhi_ps(wt3, wt4);
__m512 tmp5 = _mm512_unpacklo_ps(wt5, wt6);
__m512 tmp6 = _mm512_unpackhi_ps(wt5, wt6);
__m512 tmp7 = _mm512_unpacklo_ps(wt7, wt8);
__m512 tmp8 = _mm512_unpackhi_ps(wt7, wt8);
__m512 tmp9 = _mm512_unpacklo_ps(wt9, wt10);
__m512 tmp10 = _mm512_unpackhi_ps(wt9, wt10);
__m512 tmp11 = _mm512_unpacklo_ps(wt11, wt12);
__m512 tmp12 = _mm512_unpackhi_ps(wt11, wt12);
__m512 tmp13 = _mm512_unpacklo_ps(wt13, wt14);
__m512 tmp14 = _mm512_unpackhi_ps(wt13, wt14);
__m512 tmp15 = _mm512_unpacklo_ps(wt15, wt16);
__m512 tmp16 = _mm512_unpackhi_ps(wt15, wt16);
__m512 tmp17 = _mm512_shuffle_ps(tmp1, tmp3, 68);
__m512 tmp18 = _mm512_shuffle_ps(tmp1, tmp3, 238);
__m512 tmp19 = _mm512_shuffle_ps(tmp2, tmp4, 68);
__m512 tmp20 = _mm512_shuffle_ps(tmp2, tmp4, 238);
__m512 tmp21 = _mm512_shuffle_ps(tmp5, tmp7, 68);
__m512 tmp22 = _mm512_shuffle_ps(tmp5, tmp7, 238);
__m512 tmp23 = _mm512_shuffle_ps(tmp6, tmp8, 68);
__m512 tmp24 = _mm512_shuffle_ps(tmp6, tmp8, 238);
__m512 tmp25 = _mm512_shuffle_ps(tmp9, tmp11, 68);
__m512 tmp26 = _mm512_shuffle_ps(tmp9, tmp11, 238);
__m512 tmp27 = _mm512_shuffle_ps(tmp10, tmp12, 68);
__m512 tmp28 = _mm512_shuffle_ps(tmp10, tmp12, 238);
__m512 tmp29 = _mm512_shuffle_ps(tmp13, tmp15, 68);
__m512 tmp30 = _mm512_shuffle_ps(tmp13, tmp15, 238);
__m512 tmp31 = _mm512_shuffle_ps(tmp14, tmp16, 68);
__m512 tmp32 = _mm512_shuffle_ps(tmp14, tmp16, 238);
__m512 tmp33 = _mm512_shuffle_f32x4(tmp17, tmp21, 136);
__m512 tmp34 = _mm512_shuffle_f32x4(tmp17, tmp21, 221);
__m512 tmp35 = _mm512_shuffle_f32x4(tmp18, tmp22, 136);
__m512 tmp36 = _mm512_shuffle_f32x4(tmp18, tmp22, 221);
__m512 tmp37 = _mm512_shuffle_f32x4(tmp19, tmp23, 136);
__m512 tmp38 = _mm512_shuffle_f32x4(tmp19, tmp23, 221);
__m512 tmp39 = _mm512_shuffle_f32x4(tmp20, tmp24, 136);
__m512 tmp40 = _mm512_shuffle_f32x4(tmp20, tmp24, 221);
__m512 tmp41 = _mm512_shuffle_f32x4(tmp25, tmp29, 136);
__m512 tmp42 = _mm512_shuffle_f32x4(tmp25, tmp29, 221);
__m512 tmp43 = _mm512_shuffle_f32x4(tmp26, tmp30, 136);
__m512 tmp44 = _mm512_shuffle_f32x4(tmp26, tmp30, 221);
__m512 tmp45 = _mm512_shuffle_f32x4(tmp27, tmp31, 136);
__m512 tmp46 = _mm512_shuffle_f32x4(tmp27, tmp31, 221);
__m512 tmp47 = _mm512_shuffle_f32x4(tmp28, tmp32, 136);
__m512 tmp48 = _mm512_shuffle_f32x4(tmp28, tmp32, 221);
wt1 = _mm512_shuffle_f32x4(tmp33, tmp41, 136);
wt9 = _mm512_shuffle_f32x4(tmp33, tmp41, 221);
wt2 = _mm512_shuffle_f32x4(tmp35, tmp43, 136);
wt10 = _mm512_shuffle_f32x4(tmp35, tmp43, 221);
wt3 = _mm512_shuffle_f32x4(tmp37, tmp45, 136);
wt11 = _mm512_shuffle_f32x4(tmp37, tmp45, 221);
wt4 = _mm512_shuffle_f32x4(tmp39, tmp47, 136);
wt12 = _mm512_shuffle_f32x4(tmp39, tmp47, 221);
wt5 = _mm512_shuffle_f32x4(tmp34, tmp42, 136);
wt13 = _mm512_shuffle_f32x4(tmp34, tmp42, 221);
wt6 = _mm512_shuffle_f32x4(tmp36, tmp44, 136);
wt14 = _mm512_shuffle_f32x4(tmp36, tmp44, 221);
wt7 = _mm512_shuffle_f32x4(tmp38, tmp46, 136);
wt15 = _mm512_shuffle_f32x4(tmp38, tmp46, 221);
wt8 = _mm512_shuffle_f32x4(tmp40, tmp48, 136);
wt16 = _mm512_shuffle_f32x4(tmp40, tmp48, 221);
_mm512_mask_storeu_ps(arrangedW1+0+934464*i5+3768*c1+24*k1, 63, wt1);
_mm512_mask_storeu_ps(arrangedW1+3744+934464*i5+3768*c1+24*k1, 4032, wt1);
_mm512_mask_storeu_ps(arrangedW1+7488+934464*i5+3768*c1+24*k1, 61440, wt1);
_mm512_mask_storeu_ps(arrangedW1+233616+934464*i5+3768*c1+24*k1, 63, wt2);
_mm512_mask_storeu_ps(arrangedW1+237360+934464*i5+3768*c1+24*k1, 4032, wt2);
_mm512_mask_storeu_ps(arrangedW1+241104+934464*i5+3768*c1+24*k1, 61440, wt2);
_mm512_mask_storeu_ps(arrangedW1+58404+934464*i5+3768*c1+24*k1, 63, wt3);
_mm512_mask_storeu_ps(arrangedW1+62148+934464*i5+3768*c1+24*k1, 4032, wt3);
_mm512_mask_storeu_ps(arrangedW1+65892+934464*i5+3768*c1+24*k1, 61440, wt3);
_mm512_mask_storeu_ps(arrangedW1+292020+934464*i5+3768*c1+24*k1, 63, wt4);
_mm512_mask_storeu_ps(arrangedW1+295764+934464*i5+3768*c1+24*k1, 4032, wt4);
_mm512_mask_storeu_ps(arrangedW1+299508+934464*i5+3768*c1+24*k1, 61440, wt4);
_mm512_mask_storeu_ps(arrangedW1+467232+934464*i5+3768*c1+24*k1, 63, wt5);
_mm512_mask_storeu_ps(arrangedW1+470976+934464*i5+3768*c1+24*k1, 4032, wt5);
_mm512_mask_storeu_ps(arrangedW1+474720+934464*i5+3768*c1+24*k1, 61440, wt5);
_mm512_mask_storeu_ps(arrangedW1+700848+934464*i5+3768*c1+24*k1, 63, wt6);
_mm512_mask_storeu_ps(arrangedW1+704592+934464*i5+3768*c1+24*k1, 4032, wt6);
_mm512_mask_storeu_ps(arrangedW1+708336+934464*i5+3768*c1+24*k1, 61440, wt6);
_mm512_mask_storeu_ps(arrangedW1+525636+934464*i5+3768*c1+24*k1, 63, wt7);
_mm512_mask_storeu_ps(arrangedW1+529380+934464*i5+3768*c1+24*k1, 4032, wt7);
_mm512_mask_storeu_ps(arrangedW1+533124+934464*i5+3768*c1+24*k1, 61440, wt7);
_mm512_mask_storeu_ps(arrangedW1+759252+934464*i5+3768*c1+24*k1, 63, wt8);
_mm512_mask_storeu_ps(arrangedW1+762996+934464*i5+3768*c1+24*k1, 4032, wt8);
_mm512_mask_storeu_ps(arrangedW1+766740+934464*i5+3768*c1+24*k1, 61440, wt8);
_mm512_mask_storeu_ps(arrangedW1+116808+934464*i5+3768*c1+24*k1, 63, wt9);
_mm512_mask_storeu_ps(arrangedW1+120552+934464*i5+3768*c1+24*k1, 4032, wt9);
_mm512_mask_storeu_ps(arrangedW1+124296+934464*i5+3768*c1+24*k1, 61440, wt9);
_mm512_mask_storeu_ps(arrangedW1+350424+934464*i5+3768*c1+24*k1, 63, wt10);
_mm512_mask_storeu_ps(arrangedW1+354168+934464*i5+3768*c1+24*k1, 4032, wt10);
_mm512_mask_storeu_ps(arrangedW1+357912+934464*i5+3768*c1+24*k1, 61440, wt10);
_mm512_mask_storeu_ps(arrangedW1+175212+934464*i5+3768*c1+24*k1, 63, wt11);
_mm512_mask_storeu_ps(arrangedW1+178956+934464*i5+3768*c1+24*k1, 4032, wt11);
_mm512_mask_storeu_ps(arrangedW1+182700+934464*i5+3768*c1+24*k1, 61440, wt11);
_mm512_mask_storeu_ps(arrangedW1+408828+934464*i5+3768*c1+24*k1, 63, wt12);
_mm512_mask_storeu_ps(arrangedW1+412572+934464*i5+3768*c1+24*k1, 4032, wt12);
_mm512_mask_storeu_ps(arrangedW1+416316+934464*i5+3768*c1+24*k1, 61440, wt12);
_mm512_mask_storeu_ps(arrangedW1+584040+934464*i5+3768*c1+24*k1, 63, wt13);
_mm512_mask_storeu_ps(arrangedW1+587784+934464*i5+3768*c1+24*k1, 4032, wt13);
_mm512_mask_storeu_ps(arrangedW1+591528+934464*i5+3768*c1+24*k1, 61440, wt13);
_mm512_mask_storeu_ps(arrangedW1+817656+934464*i5+3768*c1+24*k1, 63, wt14);
_mm512_mask_storeu_ps(arrangedW1+821400+934464*i5+3768*c1+24*k1, 4032, wt14);
_mm512_mask_storeu_ps(arrangedW1+825144+934464*i5+3768*c1+24*k1, 61440, wt14);
_mm512_mask_storeu_ps(arrangedW1+642444+934464*i5+3768*c1+24*k1, 63, wt15);
_mm512_mask_storeu_ps(arrangedW1+646188+934464*i5+3768*c1+24*k1, 4032, wt15);
_mm512_mask_storeu_ps(arrangedW1+649932+934464*i5+3768*c1+24*k1, 61440, wt15);
_mm512_mask_storeu_ps(arrangedW1+876060+934464*i5+3768*c1+24*k1, 63, wt16);
_mm512_mask_storeu_ps(arrangedW1+879804+934464*i5+3768*c1+24*k1, 4032, wt16);
_mm512_mask_storeu_ps(arrangedW1+883548+934464*i5+3768*c1+24*k1, 61440, wt16);
}
break;
}
case 2: {
ptrdiff_t k2 = 0;
for (; k2 != 157; ++k2) {
__m512 wt17 = _mm512_maskz_loadu_ps(65535, wtPtr1+0+934464*i5+160768*j1+64*k2);
__m512 wt18 = _mm512_maskz_loadu_ps(65535, wtPtr1+10048+934464*i5+160768*j1+64*k2);
__m512 wt19 = _mm512_maskz_loadu_ps(65535, wtPtr1+20096+934464*i5+160768*j1+64*k2);
__m512 wt20 = _mm512_maskz_loadu_ps(65535, wtPtr1+30144+934464*i5+160768*j1+64*k2);
__m512 wt21 = _mm512_maskz_loadu_ps(65535, wtPtr1+40192+934464*i5+160768*j1+64*k2);
__m512 wt22 = _mm512_maskz_loadu_ps(65535, wtPtr1+50240+934464*i5+160768*j1+64*k2);
__m512 wt23 = _mm512_maskz_loadu_ps(65535, wtPtr1+60288+934464*i5+160768*j1+64*k2);
__m512 wt24 = _mm512_maskz_loadu_ps(65535, wtPtr1+70336+934464*i5+160768*j1+64*k2);
__m512 wt25 = _mm512_maskz_loadu_ps(65535, wtPtr1+80384+934464*i5+160768*j1+64*k2);
__m512 wt26 = _mm512_maskz_loadu_ps(65535, wtPtr1+90432+934464*i5+160768*j1+64*k2);
__m512 wt27 = _mm512_maskz_loadu_ps(65535, wtPtr1+100480+934464*i5+160768*j1+64*k2);
__m512 wt28 = _mm512_maskz_loadu_ps(65535, wtPtr1+110528+934464*i5+160768*j1+64*k2);
__m512 wt29 = _mm512_maskz_loadu_ps(65535, wtPtr1+120576+934464*i5+160768*j1+64*k2);
__m512 wt30 = _mm512_maskz_loadu_ps(65535, wtPtr1+130624+934464*i5+160768*j1+64*k2);
__m512 wt31 = _mm512_maskz_loadu_ps(65535, wtPtr1+140672+934464*i5+160768*j1+64*k2);
__m512 wt32 = _mm512_maskz_loadu_ps(65535, wtPtr1+150720+934464*i5+160768*j1+64*k2);
__m512 tmp49 = _mm512_unpacklo_ps(wt17, wt18);
__m512 tmp50 = _mm512_unpackhi_ps(wt17, wt18);
__m512 tmp51 = _mm512_unpacklo_ps(wt19, wt20);
__m512 tmp52 = _mm512_unpackhi_ps(wt19, wt20);
__m512 tmp53 = _mm512_unpacklo_ps(wt21, wt22);
__m512 tmp54 = _mm512_unpackhi_ps(wt21, wt22);
__m512 tmp55 = _mm512_unpacklo_ps(wt23, wt24);
__m512 tmp56 = _mm512_unpackhi_ps(wt23, wt24);
__m512 tmp57 = _mm512_unpacklo_ps(wt25, wt26);
__m512 tmp58 = _mm512_unpackhi_ps(wt25, wt26);
__m512 tmp59 = _mm512_unpacklo_ps(wt27, wt28);
__m512 tmp60 = _mm512_unpackhi_ps(wt27, wt28);
__m512 tmp61 = _mm512_unpacklo_ps(wt29, wt30);
__m512 tmp62 = _mm512_unpackhi_ps(wt29, wt30);
__m512 tmp63 = _mm512_unpacklo_ps(wt31, wt32);
__m512 tmp64 = _mm512_unpackhi_ps(wt31, wt32);
__m512 tmp65 = _mm512_shuffle_ps(tmp49, tmp51, 68);
__m512 tmp66 = _mm512_shuffle_ps(tmp49, tmp51, 238);
__m512 tmp67 = _mm512_shuffle_ps(tmp50, tmp52, 68);
__m512 tmp68 = _mm512_shuffle_ps(tmp50, tmp52, 238);
__m512 tmp69 = _mm512_shuffle_ps(tmp53, tmp55, 68);
__m512 tmp70 = _mm512_shuffle_ps(tmp53, tmp55, 238);
__m512 tmp71 = _mm512_shuffle_ps(tmp54, tmp56, 68);
__m512 tmp72 = _mm512_shuffle_ps(tmp54, tmp56, 238);
__m512 tmp73 = _mm512_shuffle_ps(tmp57, tmp59, 68);
__m512 tmp74 = _mm512_shuffle_ps(tmp57, tmp59, 238);
__m512 tmp75 = _mm512_shuffle_ps(tmp58, tmp60, 68);
__m512 tmp76 = _mm512_shuffle_ps(tmp58, tmp60, 238);
__m512 tmp77 = _mm512_shuffle_ps(tmp61, tmp63, 68);
__m512 tmp78 = _mm512_shuffle_ps(tmp61, tmp63, 238);
__m512 tmp79 = _mm512_shuffle_ps(tmp62, tmp64, 68);
__m512 tmp80 = _mm512_shuffle_ps(tmp62, tmp64, 238);
__m512 tmp81 = _mm512_shuffle_f32x4(tmp65, tmp69, 136);
__m512 tmp82 = _mm512_shuffle_f32x4(tmp65, tmp69, 221);
__m512 tmp83 = _mm512_shuffle_f32x4(tmp66, tmp70, 136);
__m512 tmp84 = _mm512_shuffle_f32x4(tmp66, tmp70, 221);
__m512 tmp85 = _mm512_shuffle_f32x4(tmp67, tmp71, 136);
__m512 tmp86 = _mm512_shuffle_f32x4(tmp67, tmp71, 221);
__m512 tmp87 = _mm512_shuffle_f32x4(tmp68, tmp72, 136);
__m512 tmp88 = _mm512_shuffle_f32x4(tmp68, tmp72, 221);
__m512 tmp89 = _mm512_shuffle_f32x4(tmp73, tmp77, 136);
__m512 tmp90 = _mm512_shuffle_f32x4(tmp73, tmp77, 221);
__m512 tmp91 = _mm512_shuffle_f32x4(tmp74, tmp78, 136);
__m512 tmp92 = _mm512_shuffle_f32x4(tmp74, tmp78, 221);
__m512 tmp93 = _mm512_shuffle_f32x4(tmp75, tmp79, 136);
__m512 tmp94 = _mm512_shuffle_f32x4(tmp75, tmp79, 221);
__m512 tmp95 = _mm512_shuffle_f32x4(tmp76, tmp80, 136);
__m512 tmp96 = _mm512_shuffle_f32x4(tmp76, tmp80, 221);
wt17 = _mm512_shuffle_f32x4(tmp81, tmp89, 136);
wt25 = _mm512_shuffle_f32x4(tmp81, tmp89, 221);
wt18 = _mm512_shuffle_f32x4(tmp83, tmp91, 136);
wt26 = _mm512_shuffle_f32x4(tmp83, tmp91, 221);
wt19 = _mm512_shuffle_f32x4(tmp85, tmp93, 136);
wt27 = _mm512_shuffle_f32x4(tmp85, tmp93, 221);
wt20 = _mm512_shuffle_f32x4(tmp87, tmp95, 136);
wt28 = _mm512_shuffle_f32x4(tmp87, tmp95, 221);
wt21 = _mm512_shuffle_f32x4(tmp82, tmp90, 136);
wt29 = _mm512_shuffle_f32x4(tmp82, tmp90, 221);
wt22 = _mm512_shuffle_f32x4(tmp84, tmp92, 136);
wt30 = _mm512_shuffle_f32x4(tmp84, tmp92, 221);
wt23 = _mm512_shuffle_f32x4(tmp86, tmp94, 136);
wt31 = _mm512_shuffle_f32x4(tmp86, tmp94, 221);
wt24 = _mm512_shuffle_f32x4(tmp88, tmp96, 136);
wt32 = _mm512_shuffle_f32x4(tmp88, tmp96, 221);
_mm512_mask_storeu_ps(arrangedW1+8+934464*i5+3768*c1+24*k2, 15, wt17);
_mm512_mask_storeu_ps(arrangedW1+3752+934464*i5+3768*c1+24*k2, 1008, wt17);
_mm512_mask_storeu_ps(arrangedW1+7496+934464*i5+3768*c1+24*k2, 64512, wt17);
_mm512_mask_storeu_ps(arrangedW1+233624+934464*i5+3768*c1+24*k2, 15, wt18);
_mm512_mask_storeu_ps(arrangedW1+237368+934464*i5+3768*c1+24*k2, 1008, wt18);
_mm512_mask_storeu_ps(arrangedW1+241112+934464*i5+3768*c1+24*k2, 64512, wt18);
_mm512_mask_storeu_ps(arrangedW1+58412+934464*i5+3768*c1+24*k2, 15, wt19);
_mm512_mask_storeu_ps(arrangedW1+62156+934464*i5+3768*c1+24*k2, 1008, wt19);
_mm512_mask_storeu_ps(arrangedW1+65900+934464*i5+3768*c1+24*k2, 64512, wt19);
_mm512_mask_storeu_ps(arrangedW1+292028+934464*i5+3768*c1+24*k2, 15, wt20);
_mm512_mask_storeu_ps(arrangedW1+295772+934464*i5+3768*c1+24*k2, 1008, wt20);
_mm512_mask_storeu_ps(arrangedW1+299516+934464*i5+3768*c1+24*k2, 64512, wt20);
_mm512_mask_storeu_ps(arrangedW1+467240+934464*i5+3768*c1+24*k2, 15, wt21);
_mm512_mask_storeu_ps(arrangedW1+470984+934464*i5+3768*c1+24*k2, 1008, wt21);
_mm512_mask_storeu_ps(arrangedW1+474728+934464*i5+3768*c1+24*k2, 64512, wt21);
_mm512_mask_storeu_ps(arrangedW1+700856+934464*i5+3768*c1+24*k2, 15, wt22);
_mm512_mask_storeu_ps(arrangedW1+704600+934464*i5+3768*c1+24*k2, 1008, wt22);
_mm512_mask_storeu_ps(arrangedW1+708344+934464*i5+3768*c1+24*k2, 64512, wt22);
_mm512_mask_storeu_ps(arrangedW1+525644+934464*i5+3768*c1+24*k2, 15, wt23);
_mm512_mask_storeu_ps(arrangedW1+529388+934464*i5+3768*c1+24*k2, 1008, wt23);
_mm512_mask_storeu_ps(arrangedW1+533132+934464*i5+3768*c1+24*k2, 64512, wt23);
_mm512_mask_storeu_ps(arrangedW1+759260+934464*i5+3768*c1+24*k2, 15, wt24);
_mm512_mask_storeu_ps(arrangedW1+763004+934464*i5+3768*c1+24*k2, 1008, wt24);
_mm512_mask_storeu_ps(arrangedW1+766748+934464*i5+3768*c1+24*k2, 64512, wt24);
_mm512_mask_storeu_ps(arrangedW1+116816+934464*i5+3768*c1+24*k2, 15, wt25);
_mm512_mask_storeu_ps(arrangedW1+120560+934464*i5+3768*c1+24*k2, 1008, wt25);
_mm512_mask_storeu_ps(arrangedW1+124304+934464*i5+3768*c1+24*k2, 64512, wt25);
_mm512_mask_storeu_ps(arrangedW1+350432+934464*i5+3768*c1+24*k2, 15, wt26);
_mm512_mask_storeu_ps(arrangedW1+354176+934464*i5+3768*c1+24*k2, 1008, wt26);
_mm512_mask_storeu_ps(arrangedW1+357920+934464*i5+3768*c1+24*k2, 64512, wt26);
_mm512_mask_storeu_ps(arrangedW1+175220+934464*i5+3768*c1+24*k2, 15, wt27);
_mm512_mask_storeu_ps(arrangedW1+178964+934464*i5+3768*c1+24*k2, 1008, wt27);
_mm512_mask_storeu_ps(arrangedW1+182708+934464*i5+3768*c1+24*k2, 64512, wt27);
_mm512_mask_storeu_ps(arrangedW1+408836+934464*i5+3768*c1+24*k2, 15, wt28);
_mm512_mask_storeu_ps(arrangedW1+412580+934464*i5+3768*c1+24*k2, 1008, wt28);
_mm512_mask_storeu_ps(arrangedW1+416324+934464*i5+3768*c1+24*k2, 64512, wt28);
_mm512_mask_storeu_ps(arrangedW1+584048+934464*i5+3768*c1+24*k2, 15, wt29);
_mm512_mask_storeu_ps(arrangedW1+587792+934464*i5+3768*c1+24*k2, 1008, wt29);
_mm512_mask_storeu_ps(arrangedW1+591536+934464*i5+3768*c1+24*k2, 64512, wt29);
_mm512_mask_storeu_ps(arrangedW1+817664+934464*i5+3768*c1+24*k2, 15, wt30);
_mm512_mask_storeu_ps(arrangedW1+821408+934464*i5+3768*c1+24*k2, 1008, wt30);
_mm512_mask_storeu_ps(arrangedW1+825152+934464*i5+3768*c1+24*k2, 64512, wt30);
_mm512_mask_storeu_ps(arrangedW1+642452+934464*i5+3768*c1+24*k2, 15, wt31);
_mm512_mask_storeu_ps(arrangedW1+646196+934464*i5+3768*c1+24*k2, 1008, wt31);
_mm512_mask_storeu_ps(arrangedW1+649940+934464*i5+3768*c1+24*k2, 64512, wt31);
_mm512_mask_storeu_ps(arrangedW1+876068+934464*i5+3768*c1+24*k2, 15, wt32);
_mm512_mask_storeu_ps(arrangedW1+879812+934464*i5+3768*c1+24*k2, 1008, wt32);
_mm512_mask_storeu_ps(arrangedW1+883556+934464*i5+3768*c1+24*k2, 64512, wt32);
}
break;
}
default: {
ptrdiff_t k3 = 0;
for (; k3 != 157; ++k3) {
__m512 wt33 = _mm512_maskz_loadu_ps(65535, wtPtr1+0+934464*i5+160768*j1+64*k3);
__m512 wt34 = _mm512_maskz_loadu_ps(65535, wtPtr1+10048+934464*i5+160768*j1+64*k3);
__m512 wt35 = _mm512_maskz_loadu_ps(65535, wtPtr1+20096+934464*i5+160768*j1+64*k3);
__m512 wt36 = _mm512_maskz_loadu_ps(65535, wtPtr1+30144+934464*i5+160768*j1+64*k3);
__m512 wt37 = _mm512_maskz_loadu_ps(65535, wtPtr1+40192+934464*i5+160768*j1+64*k3);
__m512 wt38 = _mm512_maskz_loadu_ps(65535, wtPtr1+50240+934464*i5+160768*j1+64*k3);
__m512 wt39 = _mm512_maskz_loadu_ps(65535, wtPtr1+60288+934464*i5+160768*j1+64*k3);
__m512 wt40 = _mm512_maskz_loadu_ps(65535, wtPtr1+70336+934464*i5+160768*j1+64*k3);
__m512 wt41 = _mm512_maskz_loadu_ps(65535, wtPtr1+80384+934464*i5+160768*j1+64*k3);
__m512 wt42 = _mm512_maskz_loadu_ps(65535, wtPtr1+90432+934464*i5+160768*j1+64*k3);
__m512 wt43 = _mm512_maskz_loadu_ps(65535, wtPtr1+100480+934464*i5+160768*j1+64*k3);
__m512 wt44 = _mm512_maskz_loadu_ps(65535, wtPtr1+110528+934464*i5+160768*j1+64*k3);
__m512 wt45 = _mm512_maskz_loadu_ps(65535, wtPtr1+120576+934464*i5+160768*j1+64*k3);
__m512 wt46 = _mm512_maskz_loadu_ps(65535, wtPtr1+130624+934464*i5+160768*j1+64*k3);
__m512 wt47 = _mm512_maskz_loadu_ps(65535, wtPtr1+140672+934464*i5+160768*j1+64*k3);
__m512 wt48 = _mm512_maskz_loadu_ps(65535, wtPtr1+150720+934464*i5+160768*j1+64*k3);
__m512 tmp97 = _mm512_unpacklo_ps(wt33, wt34);
__m512 tmp98 = _mm512_unpackhi_ps(wt33, wt34);
__m512 tmp99 = _mm512_unpacklo_ps(wt35, wt36);
__m512 tmp100 = _mm512_unpackhi_ps(wt35, wt36);
__m512 tmp101 = _mm512_unpacklo_ps(wt37, wt38);
__m512 tmp102 = _mm512_unpackhi_ps(wt37, wt38);
__m512 tmp103 = _mm512_unpacklo_ps(wt39, wt40);
__m512 tmp104 = _mm512_unpackhi_ps(wt39, wt40);
__m512 tmp105 = _mm512_unpacklo_ps(wt41, wt42);
__m512 tmp106 = _mm512_unpackhi_ps(wt41, wt42);
__m512 tmp107 = _mm512_unpacklo_ps(wt43, wt44);
__m512 tmp108 = _mm512_unpackhi_ps(wt43, wt44);
__m512 tmp109 = _mm512_unpacklo_ps(wt45, wt46);
__m512 tmp110 = _mm512_unpackhi_ps(wt45, wt46);
__m512 tmp111 = _mm512_unpacklo_ps(wt47, wt48);
__m512 tmp112 = _mm512_unpackhi_ps(wt47, wt48);
__m512 tmp113 = _mm512_shuffle_ps(tmp97, tmp99, 68);
__m512 tmp114 = _mm512_shuffle_ps(tmp97, tmp99, 238);
__m512 tmp115 = _mm512_shuffle_ps(tmp98, tmp100, 68);
__m512 tmp116 = _mm512_shuffle_ps(tmp98, tmp100, 238);
__m512 tmp117 = _mm512_shuffle_ps(tmp101, tmp103, 68);
__m512 tmp118 = _mm512_shuffle_ps(tmp101, tmp103, 238);
__m512 tmp119 = _mm512_shuffle_ps(tmp102, tmp104, 68);
__m512 tmp120 = _mm512_shuffle_ps(tmp102, tmp104, 238);
__m512 tmp121 = _mm512_shuffle_ps(tmp105, tmp107, 68);
__m512 tmp122 = _mm512_shuffle_ps(tmp105, tmp107, 238);
__m512 tmp123 = _mm512_shuffle_ps(tmp106, tmp108, 68);
__m512 tmp124 = _mm512_shuffle_ps(tmp106, tmp108, 238);
__m512 tmp125 = _mm512_shuffle_ps(tmp109, tmp111, 68);
__m512 tmp126 = _mm512_shuffle_ps(tmp109, tmp111, 238);
__m512 tmp127 = _mm512_shuffle_ps(tmp110, tmp112, 68);
__m512 tmp128 = _mm512_shuffle_ps(tmp110, tmp112, 238);
__m512 tmp129 = _mm512_shuffle_f32x4(tmp113, tmp117, 136);
__m512 tmp130 = _mm512_shuffle_f32x4(tmp113, tmp117, 221);
__m512 tmp131 = _mm512_shuffle_f32x4(tmp114, tmp118, 136);
__m512 tmp132 = _mm512_shuffle_f32x4(tmp114, tmp118, 221);
__m512 tmp133 = _mm512_shuffle_f32x4(tmp115, tmp119, 136);
__m512 tmp134 = _mm512_shuffle_f32x4(tmp115, tmp119, 221);
__m512 tmp135 = _mm512_shuffle_f32x4(tmp116, tmp120, 136);
__m512 tmp136 = _mm512_shuffle_f32x4(tmp116, tmp120, 221);
__m512 tmp137 = _mm512_shuffle_f32x4(tmp121, tmp125, 136);
__m512 tmp138 = _mm512_shuffle_f32x4(tmp121, tmp125, 221);
__m512 tmp139 = _mm512_shuffle_f32x4(tmp122, tmp126, 136);
__m512 tmp140 = _mm512_shuffle_f32x4(tmp122, tmp126, 221);
__m512 tmp141 = _mm512_shuffle_f32x4(tmp123, tmp127, 136);
__m512 tmp142 = _mm512_shuffle_f32x4(tmp123, tmp127, 221);
__m512 tmp143 = _mm512_shuffle_f32x4(tmp124, tmp128, 136);
__m512 tmp144 = _mm512_shuffle_f32x4(tmp124, tmp128, 221);
wt33 = _mm512_shuffle_f32x4(tmp129, tmp137, 136);
wt41 = _mm512_shuffle_f32x4(tmp129, tmp137, 221);
wt34 = _mm512_shuffle_f32x4(tmp131, tmp139, 136);
wt42 = _mm512_shuffle_f32x4(tmp131, tmp139, 221);
wt35 = _mm512_shuffle_f32x4(tmp133, tmp141, 136);
wt43 = _mm512_shuffle_f32x4(tmp133, tmp141, 221);
wt36 = _mm512_shuffle_f32x4(tmp135, tmp143, 136);
wt44 = _mm512_shuffle_f32x4(tmp135, tmp143, 221);
wt37 = _mm512_shuffle_f32x4(tmp130, tmp138, 136);
wt45 = _mm512_shuffle_f32x4(tmp130, tmp138, 221);
wt38 = _mm512_shuffle_f32x4(tmp132, tmp140, 136);
wt46 = _mm512_shuffle_f32x4(tmp132, tmp140, 221);
wt39 = _mm512_shuffle_f32x4(tmp134, tmp142, 136);
wt47 = _mm512_shuffle_f32x4(tmp134, tmp142, 221);
wt40 = _mm512_shuffle_f32x4(tmp136, tmp144, 136);
wt48 = _mm512_shuffle_f32x4(tmp136, tmp144, 221);
_mm512_mask_storeu_ps(arrangedW1+16+934464*i5+3768*c1+24*k3, 3, wt33);
_mm512_mask_storeu_ps(arrangedW1+3760+934464*i5+3768*c1+24*k3, 252, wt33);
_mm512_mask_storeu_ps(arrangedW1+7504+934464*i5+3768*c1+24*k3, 16128, wt33);
_mm512_mask_storeu_ps(arrangedW1+11248+934464*i5+3768*c1+24*k3, 49152, wt33);
_mm512_mask_storeu_ps(arrangedW1+233632+934464*i5+3768*c1+24*k3, 3, wt34);
_mm512_mask_storeu_ps(arrangedW1+237376+934464*i5+3768*c1+24*k3, 252, wt34);
_mm512_mask_storeu_ps(arrangedW1+241120+934464*i5+3768*c1+24*k3, 16128, wt34);
_mm512_mask_storeu_ps(arrangedW1+244864+934464*i5+3768*c1+24*k3, 49152, wt34);
_mm512_mask_storeu_ps(arrangedW1+58420+934464*i5+3768*c1+24*k3, 3, wt35);
_mm512_mask_storeu_ps(arrangedW1+62164+934464*i5+3768*c1+24*k3, 252, wt35);
_mm512_mask_storeu_ps(arrangedW1+65908+934464*i5+3768*c1+24*k3, 16128, wt35);
_mm512_mask_storeu_ps(arrangedW1+69652+934464*i5+3768*c1+24*k3, 49152, wt35);
_mm512_mask_storeu_ps(arrangedW1+292036+934464*i5+3768*c1+24*k3, 3, wt36);
_mm512_mask_storeu_ps(arrangedW1+295780+934464*i5+3768*c1+24*k3, 252, wt36);
_mm512_mask_storeu_ps(arrangedW1+299524+934464*i5+3768*c1+24*k3, 16128, wt36);
_mm512_mask_storeu_ps(arrangedW1+303268+934464*i5+3768*c1+24*k3, 49152, wt36);
_mm512_mask_storeu_ps(arrangedW1+467248+934464*i5+3768*c1+24*k3, 3, wt37);
_mm512_mask_storeu_ps(arrangedW1+470992+934464*i5+3768*c1+24*k3, 252, wt37);
_mm512_mask_storeu_ps(arrangedW1+474736+934464*i5+3768*c1+24*k3, 16128, wt37);
_mm512_mask_storeu_ps(arrangedW1+478480+934464*i5+3768*c1+24*k3, 49152, wt37);
_mm512_mask_storeu_ps(arrangedW1+700864+934464*i5+3768*c1+24*k3, 3, wt38);
_mm512_mask_storeu_ps(arrangedW1+704608+934464*i5+3768*c1+24*k3, 252, wt38);
_mm512_mask_storeu_ps(arrangedW1+708352+934464*i5+3768*c1+24*k3, 16128, wt38);
_mm512_mask_storeu_ps(arrangedW1+712096+934464*i5+3768*c1+24*k3, 49152, wt38);
_mm512_mask_storeu_ps(arrangedW1+525652+934464*i5+3768*c1+24*k3, 3, wt39);
_mm512_mask_storeu_ps(arrangedW1+529396+934464*i5+3768*c1+24*k3, 252, wt39);
_mm512_mask_storeu_ps(arrangedW1+533140+934464*i5+3768*c1+24*k3, 16128, wt39);
_mm512_mask_storeu_ps(arrangedW1+536884+934464*i5+3768*c1+24*k3, 49152, wt39);
_mm512_mask_storeu_ps(arrangedW1+759268+934464*i5+3768*c1+24*k3, 3, wt40);
_mm512_mask_storeu_ps(arrangedW1+763012+934464*i5+3768*c1+24*k3, 252, wt40);
_mm512_mask_storeu_ps(arrangedW1+766756+934464*i5+3768*c1+24*k3, 16128, wt40);
_mm512_mask_storeu_ps(arrangedW1+770500+934464*i5+3768*c1+24*k3, 49152, wt40);
_mm512_mask_storeu_ps(arrangedW1+116824+934464*i5+3768*c1+24*k3, 3, wt41);
_mm512_mask_storeu_ps(arrangedW1+120568+934464*i5+3768*c1+24*k3, 252, wt41);
_mm512_mask_storeu_ps(arrangedW1+124312+934464*i5+3768*c1+24*k3, 16128, wt41);
_mm512_mask_storeu_ps(arrangedW1+128056+934464*i5+3768*c1+24*k3, 49152, wt41);
_mm512_mask_storeu_ps(arrangedW1+350440+934464*i5+3768*c1+24*k3, 3, wt42);
_mm512_mask_storeu_ps(arrangedW1+354184+934464*i5+3768*c1+24*k3, 252, wt42);
_mm512_mask_storeu_ps(arrangedW1+357928+934464*i5+3768*c1+24*k3, 16128, wt42);
_mm512_mask_storeu_ps(arrangedW1+361672+934464*i5+3768*c1+24*k3, 49152, wt42);
_mm512_mask_storeu_ps(arrangedW1+175228+934464*i5+3768*c1+24*k3, 3, wt43);
_mm512_mask_storeu_ps(arrangedW1+178972+934464*i5+3768*c1+24*k3, 252, wt43);
_mm512_mask_storeu_ps(arrangedW1+182716+934464*i5+3768*c1+24*k3, 16128, wt43);
_mm512_mask_storeu_ps(arrangedW1+186460+934464*i5+3768*c1+24*k3, 49152, wt43);
_mm512_mask_storeu_ps(arrangedW1+408844+934464*i5+3768*c1+24*k3, 3, wt44);
_mm512_mask_storeu_ps(arrangedW1+412588+934464*i5+3768*c1+24*k3, 252, wt44);
_mm512_mask_storeu_ps(arrangedW1+416332+934464*i5+3768*c1+24*k3, 16128, wt44);
_mm512_mask_storeu_ps(arrangedW1+420076+934464*i5+3768*c1+24*k3, 49152, wt44);
_mm512_mask_storeu_ps(arrangedW1+584056+934464*i5+3768*c1+24*k3, 3, wt45);
_mm512_mask_storeu_ps(arrangedW1+587800+934464*i5+3768*c1+24*k3, 252, wt45);
_mm512_mask_storeu_ps(arrangedW1+591544+934464*i5+3768*c1+24*k3, 16128, wt45);
_mm512_mask_storeu_ps(arrangedW1+595288+934464*i5+3768*c1+24*k3, 49152, wt45);
_mm512_mask_storeu_ps(arrangedW1+817672+934464*i5+3768*c1+24*k3, 3, wt46);
_mm512_mask_storeu_ps(arrangedW1+821416+934464*i5+3768*c1+24*k3, 252, wt46);
_mm512_mask_storeu_ps(arrangedW1+825160+934464*i5+3768*c1+24*k3, 16128, wt46);
_mm512_mask_storeu_ps(arrangedW1+828904+934464*i5+3768*c1+24*k3, 49152, wt46);
_mm512_mask_storeu_ps(arrangedW1+642460+934464*i5+3768*c1+24*k3, 3, wt47);
_mm512_mask_storeu_ps(arrangedW1+646204+934464*i5+3768*c1+24*k3, 252, wt47);
_mm512_mask_storeu_ps(arrangedW1+649948+934464*i5+3768*c1+24*k3, 16128, wt47);
_mm512_mask_storeu_ps(arrangedW1+653692+934464*i5+3768*c1+24*k3, 49152, wt47);
_mm512_mask_storeu_ps(arrangedW1+876076+934464*i5+3768*c1+24*k3, 3, wt48);
_mm512_mask_storeu_ps(arrangedW1+879820+934464*i5+3768*c1+24*k3, 252, wt48);
_mm512_mask_storeu_ps(arrangedW1+883564+934464*i5+3768*c1+24*k3, 16128, wt48);
_mm512_mask_storeu_ps(arrangedW1+887308+934464*i5+3768*c1+24*k3, 49152, wt48);
}
break;
}
}
if (j1 >= jj1) return;
}
}
if (j1 == 5) {
__m512 bias2 = _mm512_setzero_ps();
if (!e1) {
bias2 = _mm512_maskz_loadu_ps(8191, biasPtr1-0+372*i5+64*j1);
}
_mm512_mask_storeu_ps(arrangedB1-0+372*i5+64*j1, 8191, bias2);
ptrdiff_t c2 = (size_t)(0+16*j1)/6;
ptrdiff_t k4 = 0;
for (; k4 != 157; ++k4) {
__m512 wt49 = _mm512_maskz_loadu_ps(65535, wtPtr1+0+934464*i5+160768*j1+64*k4);
__m512 wt50 = _mm512_maskz_loadu_ps(65535, wtPtr1+10048+934464*i5+160768*j1+64*k4);
__m512 wt51 = _mm512_maskz_loadu_ps(65535, wtPtr1+20096+934464*i5+160768*j1+64*k4);
__m512 wt52 = _mm512_maskz_loadu_ps(65535, wtPtr1+30144+934464*i5+160768*j1+64*k4);
__m512 wt53 = _mm512_maskz_loadu_ps(65535, wtPtr1+40192+934464*i5+160768*j1+64*k4);
__m512 wt54 = _mm512_maskz_loadu_ps(65535, wtPtr1+50240+934464*i5+160768*j1+64*k4);
__m512 wt55 = _mm512_maskz_loadu_ps(65535, wtPtr1+60288+934464*i5+160768*j1+64*k4);
__m512 wt56 = _mm512_maskz_loadu_ps(65535, wtPtr1+70336+934464*i5+160768*j1+64*k4);
__m512 wt57 = _mm512_maskz_loadu_ps(65535, wtPtr1+80384+934464*i5+160768*j1+64*k4);
__m512 wt58 = _mm512_maskz_loadu_ps(65535, wtPtr1+90432+934464*i5+160768*j1+64*k4);
__m512 wt59 = _mm512_maskz_loadu_ps(65535, wtPtr1+100480+934464*i5+160768*j1+64*k4);
__m512 wt60 = _mm512_maskz_loadu_ps(65535, wtPtr1+110528+934464*i5+160768*j1+64*k4);
__m512 wt61 = _mm512_maskz_loadu_ps(65535, wtPtr1+120576+934464*i5+160768*j1+64*k4);
__m512 tmp145 = _mm512_unpacklo_ps(wt49, wt50);
__m512 tmp146 = _mm512_unpackhi_ps(wt49, wt50);
__m512 tmp147 = _mm512_unpacklo_ps(wt51, wt52);
__m512 tmp148 = _mm512_unpackhi_ps(wt51, wt52);
__m512 tmp149 = _mm512_unpacklo_ps(wt53, wt54);
__m512 tmp150 = _mm512_unpackhi_ps(wt53, wt54);
__m512 tmp151 = _mm512_unpacklo_ps(wt55, wt56);
__m512 tmp152 = _mm512_unpackhi_ps(wt55, wt56);
__m512 tmp153 = _mm512_unpacklo_ps(wt57, wt58);
__m512 tmp154 = _mm512_unpackhi_ps(wt57, wt58);
__m512 tmp155 = _mm512_unpacklo_ps(wt59, wt60);
__m512 tmp156 = _mm512_unpackhi_ps(wt59, wt60);
__m512 tmp157 = _mm512_unpacklo_ps(wt61, wt61);
__m512 tmp158 = _mm512_unpackhi_ps(wt61, wt61);
__m512 tmp159 = _mm512_shuffle_ps(tmp145, tmp147, 68);
__m512 tmp160 = _mm512_shuffle_ps(tmp145, tmp147, 238);
__m512 tmp161 = _mm512_shuffle_ps(tmp146, tmp148, 68);
__m512 tmp162 = _mm512_shuffle_ps(tmp146, tmp148, 238);
__m512 tmp163 = _mm512_shuffle_ps(tmp149, tmp151, 68);
__m512 tmp164 = _mm512_shuffle_ps(tmp149, tmp151, 238);
__m512 tmp165 = _mm512_shuffle_ps(tmp150, tmp152, 68);
__m512 tmp166 = _mm512_shuffle_ps(tmp150, tmp152, 238);
__m512 tmp167 = _mm512_shuffle_ps(tmp153, tmp155, 68);
__m512 tmp168 = _mm512_shuffle_ps(tmp153, tmp155, 238);
__m512 tmp169 = _mm512_shuffle_ps(tmp154, tmp156, 68);
__m512 tmp170 = _mm512_shuffle_ps(tmp154, tmp156, 238);
__m512 tmp171 = _mm512_shuffle_ps(tmp157, tmp157, 238);
__m512 tmp172 = _mm512_shuffle_ps(tmp158, tmp158, 238);
__m512 tmp173 = _mm512_shuffle_f32x4(tmp159, tmp163, 136);
__m512 tmp174 = _mm512_shuffle_f32x4(tmp159, tmp163, 221);
__m512 tmp175 = _mm512_shuffle_f32x4(tmp160, tmp164, 136);
__m512 tmp176 = _mm512_shuffle_f32x4(tmp160, tmp164, 221);
__m512 tmp177 = _mm512_shuffle_f32x4(tmp161, tmp165, 136);
__m512 tmp178 = _mm512_shuffle_f32x4(tmp161, tmp165, 221);
__m512 tmp179 = _mm512_shuffle_f32x4(tmp162, tmp166, 136);
__m512 tmp180 = _mm512_shuffle_f32x4(tmp162, tmp166, 221);
__m512 tmp181 = _mm512_shuffle_f32x4(tmp167, tmp157, 136);
__m512 tmp182 = _mm512_shuffle_f32x4(tmp167, tmp157, 221);
__m512 tmp183 = _mm512_shuffle_f32x4(tmp168, tmp171, 136);
__m512 tmp184 = _mm512_shuffle_f32x4(tmp168, tmp171, 221);
__m512 tmp185 = _mm512_shuffle_f32x4(tmp169, tmp158, 136);
__m512 tmp186 = _mm512_shuffle_f32x4(tmp169, tmp158, 221);
__m512 tmp187 = _mm512_shuffle_f32x4(tmp170, tmp172, 136);
__m512 tmp188 = _mm512_shuffle_f32x4(tmp170, tmp172, 221);
wt49 = _mm512_shuffle_f32x4(tmp173, tmp181, 136);
wt57 = _mm512_shuffle_f32x4(tmp173, tmp181, 221);
wt50 = _mm512_shuffle_f32x4(tmp175, tmp183, 136);
wt58 = _mm512_shuffle_f32x4(tmp175, tmp183, 221);
wt51 = _mm512_shuffle_f32x4(tmp177, tmp185, 136);
wt59 = _mm512_shuffle_f32x4(tmp177, tmp185, 221);
wt52 = _mm512_shuffle_f32x4(tmp179, tmp187, 136);
wt60 = _mm512_shuffle_f32x4(tmp179, tmp187, 221);
wt53 = _mm512_shuffle_f32x4(tmp174, tmp182, 136);
wt61 = _mm512_shuffle_f32x4(tmp174, tmp182, 221);
wt54 = _mm512_shuffle_f32x4(tmp176, tmp184, 136);
__m512 wt62 = _mm512_shuffle_f32x4(tmp176, tmp184, 221);
wt55 = _mm512_shuffle_f32x4(tmp178, tmp186, 136);
__m512 wt63 = _mm512_shuffle_f32x4(tmp178, tmp186, 221);
wt56 = _mm512_shuffle_f32x4(tmp180, tmp188, 136);
__m512 wt64 = _mm512_shuffle_f32x4(tmp180, tmp188, 221);
_mm512_mask_storeu_ps(arrangedW1+8+934464*i5+3768*c2+24*k4, 15, wt49);
_mm512_mask_storeu_ps(arrangedW1+3752+934464*i5+3768*c2+24*k4, 1008, wt49);
_mm512_mask_storeu_ps(arrangedW1+7496+934464*i5+3768*c2+12*k4, 7168, wt49);
_mm512_mask_storeu_ps(arrangedW1+233624+934464*i5+3768*c2+24*k4, 15, wt50);
_mm512_mask_storeu_ps(arrangedW1+237368+934464*i5+3768*c2+24*k4, 1008, wt50);
_mm512_mask_storeu_ps(arrangedW1+241112+934464*i5+3768*c2+12*k4, 7168, wt50);
_mm512_mask_storeu_ps(arrangedW1+58412+934464*i5+3768*c2+24*k4, 15, wt51);
_mm512_mask_storeu_ps(arrangedW1+62156+934464*i5+3768*c2+24*k4, 1008, wt51);
_mm512_mask_storeu_ps(arrangedW1+65900+934464*i5+3768*c2+12*k4, 7168, wt51);
_mm512_mask_storeu_ps(arrangedW1+292028+934464*i5+3768*c2+24*k4, 15, wt52);
_mm512_mask_storeu_ps(arrangedW1+295772+934464*i5+3768*c2+24*k4, 1008, wt52);
_mm512_mask_storeu_ps(arrangedW1+299516+934464*i5+3768*c2+12*k4, 7168, wt52);
_mm512_mask_storeu_ps(arrangedW1+467240+934464*i5+3768*c2+24*k4, 15, wt53);
_mm512_mask_storeu_ps(arrangedW1+470984+934464*i5+3768*c2+24*k4, 1008, wt53);
_mm512_mask_storeu_ps(arrangedW1+474728+934464*i5+3768*c2+12*k4, 7168, wt53);
_mm512_mask_storeu_ps(arrangedW1+700856+934464*i5+3768*c2+24*k4, 15, wt54);
_mm512_mask_storeu_ps(arrangedW1+704600+934464*i5+3768*c2+24*k4, 1008, wt54);
_mm512_mask_storeu_ps(arrangedW1+708344+934464*i5+3768*c2+12*k4, 7168, wt54);
_mm512_mask_storeu_ps(arrangedW1+525644+934464*i5+3768*c2+24*k4, 15, wt55);
_mm512_mask_storeu_ps(arrangedW1+529388+934464*i5+3768*c2+24*k4, 1008, wt55);
_mm512_mask_storeu_ps(arrangedW1+533132+934464*i5+3768*c2+12*k4, 7168, wt55);
_mm512_mask_storeu_ps(arrangedW1+759260+934464*i5+3768*c2+24*k4, 15, wt56);
_mm512_mask_storeu_ps(arrangedW1+763004+934464*i5+3768*c2+24*k4, 1008, wt56);
_mm512_mask_storeu_ps(arrangedW1+766748+934464*i5+3768*c2+12*k4, 7168, wt56);
_mm512_mask_storeu_ps(arrangedW1+116816+934464*i5+3768*c2+24*k4, 15, wt57);
_mm512_mask_storeu_ps(arrangedW1+120560+934464*i5+3768*c2+24*k4, 1008, wt57);
_mm512_mask_storeu_ps(arrangedW1+124304+934464*i5+3768*c2+12*k4, 7168, wt57);
_mm512_mask_storeu_ps(arrangedW1+350432+934464*i5+3768*c2+24*k4, 15, wt58);
_mm512_mask_storeu_ps(arrangedW1+354176+934464*i5+3768*c2+24*k4, 1008, wt58);
_mm512_mask_storeu_ps(arrangedW1+357920+934464*i5+3768*c2+12*k4, 7168, wt58);
_mm512_mask_storeu_ps(arrangedW1+175220+934464*i5+3768*c2+24*k4, 15, wt59);
_mm512_mask_storeu_ps(arrangedW1+178964+934464*i5+3768*c2+24*k4, 1008, wt59);
_mm512_mask_storeu_ps(arrangedW1+182708+934464*i5+3768*c2+12*k4, 7168, wt59);
_mm512_mask_storeu_ps(arrangedW1+408836+934464*i5+3768*c2+24*k4, 15, wt60);
_mm512_mask_storeu_ps(arrangedW1+412580+934464*i5+3768*c2+24*k4, 1008, wt60);
_mm512_mask_storeu_ps(arrangedW1+416324+934464*i5+3768*c2+12*k4, 7168, wt60);
_mm512_mask_storeu_ps(arrangedW1+584048+934464*i5+3768*c2+24*k4, 15, wt61);
_mm512_mask_storeu_ps(arrangedW1+587792+934464*i5+3768*c2+24*k4, 1008, wt61);
_mm512_mask_storeu_ps(arrangedW1+591536+934464*i5+3768*c2+12*k4, 7168, wt61);
_mm512_mask_storeu_ps(arrangedW1+817664+934464*i5+3768*c2+24*k4, 15, wt62);
_mm512_mask_storeu_ps(arrangedW1+821408+934464*i5+3768*c2+24*k4, 1008, wt62);
_mm512_mask_storeu_ps(arrangedW1+825152+934464*i5+3768*c2+12*k4, 7168, wt62);
_mm512_mask_storeu_ps(arrangedW1+642452+934464*i5+3768*c2+24*k4, 15, wt63);
_mm512_mask_storeu_ps(arrangedW1+646196+934464*i5+3768*c2+24*k4, 1008, wt63);
_mm512_mask_storeu_ps(arrangedW1+649940+934464*i5+3768*c2+12*k4, 7168, wt63);
_mm512_mask_storeu_ps(arrangedW1+876068+934464*i5+3768*c2+24*k4, 15, wt64);
_mm512_mask_storeu_ps(arrangedW1+879812+934464*i5+3768*c2+24*k4, 1008, wt64);
_mm512_mask_storeu_ps(arrangedW1+883556+934464*i5+3768*c2+12*k4, 7168, wt64);
}
if (j1 >= jj1) return;
j1 = 6;
}
}

static void Example4LoomArrangeFilts1(Example4ThreaderTeam1* team13, char** tensors1) {
Example4ThreaderTask1 task5;
task5.callee1 = Example4LoomArrangeFilts1Callee1;
task5.any1 = tensors1;
task5.nd1 = 3;
task5.hull1[0] = 6;
task5.hull1[1] = 8;
task5.hull1[2] = 1;
Example4ThreaderDo1(team13, &task5);
}

static void Example4LoomArrangeDats1Callee1(Example4ThreaderTask1* task6, int64_t* pt8) {
char** tensors4 = task6->any1;
ptrdiff_t s1 = pt8[0];
ptrdiff_t c3 = pt8[1];
ptrdiff_t g3 = pt8[2];
ptrdiff_t e2 = 0;
char*restrict datPtr1 = tensors4[0]-12+25450800*e2;
char*restrict arranged1 = tensors4[1]+328335360*e2;
ptrdiff_t i6 = 1*g3;
ptrdiff_t j2 = 1*c3;
ptrdiff_t last1 = j2+0;
if (j2 < 45) {
ptrdiff_t rel1 = (size_t)(j2-0)%3;
ptrdiff_t h1 = 0+(size_t)(j2-0)/3*8;
for (; j2 < 45; rel1 = 0, h1 += 8) {
if (rel1 < 1) {
ptrdiff_t w1 = 0;
ptrdiff_t k5 = 39*s1;
ptrdiff_t kk1 = k5+(s1 < 3 ? 38 : 39);
for (; k5 <= kk1; ++k5) {
__m512 dat1 = _mm512_maskz_loadu_ps(65528, datPtr1+0+4785360*i6+30480*k5+240*h1+4*w1);
__m512 dat2 = _mm512_maskz_loadu_ps(65535, datPtr1+64+4785360*i6+30480*k5+240*h1+4*w1);
__m512i pm1 = _mm512_set_epi32(30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0);
_mm512_mask_storeu_ps(arranged1+0+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat1, pm1, dat2));
__m512i pm2 = _mm512_set_epi32(31, 29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
_mm512_mask_storeu_ps(arranged1+15433728+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat1, pm2, dat2));
__m512 dat3 = _mm512_maskz_loadu_ps(65528, datPtr1+480+4785360*i6+30480*k5+240*h1+4*w1);
__m512 dat4 = _mm512_maskz_loadu_ps(65535, datPtr1+544+4785360*i6+30480*k5+240*h1+4*w1);
_mm512_mask_storeu_ps(arranged1+64+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat3, pm1, dat4));
_mm512_mask_storeu_ps(arranged1+15433792+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat3, pm2, dat4));
__m512 dat5 = _mm512_maskz_loadu_ps(65528, datPtr1+960+4785360*i6+30480*k5+240*h1+4*w1);
__m512 dat6 = _mm512_maskz_loadu_ps(65535, datPtr1+1024+4785360*i6+30480*k5+240*h1+4*w1);
_mm512_mask_storeu_ps(arranged1+128+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat5, pm1, dat6));
_mm512_mask_storeu_ps(arranged1+15433856+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat5, pm2, dat6));
__m512 dat7 = _mm512_maskz_loadu_ps(65528, datPtr1+1440+4785360*i6+30480*k5+240*h1+4*w1);
__m512 dat8 = _mm512_maskz_loadu_ps(65535, datPtr1+1504+4785360*i6+30480*k5+240*h1+4*w1);
_mm512_mask_storeu_ps(arranged1+192+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat7, pm1, dat8));
_mm512_mask_storeu_ps(arranged1+15433920+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat7, pm2, dat8));
__m512 dat9 = _mm512_maskz_loadu_ps(65528, datPtr1+240+4785360*i6+30480*k5+240*h1+4*w1);
__m512 dat10 = _mm512_maskz_loadu_ps(65535, datPtr1+304+4785360*i6+30480*k5+240*h1+4*w1);
_mm512_mask_storeu_ps(arranged1+30867456+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat9, pm1, dat10));
_mm512_mask_storeu_ps(arranged1+46301184+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat9, pm2, dat10));
__m512 dat11 = _mm512_maskz_loadu_ps(65528, datPtr1+720+4785360*i6+30480*k5+240*h1+4*w1);
__m512 dat12 = _mm512_maskz_loadu_ps(65535, datPtr1+784+4785360*i6+30480*k5+240*h1+4*w1);
_mm512_mask_storeu_ps(arranged1+30867520+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat11, pm1, dat12));
_mm512_mask_storeu_ps(arranged1+46301248+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat11, pm2, dat12));
__m512 dat13 = _mm512_maskz_loadu_ps(65528, datPtr1+1200+4785360*i6+30480*k5+240*h1+4*w1);
__m512 dat14 = _mm512_maskz_loadu_ps(65535, datPtr1+1264+4785360*i6+30480*k5+240*h1+4*w1);
_mm512_mask_storeu_ps(arranged1+30867584+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat13, pm1, dat14));
_mm512_mask_storeu_ps(arranged1+46301312+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat13, pm2, dat14));
__m512 dat15 = _mm512_maskz_loadu_ps(65528, datPtr1+1680+4785360*i6+30480*k5+240*h1+4*w1);
__m512 dat16 = _mm512_maskz_loadu_ps(65535, datPtr1+1744+4785360*i6+30480*k5+240*h1+4*w1);
_mm512_mask_storeu_ps(arranged1+30867648+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat15, pm1, dat16));
_mm512_mask_storeu_ps(arranged1+46301376+1929216*i6+40192*j2+256*k5, 65535, _mm512_permutex2var_ps(dat15, pm2, dat16));
}
if (j2 >= last1) return;
++j2;
rel1 = 1;
}
if (rel1 < 2) {
ptrdiff_t w2 = 32;
ptrdiff_t k6 = 39*s1;
ptrdiff_t kk2 = k6+(s1 < 3 ? 38 : 39);
for (; k6 <= kk2; ++k6) {
__m512 dat17 = _mm512_maskz_loadu_ps(65535, datPtr1+0+4785360*i6+30480*k6+240*h1+4*w2);
__m512 dat18 = _mm512_maskz_loadu_ps(32767, datPtr1+64+4785360*i6+30480*k6+240*h1+4*w2);
__m512i pm3 = _mm512_set_epi32(30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0);
_mm512_mask_storeu_ps(arranged1+0+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat17, pm3, dat18));
__m512i pm4 = _mm512_set_epi32(31, 29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
_mm512_mask_storeu_ps(arranged1+15433728+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat17, pm4, dat18));
__m512 dat19 = _mm512_maskz_loadu_ps(65535, datPtr1+480+4785360*i6+30480*k6+240*h1+4*w2);
__m512 dat20 = _mm512_maskz_loadu_ps(32767, datPtr1+544+4785360*i6+30480*k6+240*h1+4*w2);
_mm512_mask_storeu_ps(arranged1+64+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat19, pm3, dat20));
_mm512_mask_storeu_ps(arranged1+15433792+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat19, pm4, dat20));
__m512 dat21 = _mm512_maskz_loadu_ps(65535, datPtr1+960+4785360*i6+30480*k6+240*h1+4*w2);
__m512 dat22 = _mm512_maskz_loadu_ps(32767, datPtr1+1024+4785360*i6+30480*k6+240*h1+4*w2);
_mm512_mask_storeu_ps(arranged1+128+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat21, pm3, dat22));
_mm512_mask_storeu_ps(arranged1+15433856+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat21, pm4, dat22));
__m512 dat23 = _mm512_maskz_loadu_ps(65535, datPtr1+1440+4785360*i6+30480*k6+240*h1+4*w2);
__m512 dat24 = _mm512_maskz_loadu_ps(32767, datPtr1+1504+4785360*i6+30480*k6+240*h1+4*w2);
_mm512_mask_storeu_ps(arranged1+192+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat23, pm3, dat24));
_mm512_mask_storeu_ps(arranged1+15433920+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat23, pm4, dat24));
__m512 dat25 = _mm512_maskz_loadu_ps(65535, datPtr1+240+4785360*i6+30480*k6+240*h1+4*w2);
__m512 dat26 = _mm512_maskz_loadu_ps(32767, datPtr1+304+4785360*i6+30480*k6+240*h1+4*w2);
_mm512_mask_storeu_ps(arranged1+30867456+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat25, pm3, dat26));
_mm512_mask_storeu_ps(arranged1+46301184+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat25, pm4, dat26));
__m512 dat27 = _mm512_maskz_loadu_ps(65535, datPtr1+720+4785360*i6+30480*k6+240*h1+4*w2);
__m512 dat28 = _mm512_maskz_loadu_ps(32767, datPtr1+784+4785360*i6+30480*k6+240*h1+4*w2);
_mm512_mask_storeu_ps(arranged1+30867520+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat27, pm3, dat28));
_mm512_mask_storeu_ps(arranged1+46301248+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat27, pm4, dat28));
__m512 dat29 = _mm512_maskz_loadu_ps(65535, datPtr1+1200+4785360*i6+30480*k6+240*h1+4*w2);
__m512 dat30 = _mm512_maskz_loadu_ps(32767, datPtr1+1264+4785360*i6+30480*k6+240*h1+4*w2);
_mm512_mask_storeu_ps(arranged1+30867584+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat29, pm3, dat30));
_mm512_mask_storeu_ps(arranged1+46301312+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat29, pm4, dat30));
__m512 dat31 = _mm512_maskz_loadu_ps(65535, datPtr1+1680+4785360*i6+30480*k6+240*h1+4*w2);
__m512 dat32 = _mm512_maskz_loadu_ps(32767, datPtr1+1744+4785360*i6+30480*k6+240*h1+4*w2);
_mm512_mask_storeu_ps(arranged1+30867648+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat31, pm3, dat32));
_mm512_mask_storeu_ps(arranged1+46301376+1929216*i6+40192*j2+256*k6, 65535, _mm512_permutex2var_ps(dat31, pm4, dat32));
}
if (j2 >= last1) return;
++j2;
rel1 = 2;
}
ptrdiff_t w3 = 64;
ptrdiff_t k7 = 39*s1;
ptrdiff_t kk3 = k7+(s1 < 3 ? 38 : 39);
for (; k7 <= kk3; ++k7) {
_mm512_mask_storeu_ps(arranged1+0+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+15433728+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+64+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+15433792+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+128+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+15433856+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+192+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+15433920+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+30867456+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301184+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+30867520+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301248+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+30867584+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301312+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+30867648+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301376+1929216*i6+40192*j2+256*k7, 65535, _mm512_setzero_ps());
}
if (j2 >= last1) return;
++j2;
}
j2 = 45;
}
ptrdiff_t rel2 = j2-45;
ptrdiff_t h2 = 120;
if (rel2 < 1) {
ptrdiff_t w4 = 0;
ptrdiff_t k8 = 39*s1;
ptrdiff_t kk4 = k8+(s1 < 3 ? 38 : 39);
for (; k8 <= kk4; ++k8) {
__m512 dat33 = _mm512_maskz_loadu_ps(65528, datPtr1+0+4785360*i6+30480*k8+240*h2+4*w4);
__m512 dat34 = _mm512_maskz_loadu_ps(65535, datPtr1+64+4785360*i6+30480*k8+240*h2+4*w4);
__m512i pm5 = _mm512_set_epi32(30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0);
_mm512_mask_storeu_ps(arranged1+0+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat33, pm5, dat34));
__m512i pm6 = _mm512_set_epi32(31, 29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
_mm512_mask_storeu_ps(arranged1+15433728+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat33, pm6, dat34));
__m512 dat35 = _mm512_maskz_loadu_ps(65528, datPtr1+480+4785360*i6+30480*k8+240*h2+4*w4);
__m512 dat36 = _mm512_maskz_loadu_ps(65535, datPtr1+544+4785360*i6+30480*k8+240*h2+4*w4);
_mm512_mask_storeu_ps(arranged1+64+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat35, pm5, dat36));
_mm512_mask_storeu_ps(arranged1+15433792+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat35, pm6, dat36));
__m512 dat37 = _mm512_maskz_loadu_ps(65528, datPtr1+960+4785360*i6+30480*k8+240*h2+4*w4);
__m512 dat38 = _mm512_maskz_loadu_ps(65535, datPtr1+1024+4785360*i6+30480*k8+240*h2+4*w4);
_mm512_mask_storeu_ps(arranged1+128+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat37, pm5, dat38));
_mm512_mask_storeu_ps(arranged1+15433856+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat37, pm6, dat38));
__m512 dat39 = _mm512_maskz_loadu_ps(65528, datPtr1+1440+4785360*i6+30480*k8+240*h2+4*w4);
__m512 dat40 = _mm512_maskz_loadu_ps(65535, datPtr1+1504+4785360*i6+30480*k8+240*h2+4*w4);
_mm512_mask_storeu_ps(arranged1+192+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat39, pm5, dat40));
_mm512_mask_storeu_ps(arranged1+15433920+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat39, pm6, dat40));
__m512 dat41 = _mm512_maskz_loadu_ps(65528, datPtr1+240+4785360*i6+30480*k8+240*h2+4*w4);
__m512 dat42 = _mm512_maskz_loadu_ps(65535, datPtr1+304+4785360*i6+30480*k8+240*h2+4*w4);
_mm512_mask_storeu_ps(arranged1+30867456+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat41, pm5, dat42));
_mm512_mask_storeu_ps(arranged1+46301184+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat41, pm6, dat42));
__m512 dat43 = _mm512_maskz_loadu_ps(65528, datPtr1+720+4785360*i6+30480*k8+240*h2+4*w4);
__m512 dat44 = _mm512_maskz_loadu_ps(65535, datPtr1+784+4785360*i6+30480*k8+240*h2+4*w4);
_mm512_mask_storeu_ps(arranged1+30867520+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat43, pm5, dat44));
_mm512_mask_storeu_ps(arranged1+46301248+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat43, pm6, dat44));
__m512 dat45 = _mm512_maskz_loadu_ps(65528, datPtr1+1200+4785360*i6+30480*k8+240*h2+4*w4);
__m512 dat46 = _mm512_maskz_loadu_ps(65535, datPtr1+1264+4785360*i6+30480*k8+240*h2+4*w4);
_mm512_mask_storeu_ps(arranged1+30867584+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat45, pm5, dat46));
_mm512_mask_storeu_ps(arranged1+46301312+1929216*i6+40192*j2+256*k8, 65535, _mm512_permutex2var_ps(dat45, pm6, dat46));
_mm512_mask_storeu_ps(arranged1+30867648+1929216*i6+40192*j2+256*k8, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301376+1929216*i6+40192*j2+256*k8, 65535, _mm512_setzero_ps());
}
if (j2 >= last1) return;
++j2;
rel2 = 1;
}
if (rel2 < 2) {
ptrdiff_t w5 = 32;
ptrdiff_t k9 = 39*s1;
ptrdiff_t kk5 = k9+(s1 < 3 ? 38 : 39);
for (; k9 <= kk5; ++k9) {
__m512 dat47 = _mm512_maskz_loadu_ps(65535, datPtr1+0+4785360*i6+30480*k9+240*h2+4*w5);
__m512 dat48 = _mm512_maskz_loadu_ps(32767, datPtr1+64+4785360*i6+30480*k9+240*h2+4*w5);
__m512i pm7 = _mm512_set_epi32(30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0);
_mm512_mask_storeu_ps(arranged1+0+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat47, pm7, dat48));
__m512i pm8 = _mm512_set_epi32(31, 29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
_mm512_mask_storeu_ps(arranged1+15433728+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat47, pm8, dat48));
__m512 dat49 = _mm512_maskz_loadu_ps(65535, datPtr1+480+4785360*i6+30480*k9+240*h2+4*w5);
__m512 dat50 = _mm512_maskz_loadu_ps(32767, datPtr1+544+4785360*i6+30480*k9+240*h2+4*w5);
_mm512_mask_storeu_ps(arranged1+64+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat49, pm7, dat50));
_mm512_mask_storeu_ps(arranged1+15433792+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat49, pm8, dat50));
__m512 dat51 = _mm512_maskz_loadu_ps(65535, datPtr1+960+4785360*i6+30480*k9+240*h2+4*w5);
__m512 dat52 = _mm512_maskz_loadu_ps(32767, datPtr1+1024+4785360*i6+30480*k9+240*h2+4*w5);
_mm512_mask_storeu_ps(arranged1+128+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat51, pm7, dat52));
_mm512_mask_storeu_ps(arranged1+15433856+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat51, pm8, dat52));
__m512 dat53 = _mm512_maskz_loadu_ps(65535, datPtr1+1440+4785360*i6+30480*k9+240*h2+4*w5);
__m512 dat54 = _mm512_maskz_loadu_ps(32767, datPtr1+1504+4785360*i6+30480*k9+240*h2+4*w5);
_mm512_mask_storeu_ps(arranged1+192+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat53, pm7, dat54));
_mm512_mask_storeu_ps(arranged1+15433920+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat53, pm8, dat54));
__m512 dat55 = _mm512_maskz_loadu_ps(65535, datPtr1+240+4785360*i6+30480*k9+240*h2+4*w5);
__m512 dat56 = _mm512_maskz_loadu_ps(32767, datPtr1+304+4785360*i6+30480*k9+240*h2+4*w5);
_mm512_mask_storeu_ps(arranged1+30867456+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat55, pm7, dat56));
_mm512_mask_storeu_ps(arranged1+46301184+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat55, pm8, dat56));
__m512 dat57 = _mm512_maskz_loadu_ps(65535, datPtr1+720+4785360*i6+30480*k9+240*h2+4*w5);
__m512 dat58 = _mm512_maskz_loadu_ps(32767, datPtr1+784+4785360*i6+30480*k9+240*h2+4*w5);
_mm512_mask_storeu_ps(arranged1+30867520+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat57, pm7, dat58));
_mm512_mask_storeu_ps(arranged1+46301248+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat57, pm8, dat58));
__m512 dat59 = _mm512_maskz_loadu_ps(65535, datPtr1+1200+4785360*i6+30480*k9+240*h2+4*w5);
__m512 dat60 = _mm512_maskz_loadu_ps(32767, datPtr1+1264+4785360*i6+30480*k9+240*h2+4*w5);
_mm512_mask_storeu_ps(arranged1+30867584+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat59, pm7, dat60));
_mm512_mask_storeu_ps(arranged1+46301312+1929216*i6+40192*j2+256*k9, 65535, _mm512_permutex2var_ps(dat59, pm8, dat60));
_mm512_mask_storeu_ps(arranged1+30867648+1929216*i6+40192*j2+256*k9, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301376+1929216*i6+40192*j2+256*k9, 65535, _mm512_setzero_ps());
}
if (j2 >= last1) return;
++j2;
rel2 = 2;
}
ptrdiff_t w6 = 64;
ptrdiff_t k10 = 39*s1;
ptrdiff_t kk6 = k10+(s1 < 3 ? 38 : 39);
for (; k10 <= kk6; ++k10) {
_mm512_mask_storeu_ps(arranged1+0+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+15433728+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+64+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+15433792+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+128+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+15433856+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+192+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+15433920+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+30867456+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301184+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+30867520+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301248+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+30867584+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301312+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+30867648+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
_mm512_mask_storeu_ps(arranged1+46301376+1929216*i6+40192*j2+256*k10, 65535, _mm512_setzero_ps());
}
if (j2 >= last1) return;
++j2;
}

static void Example4LoomArrangeDats1(Example4ThreaderTeam1* team15, char** tensors3) {
Example4ThreaderTask1 task7;
task7.callee1 = Example4LoomArrangeDats1Callee1;
task7.any1 = tensors3;
task7.nd1 = 4;
task7.hull1[0] = 4;
task7.hull1[1] = 48;
task7.hull1[2] = 8;
task7.hull1[3] = 1;
Example4ThreaderDo1(team15, &task7);
}

static ptrdiff_t Example4LoomProduceSums1FieldTbl1[] = {
0, 2,
4, 2,
8, 2,
12, 2, 16
};

static ptrdiff_t Example4LoomProduceSums1NodeTbl1[] = {
0, 0, 1,
0, 2, 1,
3, 0, 0,
3, 2, 0,
0, 1, 1,
0, 3, 1,
3, 1, 0,
3, 3, 0,
1, 0, 0,
1, 2, 0,
4, 0, 0,
4, 2, 0,
1, 1, 0,
1, 3, 0,
4, 1, 0,
4, 3, 0
};

static void Example4LoomProduceSums1Callee1(Example4ThreaderTask1* task8, int64_t* pt9) {
void** tuple2 = task8->any1;
char** tensors6 = tuple2[0];
ptrdiff_t epoch1 = 0;
ptrdiff_t field1 = (ptrdiff_t)tuple2[2];
ptrdiff_t nodeFirst1 = (ptrdiff_t)tuple2[3];
ptrdiff_t group1 = pt9[3];
ptrdiff_t to2 = pt9[2];
ptrdiff_t nodeOff1 = pt9[1];
ptrdiff_t w7 = pt9[0];
ptrdiff_t node6 = nodeFirst1+nodeOff1;
ptrdiff_t lift1 = Example4LoomProduceSums1NodeTbl1[0+3*node6];
ptrdiff_t pile1 = Example4LoomProduceSums1NodeTbl1[1+3*node6];
ptrdiff_t base1 = Example4LoomProduceSums1NodeTbl1[2+3*node6];
ptrdiff_t from1 = to2+(size_t)lift1/4*3;
if (from1 >= 48) return;
char*restrict biasPtr2 = tensors6[0]+2976*epoch1+372*group1;
char*restrict wtPtr2 = tensors6[0]+2976+39759360*epoch1+934464*group1+58404*node6;
char*restrict datPtr2 = tensors6[1]+328335360*epoch1+15433728*field1+1929216*group1+40192*from1;
char*restrict sumPtr1 = tensors6[2]+4571136*group1+95232*to2+23808*pile1;
switch ((size_t)lift1%4*2+(to2 >= 3)) {
default: {
if (epoch1|node6) {
if (!epoch1 && base1) {
ptrdiff_t i7 = 4*w7;
ptrdiff_t ii1 = i7+3;
for (; i7 != 15; ++i7) {
__m512 sum2 = _mm512_setzero_ps();
__m512 sum6 = _mm512_setzero_ps();
__m512 sum10 = _mm512_setzero_ps();
__m512 sum14 = _mm512_setzero_ps();
__m512 sum18 = _mm512_setzero_ps();
__m512 sum22 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum3 = sum2;
__m512 sum4 = sum2;
__m512 sum5 = sum2;
__m512 sum7 = sum6;
__m512 sum8 = sum6;
__m512 sum9 = sum6;
__m512 sum11 = sum10;
__m512 sum12 = sum10;
__m512 sum13 = sum10;
__m512 sum15 = sum14;
__m512 sum16 = sum14;
__m512 sum17 = sum14;
__m512 sum19 = sum18;
__m512 sum20 = sum18;
__m512 sum21 = sum18;
__m512 sum23 = sum22;
__m512 sum24 = sum22;
__m512 sum25 = sum22;
for (ptrdiff_t j3 = 0; j3 < 157; ++j3) {
__m512 dat61 = _mm512_loadu_ps(datPtr2+0+256*j3);
__m512 dat62 = _mm512_loadu_ps(datPtr2+64+256*j3);
__m512 dat63 = _mm512_loadu_ps(datPtr2+128+256*j3);
__m512 dat64 = _mm512_loadu_ps(datPtr2+192+256*j3);
__m512 wt65 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i7+24*j3));
sum2 = _mm512_fmadd_ps(wt65, dat61, sum2);
sum3 = _mm512_fmadd_ps(wt65, dat62, sum3);
sum4 = _mm512_fmadd_ps(wt65, dat63, sum4);
sum5 = _mm512_fmadd_ps(wt65, dat64, sum5);
__m512 wt66 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i7+24*j3));
sum6 = _mm512_fmadd_ps(wt66, dat61, sum6);
sum7 = _mm512_fmadd_ps(wt66, dat62, sum7);
sum8 = _mm512_fmadd_ps(wt66, dat63, sum8);
sum9 = _mm512_fmadd_ps(wt66, dat64, sum9);
__m512 wt67 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i7+24*j3));
sum10 = _mm512_fmadd_ps(wt67, dat61, sum10);
sum11 = _mm512_fmadd_ps(wt67, dat62, sum11);
sum12 = _mm512_fmadd_ps(wt67, dat63, sum12);
sum13 = _mm512_fmadd_ps(wt67, dat64, sum13);
__m512 wt68 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i7+24*j3));
sum14 = _mm512_fmadd_ps(wt68, dat61, sum14);
sum15 = _mm512_fmadd_ps(wt68, dat62, sum15);
sum16 = _mm512_fmadd_ps(wt68, dat63, sum16);
sum17 = _mm512_fmadd_ps(wt68, dat64, sum17);
__m512 wt69 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i7+24*j3));
sum18 = _mm512_fmadd_ps(wt69, dat61, sum18);
sum19 = _mm512_fmadd_ps(wt69, dat62, sum19);
sum20 = _mm512_fmadd_ps(wt69, dat63, sum20);
sum21 = _mm512_fmadd_ps(wt69, dat64, sum21);
__m512 wt70 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i7+24*j3));
sum22 = _mm512_fmadd_ps(wt70, dat61, sum22);
sum23 = _mm512_fmadd_ps(wt70, dat62, sum23);
sum24 = _mm512_fmadd_ps(wt70, dat63, sum24);
sum25 = _mm512_fmadd_ps(wt70, dat64, sum25);
}
_mm512_storeu_ps(sumPtr1+0+1536*i7, sum2);
_mm512_storeu_ps(sumPtr1+64+1536*i7, sum3);
_mm512_storeu_ps(sumPtr1+128+1536*i7, sum4);
_mm512_storeu_ps(sumPtr1+192+1536*i7, sum5);
_mm512_storeu_ps(sumPtr1+256+1536*i7, sum6);
_mm512_storeu_ps(sumPtr1+320+1536*i7, sum7);
_mm512_storeu_ps(sumPtr1+384+1536*i7, sum8);
_mm512_storeu_ps(sumPtr1+448+1536*i7, sum9);
_mm512_storeu_ps(sumPtr1+512+1536*i7, sum10);
_mm512_storeu_ps(sumPtr1+576+1536*i7, sum11);
_mm512_storeu_ps(sumPtr1+640+1536*i7, sum12);
_mm512_storeu_ps(sumPtr1+704+1536*i7, sum13);
_mm512_storeu_ps(sumPtr1+768+1536*i7, sum14);
_mm512_storeu_ps(sumPtr1+832+1536*i7, sum15);
_mm512_storeu_ps(sumPtr1+896+1536*i7, sum16);
_mm512_storeu_ps(sumPtr1+960+1536*i7, sum17);
_mm512_storeu_ps(sumPtr1+1024+1536*i7, sum18);
_mm512_storeu_ps(sumPtr1+1088+1536*i7, sum19);
_mm512_storeu_ps(sumPtr1+1152+1536*i7, sum20);
_mm512_storeu_ps(sumPtr1+1216+1536*i7, sum21);
_mm512_storeu_ps(sumPtr1+1280+1536*i7, sum22);
_mm512_storeu_ps(sumPtr1+1344+1536*i7, sum23);
_mm512_storeu_ps(sumPtr1+1408+1536*i7, sum24);
_mm512_storeu_ps(sumPtr1+1472+1536*i7, sum25);
if (i7 >= ii1) return;
}
__m512 sum26 = _mm512_setzero_ps();
__m512 sum30 = _mm512_setzero_ps();
__m512 sum34 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum27 = sum26;
__m512 sum28 = sum26;
__m512 sum29 = sum26;
__m512 sum31 = sum30;
__m512 sum32 = sum30;
__m512 sum33 = sum30;
__m512 sum35 = sum34;
__m512 sum36 = sum34;
__m512 sum37 = sum34;
for (ptrdiff_t j4 = 0; j4 < 157; ++j4) {
__m512 dat65 = _mm512_loadu_ps(datPtr2+0+256*j4);
__m512 dat66 = _mm512_loadu_ps(datPtr2+64+256*j4);
__m512 dat67 = _mm512_loadu_ps(datPtr2+128+256*j4);
__m512 dat68 = _mm512_loadu_ps(datPtr2+192+256*j4);
__m512 wt71 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i7+12*j4));
sum26 = _mm512_fmadd_ps(wt71, dat65, sum26);
sum27 = _mm512_fmadd_ps(wt71, dat66, sum27);
sum28 = _mm512_fmadd_ps(wt71, dat67, sum28);
sum29 = _mm512_fmadd_ps(wt71, dat68, sum29);
__m512 wt72 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i7+12*j4));
sum30 = _mm512_fmadd_ps(wt72, dat65, sum30);
sum31 = _mm512_fmadd_ps(wt72, dat66, sum31);
sum32 = _mm512_fmadd_ps(wt72, dat67, sum32);
sum33 = _mm512_fmadd_ps(wt72, dat68, sum33);
__m512 wt73 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i7+12*j4));
sum34 = _mm512_fmadd_ps(wt73, dat65, sum34);
sum35 = _mm512_fmadd_ps(wt73, dat66, sum35);
sum36 = _mm512_fmadd_ps(wt73, dat67, sum36);
sum37 = _mm512_fmadd_ps(wt73, dat68, sum37);
}
_mm512_storeu_ps(sumPtr1+0+1536*i7, sum26);
_mm512_storeu_ps(sumPtr1+64+1536*i7, sum27);
_mm512_storeu_ps(sumPtr1+128+1536*i7, sum28);
_mm512_storeu_ps(sumPtr1+192+1536*i7, sum29);
_mm512_storeu_ps(sumPtr1+256+1536*i7, sum30);
_mm512_storeu_ps(sumPtr1+320+1536*i7, sum31);
_mm512_storeu_ps(sumPtr1+384+1536*i7, sum32);
_mm512_storeu_ps(sumPtr1+448+1536*i7, sum33);
_mm512_storeu_ps(sumPtr1+512+1536*i7, sum34);
_mm512_storeu_ps(sumPtr1+576+1536*i7, sum35);
_mm512_storeu_ps(sumPtr1+640+1536*i7, sum36);
_mm512_storeu_ps(sumPtr1+704+1536*i7, sum37);
return;
}
ptrdiff_t i8 = 4*w7;
ptrdiff_t ii2 = i8+3;
for (; i8 != 15; ++i8) {
__m512 sum38 = _mm512_setzero_ps();
__m512 sum42 = _mm512_setzero_ps();
__m512 sum46 = _mm512_setzero_ps();
__m512 sum50 = _mm512_setzero_ps();
__m512 sum54 = _mm512_setzero_ps();
__m512 sum58 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum39 = sum38;
__m512 sum40 = sum38;
__m512 sum41 = sum38;
__m512 sum43 = sum42;
__m512 sum44 = sum42;
__m512 sum45 = sum42;
__m512 sum47 = sum46;
__m512 sum48 = sum46;
__m512 sum49 = sum46;
__m512 sum51 = sum50;
__m512 sum52 = sum50;
__m512 sum53 = sum50;
__m512 sum55 = sum54;
__m512 sum56 = sum54;
__m512 sum57 = sum54;
__m512 sum59 = sum58;
__m512 sum60 = sum58;
__m512 sum61 = sum58;
for (ptrdiff_t j5 = 0; j5 < 157; ++j5) {
__m512 dat69 = _mm512_loadu_ps(datPtr2+0+256*j5);
__m512 dat70 = _mm512_loadu_ps(datPtr2+64+256*j5);
__m512 dat71 = _mm512_loadu_ps(datPtr2+128+256*j5);
__m512 dat72 = _mm512_loadu_ps(datPtr2+192+256*j5);
__m512 wt74 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i8+24*j5));
sum38 = _mm512_fmadd_ps(wt74, dat69, sum38);
sum39 = _mm512_fmadd_ps(wt74, dat70, sum39);
sum40 = _mm512_fmadd_ps(wt74, dat71, sum40);
sum41 = _mm512_fmadd_ps(wt74, dat72, sum41);
__m512 wt75 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i8+24*j5));
sum42 = _mm512_fmadd_ps(wt75, dat69, sum42);
sum43 = _mm512_fmadd_ps(wt75, dat70, sum43);
sum44 = _mm512_fmadd_ps(wt75, dat71, sum44);
sum45 = _mm512_fmadd_ps(wt75, dat72, sum45);
__m512 wt76 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i8+24*j5));
sum46 = _mm512_fmadd_ps(wt76, dat69, sum46);
sum47 = _mm512_fmadd_ps(wt76, dat70, sum47);
sum48 = _mm512_fmadd_ps(wt76, dat71, sum48);
sum49 = _mm512_fmadd_ps(wt76, dat72, sum49);
__m512 wt77 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i8+24*j5));
sum50 = _mm512_fmadd_ps(wt77, dat69, sum50);
sum51 = _mm512_fmadd_ps(wt77, dat70, sum51);
sum52 = _mm512_fmadd_ps(wt77, dat71, sum52);
sum53 = _mm512_fmadd_ps(wt77, dat72, sum53);
__m512 wt78 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i8+24*j5));
sum54 = _mm512_fmadd_ps(wt78, dat69, sum54);
sum55 = _mm512_fmadd_ps(wt78, dat70, sum55);
sum56 = _mm512_fmadd_ps(wt78, dat71, sum56);
sum57 = _mm512_fmadd_ps(wt78, dat72, sum57);
__m512 wt79 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i8+24*j5));
sum58 = _mm512_fmadd_ps(wt79, dat69, sum58);
sum59 = _mm512_fmadd_ps(wt79, dat70, sum59);
sum60 = _mm512_fmadd_ps(wt79, dat71, sum60);
sum61 = _mm512_fmadd_ps(wt79, dat72, sum61);
}
_mm512_storeu_ps(sumPtr1+0+1536*i8, _mm512_add_ps(sum38, _mm512_loadu_ps(sumPtr1+0+1536*i8)));
_mm512_storeu_ps(sumPtr1+64+1536*i8, _mm512_add_ps(sum39, _mm512_loadu_ps(sumPtr1+64+1536*i8)));
_mm512_storeu_ps(sumPtr1+128+1536*i8, _mm512_add_ps(sum40, _mm512_loadu_ps(sumPtr1+128+1536*i8)));
_mm512_storeu_ps(sumPtr1+192+1536*i8, _mm512_add_ps(sum41, _mm512_loadu_ps(sumPtr1+192+1536*i8)));
_mm512_storeu_ps(sumPtr1+256+1536*i8, _mm512_add_ps(sum42, _mm512_loadu_ps(sumPtr1+256+1536*i8)));
_mm512_storeu_ps(sumPtr1+320+1536*i8, _mm512_add_ps(sum43, _mm512_loadu_ps(sumPtr1+320+1536*i8)));
_mm512_storeu_ps(sumPtr1+384+1536*i8, _mm512_add_ps(sum44, _mm512_loadu_ps(sumPtr1+384+1536*i8)));
_mm512_storeu_ps(sumPtr1+448+1536*i8, _mm512_add_ps(sum45, _mm512_loadu_ps(sumPtr1+448+1536*i8)));
_mm512_storeu_ps(sumPtr1+512+1536*i8, _mm512_add_ps(sum46, _mm512_loadu_ps(sumPtr1+512+1536*i8)));
_mm512_storeu_ps(sumPtr1+576+1536*i8, _mm512_add_ps(sum47, _mm512_loadu_ps(sumPtr1+576+1536*i8)));
_mm512_storeu_ps(sumPtr1+640+1536*i8, _mm512_add_ps(sum48, _mm512_loadu_ps(sumPtr1+640+1536*i8)));
_mm512_storeu_ps(sumPtr1+704+1536*i8, _mm512_add_ps(sum49, _mm512_loadu_ps(sumPtr1+704+1536*i8)));
_mm512_storeu_ps(sumPtr1+768+1536*i8, _mm512_add_ps(sum50, _mm512_loadu_ps(sumPtr1+768+1536*i8)));
_mm512_storeu_ps(sumPtr1+832+1536*i8, _mm512_add_ps(sum51, _mm512_loadu_ps(sumPtr1+832+1536*i8)));
_mm512_storeu_ps(sumPtr1+896+1536*i8, _mm512_add_ps(sum52, _mm512_loadu_ps(sumPtr1+896+1536*i8)));
_mm512_storeu_ps(sumPtr1+960+1536*i8, _mm512_add_ps(sum53, _mm512_loadu_ps(sumPtr1+960+1536*i8)));
_mm512_storeu_ps(sumPtr1+1024+1536*i8, _mm512_add_ps(sum54, _mm512_loadu_ps(sumPtr1+1024+1536*i8)));
_mm512_storeu_ps(sumPtr1+1088+1536*i8, _mm512_add_ps(sum55, _mm512_loadu_ps(sumPtr1+1088+1536*i8)));
_mm512_storeu_ps(sumPtr1+1152+1536*i8, _mm512_add_ps(sum56, _mm512_loadu_ps(sumPtr1+1152+1536*i8)));
_mm512_storeu_ps(sumPtr1+1216+1536*i8, _mm512_add_ps(sum57, _mm512_loadu_ps(sumPtr1+1216+1536*i8)));
_mm512_storeu_ps(sumPtr1+1280+1536*i8, _mm512_add_ps(sum58, _mm512_loadu_ps(sumPtr1+1280+1536*i8)));
_mm512_storeu_ps(sumPtr1+1344+1536*i8, _mm512_add_ps(sum59, _mm512_loadu_ps(sumPtr1+1344+1536*i8)));
_mm512_storeu_ps(sumPtr1+1408+1536*i8, _mm512_add_ps(sum60, _mm512_loadu_ps(sumPtr1+1408+1536*i8)));
_mm512_storeu_ps(sumPtr1+1472+1536*i8, _mm512_add_ps(sum61, _mm512_loadu_ps(sumPtr1+1472+1536*i8)));
if (i8 >= ii2) return;
}
__m512 sum62 = _mm512_setzero_ps();
__m512 sum66 = _mm512_setzero_ps();
__m512 sum70 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum63 = sum62;
__m512 sum64 = sum62;
__m512 sum65 = sum62;
__m512 sum67 = sum66;
__m512 sum68 = sum66;
__m512 sum69 = sum66;
__m512 sum71 = sum70;
__m512 sum72 = sum70;
__m512 sum73 = sum70;
for (ptrdiff_t j6 = 0; j6 < 157; ++j6) {
__m512 dat73 = _mm512_loadu_ps(datPtr2+0+256*j6);
__m512 dat74 = _mm512_loadu_ps(datPtr2+64+256*j6);
__m512 dat75 = _mm512_loadu_ps(datPtr2+128+256*j6);
__m512 dat76 = _mm512_loadu_ps(datPtr2+192+256*j6);
__m512 wt80 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i8+12*j6));
sum62 = _mm512_fmadd_ps(wt80, dat73, sum62);
sum63 = _mm512_fmadd_ps(wt80, dat74, sum63);
sum64 = _mm512_fmadd_ps(wt80, dat75, sum64);
sum65 = _mm512_fmadd_ps(wt80, dat76, sum65);
__m512 wt81 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i8+12*j6));
sum66 = _mm512_fmadd_ps(wt81, dat73, sum66);
sum67 = _mm512_fmadd_ps(wt81, dat74, sum67);
sum68 = _mm512_fmadd_ps(wt81, dat75, sum68);
sum69 = _mm512_fmadd_ps(wt81, dat76, sum69);
__m512 wt82 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i8+12*j6));
sum70 = _mm512_fmadd_ps(wt82, dat73, sum70);
sum71 = _mm512_fmadd_ps(wt82, dat74, sum71);
sum72 = _mm512_fmadd_ps(wt82, dat75, sum72);
sum73 = _mm512_fmadd_ps(wt82, dat76, sum73);
}
_mm512_storeu_ps(sumPtr1+0+1536*i8, _mm512_add_ps(sum62, _mm512_loadu_ps(sumPtr1+0+1536*i8)));
_mm512_storeu_ps(sumPtr1+64+1536*i8, _mm512_add_ps(sum63, _mm512_loadu_ps(sumPtr1+64+1536*i8)));
_mm512_storeu_ps(sumPtr1+128+1536*i8, _mm512_add_ps(sum64, _mm512_loadu_ps(sumPtr1+128+1536*i8)));
_mm512_storeu_ps(sumPtr1+192+1536*i8, _mm512_add_ps(sum65, _mm512_loadu_ps(sumPtr1+192+1536*i8)));
_mm512_storeu_ps(sumPtr1+256+1536*i8, _mm512_add_ps(sum66, _mm512_loadu_ps(sumPtr1+256+1536*i8)));
_mm512_storeu_ps(sumPtr1+320+1536*i8, _mm512_add_ps(sum67, _mm512_loadu_ps(sumPtr1+320+1536*i8)));
_mm512_storeu_ps(sumPtr1+384+1536*i8, _mm512_add_ps(sum68, _mm512_loadu_ps(sumPtr1+384+1536*i8)));
_mm512_storeu_ps(sumPtr1+448+1536*i8, _mm512_add_ps(sum69, _mm512_loadu_ps(sumPtr1+448+1536*i8)));
_mm512_storeu_ps(sumPtr1+512+1536*i8, _mm512_add_ps(sum70, _mm512_loadu_ps(sumPtr1+512+1536*i8)));
_mm512_storeu_ps(sumPtr1+576+1536*i8, _mm512_add_ps(sum71, _mm512_loadu_ps(sumPtr1+576+1536*i8)));
_mm512_storeu_ps(sumPtr1+640+1536*i8, _mm512_add_ps(sum72, _mm512_loadu_ps(sumPtr1+640+1536*i8)));
_mm512_storeu_ps(sumPtr1+704+1536*i8, _mm512_add_ps(sum73, _mm512_loadu_ps(sumPtr1+704+1536*i8)));
return;
}
(void)base1;
ptrdiff_t i9 = 4*w7;
ptrdiff_t ii3 = i9+3;
for (; i9 != 15; ++i9) {
__m512 sum74 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i9));
__m512 sum78 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i9));
__m512 sum82 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i9));
__m512 sum86 = _mm512_set1_ps(*(float*)(biasPtr2+12+24*i9));
__m512 sum90 = _mm512_set1_ps(*(float*)(biasPtr2+16+24*i9));
__m512 sum94 = _mm512_set1_ps(*(float*)(biasPtr2+20+24*i9));
__m512 sum75 = sum74;
__m512 sum76 = sum74;
__m512 sum77 = sum74;
__m512 sum79 = sum78;
__m512 sum80 = sum78;
__m512 sum81 = sum78;
__m512 sum83 = sum82;
__m512 sum84 = sum82;
__m512 sum85 = sum82;
__m512 sum87 = sum86;
__m512 sum88 = sum86;
__m512 sum89 = sum86;
__m512 sum91 = sum90;
__m512 sum92 = sum90;
__m512 sum93 = sum90;
__m512 sum95 = sum94;
__m512 sum96 = sum94;
__m512 sum97 = sum94;
for (ptrdiff_t j7 = 0; j7 < 157; ++j7) {
__m512 dat77 = _mm512_loadu_ps(datPtr2+0+256*j7);
__m512 dat78 = _mm512_loadu_ps(datPtr2+64+256*j7);
__m512 dat79 = _mm512_loadu_ps(datPtr2+128+256*j7);
__m512 dat80 = _mm512_loadu_ps(datPtr2+192+256*j7);
__m512 wt83 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i9+24*j7));
sum74 = _mm512_fmadd_ps(wt83, dat77, sum74);
sum75 = _mm512_fmadd_ps(wt83, dat78, sum75);
sum76 = _mm512_fmadd_ps(wt83, dat79, sum76);
sum77 = _mm512_fmadd_ps(wt83, dat80, sum77);
__m512 wt84 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i9+24*j7));
sum78 = _mm512_fmadd_ps(wt84, dat77, sum78);
sum79 = _mm512_fmadd_ps(wt84, dat78, sum79);
sum80 = _mm512_fmadd_ps(wt84, dat79, sum80);
sum81 = _mm512_fmadd_ps(wt84, dat80, sum81);
__m512 wt85 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i9+24*j7));
sum82 = _mm512_fmadd_ps(wt85, dat77, sum82);
sum83 = _mm512_fmadd_ps(wt85, dat78, sum83);
sum84 = _mm512_fmadd_ps(wt85, dat79, sum84);
sum85 = _mm512_fmadd_ps(wt85, dat80, sum85);
__m512 wt86 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i9+24*j7));
sum86 = _mm512_fmadd_ps(wt86, dat77, sum86);
sum87 = _mm512_fmadd_ps(wt86, dat78, sum87);
sum88 = _mm512_fmadd_ps(wt86, dat79, sum88);
sum89 = _mm512_fmadd_ps(wt86, dat80, sum89);
__m512 wt87 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i9+24*j7));
sum90 = _mm512_fmadd_ps(wt87, dat77, sum90);
sum91 = _mm512_fmadd_ps(wt87, dat78, sum91);
sum92 = _mm512_fmadd_ps(wt87, dat79, sum92);
sum93 = _mm512_fmadd_ps(wt87, dat80, sum93);
__m512 wt88 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i9+24*j7));
sum94 = _mm512_fmadd_ps(wt88, dat77, sum94);
sum95 = _mm512_fmadd_ps(wt88, dat78, sum95);
sum96 = _mm512_fmadd_ps(wt88, dat79, sum96);
sum97 = _mm512_fmadd_ps(wt88, dat80, sum97);
}
_mm512_storeu_ps(sumPtr1+0+1536*i9, sum74);
_mm512_storeu_ps(sumPtr1+64+1536*i9, sum75);
_mm512_storeu_ps(sumPtr1+128+1536*i9, sum76);
_mm512_storeu_ps(sumPtr1+192+1536*i9, sum77);
_mm512_storeu_ps(sumPtr1+256+1536*i9, sum78);
_mm512_storeu_ps(sumPtr1+320+1536*i9, sum79);
_mm512_storeu_ps(sumPtr1+384+1536*i9, sum80);
_mm512_storeu_ps(sumPtr1+448+1536*i9, sum81);
_mm512_storeu_ps(sumPtr1+512+1536*i9, sum82);
_mm512_storeu_ps(sumPtr1+576+1536*i9, sum83);
_mm512_storeu_ps(sumPtr1+640+1536*i9, sum84);
_mm512_storeu_ps(sumPtr1+704+1536*i9, sum85);
_mm512_storeu_ps(sumPtr1+768+1536*i9, sum86);
_mm512_storeu_ps(sumPtr1+832+1536*i9, sum87);
_mm512_storeu_ps(sumPtr1+896+1536*i9, sum88);
_mm512_storeu_ps(sumPtr1+960+1536*i9, sum89);
_mm512_storeu_ps(sumPtr1+1024+1536*i9, sum90);
_mm512_storeu_ps(sumPtr1+1088+1536*i9, sum91);
_mm512_storeu_ps(sumPtr1+1152+1536*i9, sum92);
_mm512_storeu_ps(sumPtr1+1216+1536*i9, sum93);
_mm512_storeu_ps(sumPtr1+1280+1536*i9, sum94);
_mm512_storeu_ps(sumPtr1+1344+1536*i9, sum95);
_mm512_storeu_ps(sumPtr1+1408+1536*i9, sum96);
_mm512_storeu_ps(sumPtr1+1472+1536*i9, sum97);
if (i9 >= ii3) return;
}
__m512 sum98 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i9));
__m512 sum102 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i9));
__m512 sum106 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i9));
__m512 sum99 = sum98;
__m512 sum100 = sum98;
__m512 sum101 = sum98;
__m512 sum103 = sum102;
__m512 sum104 = sum102;
__m512 sum105 = sum102;
__m512 sum107 = sum106;
__m512 sum108 = sum106;
__m512 sum109 = sum106;
for (ptrdiff_t j8 = 0; j8 < 157; ++j8) {
__m512 dat81 = _mm512_loadu_ps(datPtr2+0+256*j8);
__m512 dat82 = _mm512_loadu_ps(datPtr2+64+256*j8);
__m512 dat83 = _mm512_loadu_ps(datPtr2+128+256*j8);
__m512 dat84 = _mm512_loadu_ps(datPtr2+192+256*j8);
__m512 wt89 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i9+12*j8));
sum98 = _mm512_fmadd_ps(wt89, dat81, sum98);
sum99 = _mm512_fmadd_ps(wt89, dat82, sum99);
sum100 = _mm512_fmadd_ps(wt89, dat83, sum100);
sum101 = _mm512_fmadd_ps(wt89, dat84, sum101);
__m512 wt90 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i9+12*j8));
sum102 = _mm512_fmadd_ps(wt90, dat81, sum102);
sum103 = _mm512_fmadd_ps(wt90, dat82, sum103);
sum104 = _mm512_fmadd_ps(wt90, dat83, sum104);
sum105 = _mm512_fmadd_ps(wt90, dat84, sum105);
__m512 wt91 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i9+12*j8));
sum106 = _mm512_fmadd_ps(wt91, dat81, sum106);
sum107 = _mm512_fmadd_ps(wt91, dat82, sum107);
sum108 = _mm512_fmadd_ps(wt91, dat83, sum108);
sum109 = _mm512_fmadd_ps(wt91, dat84, sum109);
}
_mm512_storeu_ps(sumPtr1+0+1536*i9, sum98);
_mm512_storeu_ps(sumPtr1+64+1536*i9, sum99);
_mm512_storeu_ps(sumPtr1+128+1536*i9, sum100);
_mm512_storeu_ps(sumPtr1+192+1536*i9, sum101);
_mm512_storeu_ps(sumPtr1+256+1536*i9, sum102);
_mm512_storeu_ps(sumPtr1+320+1536*i9, sum103);
_mm512_storeu_ps(sumPtr1+384+1536*i9, sum104);
_mm512_storeu_ps(sumPtr1+448+1536*i9, sum105);
_mm512_storeu_ps(sumPtr1+512+1536*i9, sum106);
_mm512_storeu_ps(sumPtr1+576+1536*i9, sum107);
_mm512_storeu_ps(sumPtr1+640+1536*i9, sum108);
_mm512_storeu_ps(sumPtr1+704+1536*i9, sum109);
break;
}
case 2: {
if (epoch1|node6) {
if (!epoch1 && base1) {
ptrdiff_t i10 = 4*w7;
ptrdiff_t ii4 = i10+3;
for (; i10 != 15; ++i10) {
__m512 sum110 = _mm512_setzero_ps();
__m512 sum113 = _mm512_setzero_ps();
__m512 sum116 = _mm512_setzero_ps();
__m512 sum119 = _mm512_setzero_ps();
__m512 sum122 = _mm512_setzero_ps();
__m512 sum125 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum111 = sum110;
__m512 sum112 = sum110;
__m512 sum114 = sum113;
__m512 sum115 = sum113;
__m512 sum117 = sum116;
__m512 sum118 = sum116;
__m512 sum120 = sum119;
__m512 sum121 = sum119;
__m512 sum123 = sum122;
__m512 sum124 = sum122;
__m512 sum126 = sum125;
__m512 sum127 = sum125;
for (ptrdiff_t j9 = 0; j9 < 157; ++j9) {
__m512 dat85 = _mm512_loadu_ps(datPtr2+64+256*j9);
__m512 dat86 = _mm512_loadu_ps(datPtr2+128+256*j9);
__m512 dat87 = _mm512_loadu_ps(datPtr2+192+256*j9);
__m512 wt92 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i10+24*j9));
sum110 = _mm512_fmadd_ps(wt92, dat85, sum110);
sum111 = _mm512_fmadd_ps(wt92, dat86, sum111);
sum112 = _mm512_fmadd_ps(wt92, dat87, sum112);
__m512 wt93 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i10+24*j9));
sum113 = _mm512_fmadd_ps(wt93, dat85, sum113);
sum114 = _mm512_fmadd_ps(wt93, dat86, sum114);
sum115 = _mm512_fmadd_ps(wt93, dat87, sum115);
__m512 wt94 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i10+24*j9));
sum116 = _mm512_fmadd_ps(wt94, dat85, sum116);
sum117 = _mm512_fmadd_ps(wt94, dat86, sum117);
sum118 = _mm512_fmadd_ps(wt94, dat87, sum118);
__m512 wt95 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i10+24*j9));
sum119 = _mm512_fmadd_ps(wt95, dat85, sum119);
sum120 = _mm512_fmadd_ps(wt95, dat86, sum120);
sum121 = _mm512_fmadd_ps(wt95, dat87, sum121);
__m512 wt96 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i10+24*j9));
sum122 = _mm512_fmadd_ps(wt96, dat85, sum122);
sum123 = _mm512_fmadd_ps(wt96, dat86, sum123);
sum124 = _mm512_fmadd_ps(wt96, dat87, sum124);
__m512 wt97 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i10+24*j9));
sum125 = _mm512_fmadd_ps(wt97, dat85, sum125);
sum126 = _mm512_fmadd_ps(wt97, dat86, sum126);
sum127 = _mm512_fmadd_ps(wt97, dat87, sum127);
}
_mm512_storeu_ps(sumPtr1+0+1536*i10, sum110);
_mm512_storeu_ps(sumPtr1+64+1536*i10, sum111);
_mm512_storeu_ps(sumPtr1+128+1536*i10, sum112);
_mm512_storeu_ps(sumPtr1+256+1536*i10, sum113);
_mm512_storeu_ps(sumPtr1+320+1536*i10, sum114);
_mm512_storeu_ps(sumPtr1+384+1536*i10, sum115);
_mm512_storeu_ps(sumPtr1+512+1536*i10, sum116);
_mm512_storeu_ps(sumPtr1+576+1536*i10, sum117);
_mm512_storeu_ps(sumPtr1+640+1536*i10, sum118);
_mm512_storeu_ps(sumPtr1+768+1536*i10, sum119);
_mm512_storeu_ps(sumPtr1+832+1536*i10, sum120);
_mm512_storeu_ps(sumPtr1+896+1536*i10, sum121);
_mm512_storeu_ps(sumPtr1+1024+1536*i10, sum122);
_mm512_storeu_ps(sumPtr1+1088+1536*i10, sum123);
_mm512_storeu_ps(sumPtr1+1152+1536*i10, sum124);
_mm512_storeu_ps(sumPtr1+1280+1536*i10, sum125);
_mm512_storeu_ps(sumPtr1+1344+1536*i10, sum126);
_mm512_storeu_ps(sumPtr1+1408+1536*i10, sum127);
if (i10 >= ii4) return;
}
__m512 sum128 = _mm512_setzero_ps();
__m512 sum131 = _mm512_setzero_ps();
__m512 sum134 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum129 = sum128;
__m512 sum130 = sum128;
__m512 sum132 = sum131;
__m512 sum133 = sum131;
__m512 sum135 = sum134;
__m512 sum136 = sum134;
for (ptrdiff_t j10 = 0; j10 < 157; ++j10) {
__m512 dat88 = _mm512_loadu_ps(datPtr2+64+256*j10);
__m512 dat89 = _mm512_loadu_ps(datPtr2+128+256*j10);
__m512 dat90 = _mm512_loadu_ps(datPtr2+192+256*j10);
__m512 wt98 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i10+12*j10));
sum128 = _mm512_fmadd_ps(wt98, dat88, sum128);
sum129 = _mm512_fmadd_ps(wt98, dat89, sum129);
sum130 = _mm512_fmadd_ps(wt98, dat90, sum130);
__m512 wt99 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i10+12*j10));
sum131 = _mm512_fmadd_ps(wt99, dat88, sum131);
sum132 = _mm512_fmadd_ps(wt99, dat89, sum132);
sum133 = _mm512_fmadd_ps(wt99, dat90, sum133);
__m512 wt100 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i10+12*j10));
sum134 = _mm512_fmadd_ps(wt100, dat88, sum134);
sum135 = _mm512_fmadd_ps(wt100, dat89, sum135);
sum136 = _mm512_fmadd_ps(wt100, dat90, sum136);
}
_mm512_storeu_ps(sumPtr1+0+1536*i10, sum128);
_mm512_storeu_ps(sumPtr1+64+1536*i10, sum129);
_mm512_storeu_ps(sumPtr1+128+1536*i10, sum130);
_mm512_storeu_ps(sumPtr1+256+1536*i10, sum131);
_mm512_storeu_ps(sumPtr1+320+1536*i10, sum132);
_mm512_storeu_ps(sumPtr1+384+1536*i10, sum133);
_mm512_storeu_ps(sumPtr1+512+1536*i10, sum134);
_mm512_storeu_ps(sumPtr1+576+1536*i10, sum135);
_mm512_storeu_ps(sumPtr1+640+1536*i10, sum136);
return;
}
ptrdiff_t i11 = 4*w7;
ptrdiff_t ii5 = i11+3;
for (; i11 != 15; ++i11) {
__m512 sum137 = _mm512_setzero_ps();
__m512 sum140 = _mm512_setzero_ps();
__m512 sum143 = _mm512_setzero_ps();
__m512 sum146 = _mm512_setzero_ps();
__m512 sum149 = _mm512_setzero_ps();
__m512 sum152 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum138 = sum137;
__m512 sum139 = sum137;
__m512 sum141 = sum140;
__m512 sum142 = sum140;
__m512 sum144 = sum143;
__m512 sum145 = sum143;
__m512 sum147 = sum146;
__m512 sum148 = sum146;
__m512 sum150 = sum149;
__m512 sum151 = sum149;
__m512 sum153 = sum152;
__m512 sum154 = sum152;
for (ptrdiff_t j11 = 0; j11 < 157; ++j11) {
__m512 dat91 = _mm512_loadu_ps(datPtr2+64+256*j11);
__m512 dat92 = _mm512_loadu_ps(datPtr2+128+256*j11);
__m512 dat93 = _mm512_loadu_ps(datPtr2+192+256*j11);
__m512 wt101 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i11+24*j11));
sum137 = _mm512_fmadd_ps(wt101, dat91, sum137);
sum138 = _mm512_fmadd_ps(wt101, dat92, sum138);
sum139 = _mm512_fmadd_ps(wt101, dat93, sum139);
__m512 wt102 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i11+24*j11));
sum140 = _mm512_fmadd_ps(wt102, dat91, sum140);
sum141 = _mm512_fmadd_ps(wt102, dat92, sum141);
sum142 = _mm512_fmadd_ps(wt102, dat93, sum142);
__m512 wt103 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i11+24*j11));
sum143 = _mm512_fmadd_ps(wt103, dat91, sum143);
sum144 = _mm512_fmadd_ps(wt103, dat92, sum144);
sum145 = _mm512_fmadd_ps(wt103, dat93, sum145);
__m512 wt104 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i11+24*j11));
sum146 = _mm512_fmadd_ps(wt104, dat91, sum146);
sum147 = _mm512_fmadd_ps(wt104, dat92, sum147);
sum148 = _mm512_fmadd_ps(wt104, dat93, sum148);
__m512 wt105 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i11+24*j11));
sum149 = _mm512_fmadd_ps(wt105, dat91, sum149);
sum150 = _mm512_fmadd_ps(wt105, dat92, sum150);
sum151 = _mm512_fmadd_ps(wt105, dat93, sum151);
__m512 wt106 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i11+24*j11));
sum152 = _mm512_fmadd_ps(wt106, dat91, sum152);
sum153 = _mm512_fmadd_ps(wt106, dat92, sum153);
sum154 = _mm512_fmadd_ps(wt106, dat93, sum154);
}
_mm512_storeu_ps(sumPtr1+0+1536*i11, _mm512_add_ps(sum137, _mm512_loadu_ps(sumPtr1+0+1536*i11)));
_mm512_storeu_ps(sumPtr1+64+1536*i11, _mm512_add_ps(sum138, _mm512_loadu_ps(sumPtr1+64+1536*i11)));
_mm512_storeu_ps(sumPtr1+128+1536*i11, _mm512_add_ps(sum139, _mm512_loadu_ps(sumPtr1+128+1536*i11)));
_mm512_storeu_ps(sumPtr1+256+1536*i11, _mm512_add_ps(sum140, _mm512_loadu_ps(sumPtr1+256+1536*i11)));
_mm512_storeu_ps(sumPtr1+320+1536*i11, _mm512_add_ps(sum141, _mm512_loadu_ps(sumPtr1+320+1536*i11)));
_mm512_storeu_ps(sumPtr1+384+1536*i11, _mm512_add_ps(sum142, _mm512_loadu_ps(sumPtr1+384+1536*i11)));
_mm512_storeu_ps(sumPtr1+512+1536*i11, _mm512_add_ps(sum143, _mm512_loadu_ps(sumPtr1+512+1536*i11)));
_mm512_storeu_ps(sumPtr1+576+1536*i11, _mm512_add_ps(sum144, _mm512_loadu_ps(sumPtr1+576+1536*i11)));
_mm512_storeu_ps(sumPtr1+640+1536*i11, _mm512_add_ps(sum145, _mm512_loadu_ps(sumPtr1+640+1536*i11)));
_mm512_storeu_ps(sumPtr1+768+1536*i11, _mm512_add_ps(sum146, _mm512_loadu_ps(sumPtr1+768+1536*i11)));
_mm512_storeu_ps(sumPtr1+832+1536*i11, _mm512_add_ps(sum147, _mm512_loadu_ps(sumPtr1+832+1536*i11)));
_mm512_storeu_ps(sumPtr1+896+1536*i11, _mm512_add_ps(sum148, _mm512_loadu_ps(sumPtr1+896+1536*i11)));
_mm512_storeu_ps(sumPtr1+1024+1536*i11, _mm512_add_ps(sum149, _mm512_loadu_ps(sumPtr1+1024+1536*i11)));
_mm512_storeu_ps(sumPtr1+1088+1536*i11, _mm512_add_ps(sum150, _mm512_loadu_ps(sumPtr1+1088+1536*i11)));
_mm512_storeu_ps(sumPtr1+1152+1536*i11, _mm512_add_ps(sum151, _mm512_loadu_ps(sumPtr1+1152+1536*i11)));
_mm512_storeu_ps(sumPtr1+1280+1536*i11, _mm512_add_ps(sum152, _mm512_loadu_ps(sumPtr1+1280+1536*i11)));
_mm512_storeu_ps(sumPtr1+1344+1536*i11, _mm512_add_ps(sum153, _mm512_loadu_ps(sumPtr1+1344+1536*i11)));
_mm512_storeu_ps(sumPtr1+1408+1536*i11, _mm512_add_ps(sum154, _mm512_loadu_ps(sumPtr1+1408+1536*i11)));
if (i11 >= ii5) return;
}
__m512 sum155 = _mm512_setzero_ps();
__m512 sum158 = _mm512_setzero_ps();
__m512 sum161 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum156 = sum155;
__m512 sum157 = sum155;
__m512 sum159 = sum158;
__m512 sum160 = sum158;
__m512 sum162 = sum161;
__m512 sum163 = sum161;
for (ptrdiff_t j12 = 0; j12 < 157; ++j12) {
__m512 dat94 = _mm512_loadu_ps(datPtr2+64+256*j12);
__m512 dat95 = _mm512_loadu_ps(datPtr2+128+256*j12);
__m512 dat96 = _mm512_loadu_ps(datPtr2+192+256*j12);
__m512 wt107 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i11+12*j12));
sum155 = _mm512_fmadd_ps(wt107, dat94, sum155);
sum156 = _mm512_fmadd_ps(wt107, dat95, sum156);
sum157 = _mm512_fmadd_ps(wt107, dat96, sum157);
__m512 wt108 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i11+12*j12));
sum158 = _mm512_fmadd_ps(wt108, dat94, sum158);
sum159 = _mm512_fmadd_ps(wt108, dat95, sum159);
sum160 = _mm512_fmadd_ps(wt108, dat96, sum160);
__m512 wt109 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i11+12*j12));
sum161 = _mm512_fmadd_ps(wt109, dat94, sum161);
sum162 = _mm512_fmadd_ps(wt109, dat95, sum162);
sum163 = _mm512_fmadd_ps(wt109, dat96, sum163);
}
_mm512_storeu_ps(sumPtr1+0+1536*i11, _mm512_add_ps(sum155, _mm512_loadu_ps(sumPtr1+0+1536*i11)));
_mm512_storeu_ps(sumPtr1+64+1536*i11, _mm512_add_ps(sum156, _mm512_loadu_ps(sumPtr1+64+1536*i11)));
_mm512_storeu_ps(sumPtr1+128+1536*i11, _mm512_add_ps(sum157, _mm512_loadu_ps(sumPtr1+128+1536*i11)));
_mm512_storeu_ps(sumPtr1+256+1536*i11, _mm512_add_ps(sum158, _mm512_loadu_ps(sumPtr1+256+1536*i11)));
_mm512_storeu_ps(sumPtr1+320+1536*i11, _mm512_add_ps(sum159, _mm512_loadu_ps(sumPtr1+320+1536*i11)));
_mm512_storeu_ps(sumPtr1+384+1536*i11, _mm512_add_ps(sum160, _mm512_loadu_ps(sumPtr1+384+1536*i11)));
_mm512_storeu_ps(sumPtr1+512+1536*i11, _mm512_add_ps(sum161, _mm512_loadu_ps(sumPtr1+512+1536*i11)));
_mm512_storeu_ps(sumPtr1+576+1536*i11, _mm512_add_ps(sum162, _mm512_loadu_ps(sumPtr1+576+1536*i11)));
_mm512_storeu_ps(sumPtr1+640+1536*i11, _mm512_add_ps(sum163, _mm512_loadu_ps(sumPtr1+640+1536*i11)));
return;
}
(void)base1;
ptrdiff_t i12 = 4*w7;
ptrdiff_t ii6 = i12+3;
for (; i12 != 15; ++i12) {
__m512 sum164 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i12));
__m512 sum167 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i12));
__m512 sum170 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i12));
__m512 sum173 = _mm512_set1_ps(*(float*)(biasPtr2+12+24*i12));
__m512 sum176 = _mm512_set1_ps(*(float*)(biasPtr2+16+24*i12));
__m512 sum179 = _mm512_set1_ps(*(float*)(biasPtr2+20+24*i12));
__m512 sum165 = sum164;
__m512 sum166 = sum164;
__m512 sum168 = sum167;
__m512 sum169 = sum167;
__m512 sum171 = sum170;
__m512 sum172 = sum170;
__m512 sum174 = sum173;
__m512 sum175 = sum173;
__m512 sum177 = sum176;
__m512 sum178 = sum176;
__m512 sum180 = sum179;
__m512 sum181 = sum179;
for (ptrdiff_t j13 = 0; j13 < 157; ++j13) {
__m512 dat97 = _mm512_loadu_ps(datPtr2+64+256*j13);
__m512 dat98 = _mm512_loadu_ps(datPtr2+128+256*j13);
__m512 dat99 = _mm512_loadu_ps(datPtr2+192+256*j13);
__m512 wt110 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i12+24*j13));
sum164 = _mm512_fmadd_ps(wt110, dat97, sum164);
sum165 = _mm512_fmadd_ps(wt110, dat98, sum165);
sum166 = _mm512_fmadd_ps(wt110, dat99, sum166);
__m512 wt111 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i12+24*j13));
sum167 = _mm512_fmadd_ps(wt111, dat97, sum167);
sum168 = _mm512_fmadd_ps(wt111, dat98, sum168);
sum169 = _mm512_fmadd_ps(wt111, dat99, sum169);
__m512 wt112 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i12+24*j13));
sum170 = _mm512_fmadd_ps(wt112, dat97, sum170);
sum171 = _mm512_fmadd_ps(wt112, dat98, sum171);
sum172 = _mm512_fmadd_ps(wt112, dat99, sum172);
__m512 wt113 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i12+24*j13));
sum173 = _mm512_fmadd_ps(wt113, dat97, sum173);
sum174 = _mm512_fmadd_ps(wt113, dat98, sum174);
sum175 = _mm512_fmadd_ps(wt113, dat99, sum175);
__m512 wt114 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i12+24*j13));
sum176 = _mm512_fmadd_ps(wt114, dat97, sum176);
sum177 = _mm512_fmadd_ps(wt114, dat98, sum177);
sum178 = _mm512_fmadd_ps(wt114, dat99, sum178);
__m512 wt115 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i12+24*j13));
sum179 = _mm512_fmadd_ps(wt115, dat97, sum179);
sum180 = _mm512_fmadd_ps(wt115, dat98, sum180);
sum181 = _mm512_fmadd_ps(wt115, dat99, sum181);
}
_mm512_storeu_ps(sumPtr1+0+1536*i12, sum164);
_mm512_storeu_ps(sumPtr1+64+1536*i12, sum165);
_mm512_storeu_ps(sumPtr1+128+1536*i12, sum166);
_mm512_storeu_ps(sumPtr1+256+1536*i12, sum167);
_mm512_storeu_ps(sumPtr1+320+1536*i12, sum168);
_mm512_storeu_ps(sumPtr1+384+1536*i12, sum169);
_mm512_storeu_ps(sumPtr1+512+1536*i12, sum170);
_mm512_storeu_ps(sumPtr1+576+1536*i12, sum171);
_mm512_storeu_ps(sumPtr1+640+1536*i12, sum172);
_mm512_storeu_ps(sumPtr1+768+1536*i12, sum173);
_mm512_storeu_ps(sumPtr1+832+1536*i12, sum174);
_mm512_storeu_ps(sumPtr1+896+1536*i12, sum175);
_mm512_storeu_ps(sumPtr1+1024+1536*i12, sum176);
_mm512_storeu_ps(sumPtr1+1088+1536*i12, sum177);
_mm512_storeu_ps(sumPtr1+1152+1536*i12, sum178);
_mm512_storeu_ps(sumPtr1+1280+1536*i12, sum179);
_mm512_storeu_ps(sumPtr1+1344+1536*i12, sum180);
_mm512_storeu_ps(sumPtr1+1408+1536*i12, sum181);
if (i12 >= ii6) return;
}
__m512 sum182 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i12));
__m512 sum185 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i12));
__m512 sum188 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i12));
__m512 sum183 = sum182;
__m512 sum184 = sum182;
__m512 sum186 = sum185;
__m512 sum187 = sum185;
__m512 sum189 = sum188;
__m512 sum190 = sum188;
for (ptrdiff_t j14 = 0; j14 < 157; ++j14) {
__m512 dat100 = _mm512_loadu_ps(datPtr2+64+256*j14);
__m512 dat101 = _mm512_loadu_ps(datPtr2+128+256*j14);
__m512 dat102 = _mm512_loadu_ps(datPtr2+192+256*j14);
__m512 wt116 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i12+12*j14));
sum182 = _mm512_fmadd_ps(wt116, dat100, sum182);
sum183 = _mm512_fmadd_ps(wt116, dat101, sum183);
sum184 = _mm512_fmadd_ps(wt116, dat102, sum184);
__m512 wt117 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i12+12*j14));
sum185 = _mm512_fmadd_ps(wt117, dat100, sum185);
sum186 = _mm512_fmadd_ps(wt117, dat101, sum186);
sum187 = _mm512_fmadd_ps(wt117, dat102, sum187);
__m512 wt118 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i12+12*j14));
sum188 = _mm512_fmadd_ps(wt118, dat100, sum188);
sum189 = _mm512_fmadd_ps(wt118, dat101, sum189);
sum190 = _mm512_fmadd_ps(wt118, dat102, sum190);
}
_mm512_storeu_ps(sumPtr1+0+1536*i12, sum182);
_mm512_storeu_ps(sumPtr1+64+1536*i12, sum183);
_mm512_storeu_ps(sumPtr1+128+1536*i12, sum184);
_mm512_storeu_ps(sumPtr1+256+1536*i12, sum185);
_mm512_storeu_ps(sumPtr1+320+1536*i12, sum186);
_mm512_storeu_ps(sumPtr1+384+1536*i12, sum187);
_mm512_storeu_ps(sumPtr1+512+1536*i12, sum188);
_mm512_storeu_ps(sumPtr1+576+1536*i12, sum189);
_mm512_storeu_ps(sumPtr1+640+1536*i12, sum190);
break;
}
case 3: {
if (epoch1|node6) {
if (!epoch1 && base1) {
ptrdiff_t i13 = 4*w7;
ptrdiff_t ii7 = i13+3;
for (; i13 != 15; ++i13) {
__m512 sum191 = _mm512_setzero_ps();
__m512 sum195 = _mm512_setzero_ps();
__m512 sum199 = _mm512_setzero_ps();
__m512 sum203 = _mm512_setzero_ps();
__m512 sum207 = _mm512_setzero_ps();
__m512 sum211 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum192 = sum191;
__m512 sum193 = sum191;
__m512 sum194 = sum191;
__m512 sum196 = sum195;
__m512 sum197 = sum195;
__m512 sum198 = sum195;
__m512 sum200 = sum199;
__m512 sum201 = sum199;
__m512 sum202 = sum199;
__m512 sum204 = sum203;
__m512 sum205 = sum203;
__m512 sum206 = sum203;
__m512 sum208 = sum207;
__m512 sum209 = sum207;
__m512 sum210 = sum207;
__m512 sum212 = sum211;
__m512 sum213 = sum211;
__m512 sum214 = sum211;
for (ptrdiff_t j15 = 0; j15 < 157; ++j15) {
__m512 dat103 = _mm512_loadu_ps(datPtr2+0+256*j15);
__m512 dat104 = _mm512_loadu_ps(datPtr2+64+256*j15);
__m512 dat105 = _mm512_loadu_ps(datPtr2+128+256*j15);
__m512 dat106 = _mm512_loadu_ps(datPtr2+192+256*j15);
__m512 wt119 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i13+24*j15));
sum191 = _mm512_fmadd_ps(wt119, dat103, sum191);
sum192 = _mm512_fmadd_ps(wt119, dat104, sum192);
sum193 = _mm512_fmadd_ps(wt119, dat105, sum193);
sum194 = _mm512_fmadd_ps(wt119, dat106, sum194);
__m512 wt120 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i13+24*j15));
sum195 = _mm512_fmadd_ps(wt120, dat103, sum195);
sum196 = _mm512_fmadd_ps(wt120, dat104, sum196);
sum197 = _mm512_fmadd_ps(wt120, dat105, sum197);
sum198 = _mm512_fmadd_ps(wt120, dat106, sum198);
__m512 wt121 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i13+24*j15));
sum199 = _mm512_fmadd_ps(wt121, dat103, sum199);
sum200 = _mm512_fmadd_ps(wt121, dat104, sum200);
sum201 = _mm512_fmadd_ps(wt121, dat105, sum201);
sum202 = _mm512_fmadd_ps(wt121, dat106, sum202);
__m512 wt122 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i13+24*j15));
sum203 = _mm512_fmadd_ps(wt122, dat103, sum203);
sum204 = _mm512_fmadd_ps(wt122, dat104, sum204);
sum205 = _mm512_fmadd_ps(wt122, dat105, sum205);
sum206 = _mm512_fmadd_ps(wt122, dat106, sum206);
__m512 wt123 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i13+24*j15));
sum207 = _mm512_fmadd_ps(wt123, dat103, sum207);
sum208 = _mm512_fmadd_ps(wt123, dat104, sum208);
sum209 = _mm512_fmadd_ps(wt123, dat105, sum209);
sum210 = _mm512_fmadd_ps(wt123, dat106, sum210);
__m512 wt124 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i13+24*j15));
sum211 = _mm512_fmadd_ps(wt124, dat103, sum211);
sum212 = _mm512_fmadd_ps(wt124, dat104, sum212);
sum213 = _mm512_fmadd_ps(wt124, dat105, sum213);
sum214 = _mm512_fmadd_ps(wt124, dat106, sum214);
}
_mm512_storeu_ps(sumPtr1+-285504+1536*i13, sum191);
_mm512_storeu_ps(sumPtr1+0+1536*i13, sum192);
_mm512_storeu_ps(sumPtr1+64+1536*i13, sum193);
_mm512_storeu_ps(sumPtr1+128+1536*i13, sum194);
_mm512_storeu_ps(sumPtr1+-285248+1536*i13, sum195);
_mm512_storeu_ps(sumPtr1+256+1536*i13, sum196);
_mm512_storeu_ps(sumPtr1+320+1536*i13, sum197);
_mm512_storeu_ps(sumPtr1+384+1536*i13, sum198);
_mm512_storeu_ps(sumPtr1+-284992+1536*i13, sum199);
_mm512_storeu_ps(sumPtr1+512+1536*i13, sum200);
_mm512_storeu_ps(sumPtr1+576+1536*i13, sum201);
_mm512_storeu_ps(sumPtr1+640+1536*i13, sum202);
_mm512_storeu_ps(sumPtr1+-284736+1536*i13, sum203);
_mm512_storeu_ps(sumPtr1+768+1536*i13, sum204);
_mm512_storeu_ps(sumPtr1+832+1536*i13, sum205);
_mm512_storeu_ps(sumPtr1+896+1536*i13, sum206);
_mm512_storeu_ps(sumPtr1+-284480+1536*i13, sum207);
_mm512_storeu_ps(sumPtr1+1024+1536*i13, sum208);
_mm512_storeu_ps(sumPtr1+1088+1536*i13, sum209);
_mm512_storeu_ps(sumPtr1+1152+1536*i13, sum210);
_mm512_storeu_ps(sumPtr1+-284224+1536*i13, sum211);
_mm512_storeu_ps(sumPtr1+1280+1536*i13, sum212);
_mm512_storeu_ps(sumPtr1+1344+1536*i13, sum213);
_mm512_storeu_ps(sumPtr1+1408+1536*i13, sum214);
if (i13 >= ii7) return;
}
__m512 sum215 = _mm512_setzero_ps();
__m512 sum219 = _mm512_setzero_ps();
__m512 sum223 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum216 = sum215;
__m512 sum217 = sum215;
__m512 sum218 = sum215;
__m512 sum220 = sum219;
__m512 sum221 = sum219;
__m512 sum222 = sum219;
__m512 sum224 = sum223;
__m512 sum225 = sum223;
__m512 sum226 = sum223;
for (ptrdiff_t j16 = 0; j16 < 157; ++j16) {
__m512 dat107 = _mm512_loadu_ps(datPtr2+0+256*j16);
__m512 dat108 = _mm512_loadu_ps(datPtr2+64+256*j16);
__m512 dat109 = _mm512_loadu_ps(datPtr2+128+256*j16);
__m512 dat110 = _mm512_loadu_ps(datPtr2+192+256*j16);
__m512 wt125 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i13+12*j16));
sum215 = _mm512_fmadd_ps(wt125, dat107, sum215);
sum216 = _mm512_fmadd_ps(wt125, dat108, sum216);
sum217 = _mm512_fmadd_ps(wt125, dat109, sum217);
sum218 = _mm512_fmadd_ps(wt125, dat110, sum218);
__m512 wt126 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i13+12*j16));
sum219 = _mm512_fmadd_ps(wt126, dat107, sum219);
sum220 = _mm512_fmadd_ps(wt126, dat108, sum220);
sum221 = _mm512_fmadd_ps(wt126, dat109, sum221);
sum222 = _mm512_fmadd_ps(wt126, dat110, sum222);
__m512 wt127 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i13+12*j16));
sum223 = _mm512_fmadd_ps(wt127, dat107, sum223);
sum224 = _mm512_fmadd_ps(wt127, dat108, sum224);
sum225 = _mm512_fmadd_ps(wt127, dat109, sum225);
sum226 = _mm512_fmadd_ps(wt127, dat110, sum226);
}
_mm512_storeu_ps(sumPtr1+-285504+1536*i13, sum215);
_mm512_storeu_ps(sumPtr1+0+1536*i13, sum216);
_mm512_storeu_ps(sumPtr1+64+1536*i13, sum217);
_mm512_storeu_ps(sumPtr1+128+1536*i13, sum218);
_mm512_storeu_ps(sumPtr1+-285248+1536*i13, sum219);
_mm512_storeu_ps(sumPtr1+256+1536*i13, sum220);
_mm512_storeu_ps(sumPtr1+320+1536*i13, sum221);
_mm512_storeu_ps(sumPtr1+384+1536*i13, sum222);
_mm512_storeu_ps(sumPtr1+-284992+1536*i13, sum223);
_mm512_storeu_ps(sumPtr1+512+1536*i13, sum224);
_mm512_storeu_ps(sumPtr1+576+1536*i13, sum225);
_mm512_storeu_ps(sumPtr1+640+1536*i13, sum226);
return;
}
ptrdiff_t i14 = 4*w7;
ptrdiff_t ii8 = i14+3;
for (; i14 != 15; ++i14) {
__m512 sum227 = _mm512_setzero_ps();
__m512 sum231 = _mm512_setzero_ps();
__m512 sum235 = _mm512_setzero_ps();
__m512 sum239 = _mm512_setzero_ps();
__m512 sum243 = _mm512_setzero_ps();
__m512 sum247 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum228 = sum227;
__m512 sum229 = sum227;
__m512 sum230 = sum227;
__m512 sum232 = sum231;
__m512 sum233 = sum231;
__m512 sum234 = sum231;
__m512 sum236 = sum235;
__m512 sum237 = sum235;
__m512 sum238 = sum235;
__m512 sum240 = sum239;
__m512 sum241 = sum239;
__m512 sum242 = sum239;
__m512 sum244 = sum243;
__m512 sum245 = sum243;
__m512 sum246 = sum243;
__m512 sum248 = sum247;
__m512 sum249 = sum247;
__m512 sum250 = sum247;
for (ptrdiff_t j17 = 0; j17 < 157; ++j17) {
__m512 dat111 = _mm512_loadu_ps(datPtr2+0+256*j17);
__m512 dat112 = _mm512_loadu_ps(datPtr2+64+256*j17);
__m512 dat113 = _mm512_loadu_ps(datPtr2+128+256*j17);
__m512 dat114 = _mm512_loadu_ps(datPtr2+192+256*j17);
__m512 wt128 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i14+24*j17));
sum227 = _mm512_fmadd_ps(wt128, dat111, sum227);
sum228 = _mm512_fmadd_ps(wt128, dat112, sum228);
sum229 = _mm512_fmadd_ps(wt128, dat113, sum229);
sum230 = _mm512_fmadd_ps(wt128, dat114, sum230);
__m512 wt129 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i14+24*j17));
sum231 = _mm512_fmadd_ps(wt129, dat111, sum231);
sum232 = _mm512_fmadd_ps(wt129, dat112, sum232);
sum233 = _mm512_fmadd_ps(wt129, dat113, sum233);
sum234 = _mm512_fmadd_ps(wt129, dat114, sum234);
__m512 wt130 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i14+24*j17));
sum235 = _mm512_fmadd_ps(wt130, dat111, sum235);
sum236 = _mm512_fmadd_ps(wt130, dat112, sum236);
sum237 = _mm512_fmadd_ps(wt130, dat113, sum237);
sum238 = _mm512_fmadd_ps(wt130, dat114, sum238);
__m512 wt131 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i14+24*j17));
sum239 = _mm512_fmadd_ps(wt131, dat111, sum239);
sum240 = _mm512_fmadd_ps(wt131, dat112, sum240);
sum241 = _mm512_fmadd_ps(wt131, dat113, sum241);
sum242 = _mm512_fmadd_ps(wt131, dat114, sum242);
__m512 wt132 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i14+24*j17));
sum243 = _mm512_fmadd_ps(wt132, dat111, sum243);
sum244 = _mm512_fmadd_ps(wt132, dat112, sum244);
sum245 = _mm512_fmadd_ps(wt132, dat113, sum245);
sum246 = _mm512_fmadd_ps(wt132, dat114, sum246);
__m512 wt133 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i14+24*j17));
sum247 = _mm512_fmadd_ps(wt133, dat111, sum247);
sum248 = _mm512_fmadd_ps(wt133, dat112, sum248);
sum249 = _mm512_fmadd_ps(wt133, dat113, sum249);
sum250 = _mm512_fmadd_ps(wt133, dat114, sum250);
}
_mm512_storeu_ps(sumPtr1+-285504+1536*i14, _mm512_add_ps(sum227, _mm512_loadu_ps(sumPtr1+-285504+1536*i14)));
_mm512_storeu_ps(sumPtr1+0+1536*i14, _mm512_add_ps(sum228, _mm512_loadu_ps(sumPtr1+0+1536*i14)));
_mm512_storeu_ps(sumPtr1+64+1536*i14, _mm512_add_ps(sum229, _mm512_loadu_ps(sumPtr1+64+1536*i14)));
_mm512_storeu_ps(sumPtr1+128+1536*i14, _mm512_add_ps(sum230, _mm512_loadu_ps(sumPtr1+128+1536*i14)));
_mm512_storeu_ps(sumPtr1+-285248+1536*i14, _mm512_add_ps(sum231, _mm512_loadu_ps(sumPtr1+-285248+1536*i14)));
_mm512_storeu_ps(sumPtr1+256+1536*i14, _mm512_add_ps(sum232, _mm512_loadu_ps(sumPtr1+256+1536*i14)));
_mm512_storeu_ps(sumPtr1+320+1536*i14, _mm512_add_ps(sum233, _mm512_loadu_ps(sumPtr1+320+1536*i14)));
_mm512_storeu_ps(sumPtr1+384+1536*i14, _mm512_add_ps(sum234, _mm512_loadu_ps(sumPtr1+384+1536*i14)));
_mm512_storeu_ps(sumPtr1+-284992+1536*i14, _mm512_add_ps(sum235, _mm512_loadu_ps(sumPtr1+-284992+1536*i14)));
_mm512_storeu_ps(sumPtr1+512+1536*i14, _mm512_add_ps(sum236, _mm512_loadu_ps(sumPtr1+512+1536*i14)));
_mm512_storeu_ps(sumPtr1+576+1536*i14, _mm512_add_ps(sum237, _mm512_loadu_ps(sumPtr1+576+1536*i14)));
_mm512_storeu_ps(sumPtr1+640+1536*i14, _mm512_add_ps(sum238, _mm512_loadu_ps(sumPtr1+640+1536*i14)));
_mm512_storeu_ps(sumPtr1+-284736+1536*i14, _mm512_add_ps(sum239, _mm512_loadu_ps(sumPtr1+-284736+1536*i14)));
_mm512_storeu_ps(sumPtr1+768+1536*i14, _mm512_add_ps(sum240, _mm512_loadu_ps(sumPtr1+768+1536*i14)));
_mm512_storeu_ps(sumPtr1+832+1536*i14, _mm512_add_ps(sum241, _mm512_loadu_ps(sumPtr1+832+1536*i14)));
_mm512_storeu_ps(sumPtr1+896+1536*i14, _mm512_add_ps(sum242, _mm512_loadu_ps(sumPtr1+896+1536*i14)));
_mm512_storeu_ps(sumPtr1+-284480+1536*i14, _mm512_add_ps(sum243, _mm512_loadu_ps(sumPtr1+-284480+1536*i14)));
_mm512_storeu_ps(sumPtr1+1024+1536*i14, _mm512_add_ps(sum244, _mm512_loadu_ps(sumPtr1+1024+1536*i14)));
_mm512_storeu_ps(sumPtr1+1088+1536*i14, _mm512_add_ps(sum245, _mm512_loadu_ps(sumPtr1+1088+1536*i14)));
_mm512_storeu_ps(sumPtr1+1152+1536*i14, _mm512_add_ps(sum246, _mm512_loadu_ps(sumPtr1+1152+1536*i14)));
_mm512_storeu_ps(sumPtr1+-284224+1536*i14, _mm512_add_ps(sum247, _mm512_loadu_ps(sumPtr1+-284224+1536*i14)));
_mm512_storeu_ps(sumPtr1+1280+1536*i14, _mm512_add_ps(sum248, _mm512_loadu_ps(sumPtr1+1280+1536*i14)));
_mm512_storeu_ps(sumPtr1+1344+1536*i14, _mm512_add_ps(sum249, _mm512_loadu_ps(sumPtr1+1344+1536*i14)));
_mm512_storeu_ps(sumPtr1+1408+1536*i14, _mm512_add_ps(sum250, _mm512_loadu_ps(sumPtr1+1408+1536*i14)));
if (i14 >= ii8) return;
}
__m512 sum251 = _mm512_setzero_ps();
__m512 sum255 = _mm512_setzero_ps();
__m512 sum259 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum252 = sum251;
__m512 sum253 = sum251;
__m512 sum254 = sum251;
__m512 sum256 = sum255;
__m512 sum257 = sum255;
__m512 sum258 = sum255;
__m512 sum260 = sum259;
__m512 sum261 = sum259;
__m512 sum262 = sum259;
for (ptrdiff_t j18 = 0; j18 < 157; ++j18) {
__m512 dat115 = _mm512_loadu_ps(datPtr2+0+256*j18);
__m512 dat116 = _mm512_loadu_ps(datPtr2+64+256*j18);
__m512 dat117 = _mm512_loadu_ps(datPtr2+128+256*j18);
__m512 dat118 = _mm512_loadu_ps(datPtr2+192+256*j18);
__m512 wt134 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i14+12*j18));
sum251 = _mm512_fmadd_ps(wt134, dat115, sum251);
sum252 = _mm512_fmadd_ps(wt134, dat116, sum252);
sum253 = _mm512_fmadd_ps(wt134, dat117, sum253);
sum254 = _mm512_fmadd_ps(wt134, dat118, sum254);
__m512 wt135 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i14+12*j18));
sum255 = _mm512_fmadd_ps(wt135, dat115, sum255);
sum256 = _mm512_fmadd_ps(wt135, dat116, sum256);
sum257 = _mm512_fmadd_ps(wt135, dat117, sum257);
sum258 = _mm512_fmadd_ps(wt135, dat118, sum258);
__m512 wt136 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i14+12*j18));
sum259 = _mm512_fmadd_ps(wt136, dat115, sum259);
sum260 = _mm512_fmadd_ps(wt136, dat116, sum260);
sum261 = _mm512_fmadd_ps(wt136, dat117, sum261);
sum262 = _mm512_fmadd_ps(wt136, dat118, sum262);
}
_mm512_storeu_ps(sumPtr1+-285504+1536*i14, _mm512_add_ps(sum251, _mm512_loadu_ps(sumPtr1+-285504+1536*i14)));
_mm512_storeu_ps(sumPtr1+0+1536*i14, _mm512_add_ps(sum252, _mm512_loadu_ps(sumPtr1+0+1536*i14)));
_mm512_storeu_ps(sumPtr1+64+1536*i14, _mm512_add_ps(sum253, _mm512_loadu_ps(sumPtr1+64+1536*i14)));
_mm512_storeu_ps(sumPtr1+128+1536*i14, _mm512_add_ps(sum254, _mm512_loadu_ps(sumPtr1+128+1536*i14)));
_mm512_storeu_ps(sumPtr1+-285248+1536*i14, _mm512_add_ps(sum255, _mm512_loadu_ps(sumPtr1+-285248+1536*i14)));
_mm512_storeu_ps(sumPtr1+256+1536*i14, _mm512_add_ps(sum256, _mm512_loadu_ps(sumPtr1+256+1536*i14)));
_mm512_storeu_ps(sumPtr1+320+1536*i14, _mm512_add_ps(sum257, _mm512_loadu_ps(sumPtr1+320+1536*i14)));
_mm512_storeu_ps(sumPtr1+384+1536*i14, _mm512_add_ps(sum258, _mm512_loadu_ps(sumPtr1+384+1536*i14)));
_mm512_storeu_ps(sumPtr1+-284992+1536*i14, _mm512_add_ps(sum259, _mm512_loadu_ps(sumPtr1+-284992+1536*i14)));
_mm512_storeu_ps(sumPtr1+512+1536*i14, _mm512_add_ps(sum260, _mm512_loadu_ps(sumPtr1+512+1536*i14)));
_mm512_storeu_ps(sumPtr1+576+1536*i14, _mm512_add_ps(sum261, _mm512_loadu_ps(sumPtr1+576+1536*i14)));
_mm512_storeu_ps(sumPtr1+640+1536*i14, _mm512_add_ps(sum262, _mm512_loadu_ps(sumPtr1+640+1536*i14)));
return;
}
(void)base1;
ptrdiff_t i15 = 4*w7;
ptrdiff_t ii9 = i15+3;
for (; i15 != 15; ++i15) {
__m512 sum263 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i15));
__m512 sum267 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i15));
__m512 sum271 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i15));
__m512 sum275 = _mm512_set1_ps(*(float*)(biasPtr2+12+24*i15));
__m512 sum279 = _mm512_set1_ps(*(float*)(biasPtr2+16+24*i15));
__m512 sum283 = _mm512_set1_ps(*(float*)(biasPtr2+20+24*i15));
__m512 sum264 = sum263;
__m512 sum265 = sum263;
__m512 sum266 = sum263;
__m512 sum268 = sum267;
__m512 sum269 = sum267;
__m512 sum270 = sum267;
__m512 sum272 = sum271;
__m512 sum273 = sum271;
__m512 sum274 = sum271;
__m512 sum276 = sum275;
__m512 sum277 = sum275;
__m512 sum278 = sum275;
__m512 sum280 = sum279;
__m512 sum281 = sum279;
__m512 sum282 = sum279;
__m512 sum284 = sum283;
__m512 sum285 = sum283;
__m512 sum286 = sum283;
for (ptrdiff_t j19 = 0; j19 < 157; ++j19) {
__m512 dat119 = _mm512_loadu_ps(datPtr2+0+256*j19);
__m512 dat120 = _mm512_loadu_ps(datPtr2+64+256*j19);
__m512 dat121 = _mm512_loadu_ps(datPtr2+128+256*j19);
__m512 dat122 = _mm512_loadu_ps(datPtr2+192+256*j19);
__m512 wt137 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i15+24*j19));
sum263 = _mm512_fmadd_ps(wt137, dat119, sum263);
sum264 = _mm512_fmadd_ps(wt137, dat120, sum264);
sum265 = _mm512_fmadd_ps(wt137, dat121, sum265);
sum266 = _mm512_fmadd_ps(wt137, dat122, sum266);
__m512 wt138 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i15+24*j19));
sum267 = _mm512_fmadd_ps(wt138, dat119, sum267);
sum268 = _mm512_fmadd_ps(wt138, dat120, sum268);
sum269 = _mm512_fmadd_ps(wt138, dat121, sum269);
sum270 = _mm512_fmadd_ps(wt138, dat122, sum270);
__m512 wt139 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i15+24*j19));
sum271 = _mm512_fmadd_ps(wt139, dat119, sum271);
sum272 = _mm512_fmadd_ps(wt139, dat120, sum272);
sum273 = _mm512_fmadd_ps(wt139, dat121, sum273);
sum274 = _mm512_fmadd_ps(wt139, dat122, sum274);
__m512 wt140 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i15+24*j19));
sum275 = _mm512_fmadd_ps(wt140, dat119, sum275);
sum276 = _mm512_fmadd_ps(wt140, dat120, sum276);
sum277 = _mm512_fmadd_ps(wt140, dat121, sum277);
sum278 = _mm512_fmadd_ps(wt140, dat122, sum278);
__m512 wt141 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i15+24*j19));
sum279 = _mm512_fmadd_ps(wt141, dat119, sum279);
sum280 = _mm512_fmadd_ps(wt141, dat120, sum280);
sum281 = _mm512_fmadd_ps(wt141, dat121, sum281);
sum282 = _mm512_fmadd_ps(wt141, dat122, sum282);
__m512 wt142 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i15+24*j19));
sum283 = _mm512_fmadd_ps(wt142, dat119, sum283);
sum284 = _mm512_fmadd_ps(wt142, dat120, sum284);
sum285 = _mm512_fmadd_ps(wt142, dat121, sum285);
sum286 = _mm512_fmadd_ps(wt142, dat122, sum286);
}
_mm512_storeu_ps(sumPtr1+-285504+1536*i15, sum263);
_mm512_storeu_ps(sumPtr1+0+1536*i15, sum264);
_mm512_storeu_ps(sumPtr1+64+1536*i15, sum265);
_mm512_storeu_ps(sumPtr1+128+1536*i15, sum266);
_mm512_storeu_ps(sumPtr1+-285248+1536*i15, sum267);
_mm512_storeu_ps(sumPtr1+256+1536*i15, sum268);
_mm512_storeu_ps(sumPtr1+320+1536*i15, sum269);
_mm512_storeu_ps(sumPtr1+384+1536*i15, sum270);
_mm512_storeu_ps(sumPtr1+-284992+1536*i15, sum271);
_mm512_storeu_ps(sumPtr1+512+1536*i15, sum272);
_mm512_storeu_ps(sumPtr1+576+1536*i15, sum273);
_mm512_storeu_ps(sumPtr1+640+1536*i15, sum274);
_mm512_storeu_ps(sumPtr1+-284736+1536*i15, sum275);
_mm512_storeu_ps(sumPtr1+768+1536*i15, sum276);
_mm512_storeu_ps(sumPtr1+832+1536*i15, sum277);
_mm512_storeu_ps(sumPtr1+896+1536*i15, sum278);
_mm512_storeu_ps(sumPtr1+-284480+1536*i15, sum279);
_mm512_storeu_ps(sumPtr1+1024+1536*i15, sum280);
_mm512_storeu_ps(sumPtr1+1088+1536*i15, sum281);
_mm512_storeu_ps(sumPtr1+1152+1536*i15, sum282);
_mm512_storeu_ps(sumPtr1+-284224+1536*i15, sum283);
_mm512_storeu_ps(sumPtr1+1280+1536*i15, sum284);
_mm512_storeu_ps(sumPtr1+1344+1536*i15, sum285);
_mm512_storeu_ps(sumPtr1+1408+1536*i15, sum286);
if (i15 >= ii9) return;
}
__m512 sum287 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i15));
__m512 sum291 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i15));
__m512 sum295 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i15));
__m512 sum288 = sum287;
__m512 sum289 = sum287;
__m512 sum290 = sum287;
__m512 sum292 = sum291;
__m512 sum293 = sum291;
__m512 sum294 = sum291;
__m512 sum296 = sum295;
__m512 sum297 = sum295;
__m512 sum298 = sum295;
for (ptrdiff_t j20 = 0; j20 < 157; ++j20) {
__m512 dat123 = _mm512_loadu_ps(datPtr2+0+256*j20);
__m512 dat124 = _mm512_loadu_ps(datPtr2+64+256*j20);
__m512 dat125 = _mm512_loadu_ps(datPtr2+128+256*j20);
__m512 dat126 = _mm512_loadu_ps(datPtr2+192+256*j20);
__m512 wt143 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i15+12*j20));
sum287 = _mm512_fmadd_ps(wt143, dat123, sum287);
sum288 = _mm512_fmadd_ps(wt143, dat124, sum288);
sum289 = _mm512_fmadd_ps(wt143, dat125, sum289);
sum290 = _mm512_fmadd_ps(wt143, dat126, sum290);
__m512 wt144 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i15+12*j20));
sum291 = _mm512_fmadd_ps(wt144, dat123, sum291);
sum292 = _mm512_fmadd_ps(wt144, dat124, sum292);
sum293 = _mm512_fmadd_ps(wt144, dat125, sum293);
sum294 = _mm512_fmadd_ps(wt144, dat126, sum294);
__m512 wt145 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i15+12*j20));
sum295 = _mm512_fmadd_ps(wt145, dat123, sum295);
sum296 = _mm512_fmadd_ps(wt145, dat124, sum296);
sum297 = _mm512_fmadd_ps(wt145, dat125, sum297);
sum298 = _mm512_fmadd_ps(wt145, dat126, sum298);
}
_mm512_storeu_ps(sumPtr1+-285504+1536*i15, sum287);
_mm512_storeu_ps(sumPtr1+0+1536*i15, sum288);
_mm512_storeu_ps(sumPtr1+64+1536*i15, sum289);
_mm512_storeu_ps(sumPtr1+128+1536*i15, sum290);
_mm512_storeu_ps(sumPtr1+-285248+1536*i15, sum291);
_mm512_storeu_ps(sumPtr1+256+1536*i15, sum292);
_mm512_storeu_ps(sumPtr1+320+1536*i15, sum293);
_mm512_storeu_ps(sumPtr1+384+1536*i15, sum294);
_mm512_storeu_ps(sumPtr1+-284992+1536*i15, sum295);
_mm512_storeu_ps(sumPtr1+512+1536*i15, sum296);
_mm512_storeu_ps(sumPtr1+576+1536*i15, sum297);
_mm512_storeu_ps(sumPtr1+640+1536*i15, sum298);
break;
}
case 6: {
if (epoch1|node6) {
if (!epoch1 && base1) {
ptrdiff_t i16 = 4*w7;
ptrdiff_t ii10 = i16+3;
for (; i16 != 15; ++i16) {
__m512 sum299 = _mm512_setzero_ps();
__m512 sum300 = _mm512_setzero_ps();
__m512 sum301 = _mm512_setzero_ps();
__m512 sum302 = _mm512_setzero_ps();
__m512 sum303 = _mm512_setzero_ps();
__m512 sum304 = _mm512_setzero_ps();
(void)biasPtr2;
for (ptrdiff_t j21 = 0; j21 < 157; ++j21) {
__m512 dat127 = _mm512_loadu_ps(datPtr2+192+256*j21);
__m512 wt146 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i16+24*j21));
sum299 = _mm512_fmadd_ps(wt146, dat127, sum299);
__m512 wt147 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i16+24*j21));
sum300 = _mm512_fmadd_ps(wt147, dat127, sum300);
__m512 wt148 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i16+24*j21));
sum301 = _mm512_fmadd_ps(wt148, dat127, sum301);
__m512 wt149 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i16+24*j21));
sum302 = _mm512_fmadd_ps(wt149, dat127, sum302);
__m512 wt150 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i16+24*j21));
sum303 = _mm512_fmadd_ps(wt150, dat127, sum303);
__m512 wt151 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i16+24*j21));
sum304 = _mm512_fmadd_ps(wt151, dat127, sum304);
}
_mm512_storeu_ps(sumPtr1+0+1536*i16, sum299);
_mm512_storeu_ps(sumPtr1+256+1536*i16, sum300);
_mm512_storeu_ps(sumPtr1+512+1536*i16, sum301);
_mm512_storeu_ps(sumPtr1+768+1536*i16, sum302);
_mm512_storeu_ps(sumPtr1+1024+1536*i16, sum303);
_mm512_storeu_ps(sumPtr1+1280+1536*i16, sum304);
if (i16 >= ii10) return;
}
__m512 sum305 = _mm512_setzero_ps();
__m512 sum306 = _mm512_setzero_ps();
__m512 sum307 = _mm512_setzero_ps();
(void)biasPtr2;
for (ptrdiff_t j22 = 0; j22 < 157; ++j22) {
__m512 dat128 = _mm512_loadu_ps(datPtr2+192+256*j22);
__m512 wt152 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i16+12*j22));
sum305 = _mm512_fmadd_ps(wt152, dat128, sum305);
__m512 wt153 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i16+12*j22));
sum306 = _mm512_fmadd_ps(wt153, dat128, sum306);
__m512 wt154 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i16+12*j22));
sum307 = _mm512_fmadd_ps(wt154, dat128, sum307);
}
_mm512_storeu_ps(sumPtr1+0+1536*i16, sum305);
_mm512_storeu_ps(sumPtr1+256+1536*i16, sum306);
_mm512_storeu_ps(sumPtr1+512+1536*i16, sum307);
return;
}
ptrdiff_t i17 = 4*w7;
ptrdiff_t ii11 = i17+3;
for (; i17 != 15; ++i17) {
__m512 sum308 = _mm512_setzero_ps();
__m512 sum309 = _mm512_setzero_ps();
__m512 sum310 = _mm512_setzero_ps();
__m512 sum311 = _mm512_setzero_ps();
__m512 sum312 = _mm512_setzero_ps();
__m512 sum313 = _mm512_setzero_ps();
(void)biasPtr2;
for (ptrdiff_t j23 = 0; j23 < 157; ++j23) {
__m512 dat129 = _mm512_loadu_ps(datPtr2+192+256*j23);
__m512 wt155 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i17+24*j23));
sum308 = _mm512_fmadd_ps(wt155, dat129, sum308);
__m512 wt156 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i17+24*j23));
sum309 = _mm512_fmadd_ps(wt156, dat129, sum309);
__m512 wt157 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i17+24*j23));
sum310 = _mm512_fmadd_ps(wt157, dat129, sum310);
__m512 wt158 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i17+24*j23));
sum311 = _mm512_fmadd_ps(wt158, dat129, sum311);
__m512 wt159 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i17+24*j23));
sum312 = _mm512_fmadd_ps(wt159, dat129, sum312);
__m512 wt160 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i17+24*j23));
sum313 = _mm512_fmadd_ps(wt160, dat129, sum313);
}
_mm512_storeu_ps(sumPtr1+0+1536*i17, _mm512_add_ps(sum308, _mm512_loadu_ps(sumPtr1+0+1536*i17)));
_mm512_storeu_ps(sumPtr1+256+1536*i17, _mm512_add_ps(sum309, _mm512_loadu_ps(sumPtr1+256+1536*i17)));
_mm512_storeu_ps(sumPtr1+512+1536*i17, _mm512_add_ps(sum310, _mm512_loadu_ps(sumPtr1+512+1536*i17)));
_mm512_storeu_ps(sumPtr1+768+1536*i17, _mm512_add_ps(sum311, _mm512_loadu_ps(sumPtr1+768+1536*i17)));
_mm512_storeu_ps(sumPtr1+1024+1536*i17, _mm512_add_ps(sum312, _mm512_loadu_ps(sumPtr1+1024+1536*i17)));
_mm512_storeu_ps(sumPtr1+1280+1536*i17, _mm512_add_ps(sum313, _mm512_loadu_ps(sumPtr1+1280+1536*i17)));
if (i17 >= ii11) return;
}
__m512 sum314 = _mm512_setzero_ps();
__m512 sum315 = _mm512_setzero_ps();
__m512 sum316 = _mm512_setzero_ps();
(void)biasPtr2;
for (ptrdiff_t j24 = 0; j24 < 157; ++j24) {
__m512 dat130 = _mm512_loadu_ps(datPtr2+192+256*j24);
__m512 wt161 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i17+12*j24));
sum314 = _mm512_fmadd_ps(wt161, dat130, sum314);
__m512 wt162 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i17+12*j24));
sum315 = _mm512_fmadd_ps(wt162, dat130, sum315);
__m512 wt163 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i17+12*j24));
sum316 = _mm512_fmadd_ps(wt163, dat130, sum316);
}
_mm512_storeu_ps(sumPtr1+0+1536*i17, _mm512_add_ps(sum314, _mm512_loadu_ps(sumPtr1+0+1536*i17)));
_mm512_storeu_ps(sumPtr1+256+1536*i17, _mm512_add_ps(sum315, _mm512_loadu_ps(sumPtr1+256+1536*i17)));
_mm512_storeu_ps(sumPtr1+512+1536*i17, _mm512_add_ps(sum316, _mm512_loadu_ps(sumPtr1+512+1536*i17)));
return;
}
(void)base1;
ptrdiff_t i18 = 4*w7;
ptrdiff_t ii12 = i18+3;
for (; i18 != 15; ++i18) {
__m512 sum317 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i18));
__m512 sum318 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i18));
__m512 sum319 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i18));
__m512 sum320 = _mm512_set1_ps(*(float*)(biasPtr2+12+24*i18));
__m512 sum321 = _mm512_set1_ps(*(float*)(biasPtr2+16+24*i18));
__m512 sum322 = _mm512_set1_ps(*(float*)(biasPtr2+20+24*i18));
for (ptrdiff_t j25 = 0; j25 < 157; ++j25) {
__m512 dat131 = _mm512_loadu_ps(datPtr2+192+256*j25);
__m512 wt164 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i18+24*j25));
sum317 = _mm512_fmadd_ps(wt164, dat131, sum317);
__m512 wt165 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i18+24*j25));
sum318 = _mm512_fmadd_ps(wt165, dat131, sum318);
__m512 wt166 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i18+24*j25));
sum319 = _mm512_fmadd_ps(wt166, dat131, sum319);
__m512 wt167 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i18+24*j25));
sum320 = _mm512_fmadd_ps(wt167, dat131, sum320);
__m512 wt168 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i18+24*j25));
sum321 = _mm512_fmadd_ps(wt168, dat131, sum321);
__m512 wt169 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i18+24*j25));
sum322 = _mm512_fmadd_ps(wt169, dat131, sum322);
}
_mm512_storeu_ps(sumPtr1+0+1536*i18, sum317);
_mm512_storeu_ps(sumPtr1+256+1536*i18, sum318);
_mm512_storeu_ps(sumPtr1+512+1536*i18, sum319);
_mm512_storeu_ps(sumPtr1+768+1536*i18, sum320);
_mm512_storeu_ps(sumPtr1+1024+1536*i18, sum321);
_mm512_storeu_ps(sumPtr1+1280+1536*i18, sum322);
if (i18 >= ii12) return;
}
__m512 sum323 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i18));
__m512 sum324 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i18));
__m512 sum325 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i18));
for (ptrdiff_t j26 = 0; j26 < 157; ++j26) {
__m512 dat132 = _mm512_loadu_ps(datPtr2+192+256*j26);
__m512 wt170 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i18+12*j26));
sum323 = _mm512_fmadd_ps(wt170, dat132, sum323);
__m512 wt171 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i18+12*j26));
sum324 = _mm512_fmadd_ps(wt171, dat132, sum324);
__m512 wt172 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i18+12*j26));
sum325 = _mm512_fmadd_ps(wt172, dat132, sum325);
}
_mm512_storeu_ps(sumPtr1+0+1536*i18, sum323);
_mm512_storeu_ps(sumPtr1+256+1536*i18, sum324);
_mm512_storeu_ps(sumPtr1+512+1536*i18, sum325);
break;
}
case 7: {
if (epoch1|node6) {
if (!epoch1 && base1) {
ptrdiff_t i19 = 4*w7;
ptrdiff_t ii13 = i19+3;
for (; i19 != 15; ++i19) {
__m512 sum326 = _mm512_setzero_ps();
__m512 sum330 = _mm512_setzero_ps();
__m512 sum334 = _mm512_setzero_ps();
__m512 sum338 = _mm512_setzero_ps();
__m512 sum342 = _mm512_setzero_ps();
__m512 sum346 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum327 = sum326;
__m512 sum328 = sum326;
__m512 sum329 = sum326;
__m512 sum331 = sum330;
__m512 sum332 = sum330;
__m512 sum333 = sum330;
__m512 sum335 = sum334;
__m512 sum336 = sum334;
__m512 sum337 = sum334;
__m512 sum339 = sum338;
__m512 sum340 = sum338;
__m512 sum341 = sum338;
__m512 sum343 = sum342;
__m512 sum344 = sum342;
__m512 sum345 = sum342;
__m512 sum347 = sum346;
__m512 sum348 = sum346;
__m512 sum349 = sum346;
for (ptrdiff_t j27 = 0; j27 < 157; ++j27) {
__m512 dat133 = _mm512_loadu_ps(datPtr2+0+256*j27);
__m512 dat134 = _mm512_loadu_ps(datPtr2+64+256*j27);
__m512 dat135 = _mm512_loadu_ps(datPtr2+128+256*j27);
__m512 dat136 = _mm512_loadu_ps(datPtr2+192+256*j27);
__m512 wt173 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i19+24*j27));
sum326 = _mm512_fmadd_ps(wt173, dat133, sum326);
sum327 = _mm512_fmadd_ps(wt173, dat134, sum327);
sum328 = _mm512_fmadd_ps(wt173, dat135, sum328);
sum329 = _mm512_fmadd_ps(wt173, dat136, sum329);
__m512 wt174 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i19+24*j27));
sum330 = _mm512_fmadd_ps(wt174, dat133, sum330);
sum331 = _mm512_fmadd_ps(wt174, dat134, sum331);
sum332 = _mm512_fmadd_ps(wt174, dat135, sum332);
sum333 = _mm512_fmadd_ps(wt174, dat136, sum333);
__m512 wt175 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i19+24*j27));
sum334 = _mm512_fmadd_ps(wt175, dat133, sum334);
sum335 = _mm512_fmadd_ps(wt175, dat134, sum335);
sum336 = _mm512_fmadd_ps(wt175, dat135, sum336);
sum337 = _mm512_fmadd_ps(wt175, dat136, sum337);
__m512 wt176 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i19+24*j27));
sum338 = _mm512_fmadd_ps(wt176, dat133, sum338);
sum339 = _mm512_fmadd_ps(wt176, dat134, sum339);
sum340 = _mm512_fmadd_ps(wt176, dat135, sum340);
sum341 = _mm512_fmadd_ps(wt176, dat136, sum341);
__m512 wt177 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i19+24*j27));
sum342 = _mm512_fmadd_ps(wt177, dat133, sum342);
sum343 = _mm512_fmadd_ps(wt177, dat134, sum343);
sum344 = _mm512_fmadd_ps(wt177, dat135, sum344);
sum345 = _mm512_fmadd_ps(wt177, dat136, sum345);
__m512 wt178 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i19+24*j27));
sum346 = _mm512_fmadd_ps(wt178, dat133, sum346);
sum347 = _mm512_fmadd_ps(wt178, dat134, sum347);
sum348 = _mm512_fmadd_ps(wt178, dat135, sum348);
sum349 = _mm512_fmadd_ps(wt178, dat136, sum349);
}
_mm512_storeu_ps(sumPtr1+-285632+1536*i19, sum326);
_mm512_storeu_ps(sumPtr1+-285568+1536*i19, sum327);
_mm512_storeu_ps(sumPtr1+-285504+1536*i19, sum328);
_mm512_storeu_ps(sumPtr1+0+1536*i19, sum329);
_mm512_storeu_ps(sumPtr1+-285376+1536*i19, sum330);
_mm512_storeu_ps(sumPtr1+-285312+1536*i19, sum331);
_mm512_storeu_ps(sumPtr1+-285248+1536*i19, sum332);
_mm512_storeu_ps(sumPtr1+256+1536*i19, sum333);
_mm512_storeu_ps(sumPtr1+-285120+1536*i19, sum334);
_mm512_storeu_ps(sumPtr1+-285056+1536*i19, sum335);
_mm512_storeu_ps(sumPtr1+-284992+1536*i19, sum336);
_mm512_storeu_ps(sumPtr1+512+1536*i19, sum337);
_mm512_storeu_ps(sumPtr1+-284864+1536*i19, sum338);
_mm512_storeu_ps(sumPtr1+-284800+1536*i19, sum339);
_mm512_storeu_ps(sumPtr1+-284736+1536*i19, sum340);
_mm512_storeu_ps(sumPtr1+768+1536*i19, sum341);
_mm512_storeu_ps(sumPtr1+-284608+1536*i19, sum342);
_mm512_storeu_ps(sumPtr1+-284544+1536*i19, sum343);
_mm512_storeu_ps(sumPtr1+-284480+1536*i19, sum344);
_mm512_storeu_ps(sumPtr1+1024+1536*i19, sum345);
_mm512_storeu_ps(sumPtr1+-284352+1536*i19, sum346);
_mm512_storeu_ps(sumPtr1+-284288+1536*i19, sum347);
_mm512_storeu_ps(sumPtr1+-284224+1536*i19, sum348);
_mm512_storeu_ps(sumPtr1+1280+1536*i19, sum349);
if (i19 >= ii13) return;
}
__m512 sum350 = _mm512_setzero_ps();
__m512 sum354 = _mm512_setzero_ps();
__m512 sum358 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum351 = sum350;
__m512 sum352 = sum350;
__m512 sum353 = sum350;
__m512 sum355 = sum354;
__m512 sum356 = sum354;
__m512 sum357 = sum354;
__m512 sum359 = sum358;
__m512 sum360 = sum358;
__m512 sum361 = sum358;
for (ptrdiff_t j28 = 0; j28 < 157; ++j28) {
__m512 dat137 = _mm512_loadu_ps(datPtr2+0+256*j28);
__m512 dat138 = _mm512_loadu_ps(datPtr2+64+256*j28);
__m512 dat139 = _mm512_loadu_ps(datPtr2+128+256*j28);
__m512 dat140 = _mm512_loadu_ps(datPtr2+192+256*j28);
__m512 wt179 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i19+12*j28));
sum350 = _mm512_fmadd_ps(wt179, dat137, sum350);
sum351 = _mm512_fmadd_ps(wt179, dat138, sum351);
sum352 = _mm512_fmadd_ps(wt179, dat139, sum352);
sum353 = _mm512_fmadd_ps(wt179, dat140, sum353);
__m512 wt180 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i19+12*j28));
sum354 = _mm512_fmadd_ps(wt180, dat137, sum354);
sum355 = _mm512_fmadd_ps(wt180, dat138, sum355);
sum356 = _mm512_fmadd_ps(wt180, dat139, sum356);
sum357 = _mm512_fmadd_ps(wt180, dat140, sum357);
__m512 wt181 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i19+12*j28));
sum358 = _mm512_fmadd_ps(wt181, dat137, sum358);
sum359 = _mm512_fmadd_ps(wt181, dat138, sum359);
sum360 = _mm512_fmadd_ps(wt181, dat139, sum360);
sum361 = _mm512_fmadd_ps(wt181, dat140, sum361);
}
_mm512_storeu_ps(sumPtr1+-285632+1536*i19, sum350);
_mm512_storeu_ps(sumPtr1+-285568+1536*i19, sum351);
_mm512_storeu_ps(sumPtr1+-285504+1536*i19, sum352);
_mm512_storeu_ps(sumPtr1+0+1536*i19, sum353);
_mm512_storeu_ps(sumPtr1+-285376+1536*i19, sum354);
_mm512_storeu_ps(sumPtr1+-285312+1536*i19, sum355);
_mm512_storeu_ps(sumPtr1+-285248+1536*i19, sum356);
_mm512_storeu_ps(sumPtr1+256+1536*i19, sum357);
_mm512_storeu_ps(sumPtr1+-285120+1536*i19, sum358);
_mm512_storeu_ps(sumPtr1+-285056+1536*i19, sum359);
_mm512_storeu_ps(sumPtr1+-284992+1536*i19, sum360);
_mm512_storeu_ps(sumPtr1+512+1536*i19, sum361);
return;
}
ptrdiff_t i20 = 4*w7;
ptrdiff_t ii14 = i20+3;
for (; i20 != 15; ++i20) {
__m512 sum362 = _mm512_setzero_ps();
__m512 sum366 = _mm512_setzero_ps();
__m512 sum370 = _mm512_setzero_ps();
__m512 sum374 = _mm512_setzero_ps();
__m512 sum378 = _mm512_setzero_ps();
__m512 sum382 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum363 = sum362;
__m512 sum364 = sum362;
__m512 sum365 = sum362;
__m512 sum367 = sum366;
__m512 sum368 = sum366;
__m512 sum369 = sum366;
__m512 sum371 = sum370;
__m512 sum372 = sum370;
__m512 sum373 = sum370;
__m512 sum375 = sum374;
__m512 sum376 = sum374;
__m512 sum377 = sum374;
__m512 sum379 = sum378;
__m512 sum380 = sum378;
__m512 sum381 = sum378;
__m512 sum383 = sum382;
__m512 sum384 = sum382;
__m512 sum385 = sum382;
for (ptrdiff_t j29 = 0; j29 < 157; ++j29) {
__m512 dat141 = _mm512_loadu_ps(datPtr2+0+256*j29);
__m512 dat142 = _mm512_loadu_ps(datPtr2+64+256*j29);
__m512 dat143 = _mm512_loadu_ps(datPtr2+128+256*j29);
__m512 dat144 = _mm512_loadu_ps(datPtr2+192+256*j29);
__m512 wt182 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i20+24*j29));
sum362 = _mm512_fmadd_ps(wt182, dat141, sum362);
sum363 = _mm512_fmadd_ps(wt182, dat142, sum363);
sum364 = _mm512_fmadd_ps(wt182, dat143, sum364);
sum365 = _mm512_fmadd_ps(wt182, dat144, sum365);
__m512 wt183 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i20+24*j29));
sum366 = _mm512_fmadd_ps(wt183, dat141, sum366);
sum367 = _mm512_fmadd_ps(wt183, dat142, sum367);
sum368 = _mm512_fmadd_ps(wt183, dat143, sum368);
sum369 = _mm512_fmadd_ps(wt183, dat144, sum369);
__m512 wt184 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i20+24*j29));
sum370 = _mm512_fmadd_ps(wt184, dat141, sum370);
sum371 = _mm512_fmadd_ps(wt184, dat142, sum371);
sum372 = _mm512_fmadd_ps(wt184, dat143, sum372);
sum373 = _mm512_fmadd_ps(wt184, dat144, sum373);
__m512 wt185 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i20+24*j29));
sum374 = _mm512_fmadd_ps(wt185, dat141, sum374);
sum375 = _mm512_fmadd_ps(wt185, dat142, sum375);
sum376 = _mm512_fmadd_ps(wt185, dat143, sum376);
sum377 = _mm512_fmadd_ps(wt185, dat144, sum377);
__m512 wt186 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i20+24*j29));
sum378 = _mm512_fmadd_ps(wt186, dat141, sum378);
sum379 = _mm512_fmadd_ps(wt186, dat142, sum379);
sum380 = _mm512_fmadd_ps(wt186, dat143, sum380);
sum381 = _mm512_fmadd_ps(wt186, dat144, sum381);
__m512 wt187 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i20+24*j29));
sum382 = _mm512_fmadd_ps(wt187, dat141, sum382);
sum383 = _mm512_fmadd_ps(wt187, dat142, sum383);
sum384 = _mm512_fmadd_ps(wt187, dat143, sum384);
sum385 = _mm512_fmadd_ps(wt187, dat144, sum385);
}
_mm512_storeu_ps(sumPtr1+-285632+1536*i20, _mm512_add_ps(sum362, _mm512_loadu_ps(sumPtr1+-285632+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285568+1536*i20, _mm512_add_ps(sum363, _mm512_loadu_ps(sumPtr1+-285568+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285504+1536*i20, _mm512_add_ps(sum364, _mm512_loadu_ps(sumPtr1+-285504+1536*i20)));
_mm512_storeu_ps(sumPtr1+0+1536*i20, _mm512_add_ps(sum365, _mm512_loadu_ps(sumPtr1+0+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285376+1536*i20, _mm512_add_ps(sum366, _mm512_loadu_ps(sumPtr1+-285376+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285312+1536*i20, _mm512_add_ps(sum367, _mm512_loadu_ps(sumPtr1+-285312+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285248+1536*i20, _mm512_add_ps(sum368, _mm512_loadu_ps(sumPtr1+-285248+1536*i20)));
_mm512_storeu_ps(sumPtr1+256+1536*i20, _mm512_add_ps(sum369, _mm512_loadu_ps(sumPtr1+256+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285120+1536*i20, _mm512_add_ps(sum370, _mm512_loadu_ps(sumPtr1+-285120+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285056+1536*i20, _mm512_add_ps(sum371, _mm512_loadu_ps(sumPtr1+-285056+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284992+1536*i20, _mm512_add_ps(sum372, _mm512_loadu_ps(sumPtr1+-284992+1536*i20)));
_mm512_storeu_ps(sumPtr1+512+1536*i20, _mm512_add_ps(sum373, _mm512_loadu_ps(sumPtr1+512+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284864+1536*i20, _mm512_add_ps(sum374, _mm512_loadu_ps(sumPtr1+-284864+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284800+1536*i20, _mm512_add_ps(sum375, _mm512_loadu_ps(sumPtr1+-284800+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284736+1536*i20, _mm512_add_ps(sum376, _mm512_loadu_ps(sumPtr1+-284736+1536*i20)));
_mm512_storeu_ps(sumPtr1+768+1536*i20, _mm512_add_ps(sum377, _mm512_loadu_ps(sumPtr1+768+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284608+1536*i20, _mm512_add_ps(sum378, _mm512_loadu_ps(sumPtr1+-284608+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284544+1536*i20, _mm512_add_ps(sum379, _mm512_loadu_ps(sumPtr1+-284544+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284480+1536*i20, _mm512_add_ps(sum380, _mm512_loadu_ps(sumPtr1+-284480+1536*i20)));
_mm512_storeu_ps(sumPtr1+1024+1536*i20, _mm512_add_ps(sum381, _mm512_loadu_ps(sumPtr1+1024+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284352+1536*i20, _mm512_add_ps(sum382, _mm512_loadu_ps(sumPtr1+-284352+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284288+1536*i20, _mm512_add_ps(sum383, _mm512_loadu_ps(sumPtr1+-284288+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284224+1536*i20, _mm512_add_ps(sum384, _mm512_loadu_ps(sumPtr1+-284224+1536*i20)));
_mm512_storeu_ps(sumPtr1+1280+1536*i20, _mm512_add_ps(sum385, _mm512_loadu_ps(sumPtr1+1280+1536*i20)));
if (i20 >= ii14) return;
}
__m512 sum386 = _mm512_setzero_ps();
__m512 sum390 = _mm512_setzero_ps();
__m512 sum394 = _mm512_setzero_ps();
(void)biasPtr2;
__m512 sum387 = sum386;
__m512 sum388 = sum386;
__m512 sum389 = sum386;
__m512 sum391 = sum390;
__m512 sum392 = sum390;
__m512 sum393 = sum390;
__m512 sum395 = sum394;
__m512 sum396 = sum394;
__m512 sum397 = sum394;
for (ptrdiff_t j30 = 0; j30 < 157; ++j30) {
__m512 dat145 = _mm512_loadu_ps(datPtr2+0+256*j30);
__m512 dat146 = _mm512_loadu_ps(datPtr2+64+256*j30);
__m512 dat147 = _mm512_loadu_ps(datPtr2+128+256*j30);
__m512 dat148 = _mm512_loadu_ps(datPtr2+192+256*j30);
__m512 wt188 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i20+12*j30));
sum386 = _mm512_fmadd_ps(wt188, dat145, sum386);
sum387 = _mm512_fmadd_ps(wt188, dat146, sum387);
sum388 = _mm512_fmadd_ps(wt188, dat147, sum388);
sum389 = _mm512_fmadd_ps(wt188, dat148, sum389);
__m512 wt189 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i20+12*j30));
sum390 = _mm512_fmadd_ps(wt189, dat145, sum390);
sum391 = _mm512_fmadd_ps(wt189, dat146, sum391);
sum392 = _mm512_fmadd_ps(wt189, dat147, sum392);
sum393 = _mm512_fmadd_ps(wt189, dat148, sum393);
__m512 wt190 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i20+12*j30));
sum394 = _mm512_fmadd_ps(wt190, dat145, sum394);
sum395 = _mm512_fmadd_ps(wt190, dat146, sum395);
sum396 = _mm512_fmadd_ps(wt190, dat147, sum396);
sum397 = _mm512_fmadd_ps(wt190, dat148, sum397);
}
_mm512_storeu_ps(sumPtr1+-285632+1536*i20, _mm512_add_ps(sum386, _mm512_loadu_ps(sumPtr1+-285632+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285568+1536*i20, _mm512_add_ps(sum387, _mm512_loadu_ps(sumPtr1+-285568+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285504+1536*i20, _mm512_add_ps(sum388, _mm512_loadu_ps(sumPtr1+-285504+1536*i20)));
_mm512_storeu_ps(sumPtr1+0+1536*i20, _mm512_add_ps(sum389, _mm512_loadu_ps(sumPtr1+0+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285376+1536*i20, _mm512_add_ps(sum390, _mm512_loadu_ps(sumPtr1+-285376+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285312+1536*i20, _mm512_add_ps(sum391, _mm512_loadu_ps(sumPtr1+-285312+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285248+1536*i20, _mm512_add_ps(sum392, _mm512_loadu_ps(sumPtr1+-285248+1536*i20)));
_mm512_storeu_ps(sumPtr1+256+1536*i20, _mm512_add_ps(sum393, _mm512_loadu_ps(sumPtr1+256+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285120+1536*i20, _mm512_add_ps(sum394, _mm512_loadu_ps(sumPtr1+-285120+1536*i20)));
_mm512_storeu_ps(sumPtr1+-285056+1536*i20, _mm512_add_ps(sum395, _mm512_loadu_ps(sumPtr1+-285056+1536*i20)));
_mm512_storeu_ps(sumPtr1+-284992+1536*i20, _mm512_add_ps(sum396, _mm512_loadu_ps(sumPtr1+-284992+1536*i20)));
_mm512_storeu_ps(sumPtr1+512+1536*i20, _mm512_add_ps(sum397, _mm512_loadu_ps(sumPtr1+512+1536*i20)));
return;
}
(void)base1;
ptrdiff_t i21 = 4*w7;
ptrdiff_t ii15 = i21+3;
for (; i21 != 15; ++i21) {
__m512 sum398 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i21));
__m512 sum402 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i21));
__m512 sum406 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i21));
__m512 sum410 = _mm512_set1_ps(*(float*)(biasPtr2+12+24*i21));
__m512 sum414 = _mm512_set1_ps(*(float*)(biasPtr2+16+24*i21));
__m512 sum418 = _mm512_set1_ps(*(float*)(biasPtr2+20+24*i21));
__m512 sum399 = sum398;
__m512 sum400 = sum398;
__m512 sum401 = sum398;
__m512 sum403 = sum402;
__m512 sum404 = sum402;
__m512 sum405 = sum402;
__m512 sum407 = sum406;
__m512 sum408 = sum406;
__m512 sum409 = sum406;
__m512 sum411 = sum410;
__m512 sum412 = sum410;
__m512 sum413 = sum410;
__m512 sum415 = sum414;
__m512 sum416 = sum414;
__m512 sum417 = sum414;
__m512 sum419 = sum418;
__m512 sum420 = sum418;
__m512 sum421 = sum418;
for (ptrdiff_t j31 = 0; j31 < 157; ++j31) {
__m512 dat149 = _mm512_loadu_ps(datPtr2+0+256*j31);
__m512 dat150 = _mm512_loadu_ps(datPtr2+64+256*j31);
__m512 dat151 = _mm512_loadu_ps(datPtr2+128+256*j31);
__m512 dat152 = _mm512_loadu_ps(datPtr2+192+256*j31);
__m512 wt191 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i21+24*j31));
sum398 = _mm512_fmadd_ps(wt191, dat149, sum398);
sum399 = _mm512_fmadd_ps(wt191, dat150, sum399);
sum400 = _mm512_fmadd_ps(wt191, dat151, sum400);
sum401 = _mm512_fmadd_ps(wt191, dat152, sum401);
__m512 wt192 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i21+24*j31));
sum402 = _mm512_fmadd_ps(wt192, dat149, sum402);
sum403 = _mm512_fmadd_ps(wt192, dat150, sum403);
sum404 = _mm512_fmadd_ps(wt192, dat151, sum404);
sum405 = _mm512_fmadd_ps(wt192, dat152, sum405);
__m512 wt193 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i21+24*j31));
sum406 = _mm512_fmadd_ps(wt193, dat149, sum406);
sum407 = _mm512_fmadd_ps(wt193, dat150, sum407);
sum408 = _mm512_fmadd_ps(wt193, dat151, sum408);
sum409 = _mm512_fmadd_ps(wt193, dat152, sum409);
__m512 wt194 = _mm512_set1_ps(*(float*)(wtPtr2+12+3768*i21+24*j31));
sum410 = _mm512_fmadd_ps(wt194, dat149, sum410);
sum411 = _mm512_fmadd_ps(wt194, dat150, sum411);
sum412 = _mm512_fmadd_ps(wt194, dat151, sum412);
sum413 = _mm512_fmadd_ps(wt194, dat152, sum413);
__m512 wt195 = _mm512_set1_ps(*(float*)(wtPtr2+16+3768*i21+24*j31));
sum414 = _mm512_fmadd_ps(wt195, dat149, sum414);
sum415 = _mm512_fmadd_ps(wt195, dat150, sum415);
sum416 = _mm512_fmadd_ps(wt195, dat151, sum416);
sum417 = _mm512_fmadd_ps(wt195, dat152, sum417);
__m512 wt196 = _mm512_set1_ps(*(float*)(wtPtr2+20+3768*i21+24*j31));
sum418 = _mm512_fmadd_ps(wt196, dat149, sum418);
sum419 = _mm512_fmadd_ps(wt196, dat150, sum419);
sum420 = _mm512_fmadd_ps(wt196, dat151, sum420);
sum421 = _mm512_fmadd_ps(wt196, dat152, sum421);
}
_mm512_storeu_ps(sumPtr1+-285632+1536*i21, sum398);
_mm512_storeu_ps(sumPtr1+-285568+1536*i21, sum399);
_mm512_storeu_ps(sumPtr1+-285504+1536*i21, sum400);
_mm512_storeu_ps(sumPtr1+0+1536*i21, sum401);
_mm512_storeu_ps(sumPtr1+-285376+1536*i21, sum402);
_mm512_storeu_ps(sumPtr1+-285312+1536*i21, sum403);
_mm512_storeu_ps(sumPtr1+-285248+1536*i21, sum404);
_mm512_storeu_ps(sumPtr1+256+1536*i21, sum405);
_mm512_storeu_ps(sumPtr1+-285120+1536*i21, sum406);
_mm512_storeu_ps(sumPtr1+-285056+1536*i21, sum407);
_mm512_storeu_ps(sumPtr1+-284992+1536*i21, sum408);
_mm512_storeu_ps(sumPtr1+512+1536*i21, sum409);
_mm512_storeu_ps(sumPtr1+-284864+1536*i21, sum410);
_mm512_storeu_ps(sumPtr1+-284800+1536*i21, sum411);
_mm512_storeu_ps(sumPtr1+-284736+1536*i21, sum412);
_mm512_storeu_ps(sumPtr1+768+1536*i21, sum413);
_mm512_storeu_ps(sumPtr1+-284608+1536*i21, sum414);
_mm512_storeu_ps(sumPtr1+-284544+1536*i21, sum415);
_mm512_storeu_ps(sumPtr1+-284480+1536*i21, sum416);
_mm512_storeu_ps(sumPtr1+1024+1536*i21, sum417);
_mm512_storeu_ps(sumPtr1+-284352+1536*i21, sum418);
_mm512_storeu_ps(sumPtr1+-284288+1536*i21, sum419);
_mm512_storeu_ps(sumPtr1+-284224+1536*i21, sum420);
_mm512_storeu_ps(sumPtr1+1280+1536*i21, sum421);
if (i21 >= ii15) return;
}
__m512 sum422 = _mm512_set1_ps(*(float*)(biasPtr2+0+24*i21));
__m512 sum426 = _mm512_set1_ps(*(float*)(biasPtr2+4+24*i21));
__m512 sum430 = _mm512_set1_ps(*(float*)(biasPtr2+8+24*i21));
__m512 sum423 = sum422;
__m512 sum424 = sum422;
__m512 sum425 = sum422;
__m512 sum427 = sum426;
__m512 sum428 = sum426;
__m512 sum429 = sum426;
__m512 sum431 = sum430;
__m512 sum432 = sum430;
__m512 sum433 = sum430;
for (ptrdiff_t j32 = 0; j32 < 157; ++j32) {
__m512 dat153 = _mm512_loadu_ps(datPtr2+0+256*j32);
__m512 dat154 = _mm512_loadu_ps(datPtr2+64+256*j32);
__m512 dat155 = _mm512_loadu_ps(datPtr2+128+256*j32);
__m512 dat156 = _mm512_loadu_ps(datPtr2+192+256*j32);
__m512 wt197 = _mm512_set1_ps(*(float*)(wtPtr2+0+3768*i21+12*j32));
sum422 = _mm512_fmadd_ps(wt197, dat153, sum422);
sum423 = _mm512_fmadd_ps(wt197, dat154, sum423);
sum424 = _mm512_fmadd_ps(wt197, dat155, sum424);
sum425 = _mm512_fmadd_ps(wt197, dat156, sum425);
__m512 wt198 = _mm512_set1_ps(*(float*)(wtPtr2+4+3768*i21+12*j32));
sum426 = _mm512_fmadd_ps(wt198, dat153, sum426);
sum427 = _mm512_fmadd_ps(wt198, dat154, sum427);
sum428 = _mm512_fmadd_ps(wt198, dat155, sum428);
sum429 = _mm512_fmadd_ps(wt198, dat156, sum429);
__m512 wt199 = _mm512_set1_ps(*(float*)(wtPtr2+8+3768*i21+12*j32));
sum430 = _mm512_fmadd_ps(wt199, dat153, sum430);
sum431 = _mm512_fmadd_ps(wt199, dat154, sum431);
sum432 = _mm512_fmadd_ps(wt199, dat155, sum432);
sum433 = _mm512_fmadd_ps(wt199, dat156, sum433);
}
_mm512_storeu_ps(sumPtr1+-285632+1536*i21, sum422);
_mm512_storeu_ps(sumPtr1+-285568+1536*i21, sum423);
_mm512_storeu_ps(sumPtr1+-285504+1536*i21, sum424);
_mm512_storeu_ps(sumPtr1+0+1536*i21, sum425);
_mm512_storeu_ps(sumPtr1+-285376+1536*i21, sum426);
_mm512_storeu_ps(sumPtr1+-285312+1536*i21, sum427);
_mm512_storeu_ps(sumPtr1+-285248+1536*i21, sum428);
_mm512_storeu_ps(sumPtr1+256+1536*i21, sum429);
_mm512_storeu_ps(sumPtr1+-285120+1536*i21, sum430);
_mm512_storeu_ps(sumPtr1+-285056+1536*i21, sum431);
_mm512_storeu_ps(sumPtr1+-284992+1536*i21, sum432);
_mm512_storeu_ps(sumPtr1+512+1536*i21, sum433);
break;
}
}
}

static void Example4LoomProduceSums1(Example4ThreaderTeam1* team16, char** tensors5) {
void* tuple1[4];
tuple1[0] = tensors5;
for (ptrdiff_t epoch2 = 0; epoch2 < 1; ++epoch2) {
tuple1[1] = (void*)epoch2;
for (ptrdiff_t field2 = 0; field2 < 4; ++field2) {
tuple1[2] = (void*)field2;
ptrdiff_t node7 = Example4LoomProduceSums1FieldTbl1[0+2*field2];
ptrdiff_t step2 = Example4LoomProduceSums1FieldTbl1[1+2*field2];
ptrdiff_t past1 = Example4LoomProduceSums1FieldTbl1[2+2*field2];
for (; node7 < past1; node7 += step2) {
tuple1[3] = (void*)node7;
Example4ThreaderTask1 task9;
task9.callee1 = Example4LoomProduceSums1Callee1;
task9.any1 = tuple1;
task9.nd1 = 4;
task9.hull1[0] = 4;
task9.hull1[1] = step2;
task9.hull1[2] = 48;
task9.hull1[3] = 8;
Example4ThreaderDo1(team16, &task9);
}
}
}
}

static void Example4LoomConsumeSums1Callee1(Example4ThreaderTask1* task10, int64_t* pt10) {
char** tensors8 = task10->any1;
ptrdiff_t cell1 = 0;
ptrdiff_t strip1 = 0;
ptrdiff_t chan1 = pt10[2];
ptrdiff_t group2 = pt10[3];
char*restrict sumPtr2 = tensors8[0];
char*restrict datPtr3 = tensors8[1];
ptrdiff_t i22 = 1*group2;
ptrdiff_t j33 = 5*chan1;
ptrdiff_t jj2 = j33+(chan1 < 17 ? 4 : 7);
for (; j33 <= jj2; ++j33) {
ptrdiff_t k11 = 15*strip1;
for (; k11 != 14; ++k11) {
ptrdiff_t l1 = 2*cell1;
for (; l1 != 1; ++l1) {
__m512 load1 = _mm512_loadu_ps(sumPtr2+0+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load8 = _mm512_loadu_ps(sumPtr2+64+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load15 = _mm512_loadu_ps(sumPtr2+128+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load22 = _mm512_loadu_ps(sumPtr2+192+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load2 = _mm512_loadu_ps(sumPtr2+23808+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load9 = _mm512_loadu_ps(sumPtr2+23872+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load16 = _mm512_loadu_ps(sumPtr2+23936+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load23 = _mm512_loadu_ps(sumPtr2+24000+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load3 = _mm512_loadu_ps(sumPtr2+119040+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load10 = _mm512_loadu_ps(sumPtr2+119104+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load17 = _mm512_loadu_ps(sumPtr2+119168+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load24 = _mm512_loadu_ps(sumPtr2+119232+4571136*i22+285696*k11+95232*l1+256*j33);
__m512i cast1 = _mm512_castps_si512(load2);
__m512i cast7 = _mm512_castps_si512(load9);
__m512i cast13 = _mm512_castps_si512(load16);
__m512i cast19 = _mm512_castps_si512(load23);
__m512i cast2 = _mm512_castps_si512(load3);
__m512i cast8 = _mm512_castps_si512(load10);
__m512i cast14 = _mm512_castps_si512(load17);
__m512i cast20 = _mm512_castps_si512(load24);
__m512 join2 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast2, cast1, 1));
__m512 join5 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast8, cast7, 1));
__m512 join8 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast14, cast13, 1));
__m512 join11 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast20, cast19, 1));
__m512 add1 = _mm512_add_ps(load1, join2);
__m512 add4 = _mm512_add_ps(load8, join5);
__m512 add7 = _mm512_add_ps(load15, join8);
__m512 add10 = _mm512_add_ps(load22, join11);
__m512 load4 = _mm512_loadu_ps(sumPtr2+47616+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load11 = _mm512_loadu_ps(sumPtr2+47680+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load18 = _mm512_loadu_ps(sumPtr2+47744+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load25 = _mm512_loadu_ps(sumPtr2+47808+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load5 = _mm512_loadu_ps(sumPtr2+142848+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load12 = _mm512_loadu_ps(sumPtr2+142912+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load19 = _mm512_loadu_ps(sumPtr2+142976+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load26 = _mm512_loadu_ps(sumPtr2+143040+4571136*i22+285696*k11+95232*l1+256*j33);
__m512i cast3 = _mm512_castps_si512(load4);
__m512i cast9 = _mm512_castps_si512(load11);
__m512i cast15 = _mm512_castps_si512(load18);
__m512i cast21 = _mm512_castps_si512(load25);
__m512i cast4 = _mm512_castps_si512(load5);
__m512i cast10 = _mm512_castps_si512(load12);
__m512i cast16 = _mm512_castps_si512(load19);
__m512i cast22 = _mm512_castps_si512(load26);
__m512 join3 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast4, cast3, 3));
__m512 join6 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast10, cast9, 3));
__m512 join9 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast16, cast15, 3));
__m512 join12 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast22, cast21, 3));
__m512 load6 = _mm512_loadu_ps(sumPtr2+71424+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load13 = _mm512_loadu_ps(sumPtr2+71488+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load20 = _mm512_loadu_ps(sumPtr2+71552+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load27 = _mm512_loadu_ps(sumPtr2+71616+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load7 = _mm512_loadu_ps(sumPtr2+166656+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load14 = _mm512_loadu_ps(sumPtr2+166720+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load21 = _mm512_loadu_ps(sumPtr2+166784+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load28 = _mm512_loadu_ps(sumPtr2+166848+4571136*i22+285696*k11+95232*l1+256*j33);
__m512i cast5 = _mm512_castps_si512(load6);
__m512i cast11 = _mm512_castps_si512(load13);
__m512i cast17 = _mm512_castps_si512(load20);
__m512i cast23 = _mm512_castps_si512(load27);
__m512i cast6 = _mm512_castps_si512(load7);
__m512i cast12 = _mm512_castps_si512(load14);
__m512i cast18 = _mm512_castps_si512(load21);
__m512i cast24 = _mm512_castps_si512(load28);
__m512 join4 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast6, cast5, 4));
__m512 join7 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast12, cast11, 4));
__m512 join10 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast18, cast17, 4));
__m512 join13 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast24, cast23, 4));
__m512 add2 = _mm512_add_ps(join3, join4);
__m512 add5 = _mm512_add_ps(join6, join7);
__m512 add8 = _mm512_add_ps(join9, join10);
__m512 add11 = _mm512_add_ps(join12, join13);
__m512 add3 = _mm512_add_ps(add1, add2);
__m512 add6 = _mm512_add_ps(add4, add5);
__m512 add9 = _mm512_add_ps(add7, add8);
__m512 add12 = _mm512_add_ps(add10, add11);
_mm512_mask_storeu_ps(datPtr3+0+636492*i22+6844*j33+464*k11+64*l1, 65535, add3);
_mm512_mask_storeu_ps(datPtr3+116+636492*i22+6844*j33+464*k11+64*l1, 65535, add6);
_mm512_mask_storeu_ps(datPtr3+232+636492*i22+6844*j33+464*k11+64*l1, 65535, add9);
_mm512_mask_storeu_ps(datPtr3+348+636492*i22+6844*j33+464*k11+64*l1, 65535, add12);
}
__m512 load29 = _mm512_loadu_ps(sumPtr2+0+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load34 = _mm512_loadu_ps(sumPtr2+64+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load39 = _mm512_loadu_ps(sumPtr2+128+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load44 = _mm512_loadu_ps(sumPtr2+192+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load30 = _mm512_loadu_ps(sumPtr2+23808+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load35 = _mm512_loadu_ps(sumPtr2+23872+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load40 = _mm512_loadu_ps(sumPtr2+23936+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load45 = _mm512_loadu_ps(sumPtr2+24000+4571136*i22+285696*k11+95232*l1+256*j33);
__m512i cast25 = _mm512_castps_si512(load30);
__m512i cast29 = _mm512_castps_si512(load35);
__m512i cast33 = _mm512_castps_si512(load40);
__m512i cast37 = _mm512_castps_si512(load45);
__m512 join14 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast25, cast25, 1));
__m512 join17 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast29, cast29, 1));
__m512 join20 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast33, cast33, 1));
__m512 join23 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast37, cast37, 1));
__m512 add13 = _mm512_add_ps(load29, join14);
__m512 add16 = _mm512_add_ps(load34, join17);
__m512 add19 = _mm512_add_ps(load39, join20);
__m512 add22 = _mm512_add_ps(load44, join23);
__m512 load31 = _mm512_loadu_ps(sumPtr2+47616+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load36 = _mm512_loadu_ps(sumPtr2+47680+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load41 = _mm512_loadu_ps(sumPtr2+47744+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load46 = _mm512_loadu_ps(sumPtr2+47808+4571136*i22+285696*k11+95232*l1+256*j33);
__m512i cast26 = _mm512_castps_si512(load31);
__m512i cast30 = _mm512_castps_si512(load36);
__m512i cast34 = _mm512_castps_si512(load41);
__m512i cast38 = _mm512_castps_si512(load46);
__m512 join15 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast26, cast26, 3));
__m512 join18 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast30, cast30, 3));
__m512 join21 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast34, cast34, 3));
__m512 join24 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast38, cast38, 3));
__m512 load32 = _mm512_loadu_ps(sumPtr2+71424+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load37 = _mm512_loadu_ps(sumPtr2+71488+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load42 = _mm512_loadu_ps(sumPtr2+71552+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load47 = _mm512_loadu_ps(sumPtr2+71616+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load33 = _mm512_loadu_ps(sumPtr2+166656+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load38 = _mm512_loadu_ps(sumPtr2+166720+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load43 = _mm512_loadu_ps(sumPtr2+166784+4571136*i22+285696*k11+95232*l1+256*j33);
__m512 load48 = _mm512_loadu_ps(sumPtr2+166848+4571136*i22+285696*k11+95232*l1+256*j33);
__m512i cast27 = _mm512_castps_si512(load32);
__m512i cast31 = _mm512_castps_si512(load37);
__m512i cast35 = _mm512_castps_si512(load42);
__m512i cast39 = _mm512_castps_si512(load47);
__m512i cast28 = _mm512_castps_si512(load33);
__m512i cast32 = _mm512_castps_si512(load38);
__m512i cast36 = _mm512_castps_si512(load43);
__m512i cast40 = _mm512_castps_si512(load48);
__m512 join16 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast28, cast27, 4));
__m512 join19 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast32, cast31, 4));
__m512 join22 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast36, cast35, 4));
__m512 join25 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast40, cast39, 4));
__m512 add14 = _mm512_add_ps(join15, join16);
__m512 add17 = _mm512_add_ps(join18, join19);
__m512 add20 = _mm512_add_ps(join21, join22);
__m512 add23 = _mm512_add_ps(join24, join25);
__m512 add15 = _mm512_add_ps(add13, add14);
__m512 add18 = _mm512_add_ps(add16, add17);
__m512 add21 = _mm512_add_ps(add19, add20);
__m512 add24 = _mm512_add_ps(add22, add23);
_mm512_mask_storeu_ps(datPtr3+0+636492*i22+6844*j33+464*k11+64*l1, 8191, add15);
_mm512_mask_storeu_ps(datPtr3+116+636492*i22+6844*j33+464*k11+64*l1, 8191, add18);
_mm512_mask_storeu_ps(datPtr3+232+636492*i22+6844*j33+464*k11+64*l1, 8191, add21);
_mm512_mask_storeu_ps(datPtr3+348+636492*i22+6844*j33+464*k11+64*l1, 8191, add24);
}
ptrdiff_t l2 = 2*cell1;
for (; l2 != 1; ++l2) {
__m512 load49 = _mm512_loadu_ps(sumPtr2+0+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load56 = _mm512_loadu_ps(sumPtr2+64+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load63 = _mm512_loadu_ps(sumPtr2+128+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load50 = _mm512_loadu_ps(sumPtr2+23808+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load57 = _mm512_loadu_ps(sumPtr2+23872+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load64 = _mm512_loadu_ps(sumPtr2+23936+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load51 = _mm512_loadu_ps(sumPtr2+119040+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load58 = _mm512_loadu_ps(sumPtr2+119104+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load65 = _mm512_loadu_ps(sumPtr2+119168+4571136*i22+285696*k11+95232*l2+256*j33);
__m512i cast41 = _mm512_castps_si512(load50);
__m512i cast47 = _mm512_castps_si512(load57);
__m512i cast53 = _mm512_castps_si512(load64);
__m512i cast42 = _mm512_castps_si512(load51);
__m512i cast48 = _mm512_castps_si512(load58);
__m512i cast54 = _mm512_castps_si512(load65);
__m512 join26 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast42, cast41, 1));
__m512 join29 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast48, cast47, 1));
__m512 join32 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast54, cast53, 1));
__m512 add25 = _mm512_add_ps(load49, join26);
__m512 add28 = _mm512_add_ps(load56, join29);
__m512 add31 = _mm512_add_ps(load63, join32);
__m512 load52 = _mm512_loadu_ps(sumPtr2+47616+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load59 = _mm512_loadu_ps(sumPtr2+47680+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load66 = _mm512_loadu_ps(sumPtr2+47744+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load53 = _mm512_loadu_ps(sumPtr2+142848+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load60 = _mm512_loadu_ps(sumPtr2+142912+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load67 = _mm512_loadu_ps(sumPtr2+142976+4571136*i22+285696*k11+95232*l2+256*j33);
__m512i cast43 = _mm512_castps_si512(load52);
__m512i cast49 = _mm512_castps_si512(load59);
__m512i cast55 = _mm512_castps_si512(load66);
__m512i cast44 = _mm512_castps_si512(load53);
__m512i cast50 = _mm512_castps_si512(load60);
__m512i cast56 = _mm512_castps_si512(load67);
__m512 join27 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast44, cast43, 3));
__m512 join30 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast50, cast49, 3));
__m512 join33 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast56, cast55, 3));
__m512 load54 = _mm512_loadu_ps(sumPtr2+71424+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load61 = _mm512_loadu_ps(sumPtr2+71488+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load68 = _mm512_loadu_ps(sumPtr2+71552+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load55 = _mm512_loadu_ps(sumPtr2+166656+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load62 = _mm512_loadu_ps(sumPtr2+166720+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load69 = _mm512_loadu_ps(sumPtr2+166784+4571136*i22+285696*k11+95232*l2+256*j33);
__m512i cast45 = _mm512_castps_si512(load54);
__m512i cast51 = _mm512_castps_si512(load61);
__m512i cast57 = _mm512_castps_si512(load68);
__m512i cast46 = _mm512_castps_si512(load55);
__m512i cast52 = _mm512_castps_si512(load62);
__m512i cast58 = _mm512_castps_si512(load69);
__m512 join28 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast46, cast45, 4));
__m512 join31 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast52, cast51, 4));
__m512 join34 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast58, cast57, 4));
__m512 add26 = _mm512_add_ps(join27, join28);
__m512 add29 = _mm512_add_ps(join30, join31);
__m512 add32 = _mm512_add_ps(join33, join34);
__m512 add27 = _mm512_add_ps(add25, add26);
__m512 add30 = _mm512_add_ps(add28, add29);
__m512 add33 = _mm512_add_ps(add31, add32);
_mm512_mask_storeu_ps(datPtr3+0+636492*i22+6844*j33+464*k11+64*l2, 65535, add27);
_mm512_mask_storeu_ps(datPtr3+116+636492*i22+6844*j33+464*k11+64*l2, 65535, add30);
_mm512_mask_storeu_ps(datPtr3+232+636492*i22+6844*j33+464*k11+64*l2, 65535, add33);
}
__m512 load70 = _mm512_loadu_ps(sumPtr2+0+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load75 = _mm512_loadu_ps(sumPtr2+64+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load80 = _mm512_loadu_ps(sumPtr2+128+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load71 = _mm512_loadu_ps(sumPtr2+23808+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load76 = _mm512_loadu_ps(sumPtr2+23872+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load81 = _mm512_loadu_ps(sumPtr2+23936+4571136*i22+285696*k11+95232*l2+256*j33);
__m512i cast59 = _mm512_castps_si512(load71);
__m512i cast63 = _mm512_castps_si512(load76);
__m512i cast67 = _mm512_castps_si512(load81);
__m512 join35 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast59, cast59, 1));
__m512 join38 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast63, cast63, 1));
__m512 join41 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast67, cast67, 1));
__m512 add34 = _mm512_add_ps(load70, join35);
__m512 add37 = _mm512_add_ps(load75, join38);
__m512 add40 = _mm512_add_ps(load80, join41);
__m512 load72 = _mm512_loadu_ps(sumPtr2+47616+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load77 = _mm512_loadu_ps(sumPtr2+47680+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load82 = _mm512_loadu_ps(sumPtr2+47744+4571136*i22+285696*k11+95232*l2+256*j33);
__m512i cast60 = _mm512_castps_si512(load72);
__m512i cast64 = _mm512_castps_si512(load77);
__m512i cast68 = _mm512_castps_si512(load82);
__m512 join36 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast60, cast60, 3));
__m512 join39 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast64, cast64, 3));
__m512 join42 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast68, cast68, 3));
__m512 load73 = _mm512_loadu_ps(sumPtr2+71424+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load78 = _mm512_loadu_ps(sumPtr2+71488+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load83 = _mm512_loadu_ps(sumPtr2+71552+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load74 = _mm512_loadu_ps(sumPtr2+166656+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load79 = _mm512_loadu_ps(sumPtr2+166720+4571136*i22+285696*k11+95232*l2+256*j33);
__m512 load84 = _mm512_loadu_ps(sumPtr2+166784+4571136*i22+285696*k11+95232*l2+256*j33);
__m512i cast61 = _mm512_castps_si512(load73);
__m512i cast65 = _mm512_castps_si512(load78);
__m512i cast69 = _mm512_castps_si512(load83);
__m512i cast62 = _mm512_castps_si512(load74);
__m512i cast66 = _mm512_castps_si512(load79);
__m512i cast70 = _mm512_castps_si512(load84);
__m512 join37 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast62, cast61, 4));
__m512 join40 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast66, cast65, 4));
__m512 join43 = _mm512_castsi512_ps(_mm512_alignr_epi32(cast70, cast69, 4));
__m512 add35 = _mm512_add_ps(join36, join37);
__m512 add38 = _mm512_add_ps(join39, join40);
__m512 add41 = _mm512_add_ps(join42, join43);
__m512 add36 = _mm512_add_ps(add34, add35);
__m512 add39 = _mm512_add_ps(add37, add38);
__m512 add42 = _mm512_add_ps(add40, add41);
_mm512_mask_storeu_ps(datPtr3+0+636492*i22+6844*j33+464*k11+64*l2, 8191, add36);
_mm512_mask_storeu_ps(datPtr3+116+636492*i22+6844*j33+464*k11+64*l2, 8191, add39);
_mm512_mask_storeu_ps(datPtr3+232+636492*i22+6844*j33+464*k11+64*l2, 8191, add42);
}
}

static void Example4LoomConsumeSums1(Example4ThreaderTeam1* team17, char** tensors7) {
Example4ThreaderTask1 task11;
task11.callee1 = Example4LoomConsumeSums1Callee1;
task11.any1 = tensors7;
task11.nd1 = 4;
task11.hull1[0] = 1;
task11.hull1[1] = 1;
task11.hull1[2] = 18;
task11.hull1[3] = 8;
Example4ThreaderDo1(team17, &task11);
}

struct Example4Net {
char* alloc1;
char* align1;
};

void Example4NetDestroy(Example4Net* net2) {
free(net2->alloc1);
free(net2);
}

char* Example4NetCreate(
Example4Net** net1,
Example4Params* params1,
ptrdiff_t threads1
) {
if (__builtin_expect(!__builtin_cpu_supports("avx512f"), 0)) {
return Example4Errmsg1(__LINE__, "CPU does not support AVX512F");
}
char* alloc3 = malloc(7478751);
if (__builtin_expect(!alloc3, 0)) {
return Example4Errmsg1(__LINE__, "errno %d", errno);
}
char* align3 = (void*)(((size_t)alloc3+63)&-64);
Example4ThreaderTeam1* team12 = 0;
char* err8 = Example4ThreaderCreate1(&team12, threads1);
if (__builtin_expect(!!err8, 0)) {
free(alloc3);
return err8;
}
{
char* tensors12[] = {
(char*)params1->outWeights,
(char*)params1->outBiases,
align3+0
};
Example4LoomArrangeFilts1(team12, tensors12);
}
Example4ThreaderDestroy1(team12);
Example4Net* net5 = malloc(sizeof(Example4Net));
if (__builtin_expect(!net5, 0)) {
char* msg6 = Example4Errmsg1(__LINE__, "errno %d", errno);
free(alloc3);
return msg6;
}
net5->alloc1 = alloc3;
net5->align1 = align3;
*net1 = net5;
return 0;
}

struct Example4Engine {
Example4Net* net3;
Example4ThreaderTeam1* team11;
char* alloc2;
char* align2;
};

char* Example4EnginePthreadT(
Example4Engine* eng2,
ptrdiff_t idx2,
pthread_t* to1
) {
return Example4ThreaderPthreadT1(to1, eng2->team11, idx2);
}

void Example4EngineDestroy(Example4Engine* eng3) {
Example4ThreaderDestroy1(eng3->team11);
free(eng3->alloc2);
free(eng3);
}

char* Example4EngineCreate(
Example4Engine** eng4,
Example4Net* net4,
ptrdiff_t threads2
) {
Example4Engine* eng5 = malloc(sizeof(Example4Engine));
if (__builtin_expect(!eng5, 0)) {
return Example4Errmsg1(__LINE__, "errno %d", errno);
}
char* alloc4 = malloc(98304063);
if (__builtin_expect(!alloc4, 0)) {
char* msg5 = Example4Errmsg1(__LINE__, "errno %d", errno);
free(eng5);
return msg5;
}
eng5->alloc2 = alloc4;
eng5->align2 = (void*)(((size_t)alloc4+63)&-64);
char* err7 = Example4ThreaderCreate1(&eng5->team11, threads2);
if (__builtin_expect(!!err7, 0)) {
free(eng5);
free(alloc4);
return err7;
}
eng5->net3 = net4;
*eng4 = eng5;
return 0;
}

void Example4EngineInference(
Example4Engine* eng1,
float* inData,
float* outData
) {
char* netAlign1 = eng1->net3->align1;
Example4ThreaderTeam1* team14 = eng1->team11;
char* align4 = eng1->align2;
{
char* tensors9[] = {
(char*)inData,
align4+0
};
Example4LoomArrangeDats1(team14, tensors9);
char* tensors10[] = {
netAlign1+0,
align4+0,
align4+61734912
};
Example4LoomProduceSums1(team14, tensors10);
char* tensors11[] = {
align4+61734912,
(char*)outData
};
Example4LoomConsumeSums1(team14, tensors11);
}
}

// End of file.

Top