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

TEXT ·l2_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 $0x018b             // movl	(%rcx), %eax
	WORD $0xf883; BYTE $0x07 // cmpl	$7, %eax
	JG   LBB0_7
	WORD $0x01a8             // testb	$1, %al
	JNE  LBB0_3
	LONG $0xc057f8c5         // vxorps	%xmm0, %xmm0, %xmm0
	WORD $0xc189             // movl	%eax, %ecx
	WORD $0xf883; BYTE $0x01 // cmpl	$1, %eax
	JNE  LBB0_5

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

LBB0_7:
	LONG $0xc057f8c5         // vxorps	%xmm0, %xmm0, %xmm0
	WORD $0xf883; BYTE $0x20 // cmpl	$32, %eax
	JB   LBB0_8
	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_14:
	LONG $0x2710fcc5               // vmovups	(%rdi), %ymm4
	LONG $0x6f10fcc5; BYTE $0x20   // vmovups	32(%rdi), %ymm5
	LONG $0x7710fcc5; BYTE $0x40   // vmovups	64(%rdi), %ymm6
	LONG $0x7f10fcc5; BYTE $0x60   // vmovups	96(%rdi), %ymm7
	LONG $0x317d62c4; BYTE $0x06   // vpmovzxbd	(%rsi), %ymm8           # ymm8 = 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 $0x5b7c41c4; BYTE $0xc0   // vcvtdq2ps	%ymm8, %ymm8
	LONG $0x5c5cc1c4; BYTE $0xe0   // vsubps	%ymm8, %ymm4, %ymm4
	LONG $0x317d62c4; WORD $0x0846 // vpmovzxbd	8(%rsi), %ymm8          # ymm8 = 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 $0x5b7c41c4; BYTE $0xc0   // vcvtdq2ps	%ymm8, %ymm8
	LONG $0x5c54c1c4; BYTE $0xe8   // vsubps	%ymm8, %ymm5, %ymm5
	LONG $0x317d62c4; WORD $0x1046 // vpmovzxbd	16(%rsi), %ymm8         # ymm8 = 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 $0x5b7c41c4; BYTE $0xc0   // vcvtdq2ps	%ymm8, %ymm8
	LONG $0x5c4cc1c4; BYTE $0xf0   // vsubps	%ymm8, %ymm6, %ymm6
	LONG $0x317d62c4; WORD $0x1846 // vpmovzxbd	24(%rsi), %ymm8         # ymm8 = 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 $0x5b7c41c4; BYTE $0xc0   // vcvtdq2ps	%ymm8, %ymm8
	LONG $0x5c44c1c4; BYTE $0xf8   // vsubps	%ymm8, %ymm7, %ymm7
	LONG $0xb85de2c4; BYTE $0xdc   // vfmadd231ps	%ymm4, %ymm4, %ymm3     # ymm3 = (ymm4 * ymm4) + ymm3
	LONG $0xb855e2c4; BYTE $0xd5   // vfmadd231ps	%ymm5, %ymm5, %ymm2     # ymm2 = (ymm5 * ymm5) + ymm2
	LONG $0xb84de2c4; BYTE $0xce   // vfmadd231ps	%ymm6, %ymm6, %ymm1     # ymm1 = (ymm6 * ymm6) + ymm1
	LONG $0xb845e2c4; BYTE $0xc7   // vfmadd231ps	%ymm7, %ymm7, %ymm0     # ymm0 = (ymm7 * ymm7) + ymm0
	WORD $0xc083; BYTE $0xe0       // addl	$-32, %eax
	LONG $0x80ef8348               // subq	$-128, %rdi
	LONG $0x20c68348               // addq	$32, %rsi
	WORD $0xf883; BYTE $0x1f       // cmpl	$31, %eax
	JA   LBB0_14
	WORD $0xf883; BYTE $0x08       // cmpl	$8, %eax
	JAE  LBB0_9
	JMP  LBB0_11

LBB0_3:
	WORD $0xb60f; BYTE $0x0e // movzbl	(%rsi), %ecx
	LONG $0xc12afac5         // vcvtsi2ss	%ecx, %xmm0, %xmm0
	LONG $0x0f10fac5         // vmovss	(%rdi), %xmm1                   # xmm1 = mem[0],zero,zero,zero
	LONG $0xc05cf2c5         // vsubss	%xmm0, %xmm1, %xmm0
	LONG $0xc059fac5         // vmulss	%xmm0, %xmm0, %xmm0
	LONG $0xc957f0c5         // vxorps	%xmm1, %xmm1, %xmm1
	LONG $0xc158fac5         // vaddss	%xmm1, %xmm0, %xmm0
	WORD $0x488d; BYTE $0xff // leal	-1(%rax), %ecx
	LONG $0x04c78348         // addq	$4, %rdi
	LONG $0x01c68348         // addq	$1, %rsi
	WORD $0xf883; BYTE $0x01 // cmpl	$1, %eax
	JE   LBB0_22

LBB0_5:
	WORD $0x8941; BYTE $0xc8 // movl	%ecx, %r8d
	WORD $0xc931             // xorl	%ecx, %ecx

LBB0_6:
	LONG $0x0e04b60f               // movzbl	(%rsi,%rcx), %eax
	LONG $0xc82ae2c5               // vcvtsi2ss	%eax, %xmm3, %xmm1
	LONG $0x1410fac5; BYTE $0x8f   // vmovss	(%rdi,%rcx,4), %xmm2            # xmm2 = mem[0],zero,zero,zero
	LONG $0xc95ceac5               // vsubss	%xmm1, %xmm2, %xmm1
	LONG $0x5410fac5; WORD $0x048f // vmovss	4(%rdi,%rcx,4), %xmm2           # xmm2 = mem[0],zero,zero,zero
	LONG $0xc959f2c5               // vmulss	%xmm1, %xmm1, %xmm1
	LONG $0xc158fac5               // vaddss	%xmm1, %xmm0, %xmm0
	LONG $0x0e44b60f; BYTE $0x01   // movzbl	1(%rsi,%rcx), %eax
	LONG $0xc82ae2c5               // vcvtsi2ss	%eax, %xmm3, %xmm1
	LONG $0xc95ceac5               // vsubss	%xmm1, %xmm2, %xmm1
	LONG $0xc959f2c5               // vmulss	%xmm1, %xmm1, %xmm1
	LONG $0xc158fac5               // vaddss	%xmm1, %xmm0, %xmm0
	LONG $0x02c18348               // addq	$2, %rcx
	WORD $0x3941; BYTE $0xc8       // cmpl	%ecx, %r8d
	JNE  LBB0_6
	JMP  LBB0_22

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

LBB0_9:
	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 $0x2f10fcc5             // vmovups	(%rdi), %ymm5
	LONG $0xe45bfcc5             // vcvtdq2ps	%ymm4, %ymm4
	LONG $0xe45cd4c5             // vsubps	%ymm4, %ymm5, %ymm4
	LONG $0xb85de2c4; BYTE $0xdc // vfmadd231ps	%ymm4, %ymm4, %ymm3     # ymm3 = (ymm4 * ymm4) + ymm3
	WORD $0xc083; BYTE $0xf8     // addl	$-8, %eax
	LONG $0x20c78348             // addq	$32, %rdi
	LONG $0x08c68348             // addq	$8, %rsi
	WORD $0xf883; BYTE $0x07     // cmpl	$7, %eax
	JA   LBB0_9

LBB0_11:
	WORD $0xc085             // testl	%eax, %eax
	JE   LBB0_12
	WORD $0x01a8             // testb	$1, %al
	JNE  LBB0_17
	LONG $0xe457d8c5         // vxorps	%xmm4, %xmm4, %xmm4
	WORD $0xc189             // movl	%eax, %ecx
	WORD $0xf883; BYTE $0x01 // cmpl	$1, %eax
	JNE  LBB0_19
	JMP  LBB0_21

LBB0_12:
	LONG $0xe457d8c5 // vxorps	%xmm4, %xmm4, %xmm4
	JMP  LBB0_21

LBB0_17:
	WORD $0xb60f; BYTE $0x0e // movzbl	(%rsi), %ecx
	LONG $0xe12ab2c5         // vcvtsi2ss	%ecx, %xmm9, %xmm4
	LONG $0x2f10fac5         // vmovss	(%rdi), %xmm5                   # xmm5 = mem[0],zero,zero,zero
	LONG $0xe45cd2c5         // vsubss	%xmm4, %xmm5, %xmm4
	LONG $0xe459dac5         // vmulss	%xmm4, %xmm4, %xmm4
	LONG $0xed57d0c5         // vxorps	%xmm5, %xmm5, %xmm5
	LONG $0xe558dac5         // vaddss	%xmm5, %xmm4, %xmm4
	WORD $0x488d; BYTE $0xff // leal	-1(%rax), %ecx
	LONG $0x04c78348         // addq	$4, %rdi
	LONG $0x01c68348         // addq	$1, %rsi
	WORD $0xf883; BYTE $0x01 // cmpl	$1, %eax
	JE   LBB0_21

LBB0_19:
	WORD $0x8941; BYTE $0xc8 // movl	%ecx, %r8d
	WORD $0xc931             // xorl	%ecx, %ecx

LBB0_20:
	LONG $0x0e04b60f               // movzbl	(%rsi,%rcx), %eax
	LONG $0xe82ab2c5               // vcvtsi2ss	%eax, %xmm9, %xmm5
	LONG $0x3410fac5; BYTE $0x8f   // vmovss	(%rdi,%rcx,4), %xmm6            # xmm6 = mem[0],zero,zero,zero
	LONG $0xed5ccac5               // vsubss	%xmm5, %xmm6, %xmm5
	LONG $0x7410fac5; WORD $0x048f // vmovss	4(%rdi,%rcx,4), %xmm6           # xmm6 = mem[0],zero,zero,zero
	LONG $0xed59d2c5               // vmulss	%xmm5, %xmm5, %xmm5
	LONG $0xe558dac5               // vaddss	%xmm5, %xmm4, %xmm4
	LONG $0x0e44b60f; BYTE $0x01   // movzbl	1(%rsi,%rcx), %eax
	LONG $0xe82ab2c5               // vcvtsi2ss	%eax, %xmm9, %xmm5
	LONG $0xed5ccac5               // vsubss	%xmm5, %xmm6, %xmm5
	LONG $0xed59d2c5               // vmulss	%xmm5, %xmm5, %xmm5
	LONG $0xe558dac5               // vaddss	%xmm5, %xmm4, %xmm4
	LONG $0x02c18348               // addq	$2, %rcx
	WORD $0x3941; BYTE $0xc8       // cmpl	%ecx, %r8d
	JNE  LBB0_20

LBB0_21:
	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
