-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[libcxx] <experimental/simd> Add _LIBCPP_HIDE_FROM_ABI to internal br… #66977
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-libcxx Changes…oadcast functions Full diff: https://github.com/llvm/llvm-project/pull/66977.diff 4 Files Affected:
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>
|
I'm not sure why but it seems the GCC int128 issue does not appear again after add the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with the remaining HIDE_FROM_ABIs added.
@@ -45,14 +45,14 @@ struct __simd_operations<_Tp, simd_abi::__scalar> { | |||
using _SimdStorage = __simd_storage<_Tp, simd_abi::__scalar>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're also missing HIDE_FROM_ABI above. Same in vec_ext.h
.
0b7fc4b
to
eb0f77e
Compare
eb0f77e
to
597ec9f
Compare
I'm not sure, but CI errors don't seem relevant, do they? Also, should I click on 'squash and merge' myself? |
…oadcast functions