xref: /isa-l_crypto/include/sha1_mb_internal.h (revision 3c423071bb43d3f4ca130e894b1a8efe72af8cae)
176c9379fSPablo de Lara /**********************************************************************
276c9379fSPablo de Lara   Copyright(c) 2024 Intel Corporation All rights reserved.
376c9379fSPablo de Lara 
476c9379fSPablo de Lara   Redistribution and use in source and binary forms, with or without
576c9379fSPablo de Lara   modification, are permitted provided that the following conditions
676c9379fSPablo de Lara   are met:
776c9379fSPablo de Lara     * Redistributions of source code must retain the above copyright
876c9379fSPablo de Lara       notice, this list of conditions and the following disclaimer.
976c9379fSPablo de Lara     * Redistributions in binary form must reproduce the above copyright
1076c9379fSPablo de Lara       notice, this list of conditions and the following disclaimer in
1176c9379fSPablo de Lara       the documentation and/or other materials provided with the
1276c9379fSPablo de Lara       distribution.
1376c9379fSPablo de Lara     * Neither the name of Intel Corporation nor the names of its
1476c9379fSPablo de Lara       contributors may be used to endorse or promote products derived
1576c9379fSPablo de Lara       from this software without specific prior written permission.
1676c9379fSPablo de Lara 
1776c9379fSPablo de Lara   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1876c9379fSPablo de Lara   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1976c9379fSPablo de Lara   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2076c9379fSPablo de Lara   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2176c9379fSPablo de Lara   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2276c9379fSPablo de Lara   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2376c9379fSPablo de Lara   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2476c9379fSPablo de Lara   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2576c9379fSPablo de Lara   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2676c9379fSPablo de Lara   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2776c9379fSPablo de Lara   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2876c9379fSPablo de Lara **********************************************************************/
2976c9379fSPablo de Lara 
3076c9379fSPablo de Lara #ifndef _SHA1_MB_INTERNAL_H_
3176c9379fSPablo de Lara #define _SHA1_MB_INTERNAL_H_
3276c9379fSPablo de Lara 
3376c9379fSPablo de Lara /**
3476c9379fSPablo de Lara  *  @file sha1_mb_internal.h
3576c9379fSPablo de Lara  *  @brief Multi-buffer CTX API function prototypes and structures
3676c9379fSPablo de Lara  *
3776c9379fSPablo de Lara  */
3876c9379fSPablo de Lara 
3976c9379fSPablo de Lara #include <stdint.h>
4076c9379fSPablo de Lara #include <string.h>
4176c9379fSPablo de Lara 
4276c9379fSPablo de Lara #include "sha1_mb.h"
4376c9379fSPablo de Lara #include "multi_buffer.h"
4476c9379fSPablo de Lara #include "types.h"
4576c9379fSPablo de Lara 
4676c9379fSPablo de Lara #ifdef __cplusplus
4776c9379fSPablo de Lara extern "C" {
4876c9379fSPablo de Lara #endif
4976c9379fSPablo de Lara 
504d41f26cSPablo de Lara /* Hash Constants and Typedefs */
510106da91SPablo de Lara #define ISAL_SHA1_LOG2_BLOCK_SIZE 6
520106da91SPablo de Lara #define ISAL_SHA1_INITIAL_DIGEST  0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0
530106da91SPablo de Lara #define ISAL_SHA1_X8_LANES        8
544d41f26cSPablo de Lara 
557f87eab4SPablo de Lara /**
567f87eab4SPablo de Lara  * @brief Initialize the SHA1 multi-buffer manager structure.
577f87eab4SPablo de Lara  * @requires SSE4.1 or AVX or AVX2 or AVX512
587f87eab4SPablo de Lara  *
597f87eab4SPablo de Lara  * @param mgr Structure holding context level state info
607f87eab4SPablo de Lara  * @returns void
617f87eab4SPablo de Lara  */
627f87eab4SPablo de Lara void
630106da91SPablo de Lara _sha1_ctx_mgr_init(ISAL_SHA1_HASH_CTX_MGR *mgr);
647f87eab4SPablo de Lara 
657f87eab4SPablo de Lara /**
667f87eab4SPablo de Lara  * @brief  Submit a new SHA1 job to the multi-buffer manager.
677f87eab4SPablo de Lara  * @requires SSE4.1 or AVX or AVX2 or AVX512
687f87eab4SPablo de Lara  *
697f87eab4SPablo de Lara  * @param  mgr Structure holding context level state info
707f87eab4SPablo de Lara  * @param  ctx Structure holding ctx job info
717f87eab4SPablo de Lara  * @param  buffer Pointer to buffer to be processed
727f87eab4SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
737f87eab4SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
747f87eab4SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
757f87eab4SPablo de Lara  */
760106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
770106da91SPablo de Lara _sha1_ctx_mgr_submit(ISAL_SHA1_HASH_CTX_MGR *mgr, ISAL_SHA1_HASH_CTX *ctx, const void *buffer,
788cb7fe78SPablo de Lara                      uint32_t len, ISAL_HASH_CTX_FLAG flags);
797f87eab4SPablo de Lara 
807f87eab4SPablo de Lara /**
817f87eab4SPablo de Lara  * @brief Finish all submitted SHA1 jobs and return when complete.
827f87eab4SPablo de Lara  * @requires SSE4.1 or AVX or AVX2 or AVX512
837f87eab4SPablo de Lara  *
847f87eab4SPablo de Lara  * @param mgr	Structure holding context level state info
857f87eab4SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
867f87eab4SPablo de Lara  */
870106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
880106da91SPablo de Lara _sha1_ctx_mgr_flush(ISAL_SHA1_HASH_CTX_MGR *mgr);
897f87eab4SPablo de Lara 
9076c9379fSPablo de Lara /*******************************************************************
913113c339SPablo de Lara  * Context level API function prototypes
923113c339SPablo de Lara  ******************************************************************/
933113c339SPablo de Lara 
943113c339SPablo de Lara /**
953113c339SPablo de Lara  * @brief Initialize the context level SHA1 multi-buffer manager structure.
963113c339SPablo de Lara  * @requires SSE4.1
973113c339SPablo de Lara  *
983113c339SPablo de Lara  * @param mgr Structure holding context level state info
993113c339SPablo de Lara  * @returns void
1003113c339SPablo de Lara  */
1013113c339SPablo de Lara void
1020106da91SPablo de Lara _sha1_ctx_mgr_init_sse(ISAL_SHA1_HASH_CTX_MGR *mgr);
1033113c339SPablo de Lara 
1043113c339SPablo de Lara /**
1053113c339SPablo de Lara  * @brief  Submit a new SHA1 job to the context level multi-buffer manager.
1063113c339SPablo de Lara  * @requires SSE4.1
1073113c339SPablo de Lara  *
1083113c339SPablo de Lara  * @param  mgr Structure holding context level state info
1093113c339SPablo de Lara  * @param  ctx Structure holding ctx job info
1103113c339SPablo de Lara  * @param  buffer Pointer to buffer to be processed
1113113c339SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
1123113c339SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
1133113c339SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
1143113c339SPablo de Lara  */
1150106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
1160106da91SPablo de Lara _sha1_ctx_mgr_submit_sse(ISAL_SHA1_HASH_CTX_MGR *mgr, ISAL_SHA1_HASH_CTX *ctx, const void *buffer,
1178cb7fe78SPablo de Lara                          uint32_t len, ISAL_HASH_CTX_FLAG flags);
1183113c339SPablo de Lara 
1193113c339SPablo de Lara /**
1203113c339SPablo de Lara  * @brief Finish all submitted SHA1 jobs and return when complete.
1213113c339SPablo de Lara  * @requires SSE4.1
1223113c339SPablo de Lara  *
1233113c339SPablo de Lara  * @param mgr	Structure holding context level state info
1243113c339SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
1253113c339SPablo de Lara  */
1260106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
1270106da91SPablo de Lara _sha1_ctx_mgr_flush_sse(ISAL_SHA1_HASH_CTX_MGR *mgr);
1283113c339SPablo de Lara 
1293113c339SPablo de Lara /**
1303113c339SPablo de Lara  * @brief Initialize the context level SHA1 multi-buffer manager structure.
1313113c339SPablo de Lara  * @requires SSE4.1 and SHANI
1323113c339SPablo de Lara  *
1333113c339SPablo de Lara  * @param mgr Structure holding context level state info
1343113c339SPablo de Lara  * @returns void
1353113c339SPablo de Lara  */
1363113c339SPablo de Lara void
1370106da91SPablo de Lara _sha1_ctx_mgr_init_sse_ni(ISAL_SHA1_HASH_CTX_MGR *mgr);
1383113c339SPablo de Lara 
1393113c339SPablo de Lara /**
1403113c339SPablo de Lara  * @brief  Submit a new SHA1 job to the context level multi-buffer manager.
1413113c339SPablo de Lara  * @requires SSE4.1 and SHANI
1423113c339SPablo de Lara  *
1433113c339SPablo de Lara  * @param  mgr Structure holding context level state info
1443113c339SPablo de Lara  * @param  ctx Structure holding ctx job info
1453113c339SPablo de Lara  * @param  buffer Pointer to buffer to be processed
1463113c339SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
1473113c339SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
1483113c339SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
1493113c339SPablo de Lara  */
1500106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
1510106da91SPablo de Lara _sha1_ctx_mgr_submit_sse_ni(ISAL_SHA1_HASH_CTX_MGR *mgr, ISAL_SHA1_HASH_CTX *ctx,
1528cb7fe78SPablo de Lara                             const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
1533113c339SPablo de Lara 
1543113c339SPablo de Lara /**
1553113c339SPablo de Lara  * @brief Finish all submitted SHA1 jobs and return when complete.
1563113c339SPablo de Lara  * @requires SSE4.1 and SHANI
1573113c339SPablo de Lara  *
1583113c339SPablo de Lara  * @param mgr	Structure holding context level state info
1593113c339SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
1603113c339SPablo de Lara  */
1610106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
1620106da91SPablo de Lara _sha1_ctx_mgr_flush_sse_ni(ISAL_SHA1_HASH_CTX_MGR *mgr);
1633113c339SPablo de Lara 
1643113c339SPablo de Lara /**
1653113c339SPablo de Lara  * @brief Initialize the SHA1 multi-buffer manager structure.
1663113c339SPablo de Lara  * @requires AVX
1673113c339SPablo de Lara  *
1683113c339SPablo de Lara  * @param mgr Structure holding context level state info
1693113c339SPablo de Lara  * @returns void
1703113c339SPablo de Lara  */
1713113c339SPablo de Lara void
1720106da91SPablo de Lara _sha1_ctx_mgr_init_avx(ISAL_SHA1_HASH_CTX_MGR *mgr);
1733113c339SPablo de Lara 
1743113c339SPablo de Lara /**
1753113c339SPablo de Lara  * @brief  Submit a new SHA1 job to the multi-buffer manager.
1763113c339SPablo de Lara  * @requires AVX
1773113c339SPablo de Lara  *
1783113c339SPablo de Lara  * @param  mgr Structure holding context level state info
1793113c339SPablo de Lara  * @param  ctx Structure holding ctx job info
1803113c339SPablo de Lara  * @param  buffer Pointer to buffer to be processed
1813113c339SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
1823113c339SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
1833113c339SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
1843113c339SPablo de Lara  */
1850106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
1860106da91SPablo de Lara _sha1_ctx_mgr_submit_avx(ISAL_SHA1_HASH_CTX_MGR *mgr, ISAL_SHA1_HASH_CTX *ctx, const void *buffer,
1878cb7fe78SPablo de Lara                          uint32_t len, ISAL_HASH_CTX_FLAG flags);
1883113c339SPablo de Lara 
1893113c339SPablo de Lara /**
1903113c339SPablo de Lara  * @brief Finish all submitted SHA1 jobs and return when complete.
1913113c339SPablo de Lara  * @requires AVX
1923113c339SPablo de Lara  *
1933113c339SPablo de Lara  * @param mgr	Structure holding context level state info
1943113c339SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
1953113c339SPablo de Lara  */
1960106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
1970106da91SPablo de Lara _sha1_ctx_mgr_flush_avx(ISAL_SHA1_HASH_CTX_MGR *mgr);
1983113c339SPablo de Lara 
1993113c339SPablo de Lara /**
2003113c339SPablo de Lara  * @brief Initialize the SHA1 multi-buffer manager structure.
2013113c339SPablo de Lara  * @requires AVX2
2023113c339SPablo de Lara  *
2033113c339SPablo de Lara  * @param mgr	Structure holding context level state info
2043113c339SPablo de Lara  * @returns void
2053113c339SPablo de Lara  */
2063113c339SPablo de Lara void
2070106da91SPablo de Lara _sha1_ctx_mgr_init_avx2(ISAL_SHA1_HASH_CTX_MGR *mgr);
2083113c339SPablo de Lara 
2093113c339SPablo de Lara /**
2103113c339SPablo de Lara  * @brief  Submit a new SHA1 job to the multi-buffer manager.
2113113c339SPablo de Lara  * @requires AVX2
2123113c339SPablo de Lara  *
2133113c339SPablo de Lara  * @param  mgr Structure holding context level state info
2143113c339SPablo de Lara  * @param  ctx Structure holding ctx job info
2153113c339SPablo de Lara  * @param  buffer Pointer to buffer to be processed
2163113c339SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
2173113c339SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
2183113c339SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
2193113c339SPablo de Lara  */
2200106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
2210106da91SPablo de Lara _sha1_ctx_mgr_submit_avx2(ISAL_SHA1_HASH_CTX_MGR *mgr, ISAL_SHA1_HASH_CTX *ctx, const void *buffer,
2228cb7fe78SPablo de Lara                           uint32_t len, ISAL_HASH_CTX_FLAG flags);
2233113c339SPablo de Lara 
2243113c339SPablo de Lara /**
2253113c339SPablo de Lara  * @brief Finish all submitted SHA1 jobs and return when complete.
2263113c339SPablo de Lara  * @requires AVX2
2273113c339SPablo de Lara  *
2283113c339SPablo de Lara  * @param mgr	Structure holding context level state info
2293113c339SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
2303113c339SPablo de Lara  */
2310106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
2320106da91SPablo de Lara _sha1_ctx_mgr_flush_avx2(ISAL_SHA1_HASH_CTX_MGR *mgr);
2333113c339SPablo de Lara 
2343113c339SPablo de Lara /**
2353113c339SPablo de Lara  * @brief Initialize the SHA1 multi-buffer manager structure.
2363113c339SPablo de Lara  * @requires AVX512
2373113c339SPablo de Lara  *
2383113c339SPablo de Lara  * @param mgr	Structure holding context level state info
2393113c339SPablo de Lara  * @returns void
2403113c339SPablo de Lara  */
2413113c339SPablo de Lara void
2420106da91SPablo de Lara _sha1_ctx_mgr_init_avx512(ISAL_SHA1_HASH_CTX_MGR *mgr);
2433113c339SPablo de Lara 
2443113c339SPablo de Lara /**
2453113c339SPablo de Lara  * @brief  Submit a new SHA1 job to the multi-buffer manager.
2463113c339SPablo de Lara  * @requires AVX512
2473113c339SPablo de Lara  *
2483113c339SPablo de Lara  * @param  mgr Structure holding context level state info
2493113c339SPablo de Lara  * @param  ctx Structure holding ctx job info
2503113c339SPablo de Lara  * @param  buffer Pointer to buffer to be processed
2513113c339SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
2523113c339SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
2533113c339SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
2543113c339SPablo de Lara  */
2550106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
2560106da91SPablo de Lara _sha1_ctx_mgr_submit_avx512(ISAL_SHA1_HASH_CTX_MGR *mgr, ISAL_SHA1_HASH_CTX *ctx,
2578cb7fe78SPablo de Lara                             const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
2583113c339SPablo de Lara 
2593113c339SPablo de Lara /**
2603113c339SPablo de Lara  * @brief Finish all submitted SHA1 jobs and return when complete.
2613113c339SPablo de Lara  * @requires AVX512
2623113c339SPablo de Lara  *
2633113c339SPablo de Lara  * @param mgr	Structure holding context level state info
2643113c339SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
2653113c339SPablo de Lara  */
2660106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
2670106da91SPablo de Lara _sha1_ctx_mgr_flush_avx512(ISAL_SHA1_HASH_CTX_MGR *mgr);
2683113c339SPablo de Lara 
2693113c339SPablo de Lara /**
2703113c339SPablo de Lara  * @brief Initialize the SHA1 multi-buffer manager structure.
2713113c339SPablo de Lara  * @requires AVX512 and SHANI
2723113c339SPablo de Lara  *
2733113c339SPablo de Lara  * @param mgr	Structure holding context level state info
2743113c339SPablo de Lara  * @returns void
2753113c339SPablo de Lara  */
2763113c339SPablo de Lara void
2770106da91SPablo de Lara _sha1_ctx_mgr_init_avx512_ni(ISAL_SHA1_HASH_CTX_MGR *mgr);
2783113c339SPablo de Lara 
2793113c339SPablo de Lara /**
2803113c339SPablo de Lara  * @brief  Submit a new SHA1 job to the multi-buffer manager.
2813113c339SPablo de Lara  * @requires AVX512 and SHANI
2823113c339SPablo de Lara  *
2833113c339SPablo de Lara  * @param  mgr Structure holding context level state info
2843113c339SPablo de Lara  * @param  ctx Structure holding ctx job info
2853113c339SPablo de Lara  * @param  buffer Pointer to buffer to be processed
2863113c339SPablo de Lara  * @param  len Length of buffer (in bytes) to be processed
2873113c339SPablo de Lara  * @param  flags Input flag specifying job type (first, update, last or entire)
2883113c339SPablo de Lara  * @returns NULL if no jobs complete or pointer to jobs structure.
2893113c339SPablo de Lara  */
2900106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
2910106da91SPablo de Lara _sha1_ctx_mgr_submit_avx512_ni(ISAL_SHA1_HASH_CTX_MGR *mgr, ISAL_SHA1_HASH_CTX *ctx,
2928cb7fe78SPablo de Lara                                const void *buffer, uint32_t len, ISAL_HASH_CTX_FLAG flags);
2933113c339SPablo de Lara 
2943113c339SPablo de Lara /**
2953113c339SPablo de Lara  * @brief Finish all submitted SHA1 jobs and return when complete.
2963113c339SPablo de Lara  * @requires AVX512 and SHANI
2973113c339SPablo de Lara  *
2983113c339SPablo de Lara  * @param mgr	Structure holding context level state info
2993113c339SPablo de Lara  * @returns NULL if no jobs to complete or pointer to jobs structure.
3003113c339SPablo de Lara  */
3010106da91SPablo de Lara ISAL_SHA1_HASH_CTX *
3020106da91SPablo de Lara _sha1_ctx_mgr_flush_avx512_ni(ISAL_SHA1_HASH_CTX_MGR *mgr);
3033113c339SPablo de Lara 
3043113c339SPablo de Lara /*******************************************************************
30576c9379fSPablo de Lara  * Scheduler (internal) level out-of-order function prototypes
30676c9379fSPablo de Lara  ******************************************************************/
30776c9379fSPablo de Lara 
30876c9379fSPablo de Lara void
3090106da91SPablo de Lara _sha1_mb_mgr_init_sse(ISAL_SHA1_MB_JOB_MGR *state);
3100106da91SPablo de Lara ISAL_SHA1_JOB *
3110106da91SPablo de Lara _sha1_mb_mgr_submit_sse(ISAL_SHA1_MB_JOB_MGR *state, ISAL_SHA1_JOB *job);
3120106da91SPablo de Lara ISAL_SHA1_JOB *
3130106da91SPablo de Lara _sha1_mb_mgr_flush_sse(ISAL_SHA1_MB_JOB_MGR *state);
31476c9379fSPablo de Lara 
31576c9379fSPablo de Lara #define _sha1_mb_mgr_init_avx _sha1_mb_mgr_init_sse
3160106da91SPablo de Lara ISAL_SHA1_JOB *
3170106da91SPablo de Lara _sha1_mb_mgr_submit_avx(ISAL_SHA1_MB_JOB_MGR *state, ISAL_SHA1_JOB *job);
3180106da91SPablo de Lara ISAL_SHA1_JOB *
3190106da91SPablo de Lara _sha1_mb_mgr_flush_avx(ISAL_SHA1_MB_JOB_MGR *state);
32076c9379fSPablo de Lara 
32176c9379fSPablo de Lara void
3220106da91SPablo de Lara _sha1_mb_mgr_init_avx2(ISAL_SHA1_MB_JOB_MGR *state);
3230106da91SPablo de Lara ISAL_SHA1_JOB *
3240106da91SPablo de Lara _sha1_mb_mgr_submit_avx2(ISAL_SHA1_MB_JOB_MGR *state, ISAL_SHA1_JOB *job);
3250106da91SPablo de Lara ISAL_SHA1_JOB *
3260106da91SPablo de Lara _sha1_mb_mgr_flush_avx2(ISAL_SHA1_MB_JOB_MGR *state);
32776c9379fSPablo de Lara 
32876c9379fSPablo de Lara void
3290106da91SPablo de Lara _sha1_mb_mgr_init_avx512(ISAL_SHA1_MB_JOB_MGR *state);
3300106da91SPablo de Lara ISAL_SHA1_JOB *
3310106da91SPablo de Lara _sha1_mb_mgr_submit_avx512(ISAL_SHA1_MB_JOB_MGR *state, ISAL_SHA1_JOB *job);
3320106da91SPablo de Lara ISAL_SHA1_JOB *
3330106da91SPablo de Lara _sha1_mb_mgr_flush_avx512(ISAL_SHA1_MB_JOB_MGR *state);
33476c9379fSPablo de Lara 
33576c9379fSPablo de Lara void
3360106da91SPablo de Lara _sha1_mb_mgr_init_sse_ni(ISAL_SHA1_MB_JOB_MGR *state);
3370106da91SPablo de Lara ISAL_SHA1_JOB *
3380106da91SPablo de Lara _sha1_mb_mgr_submit_sse_ni(ISAL_SHA1_MB_JOB_MGR *state, ISAL_SHA1_JOB *job);
3390106da91SPablo de Lara ISAL_SHA1_JOB *
3400106da91SPablo de Lara _sha1_mb_mgr_flush_sse_ni(ISAL_SHA1_MB_JOB_MGR *state);
34176c9379fSPablo de Lara 
34276c9379fSPablo de Lara void
3430106da91SPablo de Lara _sha1_mb_mgr_init_avx512_ni(ISAL_SHA1_MB_JOB_MGR *state);
3440106da91SPablo de Lara ISAL_SHA1_JOB *
3450106da91SPablo de Lara _sha1_mb_mgr_submit_avx512_ni(ISAL_SHA1_MB_JOB_MGR *state, ISAL_SHA1_JOB *job);
3460106da91SPablo de Lara ISAL_SHA1_JOB *
3470106da91SPablo de Lara _sha1_mb_mgr_flush_avx512_ni(ISAL_SHA1_MB_JOB_MGR *state);
34876c9379fSPablo de Lara 
34976c9379fSPablo de Lara #ifdef __cplusplus
35076c9379fSPablo de Lara }
35176c9379fSPablo de Lara #endif
35276c9379fSPablo de Lara 
353*3c423071SPablo de Lara #endif // _SHA1_MB_INTERNAL_H_
354