You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
4.1 KiB
102 lines
4.1 KiB
8 months ago
|
Index: chromium-120.0.6099.71/third_party/highway/src/hwy/ops/ppc_vsx-inl.h
|
||
|
===================================================================
|
||
|
--- chromium-120.0.6099.71.orig/third_party/highway/src/hwy/ops/ppc_vsx-inl.h
|
||
|
+++ chromium-120.0.6099.71/third_party/highway/src/hwy/ops/ppc_vsx-inl.h
|
||
|
@@ -36,6 +36,8 @@
|
||
|
|
||
|
#include "hwy/ops/shared-inl.h"
|
||
|
|
||
|
+#undef __SIZEOF_INT128__
|
||
|
+
|
||
|
HWY_BEFORE_NAMESPACE();
|
||
|
namespace hwy {
|
||
|
namespace HWY_NAMESPACE {
|
||
|
@@ -2844,7 +2846,6 @@ struct CompressIsPartition {
|
||
|
|
||
|
namespace detail {
|
||
|
|
||
|
-#if HWY_TARGET > HWY_PPC10 || __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
|
||
|
// fallback for missing vec_extractm
|
||
|
template <size_t N>
|
||
|
HWY_INLINE uint64_t ExtractSignBits(Vec128<uint8_t, N> sign_bits,
|
||
|
@@ -2857,22 +2858,16 @@ HWY_INLINE uint64_t ExtractSignBits(Vec1
|
||
|
return extracted.raw[__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__];
|
||
|
}
|
||
|
|
||
|
-#endif // HWY_TARGET > HWY_PPC10
|
||
|
-
|
||
|
template <typename T, size_t N>
|
||
|
HWY_INLINE uint64_t BitsFromMask(hwy::SizeTag<1> /*tag*/,
|
||
|
Mask128<T, N> mask) {
|
||
|
const DFromM<decltype(mask)> d;
|
||
|
const Repartition<uint8_t, decltype(d)> du8;
|
||
|
const VFromD<decltype(du8)> sign_bits = BitCast(du8, VecFromMask(d, mask));
|
||
|
-#if HWY_TARGET <= HWY_PPC10 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||
|
- return static_cast<uint64_t>(vec_extractm(sign_bits.raw));
|
||
|
-#else
|
||
|
const __vector unsigned char kBitShuffle = {
|
||
|
120, 112, 104, 96, 88, 80, 72, 64, 56, 48, 40, 32, 24, 16, 8, 0
|
||
|
};
|
||
|
return ExtractSignBits(sign_bits, kBitShuffle);
|
||
|
-#endif // HWY_TARGET <= HWY_PPC10
|
||
|
}
|
||
|
|
||
|
template <typename T, size_t N>
|
||
|
@@ -2882,10 +2877,6 @@ HWY_INLINE uint64_t BitsFromMask(hwy::Si
|
||
|
const Repartition<uint8_t, decltype(d)> du8;
|
||
|
const VFromD<decltype(du8)> sign_bits = BitCast(du8, VecFromMask(d, mask));
|
||
|
|
||
|
-#if HWY_TARGET <= HWY_PPC10 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||
|
- const RebindToUnsigned<decltype(d)> du;
|
||
|
- return static_cast<uint64_t>(vec_extractm(BitCast(du, sign_bits).raw));
|
||
|
-#else
|
||
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||
|
const __vector unsigned char kBitShuffle = {
|
||
|
112, 96, 80, 64, 48, 32, 16, 0, 128, 128, 128, 128, 128, 128, 128, 128};
|
||
|
@@ -2894,7 +2885,6 @@ HWY_INLINE uint64_t BitsFromMask(hwy::Si
|
||
|
128, 128, 128, 128, 128, 128, 128, 128, 112, 96, 80, 64, 48, 32, 16, 0};
|
||
|
#endif
|
||
|
return ExtractSignBits(sign_bits, kBitShuffle);
|
||
|
-#endif // HWY_TARGET <= HWY_PPC10
|
||
|
}
|
||
|
|
||
|
template <typename T, size_t N>
|
||
|
@@ -2903,10 +2893,6 @@ HWY_INLINE uint64_t BitsFromMask(hwy::Si
|
||
|
const DFromM<decltype(mask)> d;
|
||
|
const Repartition<uint8_t, decltype(d)> du8;
|
||
|
const VFromD<decltype(du8)> sign_bits = BitCast(du8, VecFromMask(d, mask));
|
||
|
-#if HWY_TARGET <= HWY_PPC10 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||
|
- const RebindToUnsigned<decltype(d)> du;
|
||
|
- return static_cast<uint64_t>(vec_extractm(BitCast(du, sign_bits).raw));
|
||
|
-#else
|
||
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||
|
const __vector unsigned char kBitShuffle = {
|
||
|
96, 64, 32, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128};
|
||
|
@@ -2915,7 +2901,6 @@ HWY_INLINE uint64_t BitsFromMask(hwy::Si
|
||
|
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 96, 64, 32, 0};
|
||
|
#endif
|
||
|
return ExtractSignBits(sign_bits, kBitShuffle);
|
||
|
-#endif // HWY_TARGET <= HWY_PPC10
|
||
|
}
|
||
|
|
||
|
template <typename T, size_t N>
|
||
|
@@ -2924,10 +2909,6 @@ HWY_INLINE uint64_t BitsFromMask(hwy::Si
|
||
|
const DFromM<decltype(mask)> d;
|
||
|
const Repartition<uint8_t, decltype(d)> du8;
|
||
|
const VFromD<decltype(du8)> sign_bits = BitCast(du8, VecFromMask(d, mask));
|
||
|
-#if HWY_TARGET <= HWY_PPC10 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||
|
- const RebindToUnsigned<decltype(d)> du;
|
||
|
- return static_cast<uint64_t>(vec_extractm(BitCast(du, sign_bits).raw));
|
||
|
-#else
|
||
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||
|
const __vector unsigned char kBitShuffle = {64, 0, 128, 128, 128, 128,
|
||
|
128, 128, 128, 128, 128, 128,
|
||
|
@@ -2938,7 +2919,6 @@ HWY_INLINE uint64_t BitsFromMask(hwy::Si
|
||
|
128, 128, 64, 0};
|
||
|
#endif
|
||
|
return ExtractSignBits(sign_bits, kBitShuffle);
|
||
|
-#endif // HWY_TARGET <= HWY_PPC10
|
||
|
}
|
||
|
|
||
|
// Returns the lowest N of the mask bits.
|