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 + 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 - Span(U u) : Span(u.data(), u.size()) {} - Span(std::initializer_list v) : Span(v.begin(), v.size()) {} + MOZ_IMPLICIT Span(U u) : Span(u.data(), u.size()) {} + MOZ_IMPLICIT Span(std::initializer_list v) : Span(v.begin(), v.size()) {} // Copies the contents of the initializer list to the span. Span& operator=(std::initializer_list 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 + #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 , float16_t>() && IsConvertible()>* = nullptr> - constexpr float16_t(T&& arg) noexcept + MOZ_IMPLICIT constexpr float16_t(T&& arg) noexcept : native(static_cast(static_cast(arg))) {} template , 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