1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef ASM_X86_SERPENT_AVX_H
3 #define ASM_X86_SERPENT_AVX_H
5 #include <crypto/b128ops.h>
6 #include <crypto/serpent.h>
7 #include <linux/types.h>
9 struct crypto_skcipher
;
11 #define SERPENT_PARALLEL_BLOCKS 8
13 struct serpent_xts_ctx
{
14 struct serpent_ctx tweak_ctx
;
15 struct serpent_ctx crypt_ctx
;
18 asmlinkage
void serpent_ecb_enc_8way_avx(struct serpent_ctx
*ctx
, u8
*dst
,
20 asmlinkage
void serpent_ecb_dec_8way_avx(struct serpent_ctx
*ctx
, u8
*dst
,
23 asmlinkage
void serpent_cbc_dec_8way_avx(struct serpent_ctx
*ctx
, u8
*dst
,
25 asmlinkage
void serpent_ctr_8way_avx(struct serpent_ctx
*ctx
, u8
*dst
,
26 const u8
*src
, le128
*iv
);
28 asmlinkage
void serpent_xts_enc_8way_avx(struct serpent_ctx
*ctx
, u8
*dst
,
29 const u8
*src
, le128
*iv
);
30 asmlinkage
void serpent_xts_dec_8way_avx(struct serpent_ctx
*ctx
, u8
*dst
,
31 const u8
*src
, le128
*iv
);
33 extern void __serpent_crypt_ctr(void *ctx
, u128
*dst
, const u128
*src
,
36 extern void serpent_xts_enc(void *ctx
, u128
*dst
, const u128
*src
, le128
*iv
);
37 extern void serpent_xts_dec(void *ctx
, u128
*dst
, const u128
*src
, le128
*iv
);
39 extern int xts_serpent_setkey(struct crypto_skcipher
*tfm
, const u8
*key
,