[libcxx-commits] [libcxx] [libcxx] <experimental/simd> Add _LIBCPP_HIDE_FROM_ABI to internal br… (PR #66977)

via libcxx-commits libcxx-commits at lists.llvm.org
Wed Sep 20 22:20:03 PDT 2023


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

<details>
<summary>Changes</summary>

…oadcast functions

---
Full diff: https://github.com/llvm/llvm-project/pull/66977.diff


4 Files Affected:

- (modified) libcxx/include/experimental/__simd/scalar.h (+2-2) 
- (modified) libcxx/include/experimental/__simd/vec_ext.h (+2-2) 
- (modified) libcxx/test/std/experimental/simd/simd.class/simd_ctor_broadcast.pass.cpp (-4) 
- (modified) libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_ctor_broadcast.pass.cpp (-4) 


``````````diff
diff --git a/libcxx/include/experimental/__simd/scalar.h b/libcxx/include/experimental/__simd/scalar.h
index dcb32206d0746e9..ce629becb1123ce 100644
--- a/libcxx/include/experimental/__simd/scalar.h
+++ b/libcxx/include/experimental/__simd/scalar.h
@@ -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..bfc204bb1ec8eaf 100644
--- a/libcxx/include/experimental/__simd/vec_ext.h
+++ b/libcxx/include/experimental/__simd/vec_ext.h
@@ -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>
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/66977


More information about the libcxx-commits mailing list