[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