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