]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/intel-ipsec-mb/asm.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / intel-ipsec-mb / asm.h
1 /*******************************************************************************
2 Copyright (c) 2012-2018, Intel Corporation
3
4 Redistribution and use in source and binary forms, with or without
5 modification, are permitted provided that the following conditions are met:
6
7 * Redistributions of source code must retain the above copyright notice,
8 this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright
10 notice, this list of conditions and the following disclaimer in the
11 documentation and/or other materials provided with the distribution.
12 * Neither the name of Intel Corporation nor the names of its contributors
13 may be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 *******************************************************************************/
27
28 /* interface to asm routines */
29
30 #ifndef IMB_ASM_H
31 #define IMB_ASM_H
32
33 #include "intel-ipsec-mb.h"
34
35 /* Define interface to base asm code */
36
37 /* AES-CBC */
38 void aes_cbc_enc_128_x8(AES_ARGS *args, uint64_t len_in_bytes);
39 void aes_cbc_enc_192_x8(AES_ARGS *args, uint64_t len_in_bytes);
40 void aes_cbc_enc_256_x8(AES_ARGS *args, uint64_t len_in_bytes);
41
42 void aes_cbc_dec_128_avx(const void *in, const uint8_t *IV, const void *keys,
43 void *out, uint64_t len_bytes);
44 void aes_cbc_dec_192_avx(const void *in, const uint8_t *IV, const void *keys,
45 void *out, uint64_t len_bytes);
46 void aes_cbc_dec_256_avx(const void *in, const uint8_t *IV, const void *keys,
47 void *out, uint64_t len_bytes);
48
49 void aes_cbc_dec_128_vaes_avx512(const void *in, const uint8_t *IV,
50 const void *keys, void *out,
51 uint64_t len_bytes);
52 void aes_cbc_dec_192_vaes_avx512(const void *in, const uint8_t *IV,
53 const void *keys, void *out,
54 uint64_t len_bytes);
55 void aes_cbc_dec_256_vaes_avx512(const void *in, const uint8_t *IV,
56 const void *keys, void *out,
57 uint64_t len_bytes);
58
59 void aes_cbc_dec_128_sse(const void *in, const uint8_t *IV, const void *keys,
60 void *out, uint64_t len_bytes);
61 void aes_cbc_dec_192_sse(const void *in, const uint8_t *IV, const void *keys,
62 void *out, uint64_t len_bytes);
63 void aes_cbc_dec_256_sse(const void *in, const uint8_t *IV, const void *keys,
64 void *out, uint64_t len_bytes);
65
66 void aes_cbc_dec_128_sse_no_aesni(const void *in, const uint8_t *IV,
67 const void *keys, void *out,
68 uint64_t len_bytes);
69 void aes_cbc_dec_192_sse_no_aesni(const void *in, const uint8_t *IV,
70 const void *keys, void *out,
71 uint64_t len_bytes);
72 void aes_cbc_dec_256_sse_no_aesni(const void *in, const uint8_t *IV,
73 const void *keys, void *out,
74 uint64_t len_bytes);
75
76 /* AES-CTR */
77 void aes_cntr_256_sse(const void *in, const void *IV, const void *keys,
78 void *out, uint64_t len_bytes, uint64_t IV_len);
79 void aes_cntr_192_sse(const void *in, const void *IV, const void *keys,
80 void *out, uint64_t len_bytes, uint64_t IV_len);
81 void aes_cntr_128_sse(const void *in, const void *IV, const void *keys,
82 void *out, uint64_t len_bytes, uint64_t IV_len);
83
84 void aes_cntr_256_sse_no_aesni(const void *in, const void *IV, const void *keys,
85 void *out, uint64_t len_bytes, uint64_t IV_len);
86 void aes_cntr_192_sse_no_aesni(const void *in, const void *IV, const void *keys,
87 void *out, uint64_t len_bytes, uint64_t IV_len);
88 void aes_cntr_128_sse_no_aesni(const void *in, const void *IV, const void *keys,
89 void *out, uint64_t len_bytes, uint64_t IV_len);
90
91
92 void aes_cntr_256_avx(const void *in, const void *IV, const void *keys,
93 void *out, uint64_t len_bytes, uint64_t IV_len);
94 void aes_cntr_192_avx(const void *in, const void *IV, const void *keys,
95 void *out, uint64_t len_bytes, uint64_t IV_len);
96 void aes_cntr_128_avx(const void *in, const void *IV, const void *keys,
97 void *out, uint64_t len_bytes, uint64_t IV_len);
98
99 void aes_cntr_128_submit_vaes_avx512(JOB_AES_HMAC *job);
100 void aes_cntr_192_submit_vaes_avx512(JOB_AES_HMAC *job);
101 void aes_cntr_256_submit_vaes_avx512(JOB_AES_HMAC *job);
102
103 /* AES-CTR-BITLEN */
104 void aes_cntr_bit_256_sse(const void *in, const void *IV, const void *keys,
105 void *out, uint64_t len_bits, uint64_t IV_len);
106 void aes_cntr_bit_192_sse(const void *in, const void *IV, const void *keys,
107 void *out, uint64_t len_bits, uint64_t IV_len);
108 void aes_cntr_bit_128_sse(const void *in, const void *IV, const void *keys,
109 void *out, uint64_t len_bits, uint64_t IV_len);
110
111 void aes_cntr_bit_256_sse_no_aesni(const void *in, const void *IV,
112 const void *keys, void *out,
113 uint64_t len_bits, uint64_t IV_len);
114 void aes_cntr_bit_192_sse_no_aesni(const void *in, const void *IV,
115 const void *keys, void *out,
116 uint64_t len_bits, uint64_t IV_len);
117 void aes_cntr_bit_128_sse_no_aesni(const void *in, const void *IV,
118 const void *keys, void *out,
119 uint64_t len_bits, uint64_t IV_len);
120
121 void aes_cntr_bit_256_avx(const void *in, const void *IV, const void *keys,
122 void *out, uint64_t len_bits, uint64_t IV_len);
123 void aes_cntr_bit_192_avx(const void *in, const void *IV, const void *keys,
124 void *out, uint64_t len_bits, uint64_t IV_len);
125 void aes_cntr_bit_128_avx(const void *in, const void *IV, const void *keys,
126 void *out, uint64_t len_bits, uint64_t IV_len);
127
128 void aes_cntr_bit_128_submit_vaes_avx512(JOB_AES_HMAC *job);
129 void aes_cntr_bit_192_submit_vaes_avx512(JOB_AES_HMAC *job);
130 void aes_cntr_bit_256_submit_vaes_avx512(JOB_AES_HMAC *job);
131
132 /* AES-CCM */
133 JOB_AES_HMAC *aes_cntr_ccm_128_sse(JOB_AES_HMAC *job);
134
135 JOB_AES_HMAC *aes_cntr_ccm_128_sse_no_aesni(JOB_AES_HMAC *job);
136
137 JOB_AES_HMAC *aes_cntr_ccm_128_avx(JOB_AES_HMAC *job);
138
139 /* AES-ECB */
140 void aes_ecb_enc_256_sse(const void *in, const void *keys,
141 void *out, uint64_t len_bytes);
142 void aes_ecb_enc_192_sse(const void *in, const void *keys,
143 void *out, uint64_t len_bytes);
144 void aes_ecb_enc_128_sse(const void *in, const void *keys,
145 void *out, uint64_t len_bytes);
146
147 void aes_ecb_enc_256_sse_no_aesni(const void *in, const void *keys,
148 void *out, uint64_t len_bytes);
149 void aes_ecb_enc_192_sse_no_aesni(const void *in, const void *keys,
150 void *out, uint64_t len_bytes);
151 void aes_ecb_enc_128_sse_no_aesni(const void *in, const void *keys,
152 void *out, uint64_t len_bytes);
153
154
155 void aes_ecb_enc_256_avx(const void *in, const void *keys,
156 void *out, uint64_t len_bytes);
157 void aes_ecb_enc_192_avx(const void *in, const void *keys,
158 void *out, uint64_t len_bytes);
159 void aes_ecb_enc_128_avx(const void *in, const void *keys,
160 void *out, uint64_t len_bytes);
161
162 void aes_ecb_dec_256_sse(const void *in, const void *keys,
163 void *out, uint64_t len_bytes);
164 void aes_ecb_dec_192_sse(const void *in, const void *keys,
165 void *out, uint64_t len_bytes);
166 void aes_ecb_dec_128_sse(const void *in, const void *keys,
167 void *out, uint64_t len_bytes);
168
169 void aes_ecb_dec_256_sse_no_aesni(const void *in, const void *keys,
170 void *out, uint64_t len_bytes);
171 void aes_ecb_dec_192_sse_no_aesni(const void *in, const void *keys,
172 void *out, uint64_t len_bytes);
173 void aes_ecb_dec_128_sse_no_aesni(const void *in, const void *keys,
174 void *out, uint64_t len_bytes);
175
176
177 void aes_ecb_dec_256_avx(const void *in, const void *keys,
178 void *out, uint64_t len_bytes);
179 void aes_ecb_dec_192_avx(const void *in, const void *keys,
180 void *out, uint64_t len_bytes);
181 void aes_ecb_dec_128_avx(const void *in, const void *keys,
182 void *out, uint64_t len_bytes);
183
184 /* AES128-ECBENC */
185 void aes128_ecbenc_x3_sse(const void *in, void *keys,
186 void *out1, void *out2, void *out3);
187 void aes128_ecbenc_x3_sse_no_aesni(const void *in, void *keys,
188 void *out1, void *out2, void *out3);
189 void aes128_ecbenc_x3_avx(const void *in, void *keys,
190 void *out1, void *out2, void *out3);
191
192 /* stitched AES128-CNTR, CRC32 and BIP */
193 JOB_AES_HMAC *submit_job_pon_enc_avx(JOB_AES_HMAC *job);
194 JOB_AES_HMAC *submit_job_pon_dec_avx(JOB_AES_HMAC *job);
195
196 JOB_AES_HMAC *submit_job_pon_enc_sse(JOB_AES_HMAC *job);
197 JOB_AES_HMAC *submit_job_pon_dec_sse(JOB_AES_HMAC *job);
198
199 JOB_AES_HMAC *submit_job_pon_enc_sse_no_aesni(JOB_AES_HMAC *job);
200 JOB_AES_HMAC *submit_job_pon_dec_sse_no_aesni(JOB_AES_HMAC *job);
201
202 JOB_AES_HMAC *submit_job_pon_enc_no_ctr_avx(JOB_AES_HMAC *job);
203 JOB_AES_HMAC *submit_job_pon_dec_no_ctr_avx(JOB_AES_HMAC *job);
204
205 JOB_AES_HMAC *submit_job_pon_enc_no_ctr_sse(JOB_AES_HMAC *job);
206 JOB_AES_HMAC *submit_job_pon_dec_no_ctr_sse(JOB_AES_HMAC *job);
207
208 JOB_AES_HMAC *submit_job_pon_enc_no_ctr_sse_no_aesni(JOB_AES_HMAC *job);
209 JOB_AES_HMAC *submit_job_pon_dec_no_ctr_sse_no_aesni(JOB_AES_HMAC *job);
210 #endif /* IMB_ASM_H */
211
212