|
16 | 16 | #define __NOEXC /*noexcept*/ |
17 | 17 |
|
18 | 18 | #define __MAKE_1V(Fun, Call, N, Ret, Arg1) \ |
19 | | - __SYCL_EXPORT Ret##N Fun __NOEXC(Arg1##N x) { \ |
20 | | - Ret##N r; \ |
| 19 | + __SYCL_EXPORT sycl::vec<Ret, N> Fun __NOEXC(sycl::vec<Arg1, N> x) { \ |
| 20 | + sycl::vec<Ret, N> r; \ |
21 | 21 | detail::helper<N - 1>().run_1v( \ |
22 | 22 | r, [](Arg1 x) { return cl::__host_std::Call(x); }, x); \ |
23 | 23 | return r; \ |
24 | 24 | } |
25 | 25 |
|
26 | 26 | #define __MAKE_1V_2V(Fun, Call, N, Ret, Arg1, Arg2) \ |
27 | | - __SYCL_EXPORT Ret##N Fun __NOEXC(Arg1##N x, Arg2##N y) { \ |
28 | | - Ret##N r; \ |
| 27 | + __SYCL_EXPORT sycl::vec<Ret, N> Fun __NOEXC(sycl::vec<Arg1, N> x, \ |
| 28 | + sycl::vec<Arg2, N> y) { \ |
| 29 | + sycl::vec<Ret, N> r; \ |
29 | 30 | detail::helper<N - 1>().run_1v_2v( \ |
30 | 31 | r, [](Arg1 x, Arg2 y) { return cl::__host_std::Call(x, y); }, x, y); \ |
31 | 32 | return r; \ |
32 | 33 | } |
33 | 34 |
|
34 | 35 | #define __MAKE_1V_2V_RS(Fun, Call, N, Ret, Arg1, Arg2) \ |
35 | | - __SYCL_EXPORT Ret Fun __NOEXC(Arg1##N x, Arg2##N y) { \ |
| 36 | + __SYCL_EXPORT Ret Fun __NOEXC(sycl::vec<Arg1, N> x, sycl::vec<Arg2, N> y) { \ |
36 | 37 | Ret r = Ret(); \ |
37 | 38 | detail::helper<N - 1>().run_1v_2v_rs( \ |
38 | 39 | r, \ |
|
42 | 43 | } |
43 | 44 |
|
44 | 45 | #define __MAKE_1V_RS(Fun, Call, N, Ret, Arg1) \ |
45 | | - __SYCL_EXPORT Ret Fun __NOEXC(Arg1##N x) { \ |
| 46 | + __SYCL_EXPORT Ret Fun __NOEXC(sycl::vec<Arg1, N> x) { \ |
46 | 47 | Ret r = Ret(); \ |
47 | 48 | detail::helper<N - 1>().run_1v_rs( \ |
48 | 49 | r, [](Ret &r, Arg1 x) { return cl::__host_std::Call(r, x); }, x); \ |
49 | 50 | return r; \ |
50 | 51 | } |
51 | 52 |
|
52 | 53 | #define __MAKE_1V_2V_3V(Fun, Call, N, Ret, Arg1, Arg2, Arg3) \ |
53 | | - __SYCL_EXPORT Ret##N Fun __NOEXC(Arg1##N x, Arg2##N y, Arg3##N z) { \ |
54 | | - Ret##N r; \ |
| 54 | + __SYCL_EXPORT sycl::vec<Ret, N> Fun __NOEXC( \ |
| 55 | + sycl::vec<Arg1, N> x, sycl::vec<Arg2, N> y, sycl::vec<Arg3, N> z) { \ |
| 56 | + sycl::vec<Ret, N> r; \ |
55 | 57 | detail::helper<N - 1>().run_1v_2v_3v( \ |
56 | 58 | r, \ |
57 | 59 | [](Arg1 x, Arg2 y, Arg3 z) { return cl::__host_std::Call(x, y, z); }, \ |
|
60 | 62 | } |
61 | 63 |
|
62 | 64 | #define __MAKE_1V_2S_3S(Fun, N, Ret, Arg1, Arg2, Arg3) \ |
63 | | - __SYCL_EXPORT Ret##N Fun __NOEXC(Arg1##N x, Arg2 y, Arg3 z) { \ |
64 | | - Ret##N r; \ |
| 65 | + __SYCL_EXPORT sycl::vec<Ret, N> Fun __NOEXC(sycl::vec<Arg1, N> x, Arg2 y, \ |
| 66 | + Arg3 z) { \ |
| 67 | + sycl::vec<Ret, N> r; \ |
65 | 68 | detail::helper<N - 1>().run_1v_2s_3s( \ |
66 | 69 | r, \ |
67 | 70 | [](Arg1 x, Arg2 y, Arg3 z) { return cl::__host_std::Fun(x, y, z); }, \ |
|
70 | 73 | } |
71 | 74 |
|
72 | 75 | #define __MAKE_1V_2S(Fun, N, Ret, Arg1, Arg2) \ |
73 | | - __SYCL_EXPORT Ret##N Fun __NOEXC(Arg1##N x, Arg2 y) { \ |
74 | | - Ret##N r; \ |
| 76 | + __SYCL_EXPORT sycl::vec<Ret, N> Fun __NOEXC(sycl::vec<Arg1, N> x, Arg2 y) { \ |
| 77 | + sycl::vec<Ret, N> r; \ |
75 | 78 | detail::helper<N - 1>().run_1v_2s( \ |
76 | 79 | r, [](Arg1 x, Arg2 y) { return cl::__host_std::Fun(x, y); }, x, y); \ |
77 | 80 | return r; \ |
78 | 81 | } |
79 | 82 |
|
80 | 83 | #define __MAKE_SR_1V_AND(Fun, Call, N, Ret, Arg1) \ |
81 | | - __SYCL_EXPORT Ret Fun __NOEXC(Arg1##N x) { \ |
| 84 | + __SYCL_EXPORT Ret Fun __NOEXC(sycl::vec<Arg1, N> x) { \ |
82 | 85 | Ret r; \ |
83 | 86 | detail::helper<N - 1>().run_1v_sr_and( \ |
84 | 87 | r, [](Arg1 x) { return cl::__host_std::Call(x); }, x); \ |
85 | 88 | return r; \ |
86 | 89 | } |
87 | 90 |
|
88 | 91 | #define __MAKE_SR_1V_OR(Fun, Call, N, Ret, Arg1) \ |
89 | | - __SYCL_EXPORT Ret Fun __NOEXC(Arg1##N x) { \ |
| 92 | + __SYCL_EXPORT Ret Fun __NOEXC(sycl::vec<Arg1, N> x) { \ |
90 | 93 | Ret r; \ |
91 | 94 | detail::helper<N - 1>().run_1v_sr_or( \ |
92 | 95 | r, [](Arg1 x) { return cl::__host_std::Call(x); }, x); \ |
93 | 96 | return r; \ |
94 | 97 | } |
95 | 98 |
|
96 | 99 | #define __MAKE_1V_2P(Fun, N, Ret, Arg1, Arg2) \ |
97 | | - __SYCL_EXPORT Ret##N Fun __NOEXC(Arg1##N x, Arg2##N *y) { \ |
98 | | - Ret##N r; \ |
| 100 | + __SYCL_EXPORT sycl::vec<Ret, N> Fun __NOEXC(sycl::vec<Arg1, N> x, \ |
| 101 | + sycl::vec<Arg2, N> *y) { \ |
| 102 | + sycl::vec<Ret, N> r; \ |
99 | 103 | detail::helper<N - 1>().run_1v_2p( \ |
100 | 104 | r, [](Arg1 x, Arg2 *y) { return cl::__host_std::Fun(x, y); }, x, y); \ |
101 | 105 | return r; \ |
102 | 106 | } |
103 | 107 |
|
104 | 108 | #define __MAKE_1V_2V_3P(Fun, N, Ret, Arg1, Arg2, Arg3) \ |
105 | | - __SYCL_EXPORT Ret##N Fun __NOEXC(Arg1##N x, Arg2##N y, Arg3##N *z) { \ |
106 | | - Ret##N r; \ |
| 109 | + __SYCL_EXPORT sycl::vec<Ret, N> Fun __NOEXC( \ |
| 110 | + sycl::vec<Arg1, N> x, sycl::vec<Arg2, N> y, sycl::vec<Arg3, N> *z) { \ |
| 111 | + sycl::vec<Ret, N> r; \ |
107 | 112 | detail::helper<N - 1>().run_1v_2v_3p( \ |
108 | 113 | r, \ |
109 | 114 | [](Arg1 x, Arg2 y, Arg3 *z) { return cl::__host_std::Fun(x, y, z); }, \ |
|
114 | 119 | #define MAKE_1V(Fun, Ret, Arg1) MAKE_1V_FUNC(Fun, Fun, Ret, Arg1) |
115 | 120 |
|
116 | 121 | #define MAKE_1V_FUNC(Fun, Call, Ret, Arg1) \ |
| 122 | + __MAKE_1V(Fun, Call, 1, Ret, Arg1) \ |
117 | 123 | __MAKE_1V(Fun, Call, 2, Ret, Arg1) \ |
118 | 124 | __MAKE_1V(Fun, Call, 3, Ret, Arg1) \ |
119 | 125 | __MAKE_1V(Fun, Call, 4, Ret, Arg1) \ |
120 | | - __MAKE_1V(Fun, Call, 8, Ret, Arg1) __MAKE_1V(Fun, Call, 16, Ret, Arg1) |
| 126 | + __MAKE_1V(Fun, Call, 8, Ret, Arg1) \ |
| 127 | + __MAKE_1V(Fun, Call, 16, Ret, Arg1) |
121 | 128 |
|
122 | 129 | #define MAKE_1V_2V(Fun, Ret, Arg1, Arg2) \ |
123 | 130 | MAKE_1V_2V_FUNC(Fun, Fun, Ret, Arg1, Arg2) |
124 | 131 |
|
125 | 132 | #define MAKE_1V_2V_FUNC(Fun, Call, Ret, Arg1, Arg2) \ |
| 133 | + __MAKE_1V_2V(Fun, Call, 1, Ret, Arg1, Arg2) \ |
126 | 134 | __MAKE_1V_2V(Fun, Call, 2, Ret, Arg1, Arg2) \ |
127 | 135 | __MAKE_1V_2V(Fun, Call, 3, Ret, Arg1, Arg2) \ |
128 | 136 | __MAKE_1V_2V(Fun, Call, 4, Ret, Arg1, Arg2) \ |
|
133 | 141 | MAKE_1V_2V_3V_FUNC(Fun, Fun, Ret, Arg1, Arg2, Arg3) |
134 | 142 |
|
135 | 143 | #define MAKE_1V_2V_3V_FUNC(Fun, Call, Ret, Arg1, Arg2, Arg3) \ |
| 144 | + __MAKE_1V_2V_3V(Fun, Call, 1, Ret, Arg1, Arg2, Arg3) \ |
136 | 145 | __MAKE_1V_2V_3V(Fun, Call, 2, Ret, Arg1, Arg2, Arg3) \ |
137 | 146 | __MAKE_1V_2V_3V(Fun, Call, 3, Ret, Arg1, Arg2, Arg3) \ |
138 | 147 | __MAKE_1V_2V_3V(Fun, Call, 4, Ret, Arg1, Arg2, Arg3) \ |
|
153 | 162 | } |
154 | 163 |
|
155 | 164 | #define MAKE_1V_2S(Fun, Ret, Arg1, Arg2) \ |
| 165 | + __MAKE_1V_2S(Fun, 1, Ret, Arg1, Arg2) \ |
156 | 166 | __MAKE_1V_2S(Fun, 2, Ret, Arg1, Arg2) \ |
157 | 167 | __MAKE_1V_2S(Fun, 3, Ret, Arg1, Arg2) \ |
158 | 168 | __MAKE_1V_2S(Fun, 4, Ret, Arg1, Arg2) \ |
159 | | - __MAKE_1V_2S(Fun, 8, Ret, Arg1, Arg2) __MAKE_1V_2S(Fun, 16, Ret, Arg1, Arg2) |
| 169 | + __MAKE_1V_2S(Fun, 8, Ret, Arg1, Arg2) \ |
| 170 | + __MAKE_1V_2S(Fun, 16, Ret, Arg1, Arg2) |
160 | 171 |
|
161 | 172 | #define MAKE_1V_2S_3S(Fun, Ret, Arg1, Arg2, Arg3) \ |
| 173 | + __MAKE_1V_2S_3S(Fun, 1, Ret, Arg1, Arg2, Arg3) \ |
162 | 174 | __MAKE_1V_2S_3S(Fun, 2, Ret, Arg1, Arg2, Arg3) \ |
163 | 175 | __MAKE_1V_2S_3S(Fun, 3, Ret, Arg1, Arg2, Arg3) \ |
164 | 176 | __MAKE_1V_2S_3S(Fun, 4, Ret, Arg1, Arg2, Arg3) \ |
165 | 177 | __MAKE_1V_2S_3S(Fun, 8, Ret, Arg1, Arg2, Arg3) \ |
166 | 178 | __MAKE_1V_2S_3S(Fun, 16, Ret, Arg1, Arg2, Arg3) |
167 | 179 |
|
168 | 180 | #define MAKE_SR_1V_AND(Fun, Call, Ret, Arg1) \ |
| 181 | + __MAKE_SR_1V_AND(Fun, Call, 1, Ret, Arg1) \ |
169 | 182 | __MAKE_SR_1V_AND(Fun, Call, 2, Ret, Arg1) \ |
170 | 183 | __MAKE_SR_1V_AND(Fun, Call, 3, Ret, Arg1) \ |
171 | 184 | __MAKE_SR_1V_AND(Fun, Call, 4, Ret, Arg1) \ |
172 | 185 | __MAKE_SR_1V_AND(Fun, Call, 8, Ret, Arg1) \ |
173 | 186 | __MAKE_SR_1V_AND(Fun, Call, 16, Ret, Arg1) |
174 | 187 |
|
175 | 188 | #define MAKE_SR_1V_OR(Fun, Call, Ret, Arg1) \ |
| 189 | + __MAKE_SR_1V_OR(Fun, Call, 1, Ret, Arg1) \ |
176 | 190 | __MAKE_SR_1V_OR(Fun, Call, 2, Ret, Arg1) \ |
177 | 191 | __MAKE_SR_1V_OR(Fun, Call, 3, Ret, Arg1) \ |
178 | 192 | __MAKE_SR_1V_OR(Fun, Call, 4, Ret, Arg1) \ |
179 | 193 | __MAKE_SR_1V_OR(Fun, Call, 8, Ret, Arg1) \ |
180 | 194 | __MAKE_SR_1V_OR(Fun, Call, 16, Ret, Arg1) |
181 | 195 |
|
182 | 196 | #define MAKE_1V_2P(Fun, Ret, Arg1, Arg2) \ |
| 197 | + __MAKE_1V_2P(Fun, 1, Ret, Arg1, Arg2) \ |
183 | 198 | __MAKE_1V_2P(Fun, 2, Ret, Arg1, Arg2) \ |
184 | 199 | __MAKE_1V_2P(Fun, 3, Ret, Arg1, Arg2) \ |
185 | 200 | __MAKE_1V_2P(Fun, 4, Ret, Arg1, Arg2) \ |
186 | | - __MAKE_1V_2P(Fun, 8, Ret, Arg1, Arg2) __MAKE_1V_2P(Fun, 16, Ret, Arg1, Arg2) |
| 201 | + __MAKE_1V_2P(Fun, 8, Ret, Arg1, Arg2) \ |
| 202 | + __MAKE_1V_2P(Fun, 16, Ret, Arg1, Arg2) |
187 | 203 |
|
188 | 204 | #define MAKE_GEO_1V_2V_RS(Fun, Call, Ret, Arg1, Arg2) \ |
| 205 | + __MAKE_1V_2V_RS(Fun, Call, 1, Ret, Arg1, Arg2) \ |
189 | 206 | __MAKE_1V_2V_RS(Fun, Call, 2, Ret, Arg1, Arg2) \ |
190 | 207 | __MAKE_1V_2V_RS(Fun, Call, 3, Ret, Arg1, Arg2) \ |
191 | | - __MAKE_1V_2V_RS(Fun, Call, 4, Ret, Arg1, Arg2) |
| 208 | + __MAKE_1V_2V_RS(Fun, Call, 4, Ret, Arg1, Arg2) \ |
| 209 | + __MAKE_1V_2V_RS(Fun, Call, 8, Ret, Arg1, Arg2) \ |
| 210 | + __MAKE_1V_2V_RS(Fun, Call, 16, Ret, Arg1, Arg2) |
192 | 211 |
|
193 | 212 | #define MAKE_1V_2V_3P(Fun, Ret, Arg1, Arg2, Arg3) \ |
| 213 | + __MAKE_1V_2V_3P(Fun, 1, Ret, Arg1, Arg2, Arg3) \ |
194 | 214 | __MAKE_1V_2V_3P(Fun, 2, Ret, Arg1, Arg2, Arg3) \ |
195 | 215 | __MAKE_1V_2V_3P(Fun, 3, Ret, Arg1, Arg2, Arg3) \ |
196 | 216 | __MAKE_1V_2V_3P(Fun, 4, Ret, Arg1, Arg2, Arg3) \ |
|
0 commit comments