mirror of
https://github.com/JayDDee/cpuminer-opt.git
synced 2025-09-17 23:44:27 +00:00
71 lines
2.0 KiB
C
71 lines
2.0 KiB
C
#ifndef SCRYPT_CORE_4WAY_H__
|
|
#define SCRYPT_CORE_4WAY_H__
|
|
|
|
#include "simd-utils.h"
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
|
|
#if defined(__AVX512F__) && defined(__AVX512VL__) && defined(__AVX512DQ__) && defined(__AVX512BW__)
|
|
|
|
void scrypt_core_16way( __m512i *X, __m512i *V, const uint32_t N );
|
|
|
|
// Serial SIMD over 4 way parallel
|
|
void scrypt_core_simd128_4way( __m128i *X, __m128i *V, const uint32_t N );
|
|
|
|
// 4 way parallel over serial SIMD
|
|
void scrypt_core_4way_simd128( __m512i *X, __m512i *V, const uint32_t N );
|
|
|
|
#endif
|
|
|
|
#if defined(__AVX2__)
|
|
|
|
void scrypt_core_8way( __m256i *X, __m256i *V, uint32_t N );
|
|
|
|
// 2 way parallel over SIMD128
|
|
void scrypt_core_2way_simd128( __m256i *X, __m256i *V, const uint32_t N );
|
|
|
|
// Double buffered 2 way parallel over SIMD128
|
|
void scrypt_core_2way_simd128_2buf( __m256i *X, __m256i *V, const uint32_t N );
|
|
|
|
// Triplee buffered 2 way parallel over SIMD128
|
|
void scrypt_core_2way_simd128_3buf( __m256i *X, __m256i *V, const uint32_t N );
|
|
|
|
// Serial SIMD128 over 2 way parallel
|
|
void scrypt_core_simd128_2way( uint64_t *X, uint64_t *V, const uint32_t N );
|
|
|
|
// Double buffered simd over parallel
|
|
void scrypt_core_simd128_2way_2buf( uint64_t *X, uint64_t *V, const uint32_t N );
|
|
|
|
// Triple buffered 2 way
|
|
void scrypt_core_simd128_2way_3buf( uint64_t *X, uint64_t *V, const uint32_t N );
|
|
|
|
// Quadruple buffered
|
|
void scrypt_core_simd128_2way_4buf( uint64_t *X, uint64_t *V, const uint32_t N );
|
|
|
|
#endif
|
|
|
|
#if defined(__SSE2__)
|
|
|
|
// Parallel 4 way, 4x memory
|
|
void scrypt_core_4way( __m128i *X, __m128i *V, const uint32_t N );
|
|
|
|
// Linear SIMD 1 way, 1x memory, lowest
|
|
void scrypt_core_simd128( uint32_t *X, uint32_t *V, const uint32_t N );
|
|
|
|
// Double buffered, 2x memory
|
|
void scrypt_core_simd128_2buf( uint32_t *X, uint32_t *V, const uint32_t N );
|
|
|
|
// Triple buffered
|
|
void scrypt_core_simd128_3buf( uint32_t *X, uint32_t *V, const uint32_t N );
|
|
|
|
// Quadruple buffered, 4x memory
|
|
void scrypt_core_simd128_4buf( uint32_t *X, uint32_t *V, const uint32_t N );
|
|
|
|
#endif
|
|
|
|
// For reference only
|
|
void scrypt_core_1way( uint32_t *X, uint32_t *V, const uint32_t N );
|
|
|
|
#endif
|
|
|