1616namespace sycl {
1717inline namespace _V1 {
1818namespace ext ::intel::math {
19- sycl::half hadd (sycl::half x, sycl::half y) { return x + y; }
19+ inline sycl::half hadd (sycl::half x, sycl::half y) { return x + y; }
2020
21- sycl::half hadd_sat (sycl::half x, sycl::half y) {
21+ inline sycl::half hadd_sat (sycl::half x, sycl::half y) {
2222 return sycl::clamp ((x + y), sycl::half (0 .f ), sycl::half (1 .0f ));
2323}
2424
25- sycl::half hfma (sycl::half x, sycl::half y, sycl::half z) {
25+ inline sycl::half hfma (sycl::half x, sycl::half y, sycl::half z) {
2626 return sycl::fma (x, y, z);
2727}
2828
29- sycl::half hfma_sat (sycl::half x, sycl::half y, sycl::half z) {
29+ inline sycl::half hfma_sat (sycl::half x, sycl::half y, sycl::half z) {
3030 return sycl::clamp (sycl::fma (x, y, z), sycl::half (0 .f ), sycl::half (1 .0f ));
3131}
3232
33- sycl::half hmul (sycl::half x, sycl::half y) { return x * y; }
33+ inline sycl::half hmul (sycl::half x, sycl::half y) { return x * y; }
3434
35- sycl::half hmul_sat (sycl::half x, sycl::half y) {
35+ inline sycl::half hmul_sat (sycl::half x, sycl::half y) {
3636 return sycl::clamp ((x * y), sycl::half (0 .f ), sycl::half (1 .0f ));
3737}
3838
39- sycl::half hneg (sycl::half x) { return -x; }
39+ inline sycl::half hneg (sycl::half x) { return -x; }
4040
41- sycl::half hsub (sycl::half x, sycl::half y) { return x - y; }
41+ inline sycl::half hsub (sycl::half x, sycl::half y) { return x - y; }
4242
43- sycl::half hsub_sat (sycl::half x, sycl::half y) {
43+ inline sycl::half hsub_sat (sycl::half x, sycl::half y) {
4444 return sycl::clamp ((x - y), sycl::half (0 .f ), sycl::half (1 .0f ));
4545}
4646
47- sycl::half hdiv (sycl::half x, sycl::half y) { return x / y; }
47+ inline sycl::half hdiv (sycl::half x, sycl::half y) { return x / y; }
4848
49- bool heq (sycl::half x, sycl::half y) { return x == y; }
49+ inline bool heq (sycl::half x, sycl::half y) { return x == y; }
5050
51- bool hequ (sycl::half x, sycl::half y) {
51+ inline bool hequ (sycl::half x, sycl::half y) {
5252 if (sycl::isnan (x) || sycl::isnan (y))
5353 return true ;
5454 else
5555 return x == y;
5656}
5757
58- bool hge (sycl::half x, sycl::half y) { return x >= y; }
58+ inline bool hge (sycl::half x, sycl::half y) { return x >= y; }
5959
60- bool hgeu (sycl::half x, sycl::half y) {
60+ inline bool hgeu (sycl::half x, sycl::half y) {
6161 if (sycl::isnan (x) || sycl::isnan (y))
6262 return true ;
6363 else
6464 return x >= y;
6565}
6666
67- bool hgt (sycl::half x, sycl::half y) { return x > y; }
67+ inline bool hgt (sycl::half x, sycl::half y) { return x > y; }
6868
69- bool hgtu (sycl::half x, sycl::half y) {
69+ inline bool hgtu (sycl::half x, sycl::half y) {
7070 if (sycl::isnan (x) || sycl::isnan (y))
7171 return true ;
7272 else
7373 return x > y;
7474}
7575
76- bool hle (sycl::half x, sycl::half y) { return x <= y; }
76+ inline bool hle (sycl::half x, sycl::half y) { return x <= y; }
7777
78- bool hleu (sycl::half x, sycl::half y) {
78+ inline bool hleu (sycl::half x, sycl::half y) {
7979 if (sycl::isnan (x) || sycl::isnan (y))
8080 return true ;
8181 else
8282 return x <= y;
8383}
8484
85- bool hlt (sycl::half x, sycl::half y) { return x < y; }
85+ inline bool hlt (sycl::half x, sycl::half y) { return x < y; }
8686
87- bool hltu (sycl::half x, sycl::half y) {
87+ inline bool hltu (sycl::half x, sycl::half y) {
8888 if (sycl::isnan (x) || sycl::isnan (y))
8989 return true ;
9090 return x < y;
9191}
9292
93- bool hne (sycl::half x, sycl::half y) {
93+ inline bool hne (sycl::half x, sycl::half y) {
9494 if (sycl::isnan (x) || sycl::isnan (y))
9595 return false ;
9696 return x != y;
9797}
9898
99- bool hneu (sycl::half x, sycl::half y) {
99+ inline bool hneu (sycl::half x, sycl::half y) {
100100 if (sycl::isnan (x) || sycl::isnan (y))
101101 return true ;
102102 else
103103 return x != y;
104104}
105105
106- bool hisinf (sycl::half x) { return sycl::isinf (x); }
107- bool hisnan (sycl::half y) { return sycl::isnan (y); }
106+ inline bool hisinf (sycl::half x) { return sycl::isinf (x); }
107+ inline bool hisnan (sycl::half y) { return sycl::isnan (y); }
108108
109- sycl::half2 hadd2 (sycl::half2 x, sycl::half2 y) { return x + y; }
109+ inline sycl::half2 hadd2 (sycl::half2 x, sycl::half2 y) { return x + y; }
110110
111- sycl::half2 hadd2_sat (sycl::half2 x, sycl::half2 y) {
111+ inline sycl::half2 hadd2_sat (sycl::half2 x, sycl::half2 y) {
112112 return sycl::clamp ((x + y), sycl::half2{0 .f , 0 .f }, sycl::half2{1 .f , 1 .f });
113113}
114114
115- sycl::half2 hfma2 (sycl::half2 x, sycl::half2 y, sycl::half2 z) {
115+ inline sycl::half2 hfma2 (sycl::half2 x, sycl::half2 y, sycl::half2 z) {
116116 return sycl::fma (x, y, z);
117117}
118118
119- sycl::half2 hfma2_sat (sycl::half2 x, sycl::half2 y, sycl::half2 z) {
119+ inline sycl::half2 hfma2_sat (sycl::half2 x, sycl::half2 y, sycl::half2 z) {
120120 return sycl::clamp (sycl::fma (x, y, z), sycl::half2{0 .f , 0 .f },
121121 sycl::half2{1 .f , 1 .f });
122122}
123123
124- sycl::half2 hmul2 (sycl::half2 x, sycl::half2 y) { return x * y; }
124+ inline sycl::half2 hmul2 (sycl::half2 x, sycl::half2 y) { return x * y; }
125125
126- sycl::half2 hmul2_sat (sycl::half2 x, sycl::half2 y) {
126+ inline sycl::half2 hmul2_sat (sycl::half2 x, sycl::half2 y) {
127127 return sycl::clamp ((x * y), sycl::half2{0 .f , 0 .f }, sycl::half2{1 .f , 1 .f });
128128}
129129
130- sycl::half2 h2div (sycl::half2 x, sycl::half2 y) { return x / y; }
130+ inline sycl::half2 h2div (sycl::half2 x, sycl::half2 y) { return x / y; }
131131
132- sycl::half2 hneg2 (sycl::half2 x) { return -x; }
132+ inline sycl::half2 hneg2 (sycl::half2 x) { return -x; }
133133
134- sycl::half2 hsub2 (sycl::half2 x, sycl::half2 y) { return x - y; }
134+ inline sycl::half2 hsub2 (sycl::half2 x, sycl::half2 y) { return x - y; }
135135
136- sycl::half2 hsub2_sat (sycl::half2 x, sycl::half2 y) {
136+ inline sycl::half2 hsub2_sat (sycl::half2 x, sycl::half2 y) {
137137 return sycl::clamp ((x - y), sycl::half2{0 .f , 0 .f }, sycl::half2{1 .f , 1 .f });
138138}
139139
140- bool hbeq2 (sycl::half2 x, sycl::half2 y) {
140+ inline bool hbeq2 (sycl::half2 x, sycl::half2 y) {
141141 return heq (x.s0 (), y.s0 ()) && heq (x.s1 (), y.s1 ());
142142}
143143
144- bool hbequ2 (sycl::half2 x, sycl::half2 y) {
144+ inline bool hbequ2 (sycl::half2 x, sycl::half2 y) {
145145 return hequ (x.s0 (), y.s0 ()) && hequ (x.s1 (), y.s1 ());
146146}
147147
148- bool hbge2 (sycl::half2 x, sycl::half2 y) {
148+ inline bool hbge2 (sycl::half2 x, sycl::half2 y) {
149149 return hge (x.s0 (), y.s0 ()) && hge (x.s1 (), y.s1 ());
150150}
151151
152- bool hbgeu2 (sycl::half2 x, sycl::half2 y) {
152+ inline bool hbgeu2 (sycl::half2 x, sycl::half2 y) {
153153 return hgeu (x.s0 (), y.s0 ()) && hgeu (x.s1 (), y.s1 ());
154154}
155155
156- bool hbgt2 (sycl::half2 x, sycl::half2 y) {
156+ inline bool hbgt2 (sycl::half2 x, sycl::half2 y) {
157157 return hgt (x.s0 (), y.s0 ()) && hgt (x.s1 (), y.s1 ());
158158}
159159
160- bool hbgtu2 (sycl::half2 x, sycl::half2 y) {
160+ inline bool hbgtu2 (sycl::half2 x, sycl::half2 y) {
161161 return hgtu (x.s0 (), y.s0 ()) && hgtu (x.s1 (), y.s1 ());
162162}
163163
164- bool hble2 (sycl::half2 x, sycl::half2 y) {
164+ inline bool hble2 (sycl::half2 x, sycl::half2 y) {
165165 return hle (x.s0 (), y.s0 ()) && hle (x.s1 (), y.s1 ());
166166}
167167
168- bool hbleu2 (sycl::half2 x, sycl::half2 y) {
168+ inline bool hbleu2 (sycl::half2 x, sycl::half2 y) {
169169 return hleu (x.s0 (), y.s0 ()) && hleu (x.s1 (), y.s1 ());
170170}
171171
172- bool hblt2 (sycl::half2 x, sycl::half2 y) {
172+ inline bool hblt2 (sycl::half2 x, sycl::half2 y) {
173173 return hlt (x.s0 (), y.s0 ()) && hlt (x.s1 (), y.s1 ());
174174}
175175
176- bool hbltu2 (sycl::half2 x, sycl::half2 y) {
176+ inline bool hbltu2 (sycl::half2 x, sycl::half2 y) {
177177 return hltu (x.s0 (), y.s0 ()) && hltu (x.s1 (), y.s1 ());
178178}
179179
180- bool hbne2 (sycl::half2 x, sycl::half2 y) {
180+ inline bool hbne2 (sycl::half2 x, sycl::half2 y) {
181181 return hne (x.s0 (), y.s0 ()) && hne (x.s1 (), y.s1 ());
182182}
183183
184- bool hbneu2 (sycl::half2 x, sycl::half2 y) {
184+ inline bool hbneu2 (sycl::half2 x, sycl::half2 y) {
185185 return hneu (x.s0 (), y.s0 ()) && hneu (x.s1 (), y.s1 ());
186186}
187187
188- sycl::half2 heq2 (sycl::half2 x, sycl::half2 y) {
188+ inline sycl::half2 heq2 (sycl::half2 x, sycl::half2 y) {
189189 return sycl::half2{(heq (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
190190 (heq (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
191191}
192192
193- sycl::half2 hequ2 (sycl::half2 x, sycl::half2 y) {
193+ inline sycl::half2 hequ2 (sycl::half2 x, sycl::half2 y) {
194194 return sycl::half2{(hequ (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
195195 (hequ (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
196196}
197197
198- sycl::half2 hge2 (sycl::half2 x, sycl::half2 y) {
198+ inline sycl::half2 hge2 (sycl::half2 x, sycl::half2 y) {
199199 return sycl::half2{(hge (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
200200 (hge (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
201201}
202202
203- sycl::half2 hgeu2 (sycl::half2 x, sycl::half2 y) {
203+ inline sycl::half2 hgeu2 (sycl::half2 x, sycl::half2 y) {
204204 return sycl::half2{(hgeu (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
205205 (hgeu (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
206206}
207207
208- sycl::half2 hgt2 (sycl::half2 x, sycl::half2 y) {
208+ inline sycl::half2 hgt2 (sycl::half2 x, sycl::half2 y) {
209209 return sycl::half2{(hgt (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
210210 (hgt (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
211211}
212212
213- sycl::half2 hgtu2 (sycl::half2 x, sycl::half2 y) {
213+ inline sycl::half2 hgtu2 (sycl::half2 x, sycl::half2 y) {
214214 return sycl::half2{(hgtu (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
215215 (hgtu (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
216216}
217217
218- sycl::half2 hle2 (sycl::half2 x, sycl::half2 y) {
218+ inline sycl::half2 hle2 (sycl::half2 x, sycl::half2 y) {
219219 return sycl::half2{(hle (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
220220 (hle (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
221221}
222222
223- sycl::half2 hleu2 (sycl::half2 x, sycl::half2 y) {
223+ inline sycl::half2 hleu2 (sycl::half2 x, sycl::half2 y) {
224224 return sycl::half2{(hleu (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
225225 (hleu (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
226226}
227227
228- sycl::half2 hlt2 (sycl::half2 x, sycl::half2 y) {
228+ inline sycl::half2 hlt2 (sycl::half2 x, sycl::half2 y) {
229229 return sycl::half2{(hlt (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
230230 (hlt (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
231231}
232232
233- sycl::half2 hltu2 (sycl::half2 x, sycl::half2 y) {
233+ inline sycl::half2 hltu2 (sycl::half2 x, sycl::half2 y) {
234234 return sycl::half2{(hltu (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
235235 (hltu (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
236236}
237237
238- sycl::half2 hisnan2 (sycl::half2 x) {
238+ inline sycl::half2 hisnan2 (sycl::half2 x) {
239239 return sycl::half2{(hisnan (x.s0 ()) ? 1 .0f : 0 .f ),
240240 (hisnan (x.s1 ()) ? 1 .0f : 0 .f )};
241241}
242242
243- sycl::half2 hne2 (sycl::half2 x, sycl::half2 y) {
243+ inline sycl::half2 hne2 (sycl::half2 x, sycl::half2 y) {
244244 return sycl::half2{(hne (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
245245 (hne (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
246246}
247247
248- sycl::half2 hneu2 (sycl::half2 x, sycl::half2 y) {
248+ inline sycl::half2 hneu2 (sycl::half2 x, sycl::half2 y) {
249249 return sycl::half2{(hneu (x.s0 (), y.s0 ()) ? 1 .0f : 0 .f ),
250250 (hneu (x.s1 (), y.s1 ()) ? 1 .0f : 0 .f )};
251251}
252252
253- sycl::half hmax (sycl::half x, sycl::half y) { return sycl::fmax (x, y); }
253+ inline sycl::half hmax (sycl::half x, sycl::half y) { return sycl::fmax (x, y); }
254254
255- sycl::half hmax_nan (sycl::half x, sycl::half y) {
255+ inline sycl::half hmax_nan (sycl::half x, sycl::half y) {
256256 if (hisnan (x) || hisnan (y))
257257 return sycl::half (std::numeric_limits<float >::quiet_NaN ());
258258 else
259259 return sycl::fmax (x, y);
260260}
261261
262- sycl::half2 hmax2 (sycl::half2 x, sycl::half2 y) {
262+ inline sycl::half2 hmax2 (sycl::half2 x, sycl::half2 y) {
263263 return sycl::half2{hmax (x.s0 (), y.s0 ()), hmax (x.s1 (), y.s1 ())};
264264}
265265
266- sycl::half2 hmax2_nan (sycl::half2 x, sycl::half2 y) {
266+ inline sycl::half2 hmax2_nan (sycl::half2 x, sycl::half2 y) {
267267 return sycl::half2{hmax_nan (x.s0 (), y.s0 ()), hmax_nan (x.s1 (), y.s1 ())};
268268}
269269
270- sycl::half hmin (sycl::half x, sycl::half y) { return sycl::fmin (x, y); }
270+ inline sycl::half hmin (sycl::half x, sycl::half y) { return sycl::fmin (x, y); }
271271
272- sycl::half hmin_nan (sycl::half x, sycl::half y) {
272+ inline sycl::half hmin_nan (sycl::half x, sycl::half y) {
273273 if (hisnan (x) || hisnan (y))
274274 return sycl::half (std::numeric_limits<float >::quiet_NaN ());
275275 else
276276 return sycl::fmin (x, y);
277277}
278278
279- sycl::half2 hmin2 (sycl::half2 x, sycl::half2 y) {
279+ inline sycl::half2 hmin2 (sycl::half2 x, sycl::half2 y) {
280280 return sycl::half2{hmin (x.s0 (), y.s0 ()), hmin (x.s1 (), y.s1 ())};
281281}
282282
283- sycl::half2 hmin2_nan (sycl::half2 x, sycl::half2 y) {
283+ inline sycl::half2 hmin2_nan (sycl::half2 x, sycl::half2 y) {
284284 return sycl::half2{hmin_nan (x.s0 (), y.s0 ()), hmin_nan (x.s1 (), y.s1 ())};
285285}
286286
287- sycl::half2 hcmadd (sycl::half2 x, sycl::half2 y, sycl::half2 z) {
287+ inline sycl::half2 hcmadd (sycl::half2 x, sycl::half2 y, sycl::half2 z) {
288288 return sycl::half2{x.s0 () * y.s0 () - x.s1 () * y.s1 () + z.s0 (),
289289 x.s0 () * y.s1 () + x.s1 () * y.s0 () + z.s1 ()};
290290}
291291
292- sycl::half hfma_relu (sycl::half x, sycl::half y, sycl::half z) {
292+ inline sycl::half hfma_relu (sycl::half x, sycl::half y, sycl::half z) {
293293 sycl::half r = sycl::fma (x, y, z);
294294 if (!hisnan (r)) {
295295 if (r < 0 .f )
@@ -300,7 +300,7 @@ sycl::half hfma_relu(sycl::half x, sycl::half y, sycl::half z) {
300300 return r;
301301}
302302
303- sycl::half2 hfma2_relu (sycl::half2 x, sycl::half2 y, sycl::half2 z) {
303+ inline sycl::half2 hfma2_relu (sycl::half2 x, sycl::half2 y, sycl::half2 z) {
304304 sycl::half2 r = sycl::fma (x, y, z);
305305 if (!hisnan (r.s0 ()) && r.s0 () < 0 .f )
306306 r.s0 () = 0 .f ;
@@ -309,9 +309,9 @@ sycl::half2 hfma2_relu(sycl::half2 x, sycl::half2 y, sycl::half2 z) {
309309 return r;
310310}
311311
312- sycl::half habs (sycl::half x) { return sycl::fabs (x); }
312+ inline sycl::half habs (sycl::half x) { return sycl::fabs (x); }
313313
314- sycl::half2 habs2 (sycl::half2 x) { return sycl::fabs (x); }
314+ inline sycl::half2 habs2 (sycl::half2 x) { return sycl::fabs (x); }
315315} // namespace ext::intel::math
316316} // namespace _V1
317317} // namespace sycl
0 commit comments