|
64 | 64 | return __SYCL_ACCESS_RETURN; \
|
65 | 65 | }
|
66 | 66 |
|
| 67 | +#define __SYCL_SCALAR_ACCESS(_COND, _NAME, _INDEX) \ |
| 68 | + template <int N = getNumElements()> \ |
| 69 | + typename std::enable_if<(_COND), DataT &>::type _NAME() { \ |
| 70 | + return (*__SYCL_ACCESS_RETURN)[_INDEX]; \ |
| 71 | + } \ |
| 72 | + template <int N = getNumElements()> \ |
| 73 | + typename std::enable_if<(_COND), const DataT &>::type _NAME() const { \ |
| 74 | + return (*__SYCL_ACCESS_RETURN)[_INDEX]; \ |
| 75 | + } |
| 76 | + |
67 | 77 | //__swizzled_vec__ XYZW_ACCESS() const;
|
68 |
| -__SYCL_ACCESS(N <= 4, x, 0) |
69 |
| -__SYCL_ACCESS(N == 2 || N == 3 || N == 4, y, 1) |
70 |
| -__SYCL_ACCESS(N == 3 || N == 4, z, 2) |
71 |
| -__SYCL_ACCESS(N == 4, w, 3) |
| 78 | +__SYCL_SCALAR_ACCESS(N <= 4, x, 0) |
| 79 | +__SYCL_SCALAR_ACCESS(N == 2 || N == 3 || N == 4, y, 1) |
| 80 | +__SYCL_SCALAR_ACCESS(N == 3 || N == 4, z, 2) |
| 81 | +__SYCL_SCALAR_ACCESS(N == 4, w, 3) |
72 | 82 |
|
73 | 83 | //__swizzled_vec__ RGBA_ACCESS() const;
|
74 |
| -__SYCL_ACCESS(N == 4, r, 0) |
75 |
| -__SYCL_ACCESS(N == 4, g, 1) |
76 |
| -__SYCL_ACCESS(N == 4, b, 2) |
77 |
| -__SYCL_ACCESS(N == 4, a, 3) |
| 84 | +__SYCL_SCALAR_ACCESS(N == 4, r, 0) |
| 85 | +__SYCL_SCALAR_ACCESS(N == 4, g, 1) |
| 86 | +__SYCL_SCALAR_ACCESS(N == 4, b, 2) |
| 87 | +__SYCL_SCALAR_ACCESS(N == 4, a, 3) |
78 | 88 |
|
79 | 89 | //__swizzled_vec__ INDEX_ACCESS() const;
|
80 |
| -__SYCL_ACCESS(N > 0, s0, 0) |
81 |
| -__SYCL_ACCESS(N > 1, s1, 1) |
82 |
| -__SYCL_ACCESS(N > 2, s2, 2) |
83 |
| -__SYCL_ACCESS(N > 2, s3, 3) |
84 |
| -__SYCL_ACCESS(N > 4, s4, 4) |
85 |
| -__SYCL_ACCESS(N > 4, s5, 5) |
86 |
| -__SYCL_ACCESS(N > 4, s6, 6) |
87 |
| -__SYCL_ACCESS(N > 4, s7, 7) |
88 |
| -__SYCL_ACCESS(N == 16, s8, 8) |
89 |
| -__SYCL_ACCESS(N == 16, s9, 9) |
90 |
| -__SYCL_ACCESS(N == 16, sA, 10) |
91 |
| -__SYCL_ACCESS(N == 16, sB, 11) |
92 |
| -__SYCL_ACCESS(N == 16, sC, 12) |
93 |
| -__SYCL_ACCESS(N == 16, sD, 13) |
94 |
| -__SYCL_ACCESS(N == 16, sE, 14) |
95 |
| -__SYCL_ACCESS(N == 16, sF, 15) |
| 90 | +__SYCL_SCALAR_ACCESS(N > 0, s0, 0) |
| 91 | +__SYCL_SCALAR_ACCESS(N > 1, s1, 1) |
| 92 | +__SYCL_SCALAR_ACCESS(N > 2, s2, 2) |
| 93 | +__SYCL_SCALAR_ACCESS(N > 2, s3, 3) |
| 94 | +__SYCL_SCALAR_ACCESS(N > 4, s4, 4) |
| 95 | +__SYCL_SCALAR_ACCESS(N > 4, s5, 5) |
| 96 | +__SYCL_SCALAR_ACCESS(N > 4, s6, 6) |
| 97 | +__SYCL_SCALAR_ACCESS(N > 4, s7, 7) |
| 98 | +__SYCL_SCALAR_ACCESS(N == 16, s8, 8) |
| 99 | +__SYCL_SCALAR_ACCESS(N == 16, s9, 9) |
| 100 | +__SYCL_SCALAR_ACCESS(N == 16, sA, 10) |
| 101 | +__SYCL_SCALAR_ACCESS(N == 16, sB, 11) |
| 102 | +__SYCL_SCALAR_ACCESS(N == 16, sC, 12) |
| 103 | +__SYCL_SCALAR_ACCESS(N == 16, sD, 13) |
| 104 | +__SYCL_SCALAR_ACCESS(N == 16, sE, 14) |
| 105 | +__SYCL_SCALAR_ACCESS(N == 16, sF, 15) |
96 | 106 |
|
97 | 107 | #ifdef SYCL_SIMPLE_SWIZZLES
|
98 | 108 | //__swizzled_vec__ XYZW_SWIZZLE() const;
|
|
0 commit comments