Skip to content

Commit

Permalink
Specialize single word UnpackXMM
Browse files Browse the repository at this point in the history
  • Loading branch information
noloader committed Jun 20, 2018
1 parent 5e41d5d commit 1fd8d61
Showing 1 changed file with 28 additions and 2 deletions.
30 changes: 28 additions & 2 deletions cham-simd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,33 @@ inline __m128i UnpackXMM<3>(__m128i a, __m128i b, __m128i c, __m128i d)
template <unsigned int IDX>
inline __m128i UnpackXMM(__m128i v)
{
return UnpackXMM<IDX>(v, v, v, v);
// Should not be instantiated
CRYPTOPP_ASSERT(0);;
return _mm_setzero_si128();
}

template <>
inline __m128i UnpackXMM<0>(__m128i v)
{
return _mm_shuffle_epi8(v, _mm_set_epi8(0,1,2,3, 0,1,2,3, 0,1,2,3, 0,1,2,3));
}

template <>
inline __m128i UnpackXMM<1>(__m128i v)
{
return _mm_shuffle_epi8(v, _mm_set_epi8(4,5,6,7, 4,5,6,7, 4,5,6,7, 4,5,6,7));
}

template <>
inline __m128i UnpackXMM<2>(__m128i v)
{
return _mm_shuffle_epi8(v, _mm_set_epi8(8,9,10,11, 8,9,10,11, 8,9,10,11, 8,9,10,11));
}

template <>
inline __m128i UnpackXMM<3>(__m128i v)
{
return _mm_shuffle_epi8(v, _mm_set_epi8(12,13,14,15, 12,13,14,15, 12,13,14,15, 12,13,14,15));
}

template <unsigned int IDX>
Expand All @@ -133,7 +159,7 @@ inline __m128i RepackXMM(__m128i a, __m128i b, __m128i c, __m128i d)
template <unsigned int IDX>
inline __m128i RepackXMM(__m128i v)
{
return RepackXMM<IDX>(v, v, v, v);
return UnpackXMM<IDX>(v);
}

inline void GCC_NO_UBSAN CHAM128_Enc_Block(__m128i &block0,
Expand Down

0 comments on commit 1fd8d61

Please sign in to comment.