//go:build !noasm && amd64
// Code generated by GoAT. DO NOT EDIT.

TEXT ·dot_float_byte_256(SB), $0-32
	MOVQ a+0(FP), DI
	MOVQ b+8(FP), SI
	MOVQ res+16(FP), DX
	MOVQ len+24(FP), CX
	BYTE $0x55               // pushq	%rbp
	WORD $0x8948; BYTE $0xe5 // movq	%rsp, %rbp
	LONG $0xf8e48348         // andq	$-8, %rsp
	WORD $0x8b4c; BYTE $0x11 // movq	(%rcx), %r10
	LONG $0x07fa8341         // cmpl	$7, %r10d
	JG   LBB0_9
	LONG $0xff428d45         // leal	-1(%r10), %r8d
	LONG $0x03c2f641         // testb	$3, %r10b
	JE   LBB0_2
	WORD $0x8945; BYTE $0xd1 // movl	%r10d, %r9d
	LONG $0x03e18341         // andl	$3, %r9d
	LONG $0xc057f8c5         // vxorps	%xmm0, %xmm0, %xmm0
	WORD $0xc931             // xorl	%ecx, %ecx

LBB0_4:
	LONG $0x0e04b60f             // movzbl	(%rsi,%rcx), %eax
	LONG $0xc82aeac5             // vcvtsi2ss	%eax, %xmm2, %xmm1
	LONG $0xb971e2c4; BYTE $0x07 // vfmadd231ss	(%rdi), %xmm1, %xmm0    # xmm0 = (xmm1 * mem) + xmm0
	LONG $0x04c78348             // addq	$4, %rdi
	LONG $0x01c18348             // addq	$1, %rcx
	WORD $0x3941; BYTE $0xc9     // cmpl	%ecx, %r9d
	JNE  LBB0_4
	WORD $0x2941; BYTE $0xca     // subl	%ecx, %r10d
	WORD $0x0148; BYTE $0xce     // addq	%rcx, %rsi
	LONG $0x03f88341             // cmpl	$3, %r8d
	JAE  LBB0_7

LBB0_26:
	LONG $0x0211fac5         // vmovss	%xmm0, (%rdx)
	WORD $0x8948; BYTE $0xec // movq	%rbp, %rsp
	BYTE $0x5d               // popq	%rbp
	BYTE $0xc3               // retq

LBB0_9:
	LONG $0xc057f8c5 // vxorps	%xmm0, %xmm0, %xmm0
	LONG $0x20fa8341 // cmpl	$32, %r10d
	JB   LBB0_10
	LONG $0xc057f8c5 // vxorps	%xmm0, %xmm0, %xmm0
	LONG $0xc957f0c5 // vxorps	%xmm1, %xmm1, %xmm1
	LONG $0xd257e8c5 // vxorps	%xmm2, %xmm2, %xmm2
	LONG $0xdb57e0c5 // vxorps	%xmm3, %xmm3, %xmm3

LBB0_16:
	LONG $0x317de2c4; BYTE $0x26   // vpmovzxbd	(%rsi), %ymm4           # ymm4 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
	LONG $0x317de2c4; WORD $0x086e // vpmovzxbd	8(%rsi), %ymm5          # ymm5 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
	LONG $0xe45bfcc5               // vcvtdq2ps	%ymm4, %ymm4
	LONG $0xed5bfcc5               // vcvtdq2ps	%ymm5, %ymm5
	LONG $0x317de2c4; WORD $0x1076 // vpmovzxbd	16(%rsi), %ymm6         # ymm6 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
	LONG $0xf65bfcc5               // vcvtdq2ps	%ymm6, %ymm6
	LONG $0x317de2c4; WORD $0x187e // vpmovzxbd	24(%rsi), %ymm7         # ymm7 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
	LONG $0xff5bfcc5               // vcvtdq2ps	%ymm7, %ymm7
	LONG $0xb85de2c4; BYTE $0x1f   // vfmadd231ps	(%rdi), %ymm4, %ymm3    # ymm3 = (ymm4 * mem) + ymm3
	LONG $0xb855e2c4; WORD $0x2057 // vfmadd231ps	32(%rdi), %ymm5, %ymm2  # ymm2 = (ymm5 * mem) + ymm2
	LONG $0xb84de2c4; WORD $0x404f // vfmadd231ps	64(%rdi), %ymm6, %ymm1  # ymm1 = (ymm6 * mem) + ymm1
	LONG $0xb845e2c4; WORD $0x6047 // vfmadd231ps	96(%rdi), %ymm7, %ymm0  # ymm0 = (ymm7 * mem) + ymm0
	LONG $0xe0c28341               // addl	$-32, %r10d
	LONG $0x80ef8348               // subq	$-128, %rdi
	LONG $0x20c68348               // addq	$32, %rsi
	LONG $0x1ffa8341               // cmpl	$31, %r10d
	JA   LBB0_16
	LONG $0x08fa8341               // cmpl	$8, %r10d
	JAE  LBB0_11
	JMP  LBB0_13

LBB0_10:
	LONG $0xc957f0c5 // vxorps	%xmm1, %xmm1, %xmm1
	LONG $0xd257e8c5 // vxorps	%xmm2, %xmm2, %xmm2
	LONG $0xdb57e0c5 // vxorps	%xmm3, %xmm3, %xmm3

LBB0_11:
	LONG $0x317de2c4; BYTE $0x26 // vpmovzxbd	(%rsi), %ymm4           # ymm4 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
	LONG $0xe45bfcc5             // vcvtdq2ps	%ymm4, %ymm4
	LONG $0xb85de2c4; BYTE $0x1f // vfmadd231ps	(%rdi), %ymm4, %ymm3    # ymm3 = (ymm4 * mem) + ymm3
	LONG $0xf8c28341             // addl	$-8, %r10d
	LONG $0x20c78348             // addq	$32, %rdi
	LONG $0x08c68348             // addq	$8, %rsi
	LONG $0x07fa8341             // cmpl	$7, %r10d
	JA   LBB0_11

LBB0_13:
	WORD $0x8545; BYTE $0xd2 // testl	%r10d, %r10d
	JE   LBB0_14
	LONG $0xff428d45         // leal	-1(%r10), %r8d
	LONG $0x03c2f641         // testb	$3, %r10b
	JE   LBB0_18
	WORD $0x8945; BYTE $0xd1 // movl	%r10d, %r9d
	LONG $0x03e18341         // andl	$3, %r9d
	LONG $0xe457d8c5         // vxorps	%xmm4, %xmm4, %xmm4
	WORD $0xc931             // xorl	%ecx, %ecx

LBB0_20:
	LONG $0x0e04b60f             // movzbl	(%rsi,%rcx), %eax
	LONG $0xe82abac5             // vcvtsi2ss	%eax, %xmm8, %xmm5
	LONG $0xb951e2c4; BYTE $0x27 // vfmadd231ss	(%rdi), %xmm5, %xmm4    # xmm4 = (xmm5 * mem) + xmm4
	LONG $0x04c78348             // addq	$4, %rdi
	LONG $0x01c18348             // addq	$1, %rcx
	WORD $0x3941; BYTE $0xc9     // cmpl	%ecx, %r9d
	JNE  LBB0_20
	WORD $0x0148; BYTE $0xce     // addq	%rcx, %rsi
	WORD $0x2941; BYTE $0xca     // subl	%ecx, %r10d
	LONG $0x03f88341             // cmpl	$3, %r8d
	JAE  LBB0_23
	JMP  LBB0_25

LBB0_2:
	LONG $0xc057f8c5 // vxorps	%xmm0, %xmm0, %xmm0
	LONG $0x03f88341 // cmpl	$3, %r8d
	JB   LBB0_26

LBB0_7:
	WORD $0x8945; BYTE $0xd0 // movl	%r10d, %r8d
	WORD $0xc931             // xorl	%ecx, %ecx

LBB0_8:
	LONG $0x0e04b60f                           // movzbl	(%rsi,%rcx), %eax
	LONG $0xc82ae2c5                           // vcvtsi2ss	%eax, %xmm3, %xmm1
	LONG $0x9979e2c4; WORD $0x8f0c             // vfmadd132ss	(%rdi,%rcx,4), %xmm0, %xmm1 # xmm1 = (xmm1 * mem) + xmm0
	LONG $0x0e44b60f; BYTE $0x01               // movzbl	1(%rsi,%rcx), %eax
	LONG $0xc02ae2c5                           // vcvtsi2ss	%eax, %xmm3, %xmm0
	LONG $0x0e44b60f; BYTE $0x02               // movzbl	2(%rsi,%rcx), %eax
	LONG $0xd02ae2c5                           // vcvtsi2ss	%eax, %xmm3, %xmm2
	LONG $0x9971e2c4; WORD $0x8f44; BYTE $0x04 // vfmadd132ss	4(%rdi,%rcx,4), %xmm1, %xmm0 # xmm0 = (xmm0 * mem) + xmm1
	LONG $0x9979e2c4; WORD $0x8f54; BYTE $0x08 // vfmadd132ss	8(%rdi,%rcx,4), %xmm0, %xmm2 # xmm2 = (xmm2 * mem) + xmm0
	LONG $0x0e44b60f; BYTE $0x03               // movzbl	3(%rsi,%rcx), %eax
	LONG $0xc02ae2c5                           // vcvtsi2ss	%eax, %xmm3, %xmm0
	LONG $0x9969e2c4; WORD $0x8f44; BYTE $0x0c // vfmadd132ss	12(%rdi,%rcx,4), %xmm2, %xmm0 # xmm0 = (xmm0 * mem) + xmm2
	LONG $0x04c18348                           // addq	$4, %rcx
	WORD $0x3941; BYTE $0xc8                   // cmpl	%ecx, %r8d
	JNE  LBB0_8
	JMP  LBB0_26

LBB0_14:
	LONG $0xe457d8c5 // vxorps	%xmm4, %xmm4, %xmm4
	JMP  LBB0_25

LBB0_18:
	LONG $0xe457d8c5 // vxorps	%xmm4, %xmm4, %xmm4
	LONG $0x03f88341 // cmpl	$3, %r8d
	JB   LBB0_25

LBB0_23:
	WORD $0x8945; BYTE $0xd0 // movl	%r10d, %r8d
	WORD $0xc931             // xorl	%ecx, %ecx

LBB0_24:
	LONG $0x0e04b60f                           // movzbl	(%rsi,%rcx), %eax
	LONG $0xe82abac5                           // vcvtsi2ss	%eax, %xmm8, %xmm5
	LONG $0x9959e2c4; WORD $0x8f2c             // vfmadd132ss	(%rdi,%rcx,4), %xmm4, %xmm5 # xmm5 = (xmm5 * mem) + xmm4
	LONG $0x0e44b60f; BYTE $0x01               // movzbl	1(%rsi,%rcx), %eax
	LONG $0xe02abac5                           // vcvtsi2ss	%eax, %xmm8, %xmm4
	LONG $0x0e44b60f; BYTE $0x02               // movzbl	2(%rsi,%rcx), %eax
	LONG $0xf02abac5                           // vcvtsi2ss	%eax, %xmm8, %xmm6
	LONG $0x9951e2c4; WORD $0x8f64; BYTE $0x04 // vfmadd132ss	4(%rdi,%rcx,4), %xmm5, %xmm4 # xmm4 = (xmm4 * mem) + xmm5
	LONG $0x9959e2c4; WORD $0x8f74; BYTE $0x08 // vfmadd132ss	8(%rdi,%rcx,4), %xmm4, %xmm6 # xmm6 = (xmm6 * mem) + xmm4
	LONG $0x0e44b60f; BYTE $0x03               // movzbl	3(%rsi,%rcx), %eax
	LONG $0xe02abac5                           // vcvtsi2ss	%eax, %xmm8, %xmm4
	LONG $0x9949e2c4; WORD $0x8f64; BYTE $0x0c // vfmadd132ss	12(%rdi,%rcx,4), %xmm6, %xmm4 # xmm4 = (xmm4 * mem) + xmm6
	LONG $0x04c18348                           // addq	$4, %rcx
	WORD $0x3941; BYTE $0xc8                   // cmpl	%ecx, %r8d
	JNE  LBB0_24

LBB0_25:
	LONG $0xd358ecc5               // vaddps	%ymm3, %ymm2, %ymm2
	LONG $0xc058f4c5               // vaddps	%ymm0, %ymm1, %ymm0
	LONG $0xc258fcc5               // vaddps	%ymm2, %ymm0, %ymm0
	LONG $0xc07cffc5               // vhaddps	%ymm0, %ymm0, %ymm0
	LONG $0xc07cffc5               // vhaddps	%ymm0, %ymm0, %ymm0
	LONG $0x197de3c4; WORD $0x01c1 // vextractf128	$1, %ymm0, %xmm1
	LONG $0xc158fac5               // vaddss	%xmm1, %xmm0, %xmm0
	LONG $0xc058dac5               // vaddss	%xmm0, %xmm4, %xmm0
	LONG $0x0211fac5               // vmovss	%xmm0, (%rdx)
	WORD $0x8948; BYTE $0xec       // movq	%rbp, %rsp
	BYTE $0x5d                     // popq	%rbp
	WORD $0xf8c5; BYTE $0x77       // vzeroupper
	BYTE $0xc3                     // retq
