File tree Expand file tree Collapse file tree 1 file changed +14
-4
lines changed
sycl/include/std/experimental Expand file tree Collapse file tree 1 file changed +14
-4
lines changed Original file line number Diff line number Diff line change @@ -1682,12 +1682,14 @@ class simd_mask {
1682
1682
1683
1683
// implicit type conversion constructor
1684
1684
#ifdef ENABLE_SYCL_EXT_ONEAPI_INVOKE_SIMD
1685
- // TODO inefficient, use this's and __v's storage directly
1685
+ template <class _Up >
1686
+ simd_mask (const simd_mask<_Up, simd_abi::fixed_size<size()>>& __v) noexcept {
1687
+ copyElements (__v);
1688
+ }
1689
+
1686
1690
template <class _Up >
1687
1691
simd_mask (const simd_mask<_Up, abi_type>& __v) noexcept {
1688
- for (size_t __i = 0 ; __i < size (); __i++) {
1689
- (*this )[__i] = static_cast <element_type>(__v[__i]);
1690
- }
1692
+ copyElements (__v);
1691
1693
}
1692
1694
#else
1693
1695
template <class _Up >
@@ -1735,6 +1737,14 @@ class simd_mask {
1735
1737
#ifdef ENABLE_SYCL_EXT_ONEAPI_INVOKE_SIMD
1736
1738
private:
1737
1739
__simd_storage<element_type, _Abi> __s_;
1740
+
1741
+ // TODO inefficient, use this's and __v's storage directly
1742
+ template <class _Up , class _UAbi >
1743
+ inline void copyElements (const simd_mask<_Up, _UAbi> & __v) noexcept {
1744
+ for (size_t __i = 0 ; __i < size (); __i++) {
1745
+ (*this )[__i] = static_cast <element_type>(__v[__i]);
1746
+ }
1747
+ }
1738
1748
#endif // ENABLE_SYCL_EXT_ONEAPI_INVOKE_SIMD
1739
1749
};
1740
1750
You can’t perform that action at this time.
0 commit comments