|
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