Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/x86/crypto/serpent-sse2.h
26424 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef ASM_X86_SERPENT_SSE2_H
3
#define ASM_X86_SERPENT_SSE2_H
4
5
#include <linux/crypto.h>
6
#include <crypto/serpent.h>
7
8
#ifdef CONFIG_X86_32
9
10
#define SERPENT_PARALLEL_BLOCKS 4
11
12
asmlinkage void __serpent_enc_blk_4way(const struct serpent_ctx *ctx, u8 *dst,
13
const u8 *src, bool xor);
14
asmlinkage void serpent_dec_blk_4way(const struct serpent_ctx *ctx, u8 *dst,
15
const u8 *src);
16
17
static inline void serpent_enc_blk_xway(const void *ctx, u8 *dst, const u8 *src)
18
{
19
__serpent_enc_blk_4way(ctx, dst, src, false);
20
}
21
22
static inline void serpent_enc_blk_xway_xor(const struct serpent_ctx *ctx,
23
u8 *dst, const u8 *src)
24
{
25
__serpent_enc_blk_4way(ctx, dst, src, true);
26
}
27
28
static inline void serpent_dec_blk_xway(const void *ctx, u8 *dst, const u8 *src)
29
{
30
serpent_dec_blk_4way(ctx, dst, src);
31
}
32
33
#else
34
35
#define SERPENT_PARALLEL_BLOCKS 8
36
37
asmlinkage void __serpent_enc_blk_8way(const struct serpent_ctx *ctx, u8 *dst,
38
const u8 *src, bool xor);
39
asmlinkage void serpent_dec_blk_8way(const struct serpent_ctx *ctx, u8 *dst,
40
const u8 *src);
41
42
static inline void serpent_enc_blk_xway(const void *ctx, u8 *dst, const u8 *src)
43
{
44
__serpent_enc_blk_8way(ctx, dst, src, false);
45
}
46
47
static inline void serpent_enc_blk_xway_xor(const struct serpent_ctx *ctx,
48
u8 *dst, const u8 *src)
49
{
50
__serpent_enc_blk_8way(ctx, dst, src, true);
51
}
52
53
static inline void serpent_dec_blk_xway(const void *ctx, u8 *dst, const u8 *src)
54
{
55
serpent_dec_blk_8way(ctx, dst, src);
56
}
57
58
#endif
59
60
#endif
61
62