Remove unneeded permutes
Loading byte arrays does not suffer the endian swaps.pull/828/head
parent
90f52dd9ae
commit
fd2fd0c199
|
|
@ -108,13 +108,8 @@ inline uint64x2_t RotateRight64(const uint64x2_t& val)
|
||||||
template <>
|
template <>
|
||||||
inline uint64x2_t RotateLeft64<8>(const uint64x2_t& val)
|
inline uint64x2_t RotateLeft64<8>(const uint64x2_t& val)
|
||||||
{
|
{
|
||||||
#if (CRYPTOPP_BIG_ENDIAN)
|
|
||||||
const uint8_t maskb[16] = { 14,13,12,11, 10,9,8,15, 6,5,4,3, 2,1,0,7 };
|
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
|
||||||
#else
|
|
||||||
const uint8_t maskb[16] = { 7,0,1,2, 3,4,5,6, 15,8,9,10, 11,12,13,14 };
|
const uint8_t maskb[16] = { 7,0,1,2, 3,4,5,6, 15,8,9,10, 11,12,13,14 };
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
const uint8x16_t mask = vld1q_u8(maskb);
|
||||||
#endif
|
|
||||||
|
|
||||||
return vreinterpretq_u64_u8(
|
return vreinterpretq_u64_u8(
|
||||||
vqtbl1q_u8(vreinterpretq_u8_u64(val), mask));
|
vqtbl1q_u8(vreinterpretq_u8_u64(val), mask));
|
||||||
|
|
@ -124,13 +119,8 @@ inline uint64x2_t RotateLeft64<8>(const uint64x2_t& val)
|
||||||
template <>
|
template <>
|
||||||
inline uint64x2_t RotateRight64<8>(const uint64x2_t& val)
|
inline uint64x2_t RotateRight64<8>(const uint64x2_t& val)
|
||||||
{
|
{
|
||||||
#if (CRYPTOPP_BIG_ENDIAN)
|
|
||||||
const uint8_t maskb[16] = { 8,15,14,13, 12,11,10,9, 0,7,6,5, 4,3,2,1 };
|
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
|
||||||
#else
|
|
||||||
const uint8_t maskb[16] = { 1,2,3,4, 5,6,7,0, 9,10,11,12, 13,14,15,8 };
|
const uint8_t maskb[16] = { 1,2,3,4, 5,6,7,0, 9,10,11,12, 13,14,15,8 };
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
const uint8x16_t mask = vld1q_u8(maskb);
|
||||||
#endif
|
|
||||||
|
|
||||||
return vreinterpretq_u64_u8(
|
return vreinterpretq_u64_u8(
|
||||||
vqtbl1q_u8(vreinterpretq_u8_u64(val), mask));
|
vqtbl1q_u8(vreinterpretq_u8_u64(val), mask));
|
||||||
|
|
|
||||||
|
|
@ -106,13 +106,8 @@ inline uint32x4_t RotateRight32(const uint32x4_t& val)
|
||||||
template <>
|
template <>
|
||||||
inline uint32x4_t RotateLeft32<8>(const uint32x4_t& val)
|
inline uint32x4_t RotateLeft32<8>(const uint32x4_t& val)
|
||||||
{
|
{
|
||||||
#if (CRYPTOPP_BIG_ENDIAN)
|
|
||||||
const uint8_t maskb[16] = { 14,13,12,15, 10,9,8,11, 6,5,4,7, 2,1,0,3 };
|
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
|
||||||
#else
|
|
||||||
const uint8_t maskb[16] = { 3,0,1,2, 7,4,5,6, 11,8,9,10, 15,12,13,14 };
|
const uint8_t maskb[16] = { 3,0,1,2, 7,4,5,6, 11,8,9,10, 15,12,13,14 };
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
const uint8x16_t mask = vld1q_u8(maskb);
|
||||||
#endif
|
|
||||||
|
|
||||||
return vreinterpretq_u32_u8(
|
return vreinterpretq_u32_u8(
|
||||||
vqtbl1q_u8(vreinterpretq_u8_u32(val), mask));
|
vqtbl1q_u8(vreinterpretq_u8_u32(val), mask));
|
||||||
|
|
@ -122,13 +117,8 @@ inline uint32x4_t RotateLeft32<8>(const uint32x4_t& val)
|
||||||
template <>
|
template <>
|
||||||
inline uint32x4_t RotateRight32<8>(const uint32x4_t& val)
|
inline uint32x4_t RotateRight32<8>(const uint32x4_t& val)
|
||||||
{
|
{
|
||||||
#if (CRYPTOPP_BIG_ENDIAN)
|
|
||||||
const uint8_t maskb[16] = { 12,15,14,13, 8,11,10,9, 4,7,6,5, 0,3,2,1 };
|
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
|
||||||
#else
|
|
||||||
const uint8_t maskb[16] = { 1,2,3,0, 5,6,7,4, 9,10,11,8, 13,14,14,12 };
|
const uint8_t maskb[16] = { 1,2,3,0, 5,6,7,4, 9,10,11,8, 13,14,14,12 };
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
const uint8x16_t mask = vld1q_u8(maskb);
|
||||||
#endif
|
|
||||||
|
|
||||||
return vreinterpretq_u32_u8(
|
return vreinterpretq_u32_u8(
|
||||||
vqtbl1q_u8(vreinterpretq_u8_u32(val), mask));
|
vqtbl1q_u8(vreinterpretq_u8_u32(val), mask));
|
||||||
|
|
|
||||||
|
|
@ -107,13 +107,8 @@ inline uint64x2_t RotateRight64(const uint64x2_t& val)
|
||||||
template <>
|
template <>
|
||||||
inline uint64x2_t RotateLeft64<8>(const uint64x2_t& val)
|
inline uint64x2_t RotateLeft64<8>(const uint64x2_t& val)
|
||||||
{
|
{
|
||||||
#if (CRYPTOPP_BIG_ENDIAN)
|
|
||||||
const uint8_t maskb[16] = { 14,13,12,11, 10,9,8,15, 6,5,4,3, 2,1,0,7 };
|
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
|
||||||
#else
|
|
||||||
const uint8_t maskb[16] = { 7,0,1,2, 3,4,5,6, 15,8,9,10, 11,12,13,14 };
|
const uint8_t maskb[16] = { 7,0,1,2, 3,4,5,6, 15,8,9,10, 11,12,13,14 };
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
const uint8x16_t mask = vld1q_u8(maskb);
|
||||||
#endif
|
|
||||||
|
|
||||||
return vreinterpretq_u64_u8(
|
return vreinterpretq_u64_u8(
|
||||||
vqtbl1q_u8(vreinterpretq_u8_u64(val), mask));
|
vqtbl1q_u8(vreinterpretq_u8_u64(val), mask));
|
||||||
|
|
@ -123,13 +118,8 @@ inline uint64x2_t RotateLeft64<8>(const uint64x2_t& val)
|
||||||
template <>
|
template <>
|
||||||
inline uint64x2_t RotateRight64<8>(const uint64x2_t& val)
|
inline uint64x2_t RotateRight64<8>(const uint64x2_t& val)
|
||||||
{
|
{
|
||||||
#if (CRYPTOPP_BIG_ENDIAN)
|
|
||||||
const uint8_t maskb[16] = { 8,15,14,13, 12,11,10,9, 0,7,6,5, 4,3,2,1 };
|
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
|
||||||
#else
|
|
||||||
const uint8_t maskb[16] = { 1,2,3,4, 5,6,7,0, 9,10,11,12, 13,14,15,8 };
|
const uint8_t maskb[16] = { 1,2,3,4, 5,6,7,0, 9,10,11,12, 13,14,15,8 };
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
const uint8x16_t mask = vld1q_u8(maskb);
|
||||||
#endif
|
|
||||||
|
|
||||||
return vreinterpretq_u64_u8(
|
return vreinterpretq_u64_u8(
|
||||||
vqtbl1q_u8(vreinterpretq_u8_u64(val), mask));
|
vqtbl1q_u8(vreinterpretq_u8_u64(val), mask));
|
||||||
|
|
|
||||||
|
|
@ -105,13 +105,8 @@ inline uint32x4_t RotateRight32(const uint32x4_t& val)
|
||||||
template <>
|
template <>
|
||||||
inline uint32x4_t RotateLeft32<8>(const uint32x4_t& val)
|
inline uint32x4_t RotateLeft32<8>(const uint32x4_t& val)
|
||||||
{
|
{
|
||||||
#if (CRYPTOPP_BIG_ENDIAN)
|
|
||||||
const uint8_t maskb[16] = { 14,13,12,15, 10,9,8,11, 6,5,4,7, 2,1,0,3 };
|
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
|
||||||
#else
|
|
||||||
const uint8_t maskb[16] = { 3,0,1,2, 7,4,5,6, 11,8,9,10, 15,12,13,14 };
|
const uint8_t maskb[16] = { 3,0,1,2, 7,4,5,6, 11,8,9,10, 15,12,13,14 };
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
const uint8x16_t mask = vld1q_u8(maskb);
|
||||||
#endif
|
|
||||||
|
|
||||||
return vreinterpretq_u32_u8(
|
return vreinterpretq_u32_u8(
|
||||||
vqtbl1q_u8(vreinterpretq_u8_u32(val), mask));
|
vqtbl1q_u8(vreinterpretq_u8_u32(val), mask));
|
||||||
|
|
@ -121,13 +116,8 @@ inline uint32x4_t RotateLeft32<8>(const uint32x4_t& val)
|
||||||
template <>
|
template <>
|
||||||
inline uint32x4_t RotateRight32<8>(const uint32x4_t& val)
|
inline uint32x4_t RotateRight32<8>(const uint32x4_t& val)
|
||||||
{
|
{
|
||||||
#if (CRYPTOPP_BIG_ENDIAN)
|
|
||||||
const uint8_t maskb[16] = { 12,15,14,13, 8,11,10,9, 4,7,6,5, 0,3,2,1 };
|
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
|
||||||
#else
|
|
||||||
const uint8_t maskb[16] = { 1,2,3,0, 5,6,7,4, 9,10,11,8, 13,14,15,12 };
|
const uint8_t maskb[16] = { 1,2,3,0, 5,6,7,4, 9,10,11,8, 13,14,15,12 };
|
||||||
const uint8x16_t mask = vld1q_u8(maskb);
|
const uint8x16_t mask = vld1q_u8(maskb);
|
||||||
#endif
|
|
||||||
|
|
||||||
return vreinterpretq_u32_u8(
|
return vreinterpretq_u32_u8(
|
||||||
vqtbl1q_u8(vreinterpretq_u8_u32(val), mask));
|
vqtbl1q_u8(vreinterpretq_u8_u32(val), mask));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue