Merge branch 'master' into arm-neon
commit
ad4e954be5
12
misc.h
12
misc.h
|
|
@ -2077,15 +2077,15 @@ private:
|
||||||
//! \tparam T class or type
|
//! \tparam T class or type
|
||||||
//! \tparam B enumeration indicating endianess
|
//! \tparam B enumeration indicating endianess
|
||||||
//! \tparam A flag indicating alignment
|
//! \tparam A flag indicating alignment
|
||||||
//! \details GetBlock() provides alternate write access to a block of memory. The enumeration B is
|
//! \details PutBlock() provides alternate write access to a block of memory. The enumeration B is
|
||||||
//! BigEndian or LittleEndian. The flag A indicates if the memory block is aligned for class or type T.
|
//! BigEndian or LittleEndian. The flag A indicates if the memory block is aligned for class or type T.
|
||||||
//! Repeatedly applying operator() results in advancing in the block of memory.
|
//! Repeatedly applying operator() results in advancing in the block of memory.
|
||||||
//! \details An example of reading two word32 values from a block of memory is shown below. <tt>w1</tt>
|
//! \details An example of writing two word32 values from a block of memory is shown below. After the code
|
||||||
//! will be <tt>0x03020100</tt> and <tt>w1</tt> will be <tt>0x07060504</tt>.
|
//! executes, the byte buffer will be <tt>{0,1,2,3,4,5,6,7}</tt>.
|
||||||
//! <pre>
|
//! <pre>
|
||||||
//! word32 w1, w2;
|
//! word32 w1=0x03020100, w2=0x07060504;
|
||||||
//! byte buffer[8] = {0,1,2,3,4,5,6,7};
|
//! byte buffer[8];
|
||||||
//! GetBlock<word32, LittleEndian> block(buffer);
|
//! PutBlock<word32, LittleEndian> block(NULL, buffer);
|
||||||
//! block(w1)(w2);
|
//! block(w1)(w2);
|
||||||
//! </pre>
|
//! </pre>
|
||||||
template <class T, class B, bool A=false>
|
template <class T, class B, bool A=false>
|
||||||
|
|
|
||||||
|
|
@ -217,9 +217,9 @@ void Rijndael::Base::UncheckedSetKey(const byte *userKey, unsigned int keylen, c
|
||||||
|
|
||||||
word32 *rk = m_key;
|
word32 *rk = m_key;
|
||||||
|
|
||||||
#if (CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE && (!defined(_MSC_VER) || _MSC_VER >= 1600 || CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32))
|
#if (CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE && CRYPTOPP_BOOL_SSE4_INTRINSICS_AVAILABLE && (!defined(_MSC_VER) || _MSC_VER >= 1600 || CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32))
|
||||||
// MSVC 2008 SP1 generates bad code for _mm_extract_epi32() when compiling for X64
|
// MSVC 2008 SP1 generates bad code for _mm_extract_epi32() when compiling for X64
|
||||||
if (HasAESNI())
|
if (HasAESNI() && HasSSE4())
|
||||||
{
|
{
|
||||||
static const word32 rcLE[] = {
|
static const word32 rcLE[] = {
|
||||||
0x01, 0x02, 0x04, 0x08,
|
0x01, 0x02, 0x04, 0x08,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue