/* int8 6-bit quantised GEMM for mmmf4k. generated by gen_i8.py */
#pragma GCC optimize("O3")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#include <immintrin.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#define NN 4096
#define NG 4
#define KC 256
#define NP (NN/2)
#define APAD 1024
#define NCH (KC/16)
#define GSTR 81984
#define NGRP (NN/16)
#define JBN (NN/(16*NG))
#define NKB (NP/KC)
#define RB 32
#define INV961 (1.0f/484.0f)
struct MS { int16_t e[16]; int16_t o[16]; };
static const struct MS MASKV __attribute__((aligned(32))) =
{{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0},{0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1}};
#define MASKS (&MASKV)
static uint32_t *g_A = 0;
static uint8_t *g_B = 0;
static int32_t *g_corr = 0;
static int32_t *g_SC = 0;
static int32_t *g_cs = 0;
static uint8_t *g_qa = 0, *g_qb = 0;
/* 2-row mikro: each B record is loaded ONCE and serves two rows. */
__attribute__((target("avx2"))) static void mikro2(const uint32_t *ap0, const uint32_t *ap1,
const uint8_t *bx, int nchunks,
int32_t *acc0, int32_t *acc1)
{
asm volatile(
"movl %[nch], %%r10d\n\t"
".p2align 5\n\t"
"1:\n\t"
"vpxor %%xmm2, %%xmm2, %%xmm2\n\t"
"vpxor %%xmm3, %%xmm3, %%xmm3\n\t"
"vpxor %%xmm4, %%xmm4, %%xmm4\n\t"
"vpxor %%xmm5, %%xmm5, %%xmm5\n\t"
"vpxor %%xmm6, %%xmm6, %%xmm6\n\t"
"vpxor %%xmm7, %%xmm7, %%xmm7\n\t"
"vpxor %%xmm8, %%xmm8, %%xmm8\n\t"
"vpxor %%xmm9, %%xmm9, %%xmm9\n\t"
"vpbroadcastd 128(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 128(%[ap1]), %%ymm15\n\t"
"vmovdqu 128(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82112(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164096(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246080(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 132(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 132(%[ap1]), %%ymm15\n\t"
"vmovdqu 160(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82144(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164128(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246112(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 136(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 136(%[ap1]), %%ymm15\n\t"
"vmovdqu 192(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82176(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164160(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246144(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 140(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 140(%[ap1]), %%ymm15\n\t"
"vmovdqu 224(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82208(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164192(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246176(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 144(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 144(%[ap1]), %%ymm15\n\t"
"vmovdqu 256(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82240(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164224(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246208(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 148(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 148(%[ap1]), %%ymm15\n\t"
"vmovdqu 288(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82272(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164256(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246240(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 152(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 152(%[ap1]), %%ymm15\n\t"
"vmovdqu 320(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82304(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164288(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246272(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 156(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 156(%[ap1]), %%ymm15\n\t"
"vmovdqu 352(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82336(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164320(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246304(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 160(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 160(%[ap1]), %%ymm15\n\t"
"vmovdqu 384(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82368(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164352(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246336(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 164(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 164(%[ap1]), %%ymm15\n\t"
"vmovdqu 416(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82400(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164384(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246368(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 168(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 168(%[ap1]), %%ymm15\n\t"
"vmovdqu 448(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82432(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164416(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246400(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 172(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 172(%[ap1]), %%ymm15\n\t"
"vmovdqu 480(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82464(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164448(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246432(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 176(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 176(%[ap1]), %%ymm15\n\t"
"vmovdqu 512(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82496(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164480(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246464(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 180(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 180(%[ap1]), %%ymm15\n\t"
"vmovdqu 544(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82528(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164512(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246496(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 184(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 184(%[ap1]), %%ymm15\n\t"
"vmovdqu 576(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82560(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164544(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246528(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 188(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 188(%[ap1]), %%ymm15\n\t"
"vmovdqu 608(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82592(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164576(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246560(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 192(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 192(%[ap1]), %%ymm15\n\t"
"vmovdqu 640(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82624(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164608(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246592(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 196(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 196(%[ap1]), %%ymm15\n\t"
"vmovdqu 672(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82656(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164640(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246624(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 200(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 200(%[ap1]), %%ymm15\n\t"
"vmovdqu 704(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82688(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164672(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246656(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 204(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 204(%[ap1]), %%ymm15\n\t"
"vmovdqu 736(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82720(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164704(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246688(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 208(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 208(%[ap1]), %%ymm15\n\t"
"vmovdqu 768(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82752(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164736(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246720(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 212(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 212(%[ap1]), %%ymm15\n\t"
"vmovdqu 800(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82784(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164768(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246752(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 216(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 216(%[ap1]), %%ymm15\n\t"
"vmovdqu 832(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82816(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164800(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246784(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 220(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 220(%[ap1]), %%ymm15\n\t"
"vmovdqu 864(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82848(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164832(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246816(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 224(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 224(%[ap1]), %%ymm15\n\t"
"vmovdqu 896(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82880(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164864(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246848(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 228(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 228(%[ap1]), %%ymm15\n\t"
"vmovdqu 928(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82912(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164896(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246880(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 232(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 232(%[ap1]), %%ymm15\n\t"
"vmovdqu 960(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82944(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164928(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246912(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 236(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 236(%[ap1]), %%ymm15\n\t"
"vmovdqu 992(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 82976(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164960(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246944(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 240(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 240(%[ap1]), %%ymm15\n\t"
"vmovdqu 1024(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83008(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 164992(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 246976(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 244(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 244(%[ap1]), %%ymm15\n\t"
"vmovdqu 1056(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83040(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165024(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247008(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 248(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 248(%[ap1]), %%ymm15\n\t"
"vmovdqu 1088(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83072(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165056(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247040(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 252(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 252(%[ap1]), %%ymm15\n\t"
"vmovdqu 1120(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83104(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165088(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247072(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 256(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 256(%[ap1]), %%ymm15\n\t"
"vmovdqu 1152(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83136(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165120(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247104(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 260(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 260(%[ap1]), %%ymm15\n\t"
"vmovdqu 1184(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83168(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165152(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247136(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 264(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 264(%[ap1]), %%ymm15\n\t"
"vmovdqu 1216(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83200(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165184(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247168(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 268(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 268(%[ap1]), %%ymm15\n\t"
"vmovdqu 1248(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83232(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165216(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247200(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 272(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 272(%[ap1]), %%ymm15\n\t"
"vmovdqu 1280(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83264(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165248(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247232(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 276(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 276(%[ap1]), %%ymm15\n\t"
"vmovdqu 1312(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83296(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165280(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247264(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 280(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 280(%[ap1]), %%ymm15\n\t"
"vmovdqu 1344(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83328(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165312(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247296(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 284(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 284(%[ap1]), %%ymm15\n\t"
"vmovdqu 1376(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83360(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165344(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247328(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 288(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 288(%[ap1]), %%ymm15\n\t"
"vmovdqu 1408(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83392(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165376(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247360(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 292(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 292(%[ap1]), %%ymm15\n\t"
"vmovdqu 1440(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83424(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165408(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247392(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 296(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 296(%[ap1]), %%ymm15\n\t"
"vmovdqu 1472(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83456(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165440(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247424(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 300(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 300(%[ap1]), %%ymm15\n\t"
"vmovdqu 1504(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83488(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165472(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247456(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 304(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 304(%[ap1]), %%ymm15\n\t"
"vmovdqu 1536(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83520(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165504(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247488(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 308(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 308(%[ap1]), %%ymm15\n\t"
"vmovdqu 1568(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83552(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165536(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247520(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 312(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 312(%[ap1]), %%ymm15\n\t"
"vmovdqu 1600(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83584(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165568(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247552(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 316(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 316(%[ap1]), %%ymm15\n\t"
"vmovdqu 1632(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83616(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165600(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247584(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 320(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 320(%[ap1]), %%ymm15\n\t"
"vmovdqu 1664(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83648(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165632(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247616(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 324(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 324(%[ap1]), %%ymm15\n\t"
"vmovdqu 1696(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83680(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165664(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247648(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 328(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 328(%[ap1]), %%ymm15\n\t"
"vmovdqu 1728(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83712(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165696(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247680(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 332(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 332(%[ap1]), %%ymm15\n\t"
"vmovdqu 1760(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83744(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165728(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247712(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 336(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 336(%[ap1]), %%ymm15\n\t"
"vmovdqu 1792(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83776(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165760(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247744(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 340(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 340(%[ap1]), %%ymm15\n\t"
"vmovdqu 1824(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83808(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165792(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247776(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 344(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 344(%[ap1]), %%ymm15\n\t"
"vmovdqu 1856(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83840(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165824(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247808(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 348(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 348(%[ap1]), %%ymm15\n\t"
"vmovdqu 1888(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83872(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165856(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247840(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 352(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 352(%[ap1]), %%ymm15\n\t"
"vmovdqu 1920(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83904(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165888(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247872(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 356(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 356(%[ap1]), %%ymm15\n\t"
"vmovdqu 1952(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83936(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165920(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247904(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 360(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 360(%[ap1]), %%ymm15\n\t"
"vmovdqu 1984(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 83968(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165952(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247936(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 364(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 364(%[ap1]), %%ymm15\n\t"
"vmovdqu 2016(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 84000(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 165984(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 247968(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 368(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 368(%[ap1]), %%ymm15\n\t"
"vmovdqu 2048(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 84032(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 166016(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 248000(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 372(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 372(%[ap1]), %%ymm15\n\t"
"vmovdqu 2080(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 84064(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 166048(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 248032(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 376(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 376(%[ap1]), %%ymm15\n\t"
"vmovdqu 2112(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 84096(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 166080(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 248064(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpbroadcastd 380(%[ap0]), %%ymm0\n\t"
"vpbroadcastd 380(%[ap1]), %%ymm15\n\t"
"vmovdqu 2144(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm2, %%ymm2\n\t"
"vpaddw %%ymm11, %%ymm6, %%ymm6\n\t"
"vmovdqu 84128(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm3, %%ymm3\n\t"
"vpaddw %%ymm11, %%ymm7, %%ymm7\n\t"
"vmovdqu 166112(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm4, %%ymm4\n\t"
"vpaddw %%ymm11, %%ymm8, %%ymm8\n\t"
"vmovdqu 248096(%[bx]), %%ymm1\n\t"
"vpmaddubsw %%ymm1, %%ymm0, %%ymm10\n\t"
"vpmaddubsw %%ymm1, %%ymm15, %%ymm11\n\t"
"vpaddw %%ymm10, %%ymm5, %%ymm5\n\t"
"vpaddw %%ymm11, %%ymm9, %%ymm9\n\t"
"vpmaddwd 0(%[me]), %%ymm2, %%ymm12\n\t"
"vpaddd 0(%[acc0]), %%ymm12, %%ymm12\n\t"
"vmovdqu %%ymm12, 0(%[acc0])\n\t"
"vpmaddwd 32(%[me]), %%ymm2, %%ymm13\n\t"
"vpaddd 32(%[acc0]), %%ymm13, %%ymm13\n\t"
"vmovdqu %%ymm13, 32(%[acc0])\n\t"
"vpmaddwd 0(%[me]), %%ymm3, %%ymm12\n\t"
"vpaddd 64(%[acc0]), %%ymm12, %%ymm12\n\t"
"vmovdqu %%ymm12, 64(%[acc0])\n\t"
"vpmaddwd 32(%[me]), %%ymm3, %%ymm13\n\t"
"vpaddd 96(%[acc0]), %%ymm13, %%ymm13\n\t"
"vmovdqu %%ymm13, 96(%[acc0])\n\t"
"vpmaddwd 0(%[me]), %%ymm4, %%ymm12\n\t"
"vpaddd 128(%[acc0]), %%ymm12, %%ymm12\n\t"
"vmovdqu %%ymm12, 128(%[acc0])\n\t"
"vpmaddwd 32(%[me]), %%ymm4, %%ymm13\n\t"
"vpaddd 160(%[acc0]), %%ymm13, %%ymm13\n\t"
"vmovdqu %%ymm13, 160(%[acc0])\n\t"
"vpmaddwd 0(%[me]), %%ymm5, %%ymm12\n\t"
"vpaddd 192(%[acc0]), %%ymm12, %%ymm12\n\t"
"vmovdqu %%ymm12, 192(%[acc0])\n\t"
"vpmaddwd 32(%[me]), %%ymm5, %%ymm13\n\t"
"vpaddd 224(%[acc0]), %%ymm13, %%ymm13\n\t"
"vmovdqu %%ymm13, 224(%[acc0])\n\t"
"vpmaddwd 0(%[me]), %%ymm6, %%ymm12\n\t"
"vpaddd 0(%[acc1]), %%ymm12, %%ymm12\n\t"
"vmovdqu %%ymm12, 0(%[acc1])\n\t"
"vpmaddwd 32(%[me]), %%ymm6, %%ymm13\n\t"
"vpaddd 32(%[acc1]), %%ymm13, %%ymm13\n\t"
"vmovdqu %%ymm13, 32(%[acc1])\n\t"
"vpmaddwd 0(%[me]), %%ymm7, %%ymm12\n\t"
"vpaddd 64(%[acc1]), %%ymm12, %%ymm12\n\t"
"vmovdqu %%ymm12, 64(%[acc1])\n\t"
"vpmaddwd 32(%[me]), %%ymm7, %%ymm13\n\t"
"vpaddd 96(%[acc1]), %%ymm13, %%ymm13\n\t"
"vmovdqu %%ymm13, 96(%[acc1])\n\t"
"vpmaddwd 0(%[me]), %%ymm8, %%ymm12\n\t"
"vpaddd 128(%[acc1]), %%ymm12, %%ymm12\n\t"
"vmovdqu %%ymm12, 128(%[acc1])\n\t"
"vpmaddwd 32(%[me]), %%ymm8, %%ymm13\n\t"
"vpaddd 160(%[acc1]), %%ymm13, %%ymm13\n\t"
"vmovdqu %%ymm13, 160(%[acc1])\n\t"
"vpmaddwd 0(%[me]), %%ymm9, %%ymm12\n\t"
"vpaddd 192(%[acc1]), %%ymm12, %%ymm12\n\t"
"vmovdqu %%ymm12, 192(%[acc1])\n\t"
"vpmaddwd 32(%[me]), %%ymm9, %%ymm13\n\t"
"vpaddd 224(%[acc1]), %%ymm13, %%ymm13\n\t"
"vmovdqu %%ymm13, 224(%[acc1])\n\t"
"addq $256, %[ap0]\n\t"
"addq $256, %[ap1]\n\t"
"addq $2048, %[bx]\n\t"
"decl %%r10d\n\t"
"jnz 1b\n\t"
: [ap0]"+r"(ap0), [ap1]"+r"(ap1), [bx]"+r"(bx)
: [acc0]"r"(acc0), [acc1]"r"(acc1), [nch]"r"(nchunks), [me]"r"(MASKS)
: "ymm0", "ymm1", "ymm2", "ymm3", "ymm4", "ymm5", "ymm6", "ymm7", "ymm8", "ymm9", "ymm10", "ymm11", "ymm12", "ymm13", "ymm14", "ymm15", "r10", "cc", "memory");
}
__attribute__((target("avx2"))) static inline __m256i qf8(const float *r)
{
return _mm256_cvtps_epi32(_mm256_mul_ps(_mm256_loadu_ps(r), _mm256_set1_ps(22.0f)));
}
/* 16 floats -> 16 bytes of A_q = round(x*31)+32 clamped to [1,63] */
__attribute__((target("avx2"))) static inline void qA16(const float *r, uint8_t *o)
{
__m256i v0 = qf8(r), v1 = qf8(r + 8);
v0 = _mm256_min_epi32(_mm256_max_epi32(_mm256_add_epi32(v0, _mm256_set1_epi32(22)),
_mm256_set1_epi32(0)), _mm256_set1_epi32(44));
v1 = _mm256_min_epi32(_mm256_max_epi32(_mm256_add_epi32(v1, _mm256_set1_epi32(22)),
_mm256_set1_epi32(0)), _mm256_set1_epi32(44));
_mm_storeu_si128((__m128i *)o, _mm_packus_epi16(
_mm_packus_epi32(_mm256_castsi256_si128(v0), _mm256_extracti128_si256(v0, 1)),
_mm_packus_epi32(_mm256_castsi256_si128(v1), _mm256_extracti128_si256(v1, 1))));
}
/* 16 floats -> 16 bytes of B_q = round(x*31) clamped to [-31,31] */
__attribute__((target("avx2"))) static inline void qB16(const float *r, uint8_t *o)
{
__m256i v0 = qf8(r), v1 = qf8(r + 8);
v0 = _mm256_min_epi32(_mm256_max_epi32(v0, _mm256_set1_epi32(-22)), _mm256_set1_epi32(22));
v1 = _mm256_min_epi32(_mm256_max_epi32(v1, _mm256_set1_epi32(-22)), _mm256_set1_epi32(22));
_mm_storeu_si128((__m128i *)o, _mm_packs_epi16(
_mm_packs_epi32(_mm256_castsi256_si128(v0), _mm256_extracti128_si256(v0, 1)),
_mm_packs_epi32(_mm256_castsi256_si128(v1), _mm256_extracti128_si256(v1, 1))));
}
/* A panel: row i, pair p -> dword [a0,a1,a0,a1] broadcast by vpbroadcastd */
__attribute__((target("avx2"))) static void packA(int n, const float *A)
{
for (int i = 0; i < n; i++) {
const float *r = A + (size_t)i * n;
uint32_t *o = g_A + (size_t)i * (n / 2 + APAD);
for (int k = 0; k < n; k += 16) {
uint8_t q[16];
qA16(r + k, q);
__m256i w32 = _mm256_cvtepu16_epi32(_mm_loadu_si128((const __m128i *)q));
_mm256_storeu_si256((__m256i *)(o + (k >> 1)),
_mm256_mullo_epi32(w32, _mm256_set1_epi32(65537)));
}
}
}
/* B panel: record (g,p) = 32 B, i16 lane m = (Bq[2p][16g+m], Bq[2p+1][16g+m]) */
__attribute__((target("avx2"))) static void packB(int n, const float *B, int32_t *cs)
{
for (int p = 0; p < n / 2; p++) {
const float *r0 = B + (size_t)(2 * p) * n, *r1 = r0 + n;
for (int k = 0; k < n; k += 16) {
qB16(r0 + k, g_qa + k);
qB16(r1 + k, g_qb + k);
__m256i a0 = _mm256_cvtepi8_epi32(_mm_loadu_si128((const __m128i *)(g_qa + k)));
__m256i a1 = _mm256_cvtepi8_epi32(_mm_loadu_si128((const __m128i *)(g_qa + k + 8)));
__m256i b0 = _mm256_cvtepi8_epi32(_mm_loadu_si128((const __m128i *)(g_qb + k)));
__m256i b1 = _mm256_cvtepi8_epi32(_mm_loadu_si128((const __m128i *)(g_qb + k + 8)));
_mm256_storeu_si256((__m256i *)(cs + k), _mm256_add_epi32(
_mm256_loadu_si256((const __m256i *)(cs + k)), _mm256_add_epi32(a0, b0)));
_mm256_storeu_si256((__m256i *)(cs + k + 8), _mm256_add_epi32(
_mm256_loadu_si256((const __m256i *)(cs + k + 8)), _mm256_add_epi32(a1, b1)));
__m128i va = _mm_loadu_si128((const __m128i *)(g_qa + k));
__m128i vb = _mm_loadu_si128((const __m128i *)(g_qb + k));
__m256i rec = _mm256_inserti128_si256(
_mm256_castsi128_si256(_mm_unpacklo_epi8(va, vb)), _mm_unpackhi_epi8(va, vb), 1);
_mm256_storeu_si256((__m256i *)(g_B + (size_t)(k / 16) * GSTR + (size_t)p * 32), rec);
}
}
}
/* SC layout per 16-column group: 8 i32 of EVEN columns then 8 i32 of ODD columns */
__attribute__((target("avx2"))) static void decode(int n, float *C)
{
const __m256 inv = _mm256_set1_ps(INV961);
for (int i = 0; i < n; i++) {
const int32_t *s = g_SC + (size_t)i * n;
float *c = C + (size_t)i * n;
for (int g = 0; g < n / 16; g++) {
const int32_t *q = s + g * 16;
__m256i E = _mm256_loadu_si256((const __m256i *)q);
__m256i O = _mm256_loadu_si256((const __m256i *)(q + 8));
__m256i lo = _mm256_unpacklo_epi32(E, O);
__m256i hi = _mm256_unpackhi_epi32(E, O);
__m256i r0 = _mm256_sub_epi32(_mm256_permute2x128_si256(lo, hi, 0x20),
_mm256_loadu_si256((const __m256i *)(g_corr + g * 16)));
__m256i r1 = _mm256_sub_epi32(_mm256_permute2x128_si256(lo, hi, 0x31),
_mm256_loadu_si256((const __m256i *)(g_corr + g * 16 + 8)));
_mm256_storeu_ps(c + g * 16, _mm256_mul_ps(_mm256_cvtepi32_ps(r0), inv));
_mm256_storeu_ps(c + g * 16 + 8, _mm256_mul_ps(_mm256_cvtepi32_ps(r1), inv));
}
}
}
static void simple_mm(int n, const float *A, const float *B, float *C)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
float s = 0.f;
for (int k = 0; k < n; k++) s += A[(size_t)i * n + k] * B[(size_t)k * n + j];
C[(size_t)i * n + j] = s;
}
}
void matrix_multiply(int n, const float *A, const float *B, float *C)
{
if (n != NN) { simple_mm(n, A, B, C); return; }
if (!g_A) {
if (posix_memalign((void **)&g_A, 64, (size_t)NN * (NP + APAD) * 4)) return;
if (posix_memalign((void **)&g_B, 64, (size_t)NGRP * GSTR)) return;
if (posix_memalign((void **)&g_corr, 64, (size_t)NN * 4)) return;
if (posix_memalign((void **)&g_SC, 64, (size_t)NN * NN * 4)) return;
if (posix_memalign((void **)&g_cs, 64, (size_t)NN * 4)) return;
if (posix_memalign((void **)&g_qa, 64, (size_t)NN + 64)) return;
if (posix_memalign((void **)&g_qb, 64, (size_t)NN + 64)) return;
}
memset(g_cs, 0, (size_t)NN * 4);
packA(n, A);
packB(n, B, g_cs);
for (int j = 0; j < NN; j++) g_corr[j] = g_cs[j] * 22;
memset(g_SC, 0, (size_t)NN * NN * 4);
for (int kb = 0; kb < NKB; kb++) {
for (int ib = 0; ib < NN; ib += RB) {
for (int jb = 0; jb < JBN; jb++) {
const uint8_t *b0 = g_B + (size_t)(jb * NG) * GSTR + (size_t)kb * KC * 32 - 128;
for (int i = ib; i < ib + RB; i += 2)
mikro2(g_A + (size_t)i * (NP + APAD) + (size_t)kb * KC - 32,
g_A + (size_t)(i + 1) * (NP + APAD) + (size_t)kb * KC - 32,
b0, NCH / 4,
g_SC + (size_t)i * NN + jb * (16 * NG),
g_SC + (size_t)(i + 1) * NN + jb * (16 * NG));
}
}
}
decode(n, C);
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 623.503 ms | 193 MB + 36 KB | Accepted | Score: 100 | 显示更多 |