Changeset View
Changeset View
Standalone View
Standalone View
src/crypto/sha256_sse41.cpp
Show First 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | namespace { | ||||
inline void Write4(uint8_t *out, int offset, __m128i v) { | inline void Write4(uint8_t *out, int offset, __m128i v) { | ||||
v = _mm_shuffle_epi8(v, _mm_set_epi32(0x0C0D0E0FUL, 0x08090A0BUL, | v = _mm_shuffle_epi8(v, _mm_set_epi32(0x0C0D0E0FUL, 0x08090A0BUL, | ||||
0x04050607UL, 0x00010203UL)); | 0x04050607UL, 0x00010203UL)); | ||||
WriteLE32(out + 0 + offset, _mm_extract_epi32(v, 3)); | WriteLE32(out + 0 + offset, _mm_extract_epi32(v, 3)); | ||||
WriteLE32(out + 32 + offset, _mm_extract_epi32(v, 2)); | WriteLE32(out + 32 + offset, _mm_extract_epi32(v, 2)); | ||||
WriteLE32(out + 64 + offset, _mm_extract_epi32(v, 1)); | WriteLE32(out + 64 + offset, _mm_extract_epi32(v, 1)); | ||||
WriteLE32(out + 96 + offset, _mm_extract_epi32(v, 0)); | WriteLE32(out + 96 + offset, _mm_extract_epi32(v, 0)); | ||||
} | } | ||||
} | } // namespace | ||||
void Transform_4way(uint8_t *out, const uint8_t *in) { | void Transform_4way(uint8_t *out, const uint8_t *in) { | ||||
// Transform 1 | // Transform 1 | ||||
__m128i a = K(0x6a09e667ul); | __m128i a = K(0x6a09e667ul); | ||||
__m128i b = K(0xbb67ae85ul); | __m128i b = K(0xbb67ae85ul); | ||||
__m128i c = K(0x3c6ef372ul); | __m128i c = K(0x3c6ef372ul); | ||||
__m128i d = K(0xa54ff53aul); | __m128i d = K(0xa54ff53aul); | ||||
__m128i e = K(0x510e527ful); | __m128i e = K(0x510e527ful); | ||||
▲ Show 20 Lines • Show All 331 Lines • ▼ Show 20 Lines | void Transform_4way(uint8_t *out, const uint8_t *in) { | ||||
Write4(out, 4, Add(b, K(0xbb67ae85ul))); | Write4(out, 4, Add(b, K(0xbb67ae85ul))); | ||||
Write4(out, 8, Add(c, K(0x3c6ef372ul))); | Write4(out, 8, Add(c, K(0x3c6ef372ul))); | ||||
Write4(out, 12, Add(d, K(0xa54ff53aul))); | Write4(out, 12, Add(d, K(0xa54ff53aul))); | ||||
Write4(out, 16, Add(e, K(0x510e527ful))); | Write4(out, 16, Add(e, K(0x510e527ful))); | ||||
Write4(out, 20, Add(f, K(0x9b05688cul))); | Write4(out, 20, Add(f, K(0x9b05688cul))); | ||||
Write4(out, 24, Add(g, K(0x1f83d9abul))); | Write4(out, 24, Add(g, K(0x1f83d9abul))); | ||||
Write4(out, 28, Add(h, K(0x5be0cd19ul))); | Write4(out, 28, Add(h, K(0x5be0cd19ul))); | ||||
} | } | ||||
} | } // namespace sha256d64_sse41 | ||||
#endif | #endif |