[libcxx-commits] [libcxx] cf31d0e - [libcxx] <experimental/simd> Add _LIBCPP_HIDE_FROM_ABI to internal br… (#66977)
via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Sep 29 07:32:59 PDT 2023
Author: ZhangYin
Date: 2023-09-29T16:32:54+02:00
New Revision: cf31d0eca85f4f5b273dd1ad8f76791ff726c28f
URL: https://github.com/llvm/llvm-project/commit/cf31d0eca85f4f5b273dd1ad8f76791ff726c28f
DIFF: https://github.com/llvm/llvm-project/commit/cf31d0eca85f4f5b273dd1ad8f76791ff726c28f.diff
LOG: [libcxx] <experimental/simd> Add _LIBCPP_HIDE_FROM_ABI to internal br… (#66977)
…oadcast functions
Added:
Modified:
libcxx/include/experimental/__simd/scalar.h
libcxx/include/experimental/__simd/vec_ext.h
libcxx/test/std/experimental/simd/simd.class/simd_ctor_broadcast.pass.cpp
libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_ctor_broadcast.pass.cpp
Removed:
################################################################################
diff --git a/libcxx/include/experimental/__simd/scalar.h b/libcxx/include/experimental/__simd/scalar.h
index dcb32206d0746e9..341292612e049f4 100644
--- a/libcxx/include/experimental/__simd/scalar.h
+++ b/libcxx/include/experimental/__simd/scalar.h
@@ -27,11 +27,11 @@ template <class _Tp>
struct __simd_storage<_Tp, simd_abi::__scalar> {
_Tp __data;
- _Tp __get([[maybe_unused]] size_t __idx) const noexcept {
+ _LIBCPP_HIDE_FROM_ABI _Tp __get([[maybe_unused]] size_t __idx) const noexcept {
_LIBCPP_ASSERT_UNCATEGORIZED(__idx == 0, "Index is out of bounds");
return __data;
}
- void __set([[maybe_unused]] size_t __idx, _Tp __v) noexcept {
+ _LIBCPP_HIDE_FROM_ABI void __set([[maybe_unused]] size_t __idx, _Tp __v) noexcept {
_LIBCPP_ASSERT_UNCATEGORIZED(__idx == 0, "Index is out of bounds");
__data = __v;
}
@@ -45,14 +45,14 @@ struct __simd_operations<_Tp, simd_abi::__scalar> {
using _SimdStorage = __simd_storage<_Tp, simd_abi::__scalar>;
using _MaskStorage = __mask_storage<_Tp, simd_abi::__scalar>;
- static _SimdStorage __broadcast(_Tp __v) noexcept { return {__v}; }
+ static _LIBCPP_HIDE_FROM_ABI _SimdStorage __broadcast(_Tp __v) noexcept { return {__v}; }
};
template <class _Tp>
struct __mask_operations<_Tp, simd_abi::__scalar> {
using _MaskStorage = __mask_storage<_Tp, simd_abi::__scalar>;
- static _MaskStorage __broadcast(bool __v) noexcept { return {__v}; }
+ static _LIBCPP_HIDE_FROM_ABI _MaskStorage __broadcast(bool __v) noexcept { return {__v}; }
};
} // namespace parallelism_v2
diff --git a/libcxx/include/experimental/__simd/vec_ext.h b/libcxx/include/experimental/__simd/vec_ext.h
index c7c2decefad3e40..44a1f481ab7985f 100644
--- a/libcxx/include/experimental/__simd/vec_ext.h
+++ b/libcxx/include/experimental/__simd/vec_ext.h
@@ -30,11 +30,11 @@ template <class _Tp, int _Np>
struct __simd_storage<_Tp, simd_abi::__vec_ext<_Np>> {
_Tp __data __attribute__((__vector_size__(std::__bit_ceil((sizeof(_Tp) * _Np)))));
- _Tp __get(size_t __idx) const noexcept {
+ _LIBCPP_HIDE_FROM_ABI _Tp __get(size_t __idx) const noexcept {
_LIBCPP_ASSERT_UNCATEGORIZED(__idx >= 0 && __idx < _Np, "Index is out of bounds");
return __data[__idx];
}
- void __set(size_t __idx, _Tp __v) noexcept {
+ _LIBCPP_HIDE_FROM_ABI void __set(size_t __idx, _Tp __v) noexcept {
_LIBCPP_ASSERT_UNCATEGORIZED(__idx >= 0 && __idx < _Np, "Index is out of bounds");
__data[__idx] = __v;
}
@@ -49,7 +49,7 @@ struct __simd_operations<_Tp, simd_abi::__vec_ext<_Np>> {
using _SimdStorage = __simd_storage<_Tp, simd_abi::__vec_ext<_Np>>;
using _MaskStorage = __mask_storage<_Tp, simd_abi::__vec_ext<_Np>>;
- static _SimdStorage __broadcast(_Tp __v) noexcept {
+ static _LIBCPP_HIDE_FROM_ABI _SimdStorage __broadcast(_Tp __v) noexcept {
_SimdStorage __result;
for (int __i = 0; __i < _Np; ++__i) {
__result.__set(__i, __v);
@@ -62,7 +62,7 @@ template <class _Tp, int _Np>
struct __mask_operations<_Tp, simd_abi::__vec_ext<_Np>> {
using _MaskStorage = __mask_storage<_Tp, simd_abi::__vec_ext<_Np>>;
- static _MaskStorage __broadcast(bool __v) noexcept {
+ static _LIBCPP_HIDE_FROM_ABI _MaskStorage __broadcast(bool __v) noexcept {
_MaskStorage __result;
auto __all_bits_v = experimental::__set_all_bits<_Tp>(__v);
for (int __i = 0; __i < _Np; ++__i) {
diff --git a/libcxx/test/std/experimental/simd/simd.class/simd_ctor_broadcast.pass.cpp b/libcxx/test/std/experimental/simd/simd.class/simd_ctor_broadcast.pass.cpp
index e1a668c8b4932f0..ef3e6fd719c6b6f 100644
--- a/libcxx/test/std/experimental/simd/simd.class/simd_ctor_broadcast.pass.cpp
+++ b/libcxx/test/std/experimental/simd/simd.class/simd_ctor_broadcast.pass.cpp
@@ -13,10 +13,6 @@
// [simd.class]
// template<class U> simd(U&& value) noexcept;
-// GCC returns __int128 unsigned with garbled data in higher 64 bits.
-// This is likely a bug in GCC implementation. Investigation needed.
-// XFAIL: gcc-13
-
#include "../test_utils.h"
namespace ex = std::experimental::parallelism_v2;
diff --git a/libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_ctor_broadcast.pass.cpp b/libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_ctor_broadcast.pass.cpp
index 967368196d1bf05..229c3b72cde0376 100644
--- a/libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_ctor_broadcast.pass.cpp
+++ b/libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_ctor_broadcast.pass.cpp
@@ -13,10 +13,6 @@
// [simd.mask.class]
// explicit simd_mask(value_type) noexcept;
-// GCC returns __int128 unsigned with garbled data in higher 64 bits.
-// This is likely a bug in GCC implementation. Investigation needed.
-// XFAIL: gcc-13
-
#include "../test_utils.h"
#include <experimental/simd>
More information about the libcxx-commits
mailing list