Source code

Revision control

Copy as Markdown

Other Tools

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