DPC++ Runtime
Runtime libraries for oneAPI DPC++
imf_rounding_math.hpp
Go to the documentation of this file.
1 //==--------- imf_rounding_math.hpp - simple fp op with rounding mode ------==//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 // APIs for simple fp op with rounding mode supported
9 //===----------------------------------------------------------------------===//
10 
11 #pragma once
12 
13 extern "C" {
14 float __imf_fadd_rz(float, float);
15 float __imf_fadd_rn(float, float);
16 float __imf_fadd_ru(float, float);
17 float __imf_fadd_rd(float, float);
18 float __imf_fsub_rz(float, float);
19 float __imf_fsub_rn(float, float);
20 float __imf_fsub_ru(float, float);
21 float __imf_fsub_rd(float, float);
22 float __imf_fmul_rz(float, float);
23 float __imf_fmul_rn(float, float);
24 float __imf_fmul_ru(float, float);
25 float __imf_fmul_rd(float, float);
26 float __imf_fdiv_rz(float, float);
27 float __imf_fdiv_rn(float, float);
28 float __imf_fdiv_ru(float, float);
29 float __imf_fdiv_rd(float, float);
30 float __imf_frcp_rz(float);
31 float __imf_frcp_rn(float);
32 float __imf_frcp_ru(float);
33 float __imf_frcp_rd(float);
34 float __imf_fmaf_rz(float, float, float);
35 float __imf_fmaf_rn(float, float, float);
36 float __imf_fmaf_ru(float, float, float);
37 float __imf_fmaf_rd(float, float, float);
38 float __imf_sqrtf_rz(float);
39 float __imf_sqrtf_rn(float);
40 float __imf_sqrtf_ru(float);
41 float __imf_sqrtf_rd(float);
42 
43 double __imf_dadd_rz(double, double);
44 double __imf_dadd_rn(double, double);
45 double __imf_dadd_ru(double, double);
46 double __imf_dadd_rd(double, double);
47 double __imf_dsub_rz(double, double);
48 double __imf_dsub_rn(double, double);
49 double __imf_dsub_ru(double, double);
50 double __imf_dsub_rd(double, double);
51 double __imf_dmul_rz(double, double);
52 double __imf_dmul_rn(double, double);
53 double __imf_dmul_ru(double, double);
54 double __imf_dmul_rd(double, double);
55 double __imf_ddiv_rz(double, double);
56 double __imf_ddiv_rn(double, double);
57 double __imf_ddiv_ru(double, double);
58 double __imf_ddiv_rd(double, double);
59 double __imf_drcp_rz(double);
60 double __imf_drcp_rn(double);
61 double __imf_drcp_ru(double);
62 double __imf_drcp_rd(double);
63 double __imf_fma_rz(double, double, double);
64 double __imf_fma_rn(double, double, double);
65 double __imf_fma_ru(double, double, double);
66 double __imf_fma_rd(double, double, double);
67 double __imf_sqrt_rz(double);
68 double __imf_sqrt_rn(double);
69 double __imf_sqrt_ru(double);
70 double __imf_sqrt_rd(double);
71 };
72 
73 namespace sycl {
74 inline namespace _V1 {
75 namespace ext::intel::math {
76 
77 template <typename Tp = float> Tp fadd_rd(Tp x, Tp y) {
78  return __imf_fadd_rd(x, y);
79 }
80 
81 template <typename Tp = float> Tp fadd_rn(Tp x, Tp y) {
82  return __imf_fadd_rn(x, y);
83 }
84 
85 template <typename Tp = float> Tp fadd_ru(Tp x, Tp y) {
86  return __imf_fadd_ru(x, y);
87 }
88 
89 template <typename Tp = float> Tp fadd_rz(Tp x, Tp y) {
90  return __imf_fadd_rz(x, y);
91 }
92 
93 template <typename Tp = float> Tp fsub_rd(Tp x, Tp y) {
94  return __imf_fsub_rd(x, y);
95 }
96 
97 template <typename Tp = float> Tp fsub_rn(Tp x, Tp y) {
98  return __imf_fsub_rn(x, y);
99 }
100 
101 template <typename Tp = float> Tp fsub_ru(Tp x, Tp y) {
102  return __imf_fsub_ru(x, y);
103 }
104 
105 template <typename Tp = float> Tp fsub_rz(Tp x, Tp y) {
106  return __imf_fsub_rz(x, y);
107 }
108 
109 template <typename Tp = float> Tp fmul_rd(Tp x, Tp y) {
110  return __imf_fmul_rd(x, y);
111 }
112 
113 template <typename Tp = float> Tp fmul_rn(Tp x, Tp y) {
114  return __imf_fmul_rn(x, y);
115 }
116 
117 template <typename Tp = float> Tp fmul_ru(Tp x, Tp y) {
118  return __imf_fmul_ru(x, y);
119 }
120 
121 template <typename Tp = float> Tp fmul_rz(Tp x, Tp y) {
122  return __imf_fmul_rz(x, y);
123 }
124 
125 template <typename Tp = float> Tp fdiv_rd(Tp x, Tp y) {
126  return __imf_fdiv_rd(x, y);
127 }
128 
129 template <typename Tp = float> Tp fdiv_rn(Tp x, Tp y) {
130  return __imf_fdiv_rn(x, y);
131 }
132 
133 template <typename Tp = float> Tp fdiv_ru(Tp x, Tp y) {
134  return __imf_fdiv_ru(x, y);
135 }
136 
137 template <typename Tp = float> Tp fdiv_rz(Tp x, Tp y) {
138  return __imf_fdiv_rz(x, y);
139 }
140 
141 template <typename Tp = float> Tp frcp_rd(Tp x) { return __imf_frcp_rd(x); }
142 
143 template <typename Tp = float> Tp frcp_rn(Tp x) { return __imf_frcp_rn(x); }
144 
145 template <typename Tp = float> Tp frcp_ru(Tp x) { return __imf_frcp_ru(x); }
146 
147 template <typename Tp = float> Tp frcp_rz(Tp x) { return __imf_frcp_rz(x); }
148 
149 template <typename Tp = float> Tp fmaf_rd(Tp x, Tp y, Tp z) {
150  return __imf_fmaf_rd(x, y, z);
151 }
152 
153 template <typename Tp = float> Tp fmaf_rn(Tp x, Tp y, Tp z) {
154  return __imf_fmaf_rn(x, y, z);
155 }
156 
157 template <typename Tp = float> Tp fmaf_ru(Tp x, Tp y, Tp z) {
158  return __imf_fmaf_ru(x, y, z);
159 }
160 
161 template <typename Tp = float> Tp fmaf_rz(Tp x, Tp y, Tp z) {
162  return __imf_fmaf_rz(x, y, z);
163 }
164 
165 template <typename Tp = float> Tp fsqrt_rd(Tp x) { return __imf_sqrtf_rd(x); }
166 
167 template <typename Tp = float> Tp fsqrt_rn(Tp x) { return __imf_sqrtf_rn(x); }
168 
169 template <typename Tp = float> Tp fsqrt_ru(Tp x) { return __imf_sqrtf_ru(x); }
170 
171 template <typename Tp = float> Tp fsqrt_rz(Tp x) { return __imf_sqrtf_rz(x); }
172 
173 template <typename Tp = double> Tp dadd_rd(Tp x, Tp y) {
174  return __imf_dadd_rd(x, y);
175 }
176 
177 template <typename Tp = double> Tp dadd_rn(Tp x, Tp y) {
178  return __imf_dadd_rn(x, y);
179 }
180 
181 template <typename Tp = double> Tp dadd_ru(Tp x, Tp y) {
182  return __imf_dadd_ru(x, y);
183 }
184 
185 template <typename Tp = double> Tp dadd_rz(Tp x, Tp y) {
186  return __imf_dadd_rz(x, y);
187 }
188 
189 template <typename Tp = double> Tp dsub_rd(Tp x, Tp y) {
190  return __imf_dsub_rd(x, y);
191 }
192 
193 template <typename Tp = double> Tp dsub_rn(Tp x, Tp y) {
194  return __imf_dsub_rn(x, y);
195 }
196 
197 template <typename Tp = double> Tp dsub_ru(Tp x, Tp y) {
198  return __imf_dsub_ru(x, y);
199 }
200 
201 template <typename Tp = double> Tp dsub_rz(Tp x, Tp y) {
202  return __imf_dsub_rz(x, y);
203 }
204 
205 template <typename Tp = double> Tp dmul_rd(Tp x, Tp y) {
206  return __imf_dmul_rd(x, y);
207 }
208 
209 template <typename Tp = double> Tp dmul_rn(Tp x, Tp y) {
210  return __imf_dmul_rn(x, y);
211 }
212 
213 template <typename Tp = double> Tp dmul_ru(Tp x, Tp y) {
214  return __imf_dmul_ru(x, y);
215 }
216 
217 template <typename Tp = double> Tp dmul_rz(Tp x, Tp y) {
218  return __imf_dmul_rz(x, y);
219 }
220 
221 template <typename Tp = double> Tp ddiv_rd(Tp x, Tp y) {
222  return __imf_ddiv_rd(x, y);
223 }
224 
225 template <typename Tp = double> Tp ddiv_rn(Tp x, Tp y) {
226  return __imf_ddiv_rn(x, y);
227 }
228 
229 template <typename Tp = double> Tp ddiv_ru(Tp x, Tp y) {
230  return __imf_ddiv_ru(x, y);
231 }
232 
233 template <typename Tp = double> Tp ddiv_rz(Tp x, Tp y) {
234  return __imf_ddiv_rz(x, y);
235 }
236 
237 template <typename Tp = double> Tp drcp_rd(Tp x) { return __imf_drcp_rd(x); }
238 
239 template <typename Tp = double> Tp drcp_rn(Tp x) { return __imf_drcp_rn(x); }
240 
241 template <typename Tp = double> Tp drcp_ru(Tp x) { return __imf_drcp_ru(x); }
242 
243 template <typename Tp = double> Tp drcp_rz(Tp x) { return __imf_drcp_rz(x); }
244 
245 template <typename Tp = double> Tp fma_rd(Tp x, Tp y, Tp z) {
246  return __imf_fma_rd(x, y, z);
247 }
248 
249 template <typename Tp = double> Tp fma_rn(Tp x, Tp y, Tp z) {
250  return __imf_fma_rn(x, y, z);
251 }
252 
253 template <typename Tp = double> Tp fma_ru(Tp x, Tp y, Tp z) {
254  return __imf_fma_ru(x, y, z);
255 }
256 
257 template <typename Tp = double> Tp fma_rz(Tp x, Tp y, Tp z) {
258  return __imf_fma_rz(x, y, z);
259 }
260 
261 template <typename Tp = double> Tp dsqrt_rd(Tp x) { return __imf_sqrt_rd(x); }
262 
263 template <typename Tp = double> Tp dsqrt_rn(Tp x) { return __imf_sqrt_rn(x); }
264 
265 template <typename Tp = double> Tp dsqrt_ru(Tp x) { return __imf_sqrt_ru(x); }
266 
267 template <typename Tp = double> Tp dsqrt_rz(Tp x) { return __imf_sqrt_rz(x); }
268 
269 } // namespace ext::intel::math
270 } // namespace _V1
271 } // namespace sycl
float __imf_fdiv_ru(float, float)
double __imf_sqrt_ru(double)
double __imf_dadd_rn(double, double)
double __imf_drcp_rd(double)
double __imf_fma_rn(double, double, double)
double __imf_dmul_rn(double, double)
float __imf_fdiv_rn(float, float)
double __imf_dsub_rz(double, double)
double __imf_ddiv_ru(double, double)
float __imf_fmul_rn(float, float)
float __imf_fmul_rd(float, float)
float __imf_sqrtf_rz(float)
double __imf_dadd_rd(double, double)
float __imf_fsub_ru(float, float)
double __imf_dmul_ru(double, double)
double __imf_sqrt_rn(double)
float __imf_fadd_rd(float, float)
float __imf_fmul_rz(float, float)
double __imf_ddiv_rz(double, double)
float __imf_frcp_ru(float)
double __imf_sqrt_rz(double)
double __imf_dadd_rz(double, double)
float __imf_fadd_rn(float, float)
float __imf_fmaf_rz(float, float, float)
double __imf_ddiv_rn(double, double)
float __imf_fsub_rz(float, float)
double __imf_dsub_rd(double, double)
float __imf_fmaf_ru(float, float, float)
double __imf_drcp_rn(double)
float __imf_sqrtf_ru(float)
float __imf_sqrtf_rd(float)
double __imf_dsub_rn(double, double)
double __imf_dmul_rd(double, double)
double __imf_dsub_ru(double, double)
double __imf_dmul_rz(double, double)
double __imf_fma_rd(double, double, double)
float __imf_frcp_rd(float)
float __imf_fdiv_rz(float, float)
double __imf_ddiv_rd(double, double)
float __imf_fadd_rz(float, float)
double __imf_sqrt_rd(double)
float __imf_sqrtf_rn(float)
double __imf_fma_ru(double, double, double)
double __imf_fma_rz(double, double, double)
float __imf_frcp_rn(float)
float __imf_fadd_ru(float, float)
float __imf_fdiv_rd(float, float)
float __imf_fsub_rd(float, float)
float __imf_fmul_ru(float, float)
double __imf_drcp_rz(double)
float __imf_fmaf_rn(float, float, float)
double __imf_drcp_ru(double)
float __imf_fmaf_rd(float, float, float)
double __imf_dadd_ru(double, double)
float __imf_fsub_rn(float, float)
float __imf_frcp_rz(float)
auto auto autodecltype(x) z
autodecltype(x) x
Definition: access.hpp:18