diff options
author | Tanzinul Islam <11808226+tanzislam@users.noreply.github.com> | 2020-12-27 21:18:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-27 16:18:12 -0500 |
commit | e539aab454f23feeb81050561466c9a5f497b28f (patch) | |
tree | 849f1cb50c88fe89647d6996f6e258b2e11b9b67 /chacha_avx.cpp | |
parent | 6ab92074ac8c200b2834412e6962c0dd0a5d760c (diff) | |
download | cryptopp-git-e539aab454f23feeb81050561466c9a5f497b28f.tar.gz |
Build with Oracle Developer Studio 12.6 in 64-bit (PR #990)
- The _mm256_loadu_si256() intrinsic is declared with a pointer to
non-const input. Apply const_cast accordingly.
- The XGETBV instruction isn't recognized, so apply the same
workaround as for old GCC versions.
<https://docs.oracle.com/cd/E53394_01/html/E54851/gnyen.html>
- Only AT&T syntax is supported; there is no directive to switch
Intel syntax. Therefore, disable mixed-ASM code paths.
Diffstat (limited to 'chacha_avx.cpp')
-rw-r--r-- | chacha_avx.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/chacha_avx.cpp b/chacha_avx.cpp index af80dba0..c647fa1e 100644 --- a/chacha_avx.cpp +++ b/chacha_avx.cpp @@ -308,16 +308,16 @@ void ChaCha_OperateKeystream_AVX2(const word32 *state, const byte* input, byte * {
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+0*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X0_0, X0_1, 1 + (3 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+0*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+0*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+1*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X0_2, X0_3, 1 + (3 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+1*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+1*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+2*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X1_0, X1_1, 1 + (3 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+2*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+2*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+3*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X1_2, X1_3, 1 + (3 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+3*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+3*32)))));
}
else
{
@@ -335,16 +335,16 @@ void ChaCha_OperateKeystream_AVX2(const word32 *state, const byte* input, byte * {
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+4*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X2_0, X2_1, 1 + (3 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+4*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+4*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+5*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X2_2, X2_3, 1 + (3 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+5*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+5*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+6*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X3_0, X3_1, 1 + (3 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+6*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+6*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+7*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X3_2, X3_3, 1 + (3 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+7*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+7*32)))));
}
else
{
@@ -362,16 +362,16 @@ void ChaCha_OperateKeystream_AVX2(const word32 *state, const byte* input, byte * {
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+ 8*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X0_0, X0_1, 0 + (2 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+8*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+8*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+ 9*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X0_2, X0_3, 0 + (2 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+9*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+9*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+10*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X1_0, X1_1, 0 + (2 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+10*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+10*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+11*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X1_2, X1_3, 0 + (2 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+11*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+11*32)))));
}
else
{
@@ -389,16 +389,16 @@ void ChaCha_OperateKeystream_AVX2(const word32 *state, const byte* input, byte * {
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+12*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X2_0, X2_1, 0 + (2 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+12*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+12*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+13*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X2_2, X2_3, 0 + (2 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+13*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+13*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+14*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X3_0, X3_1, 0 + (2 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+14*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+14*32)))));
_mm256_storeu_si256(reinterpret_cast<__m256i*>(output+15*32),
_mm256_xor_si256(_mm256_permute2x128_si256(X3_2, X3_3, 0 + (2 << 4)),
- _mm256_loadu_si256(reinterpret_cast<const __m256i*>(input+15*32))));
+ _mm256_loadu_si256(const_cast<MAYBE_CONST __m256i*>(reinterpret_cast<const __m256i*>(input+15*32)))));
}
else
{
|