MCPcopy Create free account
hub / github.com/F-Stack/f-stack / blake2b_compress

Function blake2b_compress

freebsd/contrib/libb2/blake2b.c:287–355  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

285}
286
287static inline int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] )
288{
289 __m128i row1l, row1h;
290 __m128i row2l, row2h;
291 __m128i row3l, row3h;
292 __m128i row4l, row4h;
293 __m128i b0, b1;
294 __m128i t0, t1;
295#if defined(HAVE_SSSE3) && !defined(HAVE_XOP)
296 const __m128i r16 = _mm_setr_epi8( 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9 );
297 const __m128i r24 = _mm_setr_epi8( 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10 );
298#endif
299#if defined(HAVE_SSE4_1)
300 const __m128i m0 = LOADU( block + 00 );
301 const __m128i m1 = LOADU( block + 16 );
302 const __m128i m2 = LOADU( block + 32 );
303 const __m128i m3 = LOADU( block + 48 );
304 const __m128i m4 = LOADU( block + 64 );
305 const __m128i m5 = LOADU( block + 80 );
306 const __m128i m6 = LOADU( block + 96 );
307 const __m128i m7 = LOADU( block + 112 );
308#else
309 const uint64_t m0 = ( ( uint64_t * )block )[ 0];
310 const uint64_t m1 = ( ( uint64_t * )block )[ 1];
311 const uint64_t m2 = ( ( uint64_t * )block )[ 2];
312 const uint64_t m3 = ( ( uint64_t * )block )[ 3];
313 const uint64_t m4 = ( ( uint64_t * )block )[ 4];
314 const uint64_t m5 = ( ( uint64_t * )block )[ 5];
315 const uint64_t m6 = ( ( uint64_t * )block )[ 6];
316 const uint64_t m7 = ( ( uint64_t * )block )[ 7];
317 const uint64_t m8 = ( ( uint64_t * )block )[ 8];
318 const uint64_t m9 = ( ( uint64_t * )block )[ 9];
319 const uint64_t m10 = ( ( uint64_t * )block )[10];
320 const uint64_t m11 = ( ( uint64_t * )block )[11];
321 const uint64_t m12 = ( ( uint64_t * )block )[12];
322 const uint64_t m13 = ( ( uint64_t * )block )[13];
323 const uint64_t m14 = ( ( uint64_t * )block )[14];
324 const uint64_t m15 = ( ( uint64_t * )block )[15];
325#endif
326 row1l = LOADU( &S->h[0] );
327 row1h = LOADU( &S->h[2] );
328 row2l = LOADU( &S->h[4] );
329 row2h = LOADU( &S->h[6] );
330 row3l = LOADU( &blake2b_IV[0] );
331 row3h = LOADU( &blake2b_IV[2] );
332 row4l = _mm_xor_si128( LOADU( &blake2b_IV[4] ), LOADU( &S->t[0] ) );
333 row4h = _mm_xor_si128( LOADU( &blake2b_IV[6] ), LOADU( &S->f[0] ) );
334 ROUND( 0 );
335 ROUND( 1 );
336 ROUND( 2 );
337 ROUND( 3 );
338 ROUND( 4 );
339 ROUND( 5 );
340 ROUND( 6 );
341 ROUND( 7 );
342 ROUND( 8 );
343 ROUND( 9 );
344 ROUND( 10 );

Callers 4

blake2b_updateFunction · 0.70
blake2b_finalFunction · 0.70
blake2b_updateFunction · 0.50
blake2b_finalFunction · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected