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