@@ -97,7 +97,7 @@ procedure SHA256_Compress_Scalar(AState, AData: Pointer; ANumBlocks: UInt32);
9797end ;
9898
9999// =============================================================================
100- // SIMD implementations: SSE2 (IA-32); ShaNi, SSE2, SSSE3, AVX2 (x86-64)
100+ // SIMD implementations: SSE2 / SSSE3 (IA-32); ShaNi, SSE2, SSSE3, AVX2 (x86-64)
101101// =============================================================================
102102
103103{ $IFDEF HASHLIB_I386_ASM}
@@ -108,6 +108,12 @@ procedure SHA256_Compress_Sse2(AState, AData: Pointer; ANumBlocks: UInt32;
108108 { $I ..\Include\Simd\SHA256\SHA256CompressSse2_i386.inc}
109109end ;
110110
111+ procedure SHA256_Compress_Ssse3 (AState, AData: Pointer; ANumBlocks: UInt32;
112+ AConstants: Pointer);
113+ { $I ..\Include\Simd\Common\SimdProc4Begin_i386.inc}
114+ { $I ..\Include\Simd\SHA256\SHA256CompressSsse3_i386.inc}
115+ end ;
116+
111117{ $ENDIF HASHLIB_I386_ASM}
112118
113119{ $IFDEF HASHLIB_X86_64_ASM}
@@ -160,6 +166,15 @@ procedure SHA256_Compress_Sse2_Wrap(AState, AData: Pointer; ANumBlocks: UInt32);
160166 SHA256_Compress_Sse2(AState, AData, ANumBlocks, @K256);
161167end ;
162168
169+ { $IFDEF HASHLIB_I386_ASM}
170+
171+ procedure SHA256_Compress_Ssse3_Wrap (AState, AData: Pointer; ANumBlocks: UInt32);
172+ begin
173+ SHA256_Compress_Ssse3(AState, AData, ANumBlocks, @K256);
174+ end ;
175+
176+ { $ENDIF HASHLIB_I386_ASM}
177+
163178{ $ENDIF HASHLIB_X86_SIMD}
164179
165180// =============================================================================
@@ -171,7 +186,11 @@ procedure InitDispatch();
171186 SHA256_Compress := @SHA256_Compress_Scalar;
172187{ $IFDEF HASHLIB_I386_ASM}
173188 case TSimd.GetActiveLevel() of
174- TSimdLevel.SSE2, TSimdLevel.SSSE3:
189+ TSimdLevel.SSSE3:
190+ begin
191+ SHA256_Compress := @SHA256_Compress_Ssse3_Wrap;
192+ end ;
193+ TSimdLevel.SSE2:
175194 begin
176195 SHA256_Compress := @SHA256_Compress_Sse2_Wrap;
177196 end ;
0 commit comments