Bug 1951371 - Update xsimd to c0a7b5d2666c18303d27aa10ae4d50f00056aaad r=padenot

Differential Revision: https://phabricator.services.mozilla.com/D240143
This commit is contained in:
Updatebot
2025-03-04 13:20:00 +00:00
parent 105f1a566b
commit 64da63ee8d
7 changed files with 69 additions and 9 deletions

View File

@@ -9,6 +9,27 @@
Changelog
=========
13.2.0
------
* Added broadcast overload for bool
* Fixed kernel::store for booleans
* Explicitly verify dependency between architectures (like sse2 implies sse2)
* Use default arch alignment as default alignment for xsimd::aligned_allocator
* sse2 version of xsimd::swizzle on [u]int16_t
* avx implementation of transpose for [u]int[8|16]
* Implement [u]int8 and [u]int16 matrix transpose for 128 bit registers
* Fix minor warning
* Fix fma4 support
13.1.0
------

View File

@@ -32,6 +32,32 @@ namespace xsimd
using namespace types;
// broadcast
namespace detail
{
template <class T, class A>
struct broadcaster
{
using return_type = batch<T, A>;
static XSIMD_INLINE return_type run(T v) noexcept
{
return return_type::broadcast(v);
}
};
template <class A>
struct broadcaster<bool, A>
{
using return_type = batch_bool<xsimd::as_unsigned_integer_t<bool>, A>;
static XSIMD_INLINE return_type run(bool b) noexcept
{
return return_type(b);
}
};
}
// compress
namespace detail
{
@@ -514,7 +540,7 @@ namespace xsimd
}
// store
template <class T, class A>
template <class A, class T>
XSIMD_INLINE void store(batch_bool<T, A> const& self, bool* mem, requires_arch<generic>) noexcept
{
using batch_type = batch<T, A>;

View File

@@ -13,7 +13,7 @@
#define XSIMD_CONFIG_HPP
#define XSIMD_VERSION_MAJOR 13
#define XSIMD_VERSION_MINOR 1
#define XSIMD_VERSION_MINOR 2
#define XSIMD_VERSION_PATCH 0
/**

View File

@@ -236,7 +236,7 @@ namespace xsimd
/**
* @ingroup batch_conversion
*
* Perform a static_cast from \c T_in to \c T_out on \c \c x.
* Perform a static_cast from \c T_in to \c T_out on \c x.
* @param x batch_bool of \c T_in
* @return \c x cast to \c T_out
*/
@@ -252,7 +252,7 @@ namespace xsimd
/**
* @ingroup batch_conversion
*
* Perform a static_cast from \c T_in to \c T_out on \c \c x.
* Perform a static_cast from \c T_in to \c T_out on \c x.
* @param x batch of \c T_in
* @return \c x cast to \c T_out
*/
@@ -486,15 +486,17 @@ namespace xsimd
/**
* @ingroup batch_data_transfer
*
* Creates a batch from the single value \c v.
* Creates a batch from the single value \c v. If \c v is a boolean,
* this function returns a batch_bool<uint8_t>. If you need another type
* of batch_bool, please use \c broadcast_as instead.
* @param v the value used to initialize the batch
* @return a new batch instance
*/
template <class T, class A = default_arch>
XSIMD_INLINE batch<T, A> broadcast(T v) noexcept
XSIMD_INLINE typename kernel::detail::broadcaster<T, A>::return_type broadcast(T v) noexcept
{
detail::static_check_supported_config<T, A>();
return batch<T, A>::broadcast(v);
return kernel::detail::broadcaster<T, A>::run(v);
}
/**

View File

@@ -77,6 +77,11 @@ namespace xsimd
"usage of batch type with unsupported type");
};
template <class A>
struct static_check_supported_config_emitter<bool, A> : static_check_supported_config_emitter<xsimd::as_unsigned_integer_t<bool>, A>
{
};
template <class T, class A>
struct static_check_supported_config_emitter<std::complex<T>, A> : static_check_supported_config_emitter<T, A>
{

View File

@@ -77,6 +77,12 @@ namespace xsimd
{
};
template <>
struct as_unsigned_integer<bool>
{
using type = uint8_t;
};
template <>
struct as_unsigned_integer<float>
{

View File

@@ -10,8 +10,8 @@ origin:
url: https://github.com/QuantStack/xsimd
release: 6d6067a049987803ae07dad62f66f603773324b9 (2025-01-26T21:05:43Z).
revision: 6d6067a049987803ae07dad62f66f603773324b9
release: c0a7b5d2666c18303d27aa10ae4d50f00056aaad (2025-02-26T11:05:33Z).
revision: c0a7b5d2666c18303d27aa10ae4d50f00056aaad
license: BSD-3-Clause