Fix compiler crash in ppc-simd.cpp
I think this is https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82112pull/507/head
parent
63a0af4efa
commit
5289915d72
16
ppc-simd.cpp
16
ppc-simd.cpp
|
|
@ -92,15 +92,15 @@ bool CPU_ProbeAltivec()
|
||||||
const byte b2[16] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
|
const byte b2[16] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
|
||||||
CRYPTOPP_ALIGN_DATA(16) byte b3[16];
|
CRYPTOPP_ALIGN_DATA(16) byte b3[16];
|
||||||
#if defined(CRYPTOPP_XLC_VERSION)
|
#if defined(CRYPTOPP_XLC_VERSION)
|
||||||
const uint8x16_p8 v1 = vec_ld(0, b1);
|
const uint8x16_p8 v1 = vec_ld(0, (const byte*)b1);
|
||||||
const uint8x16_p8 v2 = vec_ld(0, b2);
|
const uint8x16_p8 v2 = vec_ld(0, (const byte*)b2);
|
||||||
const uint8x16_p8 v3 = vec_xor(v1, v2);
|
const uint8x16_p8 v3 = vec_xor(v1, v2);
|
||||||
vec_st(v3, 0, b3);
|
vec_st(v3, 0, (byte*)b3);
|
||||||
#elif defined(CRYPTOPP_GCC_VERSION)
|
#elif defined(CRYPTOPP_GCC_VERSION)
|
||||||
const uint64x2_p8 v1 = (uint64x2_p8)vec_ld(0, b1);
|
const uint64x2_p8 v1 = (uint64x2_p8)vec_ld(0, (const byte*)b1);
|
||||||
const uint64x2_p8 v2 = (uint64x2_p8)vec_ld(0, b2);
|
const uint64x2_p8 v2 = (uint64x2_p8)vec_ld(0, (const byte*)b2);
|
||||||
const uint64x2_p8 v3 = (uint64x2_p8)vec_xor(v1, v2);
|
const uint64x2_p8 v3 = (uint64x2_p8)vec_xor(v1, v2);
|
||||||
vec_st((uint8x16_p8)v3, 0, b3);
|
vec_st((uint8x16_p8)v3, 0, (byte*)b3);
|
||||||
#endif
|
#endif
|
||||||
result = (0 == std::memcmp(b2, b3, 16));
|
result = (0 == std::memcmp(b2, b3, 16));
|
||||||
}
|
}
|
||||||
|
|
@ -140,8 +140,8 @@ bool CPU_ProbePower7()
|
||||||
byte b1[19] = {-1, -1, -1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
|
byte b1[19] = {-1, -1, -1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
|
||||||
CRYPTOPP_ALIGN_DATA(16) byte b2[16];
|
CRYPTOPP_ALIGN_DATA(16) byte b2[16];
|
||||||
#if defined(CRYPTOPP_XLC_VERSION)
|
#if defined(CRYPTOPP_XLC_VERSION)
|
||||||
const uint8x16_p8 v1 = vec_xl(0, reinterpret_cast<byte*>(b1)+3);
|
const uint8x16_p8 v1 = vec_xl(0, (const byte*)b1+3);
|
||||||
vec_xst(v1, 0, reinterpret_cast<byte*>(b2));
|
vec_xst(v1, 0, (byte*)b2);
|
||||||
#elif defined(CRYPTOPP_GCC_VERSION)
|
#elif defined(CRYPTOPP_GCC_VERSION)
|
||||||
const uint8x16_p8 v1 = vec_vsx_ld(0, b1+3);
|
const uint8x16_p8 v1 = vec_vsx_ld(0, b1+3);
|
||||||
vec_vsx_st(v1, 0, (byte*)b2);
|
vec_vsx_st(v1, 0, (byte*)b2);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue