xref: /isa-l_crypto/include/sha256_mb_internal.h (revision bc903ec10e5f6c9ca2afc637ff7065c046f4ee04)
13c423071SPablo de Lara /**********************************************************************
23c423071SPablo de Lara   Copyright(c) 2024 Intel Corporation All rights reserved.
33c423071SPablo de Lara 
43c423071SPablo de Lara   Redistribution and use in source and binary forms, with or without
53c423071SPablo de Lara   modification, are permitted provided that the following conditions
63c423071SPablo de Lara   are met:
73c423071SPablo de Lara     * Redistributions of source code must retain the above copyright
83c423071SPablo de Lara       notice, this list of conditions and the following disclaimer.
93c423071SPablo de Lara     * Redistributions in binary form must reproduce the above copyright
103c423071SPablo de Lara       notice, this list of conditions and the following disclaimer in
113c423071SPablo de Lara       the documentation and/or other materials provided with the
123c423071SPablo de Lara       distribution.
133c423071SPablo de Lara     * Neither the name of Intel Corporation nor the names of its
143c423071SPablo de Lara       contributors may be used to endorse or promote products derived
153c423071SPablo de Lara       from this software without specific prior written permission.
163c423071SPablo de Lara 
173c423071SPablo de Lara   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
183c423071SPablo de Lara   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
193c423071SPablo de Lara   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
203c423071SPablo de Lara   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
213c423071SPablo de Lara   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
223c423071SPablo de Lara   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
233c423071SPablo de Lara   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
243c423071SPablo de Lara   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
253c423071SPablo de Lara   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
263c423071SPablo de Lara   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
273c423071SPablo de Lara   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
283c423071SPablo de Lara **********************************************************************/
293c423071SPablo de Lara 
303c423071SPablo de Lara #ifndef _SHA256_MB_INTERNAL_H_
313c423071SPablo de Lara #define _SHA256_MB_INTERNAL_H_
323c423071SPablo de Lara 
333c423071SPablo de Lara /**
343c423071SPablo de Lara  *  @file sha256_mb_internal.h
353c423071SPablo de Lara  *  @brief Multi-buffer CTX API function prototypes and structures
363c423071SPablo de Lara  *
373c423071SPablo de Lara  */
383c423071SPablo de Lara 
393c423071SPablo de Lara #include <stdint.h>
403c423071SPablo de Lara #include <string.h>
413c423071SPablo de Lara 
423c423071SPablo de Lara #include "sha256_mb.h"
433c423071SPablo de Lara #include "multi_buffer.h"
443c423071SPablo de Lara #include "types.h"
453c423071SPablo de Lara 
463c423071SPablo de Lara #ifdef __cplusplus
473c423071SPablo de Lara extern "C" {
483c423071SPablo de Lara #endif
493c423071SPablo de Lara 
500a437795SPablo de Lara #define ISAL_SHA256_X8_LANES        8
510a437795SPablo de Lara #define ISAL_SHA256_LOG2_BLOCK_SIZE 6
520a437795SPablo de Lara #define ISAL_SHA256_INITIAL_DIGEST                                                                 \
53ae9fc3e1SPablo de Lara         0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab,        \
54ae9fc3e1SPablo de Lara                 0x5be0cd19
55ae9fc3e1SPablo de Lara 
56*bc903ec1SPablo de Lara /**
57*bc903ec1SPablo de Lara  * @brief Initialize the SHA256 multi-buffer manager structure.
58*bc903ec1SPablo de Lara  * @requires SSE4.1 or AVX or AVX2
59*bc903ec1SPablo de Lara  *
60*bc903ec1SPablo de Lara  * @param mgr	Structure holding context level state info
61*bc903ec1SPablo de Lara  * @returns void
62*bc903ec1SPablo de Lara  */
63*bc903ec1SPablo de Lara void
64*bc903ec1SPablo de Lara _sha256_ctx_mgr_init(ISAL_SHA256_HASH_CTX_MGR *mgr);
65*bc903ec1SPablo de Lara 
66*bc903ec1SPablo de Lara /**
67*bc903ec1SPablo de Lara  * @brief  Submit a new SHA256 job to the multi-buffer manager.
68*bc903ec1SPablo de Lara  * @requires SSE4.1 or AVX or AVX2
69*bc903ec1SPablo de Lara  *
70*bc903ec1SPablo de Lara  * @param  mgr Structure holding context level state info
71*bc903ec1SPablo de Lara  * @param  ctx Structure holding ctx job info
72*bc903ec1SPablo de Lara  * @param  buffer Pointer to buffer to be processed
73*bc903ec1SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
74*bc903ec1SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
75*bc903ec1SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
76*bc903ec1SPablo de Lara  */
77*bc903ec1SPablo de Lara ISAL_SHA256_HASH_CTX *
78*bc903ec1SPablo de Lara _sha256_ctx_mgr_submit(ISAL_SHA256_HASH_CTX_MGR *mgr, ISAL_SHA256_HASH_CTX *ctx, const void *buffer,
79*bc903ec1SPablo de Lara                        uint32_t len, ISAL_HASH_CTX_FLAG flags);
80*bc903ec1SPablo de Lara 
81*bc903ec1SPablo de Lara /**
82*bc903ec1SPablo de Lara  * @brief Finish all submitted SHA256 jobs and return when complete.
83*bc903ec1SPablo de Lara  * @requires SSE4.1 or AVX or AVX2
84*bc903ec1SPablo de Lara  *
85*bc903ec1SPablo de Lara  * @param mgr	Structure holding context level state info
86*bc903ec1SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
87*bc903ec1SPablo de Lara  */
88*bc903ec1SPablo de Lara ISAL_SHA256_HASH_CTX *
89*bc903ec1SPablo de Lara _sha256_ctx_mgr_flush(ISAL_SHA256_HASH_CTX_MGR *mgr);
90*bc903ec1SPablo de Lara 
913c423071SPablo de Lara /*******************************************************************
922fb85107SPablo de Lara  * CTX level API function prototypes
932fb85107SPablo de Lara  ******************************************************************/
942fb85107SPablo de Lara 
952fb85107SPablo de Lara /**
962fb85107SPablo de Lara  * @brief Initialize the context level SHA256 multi-buffer manager structure.
972fb85107SPablo de Lara  * @requires SSE4.1
982fb85107SPablo de Lara  *
992fb85107SPablo de Lara  * @param mgr Structure holding context level state info
1002fb85107SPablo de Lara  * @returns void
1012fb85107SPablo de Lara  */
1022fb85107SPablo de Lara void
1030a437795SPablo de Lara _sha256_ctx_mgr_init_sse(ISAL_SHA256_HASH_CTX_MGR *mgr);
1042fb85107SPablo de Lara 
1052fb85107SPablo de Lara /**
1062fb85107SPablo de Lara  * @brief  Submit a new SHA256 job to the context level multi-buffer manager.
1072fb85107SPablo de Lara  * @requires SSE4.1
1082fb85107SPablo de Lara  *
1092fb85107SPablo de Lara  * @param  mgr Structure holding context level state info
1102fb85107SPablo de Lara  * @param  ctx Structure holding ctx job info
1112fb85107SPablo de Lara  * @param  buffer Pointer to buffer to be processed
1122fb85107SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
1132fb85107SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
1142fb85107SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
1152fb85107SPablo de Lara  */
1160a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
1170a437795SPablo de Lara _sha256_ctx_mgr_submit_sse(ISAL_SHA256_HASH_CTX_MGR *mgr, ISAL_SHA256_HASH_CTX *ctx,
1180a437795SPablo de Lara                            const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
1192fb85107SPablo de Lara 
1202fb85107SPablo de Lara /**
1212fb85107SPablo de Lara  * @brief Finish all submitted SHA256 jobs and return when complete.
1222fb85107SPablo de Lara  * @requires SSE4.1
1232fb85107SPablo de Lara  *
1242fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
1252fb85107SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
1262fb85107SPablo de Lara  */
1270a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
1280a437795SPablo de Lara _sha256_ctx_mgr_flush_sse(ISAL_SHA256_HASH_CTX_MGR *mgr);
1292fb85107SPablo de Lara 
1302fb85107SPablo de Lara /**
1312fb85107SPablo de Lara  * @brief Initialize the context level SHA256 multi-buffer manager structure.
1322fb85107SPablo de Lara  * @requires SSE4.1 and SHANI
1332fb85107SPablo de Lara  *
1342fb85107SPablo de Lara  * @param mgr Structure holding context level state info
1352fb85107SPablo de Lara  * @returns void
1362fb85107SPablo de Lara  */
1372fb85107SPablo de Lara void
1380a437795SPablo de Lara _sha256_ctx_mgr_init_sse_ni(ISAL_SHA256_HASH_CTX_MGR *mgr);
1392fb85107SPablo de Lara 
1402fb85107SPablo de Lara /**
1412fb85107SPablo de Lara  * @brief  Submit a new SHA256 job to the context level multi-buffer manager.
1422fb85107SPablo de Lara  * @requires SSE4.1 and SHANI
1432fb85107SPablo de Lara  *
1442fb85107SPablo de Lara  * @param  mgr Structure holding context level state info
1452fb85107SPablo de Lara  * @param  ctx Structure holding ctx job info
1462fb85107SPablo de Lara  * @param  buffer Pointer to buffer to be processed
1472fb85107SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
1482fb85107SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
1492fb85107SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
1502fb85107SPablo de Lara  */
1510a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
1520a437795SPablo de Lara _sha256_ctx_mgr_submit_sse_ni(ISAL_SHA256_HASH_CTX_MGR *mgr, ISAL_SHA256_HASH_CTX *ctx,
1530a437795SPablo de Lara                               const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
1542fb85107SPablo de Lara 
1552fb85107SPablo de Lara /**
1562fb85107SPablo de Lara  * @brief Finish all submitted SHA256 jobs and return when complete.
1572fb85107SPablo de Lara  * @requires SSE4.1 and SHANI
1582fb85107SPablo de Lara  *
1592fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
1602fb85107SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
1612fb85107SPablo de Lara  */
1620a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
1630a437795SPablo de Lara _sha256_ctx_mgr_flush_sse_ni(ISAL_SHA256_HASH_CTX_MGR *mgr);
1642fb85107SPablo de Lara 
1652fb85107SPablo de Lara /**
1662fb85107SPablo de Lara  * @brief Initialize the SHA256 multi-buffer manager structure.
1672fb85107SPablo de Lara  * @requires AVX
1682fb85107SPablo de Lara  *
1692fb85107SPablo de Lara  * @param mgr Structure holding context level state info
1702fb85107SPablo de Lara  * @returns void
1712fb85107SPablo de Lara  */
1722fb85107SPablo de Lara void
1730a437795SPablo de Lara _sha256_ctx_mgr_init_avx(ISAL_SHA256_HASH_CTX_MGR *mgr);
1742fb85107SPablo de Lara 
1752fb85107SPablo de Lara /**
1762fb85107SPablo de Lara  * @brief  Submit a new SHA256 job to the multi-buffer manager.
1772fb85107SPablo de Lara  * @requires AVX
1782fb85107SPablo de Lara  *
1792fb85107SPablo de Lara  * @param  mgr Structure holding context level state info
1802fb85107SPablo de Lara  * @param  ctx Structure holding ctx job info
1812fb85107SPablo de Lara  * @param  buffer Pointer to buffer to be processed
1822fb85107SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
1832fb85107SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
1842fb85107SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
1852fb85107SPablo de Lara  */
1860a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
1870a437795SPablo de Lara _sha256_ctx_mgr_submit_avx(ISAL_SHA256_HASH_CTX_MGR *mgr, ISAL_SHA256_HASH_CTX *ctx,
1880a437795SPablo de Lara                            const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
1892fb85107SPablo de Lara 
1902fb85107SPablo de Lara /**
1912fb85107SPablo de Lara  * @brief Finish all submitted SHA256 jobs and return when complete.
1922fb85107SPablo de Lara  * @requires AVX
1932fb85107SPablo de Lara  *
1942fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
1952fb85107SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
1962fb85107SPablo de Lara  */
1970a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
1980a437795SPablo de Lara _sha256_ctx_mgr_flush_avx(ISAL_SHA256_HASH_CTX_MGR *mgr);
1992fb85107SPablo de Lara 
2002fb85107SPablo de Lara /**
2012fb85107SPablo de Lara  * @brief Initialize the SHA256 multi-buffer manager structure.
2022fb85107SPablo de Lara  * @requires AVX2
2032fb85107SPablo de Lara  *
2042fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
2052fb85107SPablo de Lara  * @returns void
2062fb85107SPablo de Lara  */
2072fb85107SPablo de Lara void
2080a437795SPablo de Lara _sha256_ctx_mgr_init_avx2(ISAL_SHA256_HASH_CTX_MGR *mgr);
2092fb85107SPablo de Lara 
2102fb85107SPablo de Lara /**
2112fb85107SPablo de Lara  * @brief  Submit a new SHA256 job to the multi-buffer manager.
2122fb85107SPablo de Lara  * @requires AVX2
2132fb85107SPablo de Lara  *
2142fb85107SPablo de Lara  * @param  mgr Structure holding context level state info
2152fb85107SPablo de Lara  * @param  ctx Structure holding ctx job info
2162fb85107SPablo de Lara  * @param  buffer Pointer to buffer to be processed
2172fb85107SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
2182fb85107SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
2192fb85107SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
2202fb85107SPablo de Lara  */
2210a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
2220a437795SPablo de Lara _sha256_ctx_mgr_submit_avx2(ISAL_SHA256_HASH_CTX_MGR *mgr, ISAL_SHA256_HASH_CTX *ctx,
2230a437795SPablo de Lara                             const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
2242fb85107SPablo de Lara 
2252fb85107SPablo de Lara /**
2262fb85107SPablo de Lara  * @brief Finish all submitted SHA256 jobs and return when complete.
2272fb85107SPablo de Lara  * @requires AVX2
2282fb85107SPablo de Lara  *
2292fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
2302fb85107SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
2312fb85107SPablo de Lara  */
2320a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
2330a437795SPablo de Lara _sha256_ctx_mgr_flush_avx2(ISAL_SHA256_HASH_CTX_MGR *mgr);
2342fb85107SPablo de Lara 
2352fb85107SPablo de Lara /**
2362fb85107SPablo de Lara  * @brief Initialize the SHA256 multi-buffer manager structure.
2372fb85107SPablo de Lara  * @requires AVX512
2382fb85107SPablo de Lara  *
2392fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
2402fb85107SPablo de Lara  * @returns void
2412fb85107SPablo de Lara  */
2422fb85107SPablo de Lara void
2430a437795SPablo de Lara _sha256_ctx_mgr_init_avx512(ISAL_SHA256_HASH_CTX_MGR *mgr);
2442fb85107SPablo de Lara 
2452fb85107SPablo de Lara /**
2462fb85107SPablo de Lara  * @brief  Submit a new SHA256 job to the multi-buffer manager.
2472fb85107SPablo de Lara  * @requires AVX512
2482fb85107SPablo de Lara  *
2492fb85107SPablo de Lara  * @param  mgr Structure holding context level state info
2502fb85107SPablo de Lara  * @param  ctx Structure holding ctx job info
2512fb85107SPablo de Lara  * @param  buffer Pointer to buffer to be processed
2522fb85107SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
2532fb85107SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
2542fb85107SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
2552fb85107SPablo de Lara  */
2560a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
2570a437795SPablo de Lara _sha256_ctx_mgr_submit_avx512(ISAL_SHA256_HASH_CTX_MGR *mgr, ISAL_SHA256_HASH_CTX *ctx,
2580a437795SPablo de Lara                               const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
2592fb85107SPablo de Lara 
2602fb85107SPablo de Lara /**
2612fb85107SPablo de Lara  * @brief Finish all submitted SHA256 jobs and return when complete.
2622fb85107SPablo de Lara  * @requires AVX512
2632fb85107SPablo de Lara  *
2642fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
2652fb85107SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
2662fb85107SPablo de Lara  */
2670a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
2680a437795SPablo de Lara _sha256_ctx_mgr_flush_avx512(ISAL_SHA256_HASH_CTX_MGR *mgr);
2692fb85107SPablo de Lara 
2702fb85107SPablo de Lara /**
2712fb85107SPablo de Lara  * @brief Initialize the SHA256 multi-buffer manager structure.
2722fb85107SPablo de Lara  * @requires AVX512 and SHANI
2732fb85107SPablo de Lara  *
2742fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
2752fb85107SPablo de Lara  * @returns void
2762fb85107SPablo de Lara  */
2772fb85107SPablo de Lara void
2780a437795SPablo de Lara _sha256_ctx_mgr_init_avx512_ni(ISAL_SHA256_HASH_CTX_MGR *mgr);
2792fb85107SPablo de Lara 
2802fb85107SPablo de Lara /**
2812fb85107SPablo de Lara  * @brief  Submit a new SHA256 job to the multi-buffer manager.
2822fb85107SPablo de Lara  * @requires AVX512 and SHANI
2832fb85107SPablo de Lara  *
2842fb85107SPablo de Lara  * @param  mgr Structure holding context level state info
2852fb85107SPablo de Lara  * @param  ctx Structure holding ctx job info
2862fb85107SPablo de Lara  * @param  buffer Pointer to buffer to be processed
2872fb85107SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
2882fb85107SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
2892fb85107SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
2902fb85107SPablo de Lara  */
2910a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
2920a437795SPablo de Lara _sha256_ctx_mgr_submit_avx512_ni(ISAL_SHA256_HASH_CTX_MGR *mgr, ISAL_SHA256_HASH_CTX *ctx,
2930a437795SPablo de Lara                                  const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
2942fb85107SPablo de Lara 
2952fb85107SPablo de Lara /**
2962fb85107SPablo de Lara  * @brief Finish all submitted SHA256 jobs and return when complete.
2972fb85107SPablo de Lara  * @requires AVX512 and SHANI
2982fb85107SPablo de Lara  *
2992fb85107SPablo de Lara  * @param mgr	Structure holding context level state info
3002fb85107SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
3012fb85107SPablo de Lara  */
3020a437795SPablo de Lara ISAL_SHA256_HASH_CTX *
3030a437795SPablo de Lara _sha256_ctx_mgr_flush_avx512_ni(ISAL_SHA256_HASH_CTX_MGR *mgr);
3042fb85107SPablo de Lara 
3052fb85107SPablo de Lara /*******************************************************************
3063c423071SPablo de Lara  * Scheduler (internal) level out-of-order function prototypes
3073c423071SPablo de Lara  ******************************************************************/
3083c423071SPablo de Lara void
3090a437795SPablo de Lara _sha256_mb_mgr_init_sse(ISAL_SHA256_MB_JOB_MGR *state);
3100a437795SPablo de Lara ISAL_SHA256_JOB *
3110a437795SPablo de Lara _sha256_mb_mgr_submit_sse(ISAL_SHA256_MB_JOB_MGR *state, ISAL_SHA256_JOB *job);
3120a437795SPablo de Lara ISAL_SHA256_JOB *
3130a437795SPablo de Lara _sha256_mb_mgr_flush_sse(ISAL_SHA256_MB_JOB_MGR *state);
3143c423071SPablo de Lara 
3153c423071SPablo de Lara #define _sha256_mb_mgr_init_avx _sha256_mb_mgr_init_sse
3160a437795SPablo de Lara ISAL_SHA256_JOB *
3170a437795SPablo de Lara _sha256_mb_mgr_submit_avx(ISAL_SHA256_MB_JOB_MGR *state, ISAL_SHA256_JOB *job);
3180a437795SPablo de Lara ISAL_SHA256_JOB *
3190a437795SPablo de Lara _sha256_mb_mgr_flush_avx(ISAL_SHA256_MB_JOB_MGR *state);
3203c423071SPablo de Lara 
3213c423071SPablo de Lara void
3220a437795SPablo de Lara _sha256_mb_mgr_init_avx2(ISAL_SHA256_MB_JOB_MGR *state);
3230a437795SPablo de Lara ISAL_SHA256_JOB *
3240a437795SPablo de Lara _sha256_mb_mgr_submit_avx2(ISAL_SHA256_MB_JOB_MGR *state, ISAL_SHA256_JOB *job);
3250a437795SPablo de Lara ISAL_SHA256_JOB *
3260a437795SPablo de Lara _sha256_mb_mgr_flush_avx2(ISAL_SHA256_MB_JOB_MGR *state);
3273c423071SPablo de Lara 
3283c423071SPablo de Lara void
3290a437795SPablo de Lara _sha256_mb_mgr_init_avx512(ISAL_SHA256_MB_JOB_MGR *state);
3300a437795SPablo de Lara ISAL_SHA256_JOB *
3310a437795SPablo de Lara _sha256_mb_mgr_submit_avx512(ISAL_SHA256_MB_JOB_MGR *state, ISAL_SHA256_JOB *job);
3320a437795SPablo de Lara ISAL_SHA256_JOB *
3330a437795SPablo de Lara _sha256_mb_mgr_flush_avx512(ISAL_SHA256_MB_JOB_MGR *state);
3343c423071SPablo de Lara 
3353c423071SPablo de Lara void
3360a437795SPablo de Lara _sha256_mb_mgr_init_sse_ni(ISAL_SHA256_MB_JOB_MGR *state);
3370a437795SPablo de Lara ISAL_SHA256_JOB *
3380a437795SPablo de Lara _sha256_mb_mgr_submit_sse_ni(ISAL_SHA256_MB_JOB_MGR *state, ISAL_SHA256_JOB *job);
3390a437795SPablo de Lara ISAL_SHA256_JOB *
3400a437795SPablo de Lara _sha256_mb_mgr_flush_sse_ni(ISAL_SHA256_MB_JOB_MGR *state);
3413c423071SPablo de Lara 
3423c423071SPablo de Lara void
3430a437795SPablo de Lara _sha256_mb_mgr_init_avx512_ni(ISAL_SHA256_MB_JOB_MGR *state);
3440a437795SPablo de Lara ISAL_SHA256_JOB *
3450a437795SPablo de Lara _sha256_mb_mgr_submit_avx512_ni(ISAL_SHA256_MB_JOB_MGR *state, ISAL_SHA256_JOB *job);
3460a437795SPablo de Lara ISAL_SHA256_JOB *
3470a437795SPablo de Lara _sha256_mb_mgr_flush_avx512_ni(ISAL_SHA256_MB_JOB_MGR *state);
3483c423071SPablo de Lara 
3493c423071SPablo de Lara #ifdef __cplusplus
3503c423071SPablo de Lara }
3513c423071SPablo de Lara #endif
3523c423071SPablo de Lara 
3533c423071SPablo de Lara #endif // _SHA256_MB_INTERNAL_H_
354