Skip to content

Commit 7e8159c

Browse files
[SYCL][ABI-break] Switch to new sycl::vec implementation (#20769)
Co-authored-by: Steffen Larsen <steffen.larsen@intel.com>
1 parent b334921 commit 7e8159c

26 files changed

+185
-194
lines changed

sycl/include/sycl/detail/type_traits/vec_marray_traits.hpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@
1414
#include <sycl/detail/defines_elementary.hpp>
1515

1616
#ifndef __SYCL_USE_LIBSYCL8_VEC_IMPL
17-
#if defined(__INTEL_PREVIEW_BREAKING_CHANGES)
1817
#define __SYCL_USE_LIBSYCL8_VEC_IMPL 0
19-
#else
20-
#define __SYCL_USE_LIBSYCL8_VEC_IMPL 1
21-
#endif
2218
#endif
2319

2420
namespace sycl {

sycl/test-e2e/Basic/vector/bool.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// RUN: %{build} -o %t.out
22
// RUN: %{run} %t.out
33

4-
// RUN: %if preview-breaking-changes-supported %{ %{build} -fpreview-breaking-changes -o %t2.out %}
5-
// RUN: %if preview-breaking-changes-supported %{ %{run} %t2.out %}
4+
// RUN: %{build} -D__SYCL_USE_LIBSYCL8_VEC_IMPL=1 -o %t2.out
5+
// RUN: %{run} %t2.out
66

77
//==-------------- vec_bool.cpp - SYCL vec<> for bool test -----------------==//
88
//

sycl/test-e2e/Basic/vector/byte.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// RUN: %{build} %cxx_std_optionc++17 -o %t.out
22
// RUN: %{run} %t.out
33

4-
// RUN: %if preview-breaking-changes-supported %{ %{build} -fpreview-breaking-changes %cxx_std_optionc++17 -o %t2.out %}
5-
// RUN: %if preview-breaking-changes-supported %{ %{run} %t2.out %}
4+
// RUN: %{build} -D__SYCL_USE_LIBSYCL8_VEC_IMPL=1 %cxx_std_optionc++17 -o %t2.out
5+
// RUN: %{run} %t2.out
66

77
//==---------- vector_byte.cpp - SYCL vec<> for std::byte test -------------==//
88
//

sycl/test-e2e/Basic/vector/int-convert.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
// RUN: %{build} -o %t.out -DSYCL2020_DISABLE_DEPRECATION_WARNINGS
88
// RUN: %{run} %t.out
99
//
10-
// RUN: %if preview-breaking-changes-supported %{ %{build} -fpreview-breaking-changes -DSYCL2020_DISABLE_DEPRECATION_WARNINGS -o %t2.out %}
11-
// RUN: %if preview-breaking-changes-supported %{ %{run} %t2.out %}
10+
// RUN: %{build} -D__SYCL_USE_LIBSYCL8_VEC_IMPL=1 -DSYCL2020_DISABLE_DEPRECATION_WARNINGS -o %t2.out
11+
// RUN: %{run} %t2.out
1212

1313
#include <sycl/detail/core.hpp>
1414
#include <sycl/detail/vector_convert.hpp>

sycl/test-e2e/Basic/vector/load_store.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// RUN: %{build} -o %t.out
22
// RUN: %{run} %t.out
33

4-
// RUN: %if preview-breaking-changes-supported %{ %{build} -fpreview-breaking-changes -o %t2.out %}
5-
// RUN: %if preview-breaking-changes-supported %{ %{run} %t2.out %}
4+
// RUN: %{build} -D__SYCL_USE_LIBSYCL8_VEC_IMPL=1 -o %t2.out
5+
// RUN: %{run} %t2.out
66

77
// XFAIL: target-native_cpu
88
// XFAIL-TRACKER: https://github.com/intel/llvm/issues/20142

sycl/test-e2e/Basic/vector/vec_binary_scalar_order_arith.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// REQUIRES: preview-breaking-changes-supported
2-
// RUN: %{build} -fpreview-breaking-changes -o %t.out
1+
// RUN: %{build} -o %t.out
32
// RUN: %{run} %t.out
43

54
// Checks scalar/vec arithmetic operator ordering.

sycl/test-e2e/Basic/vector/vec_binary_scalar_order_bitwise.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// REQUIRES: preview-breaking-changes-supported
2-
// RUN: %{build} -fpreview-breaking-changes -o %t.out
1+
// RUN: %{build} -o %t.out
32
// RUN: %{run} %t.out
43

54
// Checks scalar/vec bitwise operator ordering.

sycl/test-e2e/Regression/swizzle_opassign.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// RUN: %{build} -o %t.out
22
// RUN: %{run} %t.out
3-
// RUN: %if preview-breaking-changes-supported %{ %{build} -fpreview-breaking-changes -o %t2.out %}
4-
// RUN: %if preview-breaking-changes-supported %{ %{run} %t2.out %}
3+
// RUN: %{build} -D__SYCL_USE_LIBSYCL8_VEC_IMPL=1 -o %t2.out
4+
// RUN: %{run} %t2.out
55

66
// Tests that the mutating operators (+=, -=, ..., ++, --) on swizzles compile
77
// and correctly mutate the elements in the corresponding vector.

sycl/test-e2e/Regression/vec_rel_swizzle_ops.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// RUN: %{build} -o %t.out
22
// RUN: %{run} %t.out
33

4-
// RUN: %if preview-breaking-changes-supported %{ %{build} -fpreview-breaking-changes -o %t2.out %}
5-
// RUN: %if preview-breaking-changes-supported %{ %{run} %t2.out %}
4+
// RUN: %{build} -D__SYCL_USE_LIBSYCL8_VEC_IMPL=1 -o %t2.out
5+
// RUN: %{run} %t2.out
66

77
#include <cstdlib>
88
#include <sycl/detail/core.hpp>
Lines changed: 53 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
// RUN: %clangxx -fsycl -fsyntax-only %s -fpreview-breaking-changes
21
// RUN: %clangxx -fsycl -fsyntax-only %s
2+
// RUN: %clangxx -fsycl -fsyntax-only %s -D__SYCL_USE_LIBSYCL8_VEC_IMPL=1
33

44
#include <sycl/sycl.hpp>
55

@@ -14,69 +14,65 @@ using sw_float_2 = decltype(std::declval<vec<float, 4>>().swizzle<1, 2>());
1414
using sw_double_1 = decltype(std::declval<vec<double, 4>>().swizzle<1>());
1515
using sw_double_2 = decltype(std::declval<vec<double, 4>>().swizzle<1, 2>());
1616

17-
#if __INTEL_PREVIEW_BREAKING_CHANGES
18-
#define EXCEPT_IN_PREVIEW !
17+
#if defined(__SYCL_USE_LIBSYCL8_VEC_IMPL) && (__SYCL_USE_LIBSYCL8_VEC_IMPL)
18+
#define EXCEPT_IF_NEW_VEC_IMPL
1919
#else
20-
#define EXCEPT_IN_PREVIEW
20+
#define EXCEPT_IF_NEW_VEC_IMPL !
2121
#endif
2222

2323
// clang-format off
24+
static_assert( std::is_assignable_v<vec<half, 1>, half>);
25+
static_assert( std::is_assignable_v<vec<half, 1>, float>);
26+
static_assert( std::is_assignable_v<vec<half, 1>, double>);
27+
static_assert( std::is_assignable_v<vec<half, 1>, vec<half, 1>>);
28+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 1>, vec<float, 1>>);
29+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 1>, vec<double, 1>>);
30+
static_assert( std::is_assignable_v<vec<half, 1>, sw_half_1>);
31+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 1>, sw_float_1>);
32+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 1>, sw_double_1>);
33+
static_assert( !std::is_assignable_v<vec<half, 1>, sw_half_2>);
34+
static_assert( !std::is_assignable_v<vec<half, 1>, sw_float_2>);
35+
static_assert( !std::is_assignable_v<vec<half, 1>, sw_double_2>);
2436

25-
// IN_PREVIEW_ONLY condition<>
26-
// EXCEPT_IN_PREVIEW condition<>
37+
static_assert( std::is_assignable_v<vec<half, 2>, half>);
38+
static_assert( std::is_assignable_v<vec<half, 2>, float>);
39+
static_assert( std::is_assignable_v<vec<half, 2>, double>);
40+
static_assert( std::is_assignable_v<vec<half, 2>, vec<half, 1>>);
41+
static_assert( !std::is_assignable_v<vec<half, 2>, vec<float, 1>>);
42+
static_assert( !std::is_assignable_v<vec<half, 2>, vec<double, 1>>);
43+
static_assert( std::is_assignable_v<vec<half, 2>, sw_half_1>);
44+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 2>, sw_float_1>);
45+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 2>, sw_double_1>);
46+
static_assert( std::is_assignable_v<vec<half, 2>, sw_half_2>);
47+
static_assert( !std::is_assignable_v<vec<half, 2>, sw_float_2>);
48+
static_assert( !std::is_assignable_v<vec<half, 2>, sw_double_2>);
2749

28-
static_assert( std::is_assignable_v<vec<half, 1>, half>);
29-
static_assert( std::is_assignable_v<vec<half, 1>, float>);
30-
static_assert( std::is_assignable_v<vec<half, 1>, double>);
31-
static_assert( std::is_assignable_v<vec<half, 1>, vec<half, 1>>);
32-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half, 1>, vec<float, 1>>);
33-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half, 1>, vec<double, 1>>);
34-
static_assert( std::is_assignable_v<vec<half, 1>, sw_half_1>);
35-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half, 1>, sw_float_1>);
36-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half, 1>, sw_double_1>);
37-
static_assert( !std::is_assignable_v<vec<half, 1>, sw_half_2>);
38-
static_assert( !std::is_assignable_v<vec<half, 1>, sw_float_2>);
39-
static_assert( !std::is_assignable_v<vec<half, 1>, sw_double_2>);
50+
static_assert( std::is_assignable_v<vec<float, 1>, half>);
51+
static_assert( std::is_assignable_v<vec<float, 1>, float>);
52+
static_assert( std::is_assignable_v<vec<float, 1>, double>);
53+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<float, 1>, vec<half, 1>>);
54+
static_assert( std::is_assignable_v<vec<float, 1>, vec<float, 1>>);
55+
static_assert( std::is_assignable_v<vec<float, 1>, vec<double, 1>>);
56+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<float, 1>, sw_half_1>);
57+
static_assert( std::is_assignable_v<vec<float, 1>, sw_float_1>);
58+
static_assert( std::is_assignable_v<vec<float, 1>, sw_double_1>);
59+
static_assert( !std::is_assignable_v<vec<float, 1>, sw_half_2>);
60+
static_assert( !std::is_assignable_v<vec<float, 1>, sw_float_2>);
61+
static_assert( !std::is_assignable_v<vec<float, 1>, sw_double_2>);
4062

41-
static_assert( std::is_assignable_v<vec<half, 2>, half>);
42-
static_assert( std::is_assignable_v<vec<half, 2>, float>);
43-
static_assert( std::is_assignable_v<vec<half, 2>, double>);
44-
static_assert( std::is_assignable_v<vec<half, 2>, vec<half, 1>>);
45-
static_assert( !std::is_assignable_v<vec<half, 2>, vec<float, 1>>);
46-
static_assert( !std::is_assignable_v<vec<half, 2>, vec<double, 1>>);
47-
static_assert( std::is_assignable_v<vec<half, 2>, sw_half_1>);
48-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half, 2>, sw_float_1>);
49-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half, 2>, sw_double_1>);
50-
static_assert( std::is_assignable_v<vec<half, 2>, sw_half_2>);
51-
static_assert( !std::is_assignable_v<vec<half, 2>, sw_float_2>);
52-
static_assert( !std::is_assignable_v<vec<half, 2>, sw_double_2>);
53-
54-
static_assert( std::is_assignable_v<vec<float, 1>, half>);
55-
static_assert( std::is_assignable_v<vec<float, 1>, float>);
56-
static_assert( std::is_assignable_v<vec<float, 1>, double>);
57-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<float, 1>, vec<half, 1>>);
58-
static_assert( std::is_assignable_v<vec<float, 1>, vec<float, 1>>);
59-
static_assert( std::is_assignable_v<vec<float, 1>, vec<double, 1>>);
60-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<float, 1>, sw_half_1>);
61-
static_assert( std::is_assignable_v<vec<float, 1>, sw_float_1>);
62-
static_assert( std::is_assignable_v<vec<float, 1>, sw_double_1>);
63-
static_assert( !std::is_assignable_v<vec<float, 1>, sw_half_2>);
64-
static_assert( !std::is_assignable_v<vec<float, 1>, sw_float_2>);
65-
static_assert( !std::is_assignable_v<vec<float, 1>, sw_double_2>);
66-
67-
static_assert( std::is_assignable_v<vec<float, 2>, half>);
68-
static_assert( std::is_assignable_v<vec<float, 2>, float>);
69-
static_assert( std::is_assignable_v<vec<float, 2>, double>);
63+
static_assert( std::is_assignable_v<vec<float, 2>, half>);
64+
static_assert( std::is_assignable_v<vec<float, 2>, float>);
65+
static_assert( std::is_assignable_v<vec<float, 2>, double>);
7066
#if __SYCL_DEVICE_ONLY__
71-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<float, 2>, vec<half, 1>>);
67+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<float, 2>, vec<half, 1>>);
7268
#else
73-
static_assert( !std::is_assignable_v<vec<float, 2>, vec<half, 1>>);
69+
static_assert( !std::is_assignable_v<vec<float, 2>, vec<half, 1>>);
7470
#endif
75-
static_assert( std::is_assignable_v<vec<float, 2>, vec<float, 1>>);
76-
static_assert( std::is_assignable_v<vec<float, 2>, vec<double, 1>>);
77-
static_assert(EXCEPT_IN_PREVIEW std::is_assignable_v<vec<float, 2>, sw_half_1>);
78-
static_assert( std::is_assignable_v<vec<float, 2>, sw_float_1>);
79-
static_assert( std::is_assignable_v<vec<float, 2>, sw_double_1>);
80-
static_assert( !std::is_assignable_v<vec<float, 2>, sw_half_2>);
81-
static_assert( std::is_assignable_v<vec<float, 2>, sw_float_2>);
82-
static_assert( !std::is_assignable_v<vec<float, 2>, sw_double_2>);
71+
static_assert( std::is_assignable_v<vec<float, 2>, vec<float, 1>>);
72+
static_assert( std::is_assignable_v<vec<float, 2>, vec<double, 1>>);
73+
static_assert(EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<float, 2>, sw_half_1>);
74+
static_assert( std::is_assignable_v<vec<float, 2>, sw_float_1>);
75+
static_assert( std::is_assignable_v<vec<float, 2>, sw_double_1>);
76+
static_assert( !std::is_assignable_v<vec<float, 2>, sw_half_2>);
77+
static_assert( std::is_assignable_v<vec<float, 2>, sw_float_2>);
78+
static_assert( !std::is_assignable_v<vec<float, 2>, sw_double_2>);

0 commit comments

Comments
 (0)