ReactOS 0.4.17-dev-1005-g171e1de
xtsaes_definitions.h File Reference

Go to the source code of this file.

Macros

#define XTS_MUL_ALPHA_old(_in, _res)
 
#define XTS_MUL_ALPHA(_in, _res)
 
#define XTS_MUL_ALPHA_ZMM_old(_in, _res)
 
#define XTS_MUL_ALPHA2(_in, _res)
 
#define XTS_MUL_ALPHA4(_in, _res)
 
#define XTS_MUL_ALPHA5(_in, _res)
 
#define XTS_MUL_ALPHA8_YMM(_in, _res)
 
#define XTS_MUL_ALPHA16_YMM(_in, _res)
 
#define XTS_MUL_ALPHA8_ZMM(_in, _res)
 
#define XTS_MUL_ALPHA16_ZMM(_in, _res)
 
#define XTS_MUL_ALPHA_Scalar(_inout_low_u64, _inout_high_u64)
 

Macro Definition Documentation

◆ XTS_MUL_ALPHA

#define XTS_MUL_ALPHA (   _in,
  _res 
)
Value:
{\
__m128i _t1, _t2;\
\
_t1 = _mm_slli_epi32( _in, 1 ); \
_t2 = _mm_srai_epi32( _in, 31); \
_t2 = _mm_shuffle_epi32( _t2, _MM_SHUFFLE( 2, 1, 0, 3 ) ); \
_t2 = _mm_and_si128( _t2, XTS_ALPHA_MASK ); \
_res = _mm_xor_si128( _t1, _t2 ); \
}
__m128i _mm_xor_si128(__m128i a, __m128i b)
Definition: emmintrin.h:1345
__m128i _mm_slli_epi32(__m128i a, int count)
Definition: emmintrin.h:1370
__m128i _mm_srai_epi32(__m128i a, int count)
Definition: emmintrin.h:1400
__m128i _mm_and_si128(__m128i a, __m128i b)
Definition: emmintrin.h:1330
#define _mm_shuffle_epi32(a, imm)
Definition: emmintrin.h:1793
#define _MM_SHUFFLE(fp3, fp2, fp1, fp0)
Definition: xmmintrin.h:89

Definition at line 41 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA16_YMM

#define XTS_MUL_ALPHA16_YMM (   _in,
  _res 
)
Value:
{\
__m256i _t2;\
\
_t2 = _mm256_srli_si256( _in, 14 ); /* AVX2 */ \
_res = _mm256_slli_si256( _in, 2 ); \
_t2 = _mm256_clmulepi64_epi128( _t2, XTS_ALPHA_MULTIPLIER_Ymm, 0x00 ); \
_res = _mm256_xor_si256( _res, _t2 ); \
}

Definition at line 136 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA16_ZMM

#define XTS_MUL_ALPHA16_ZMM (   _in,
  _res 
)
Value:
{\
__m512i _t2; \
\
_t2 = _mm512_bsrli_epi128( _in, 14 ); \
_res = _mm512_bslli_epi128( _in, 2 ); \
_t2 = _mm512_clmulepi64_epi128( _t2, XTS_ALPHA_MULTIPLIER_Zmm, 0x00 ); \
_res = _mm512_xor_si512( _res, _t2 ); \
}

Definition at line 157 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA2

#define XTS_MUL_ALPHA2 (   _in,
  _res 
)
Value:
{\
__m128i _t1, _t2;\
\
_t1 = _mm_slli_epi32( _in, 2 ); \
_t2 = _mm_srli_epi32( _in, 30); \
_t1 = _mm_xor_si128( _t1, _mm_slli_si128( _t2, 4 )); \
_t2 = _mm_srli_si128( _t2, 12 ); \
_t2 = _mm_xor_si128( _mm_xor_si128( _mm_xor_si128( _mm_slli_epi32( _t2, 7 ), _mm_slli_epi32( _t2, 2 ) ), _mm_slli_epi32( _t2, 1 )), _t2 ); \
_res = _mm_xor_si128( _t1, _t2 ); \
}
__m128i _mm_slli_si128(__m128i a, int i)
Definition: emmintrin.h:1354
__m128i _mm_srli_si128(__m128i a, int imm)
Definition: emmintrin.h:1414
__m128i _mm_srli_epi32(__m128i a, int count)
Definition: emmintrin.h:1430

Definition at line 73 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA4

#define XTS_MUL_ALPHA4 (   _in,
  _res 
)
Value:
{\
__m128i _t1, _t2;\
\
_t1 = _mm_slli_epi32( _in, 4 ); \
_t2 = _mm_srli_epi32( _in, 28); \
_t1 = _mm_xor_si128( _t1, _mm_slli_si128( _t2, 4 )); \
_t2 = _mm_srli_si128( _t2, 12 ); \
_t2 = _mm_xor_si128( _mm_xor_si128( _mm_xor_si128( _mm_slli_epi32( _t2, 7 ), _mm_slli_epi32( _t2, 2 ) ), _mm_slli_epi32( _t2, 1 )), _t2 ); \
_res = _mm_xor_si128( _t1, _t2 ); \
}

Definition at line 92 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA5

#define XTS_MUL_ALPHA5 (   _in,
  _res 
)
Value:
{\
__m128i _t1, _t2;\
\
_t1 = _mm_slli_epi32( _in, 5 ); \
_t2 = _mm_srli_epi32( _in, 27); \
_t1 = _mm_xor_si128( _t1, _mm_slli_si128( _t2, 4 )); \
_t2 = _mm_srli_si128( _t2, 12 ); \
_t2 = _mm_xor_si128( _mm_xor_si128( _mm_xor_si128( _mm_slli_epi32( _t2, 7 ), _mm_slli_epi32( _t2, 2 ) ), _mm_slli_epi32( _t2, 1 )), _t2 ); \
_res = _mm_xor_si128( _t1, _t2 ); \
}

Definition at line 104 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA8_YMM

#define XTS_MUL_ALPHA8_YMM (   _in,
  _res 
)
Value:
{\
__m256i _t2;\
\
_t2 = _mm256_srli_si256( _in, 15 ); /* AVX2 */ \
_res = _mm256_slli_si256( _in, 1 ); \
_t2 = _mm256_clmulepi64_epi128( _t2, XTS_ALPHA_MULTIPLIER_Ymm, 0x00 ); \
_res = _mm256_xor_si256( _res, _t2 ); \
}

Definition at line 126 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA8_ZMM

#define XTS_MUL_ALPHA8_ZMM (   _in,
  _res 
)
Value:
{\
__m512i _t2; \
\
_t2 = _mm512_bsrli_epi128( _in, 15 ); \
_res = _mm512_bslli_epi128( _in, 1 ); \
_t2 = _mm512_clmulepi64_epi128( _t2, XTS_ALPHA_MULTIPLIER_Zmm, 0x00 ); \
_res = _mm512_xor_si512( _res, _t2 ); \
}

Definition at line 147 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA_old

#define XTS_MUL_ALPHA_old (   _in,
  _res 
)
Value:
{\
__m128i _t1, _t2;\
\
_t1 = _mm_slli_epi32( _in, 1 ); \
_t2 = _mm_srli_epi32( _in, 31); \
_t1 = _mm_xor_si128( _t1, _mm_slli_si128( _t2, 4 )); \
_t2 = _mm_srli_si128( _t2, 12 ); \
_t2 = _mm_sub_epi32( _mm_add_epi32( _mm_slli_epi32( _t2, 7 ), _mm_slli_epi32( _t2, 3 ) ), _t2 ); \
_res = _mm_xor_si128( _t1, _t2 ); \
}
__m128i _mm_sub_epi32(__m128i a, __m128i b)
Definition: emmintrin.h:1279
__m128i _mm_add_epi32(__m128i a, __m128i b)
Definition: emmintrin.h:1137

Definition at line 25 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA_Scalar

#define XTS_MUL_ALPHA_Scalar (   _inout_low_u64,
  _inout_high_u64 
)
Value:
{ \
UINT64 tmp = (UINT64) ((INT64)_inout_high_u64 >> 63); \
\
_inout_high_u64 = (_inout_high_u64 << 1) ^ (_inout_low_u64 >> 63); \
_inout_low_u64 = (_inout_low_u64 << 1) ^ (tmp & 0x87); \
}
COMPILER_DEPENDENT_INT64 INT64
Definition: actypes.h:132
COMPILER_DEPENDENT_UINT64 UINT64
Definition: actypes.h:131

Definition at line 170 of file xtsaes_definitions.h.

◆ XTS_MUL_ALPHA_ZMM_old

#define XTS_MUL_ALPHA_ZMM_old (   _in,
  _res 
)
Value:
{\
__m512i _t1, _t2;\
\
_t1 = _mm512_slli_epi32( _in, 1 ); \
_t2 = _mm512_srli_epi32( _in, 31); \
_t1 = _mm512_xor_si512( _t1, _mm512_bslli_epi128( _t2, 4 )); \
_t2 = _mm512_bsrli_epi128( _t2, 12 ); \
_t2 = _mm512_sub_epi32( _mm512_add_epi32( _mm512_slli_epi32( _t2, 7 ), _mm512_slli_epi32( _t2, 3 ) ), _t2 ); \
_res = _mm512_xor_si512( _t1, _t2 ); \
}

Definition at line 54 of file xtsaes_definitions.h.