.align 32
poly1305_blocks:
.cfi_startproc
+ endbranch
.Lblocks:
shr \$4,$len
jz .Lno_data # too short
.align 32
poly1305_emit:
.cfi_startproc
+ endbranch
.Lemit:
mov 0($ctx),%r8 # load hash value
mov 8($ctx),%r9
.align 32
poly1305_blocks_avx:
.cfi_startproc
+ endbranch
mov 20($ctx),%r8d # is_base2_26
cmp \$128,$len
jae .Lblocks_avx
.align 32
poly1305_emit_avx:
.cfi_startproc
+ endbranch
cmpl \$0,20($ctx) # is_base2_26?
je .Lemit
.align 32
poly1305_blocks_avx2:
.cfi_startproc
+ endbranch
mov 20($ctx),%r8d # is_base2_26
cmp \$128,$len
jae .Lblocks_avx2
.align 32
poly1305_blocks_avx512:
.cfi_startproc
+ endbranch
.Lblocks_avx512:
mov \$15,%eax
kmovw %eax,%k2
___
} } }
$code.=<<___;
+.section .rodata align=64
.align 64
.Lconst:
.Lmask24:
.Lx_mask42:
.quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff
.quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff
+.previous
___
}
$code.=<<___;