65 lines
2.6 KiB
Diff
65 lines
2.6 KiB
Diff
diff --git a/third_party/highway/hwy/aligned_allocator.h b/third_party/highway/hwy/aligned_allocator.h
|
|
index 7584318a75792..66f730820978f 100644
|
|
--- a/third_party/highway/hwy/aligned_allocator.h
|
|
+++ b/third_party/highway/hwy/aligned_allocator.h
|
|
@@ -30,6 +30,8 @@
|
|
#include "hwy/base.h"
|
|
#include "hwy/per_target.h"
|
|
|
|
+#include <mozilla/Attributes.h>
|
|
+
|
|
namespace hwy {
|
|
|
|
// Minimum alignment of allocated memory for use in HWY_ASSUME_ALIGNED, which
|
|
@@ -222,8 +224,8 @@ class Span {
|
|
Span() = default;
|
|
Span(T* data, size_t size) : size_(size), data_(data) {}
|
|
template <typename U>
|
|
- Span(U u) : Span(u.data(), u.size()) {}
|
|
- Span(std::initializer_list<const T> v) : Span(v.begin(), v.size()) {}
|
|
+ MOZ_IMPLICIT Span(U u) : Span(u.data(), u.size()) {}
|
|
+ MOZ_IMPLICIT Span(std::initializer_list<const T> v) : Span(v.begin(), v.size()) {}
|
|
|
|
// Copies the contents of the initializer list to the span.
|
|
Span<T>& operator=(std::initializer_list<const T> v) {
|
|
diff --git a/third_party/highway/hwy/base.h b/third_party/highway/hwy/base.h
|
|
index c289db7262bcb..0b81d6012314a 100644
|
|
--- a/third_party/highway/hwy/base.h
|
|
+++ b/third_party/highway/hwy/base.h
|
|
@@ -25,6 +25,8 @@
|
|
#include "hwy/detect_compiler_arch.h"
|
|
#include "hwy/highway_export.h"
|
|
|
|
+#include <mozilla/Attributes.h>
|
|
+
|
|
#if HWY_COMPILER_MSVC && defined(_MSVC_LANG) && _MSVC_LANG > __cplusplus
|
|
#define HWY_CXX_LANG _MSVC_LANG
|
|
#else
|
|
@@ -1102,7 +1104,7 @@ struct alignas(2) float16_t {
|
|
#if HWY_HAVE_SCALAR_F16_TYPE
|
|
// NEON vget/set_lane intrinsics and SVE `svaddv` could use explicit
|
|
// float16_t(intrinsic()), but user code expects implicit conversions.
|
|
- constexpr float16_t(Native arg) noexcept : native(arg) {}
|
|
+ MOZ_IMPLICIT constexpr float16_t(Native arg) noexcept : native(arg) {}
|
|
constexpr operator Native() const noexcept { return native; }
|
|
#endif
|
|
|
|
@@ -1129,7 +1131,7 @@ struct alignas(2) float16_t {
|
|
#if HWY_HAVE_SCALAR_F16_OPERATORS || HWY_IDE
|
|
template <typename T, hwy::EnableIf<!IsSame<RemoveCvRef<T>, float16_t>() &&
|
|
IsConvertible<T, Native>()>* = nullptr>
|
|
- constexpr float16_t(T&& arg) noexcept
|
|
+ MOZ_IMPLICIT constexpr float16_t(T&& arg) noexcept
|
|
: native(static_cast<Native>(static_cast<T&&>(arg))) {}
|
|
|
|
template <typename T, hwy::EnableIf<!IsSame<RemoveCvRef<T>, float16_t>() &&
|
|
@@ -1572,7 +1574,7 @@ struct alignas(2) bfloat16_t {
|
|
|
|
// Only enable implicit conversions if we have a native type.
|
|
#if HWY_HAVE_SCALAR_BF16_TYPE
|
|
- constexpr bfloat16_t(Native arg) noexcept : native(arg) {}
|
|
+ MOZ_IMPLICIT constexpr bfloat16_t(Native arg) noexcept : native(arg) {}
|
|
constexpr operator Native() const noexcept { return native; }
|
|
#endif
|
|
|