diff --git a/src/util/arch/ppc64el/simd_utils.h b/src/util/arch/ppc64el/simd_utils.h index 119d0946..4f0e6cc7 100644 --- a/src/util/arch/ppc64el/simd_utils.h +++ b/src/util/arch/ppc64el/simd_utils.h @@ -43,6 +43,9 @@ #include // for memcpy +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecate-lax-vec-conv-all" + typedef __vector unsigned long long int uint64x2_t; typedef __vector signed long long int int64x2_t; typedef __vector unsigned int uint32x4_t; @@ -124,8 +127,8 @@ static really_really_inline m128 rshift_m128(m128 a, unsigned b) { if (b == 0) return a; m128 sl = (m128) vec_splats((uint8_t) b << 3); - m128 result = (m128) vec_sro((uint8x16_t) a, (uint8x16_t) sl); - return result; + uint8x16_t result = vec_sro((uint8x16_t) a, (uint8x16_t) sl); + return (m128) result; } static really_really_inline @@ -420,4 +423,6 @@ m128 set2x64(u64a hi, u64a lo) { return (m128) v; } +#pragma clang diagnostic pop + #endif // ARCH_PPC64EL_SIMD_UTILS_H diff --git a/src/util/supervector/arch/ppc64el/impl.cpp b/src/util/supervector/arch/ppc64el/impl.cpp index 494bcbd6..e7baedde 100644 --- a/src/util/supervector/arch/ppc64el/impl.cpp +++ b/src/util/supervector/arch/ppc64el/impl.cpp @@ -158,18 +158,21 @@ really_inline SuperVector<16>::SuperVector(uint32_t const other) u.u32x4[0] = vec_splats(static_cast(other)); } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecate-lax-vec-conv-all" template<> template<> really_inline SuperVector<16>::SuperVector(int64_t const other) { - u.s64x2[0] = (int64x2_t) vec_splats(static_cast(other)); + u.s64x2[0] = static_cast(vec_splats(static_cast(other))); } +#pragma clang diagnostic pop template<> template<> really_inline SuperVector<16>::SuperVector(uint64_t const other) { - u.u64x2[0] = (uint64x2_t) vec_splats(static_cast(other)); + u.u64x2[0] = static_cast(vec_splats(static_cast(other))); } // Constants @@ -266,6 +269,9 @@ really_inline SuperVector<16> SuperVector<16>::eq(SuperVector<16> const &b) cons return (*this == b); } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecate-lax-vec-conv-all" + template <> really_inline typename SuperVector<16>::comparemask_type SuperVector<16>::comparemask(void) const { @@ -273,9 +279,10 @@ SuperVector<16>::comparemask(void) const { uint8x16_t bitmask = vec_gb(u.u8x16[0]); bitmask = (uint8x16_t) vec_perm(vec_splat_u8(0), bitmask, perm); u32 ALIGN_ATTR(16) movemask; - vec_ste((uint32x4_t) bitmask, 0, &movemask); + vec_ste(static_cast(bitmask), 0, &movemask); return movemask; } +#pragma clang diagnostic pop template <> really_inline typename SuperVector<16>::comparemask_type diff --git a/unit/internal/simd_utils.cpp b/unit/internal/simd_utils.cpp index c5cfec7b..19793442 100644 --- a/unit/internal/simd_utils.cpp +++ b/unit/internal/simd_utils.cpp @@ -673,8 +673,11 @@ TEST(SimdUtilsTest, movq) { int64x2_t a = { 0x123456789abcdefLL, ~0LL }; simd = vreinterpretq_s32_s64(a); #elif defined(ARCH_PPC64EL) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecate-lax-vec-conv-all" int64x2_t a = {0x123456789abcdefLL, ~0LL }; - simd = (m128) a; + simd = static_cast(a); +#pragma clang diagnostic pop #endif #endif r = movq(simd);