Lines Matching refs:X
69 #define CHECK_NARROW_ADD(RET, X, Y) \ argument
76 if (!isnan (X) && !isnan (Y)) \
79 else if (isfinite (X) && isfinite (Y)) \
82 else if ((RET) == 0 && (X) != -(Y)) \
90 #define NARROW_ADD_ROUND_TO_ODD(X, Y, TYPE, UNION, SUFFIX, MANTISSA) \ argument
97 if ((X) == -(Y)) \
98 ret = (TYPE) ((X) + (Y)); \
100 ret = (TYPE) ROUND_TO_ODD (math_opt_barrier (X) + (Y), \
103 CHECK_NARROW_ADD (ret, (X), (Y)); \
112 #define NARROW_ADD_TRIVIAL(X, Y, TYPE) \ argument
117 ret = (TYPE) ((X) + (Y)); \
118 CHECK_NARROW_ADD (ret, (X), (Y)); \
127 #define CHECK_NARROW_SUB(RET, X, Y) \ argument
134 if (!isnan (X) && !isnan (Y)) \
137 else if (isfinite (X) && isfinite (Y)) \
140 else if ((RET) == 0 && (X) != (Y)) \
148 #define NARROW_SUB_ROUND_TO_ODD(X, Y, TYPE, UNION, SUFFIX, MANTISSA) \ argument
155 if ((X) == (Y)) \
156 ret = (TYPE) ((X) - (Y)); \
158 ret = (TYPE) ROUND_TO_ODD (math_opt_barrier (X) - (Y), \
161 CHECK_NARROW_SUB (ret, (X), (Y)); \
170 #define NARROW_SUB_TRIVIAL(X, Y, TYPE) \ argument
175 ret = (TYPE) ((X) - (Y)); \
176 CHECK_NARROW_SUB (ret, (X), (Y)); \
185 #define CHECK_NARROW_MUL(RET, X, Y) \ argument
192 if (!isnan (X) && !isnan (Y)) \
195 else if (isfinite (X) && isfinite (Y)) \
198 else if ((RET) == 0 && (X) != 0 && (Y) != 0) \
206 #define NARROW_MUL_ROUND_TO_ODD(X, Y, TYPE, UNION, SUFFIX, MANTISSA, \ argument
212 ret = (TYPE) ROUND_TO_ODD (math_opt_barrier (X) * (Y), \
216 CHECK_NARROW_MUL (ret, (X), (Y)); \
225 #define NARROW_MUL_TRIVIAL(X, Y, TYPE) \ argument
230 ret = (TYPE) ((X) * (Y)); \
231 CHECK_NARROW_MUL (ret, (X), (Y)); \
240 #define CHECK_NARROW_DIV(RET, X, Y) \ argument
247 if (!isnan (X) && !isnan (Y)) \
250 else if (isfinite (X)) \
253 else if ((RET) == 0 && (X) != 0 && !isinf (Y)) \
261 #define NARROW_DIV_ROUND_TO_ODD(X, Y, TYPE, UNION, SUFFIX, MANTISSA, \ argument
267 ret = (TYPE) ROUND_TO_ODD (math_opt_barrier (X) / (Y), \
271 CHECK_NARROW_DIV (ret, (X), (Y)); \
280 #define NARROW_DIV_TRIVIAL(X, Y, TYPE) \ argument
285 ret = (TYPE) ((X) / (Y)); \
286 CHECK_NARROW_DIV (ret, (X), (Y)); \
295 #define CHECK_NARROW_SQRT(RET, X) \ argument
302 if (!isnan (X)) \
305 else if (isfinite (X)) \
308 else if ((RET) == 0 && (X) != 0) \
316 #define NARROW_SQRT_ROUND_TO_ODD(X, TYPE, UNION, SUFFIX, MANTISSA) \ argument
321 ret = (TYPE) ROUND_TO_ODD (sqrt ## SUFFIX (math_opt_barrier (X)), \
324 CHECK_NARROW_SQRT (ret, (X)); \
334 #define NARROW_SQRT_TRIVIAL(X, TYPE, SUFFIX) \ argument
339 ret = (TYPE) (sqrt ## SUFFIX (X)); \
340 CHECK_NARROW_SQRT (ret, (X)); \
350 #define CHECK_NARROW_FMA(RET, X, Y, Z) \ argument
359 #define NARROW_FMA_ROUND_TO_ODD(X, Y, Z, TYPE, UNION, SUFFIX, MANTISSA, \ argument
363 typeof (X) tmp; \
366 tmp = ROUND_TO_ODD (fma ## SUFFIX (math_opt_barrier (X), (Y), \
372 ret = (TYPE) (math_opt_barrier (X) * (Y) + (Z)); \
376 CHECK_NARROW_FMA (ret, (X), (Y), (Z)); \
387 #define NARROW_FMA_TRIVIAL(X, Y, Z, TYPE, SUFFIX) \ argument
392 ret = (TYPE) (fma ## SUFFIX ((X), (Y), (Z))); \
393 CHECK_NARROW_FMA (ret, (X), (Y), (Z)); \