Home | History | Annotate | Download | only in nir

Lines Matching refs:src

41 set_exponent(nir_builder *b, nir_ssa_def *src, nir_ssa_def *exp)
44 nir_ssa_def *lo = nir_unpack_double_2x32_split_x(b, src);
45 nir_ssa_def *hi = nir_unpack_double_2x32_split_y(b, src);
56 get_exponent(nir_builder *b, nir_ssa_def *src)
59 nir_ssa_def *hi = nir_unpack_double_2x32_split_y(b, src);
89 fix_inv_result(nir_builder *b, nir_ssa_def *res, nir_ssa_def *src,
98 nir_feq(b, nir_fabs(b, src),
103 res = nir_bcsel(b, nir_fne(b, src, nir_imm_double(b, 0.0f)),
104 res, get_signed_inf(b, src));
111 lower_rcp(nir_builder *b, nir_ssa_def *src)
114 nir_ssa_def *src_norm = set_exponent(b, src, nir_imm_int(b, 1023));
125 nir_isub(b, get_exponent(b, src),
135 * x_new = x * (2 - x*src)
140 * x_new = x + x * (1 - x*src)
145 ra = nir_ffma(b, ra, nir_ffma(b, ra, src, nir_imm_double(b, -1)), ra);
146 ra = nir_ffma(b, ra, nir_ffma(b, ra, src, nir_imm_double(b, -1)), ra);
148 return fix_inv_result(b, ra, src, new_exp);
152 lower_sqrt_rsq(nir_builder *b, nir_ssa_def *src, bool sqrt)
174 nir_ssa_def *unbiased_exp = nir_isub(b, get_exponent(b, src),
179 nir_ssa_def *src_norm = set_exponent(b, src,
272 nir_ssa_def *g_0 = nir_fmul(b, src, ra);
278 nir_ssa_def *r_1 = nir_ffma(b, nir_fneg(b, g_1), g_1, src);
282 nir_ssa_def *r_1 = nir_ffma(b, nir_fneg(b, y_1), nir_fmul(b, h_1, src),
292 res = nir_bcsel(b, nir_ior(b, nir_feq(b, src, nir_imm_double(b, 0.0)),
293 nir_feq(b, src, nir_imm_double(b, INFINITY))),
294 src, res);
296 res = fix_inv_result(b, res, src, new_exp);
303 lower_trunc(nir_builder *b, nir_ssa_def *src)
305 nir_ssa_def *unbiased_exp = nir_isub(b, get_exponent(b, src),
316 * return src
318 * return src & (~0 << frac_bits)
340 nir_ssa_def *src_lo = nir_unpack_double_2x32_split_x(b, src);
341 nir_ssa_def *src_hi = nir_unpack_double_2x32_split_y(b, src);
348 src,
355 lower_floor(nir_builder *b, nir_ssa_def *src)
363 nir_ssa_def *tr = nir_ftrunc(b, src);
364 nir_ssa_def *positive = nir_fge(b, src, nir_imm_double(b, 0.0));
366 nir_ior(b, positive, nir_feq(b, src, tr)),
372 lower_ceil(nir_builder *b, nir_ssa_def *src)
378 nir_ssa_def *tr = nir_ftrunc(b, src);
379 nir_ssa_def *negative = nir_flt(b, src, nir_imm_double(b, 0.0));
381 nir_ior(b, negative, nir_feq(b, src, tr)),
387 lower_fract(nir_builder *b, nir_ssa_def *src)
389 return nir_fsub(b, src, nir_ffloor(b, src));
393 lower_round_even(nir_builder *b, nir_ssa_def *src)
395 /* If fract(src) == 0.5, then we will have to decide the rounding direction.
396 * We will do this by computing the mod(abs(src), 2) and testing if it
399 * We compute mod(abs(src), 2) as:
400 * abs(src) - 2.0 * floor(abs(src) / 2.0)
403 nir_ssa_def *abs_src = nir_fabs(b, src);
415 * If fract(src) != 0.5, then we round as floor(src + 0.5)
417 * If fract(src) == 0.5, then we have to check the modulo:
423 * otherwise we need to check if src >= 0, in which case we need to round
428 nir_ssa_def *fract = nir_ffract(b, src);
431 nir_ffloor(b, nir_fadd(b, src, nir_imm_double(b, 0.5))),
434 nir_ftrunc(b, src),
436 nir_fge(b, src, nir_imm_double(b, 0.0)),
437 nir_fadd(b, src, nir_imm_double(b, 0.5)),
438 nir_fsub(b, src, nir_imm_double(b, 0.5)))));
520 nir_ssa_def *src = nir_fmov_alu(&bld, instr->src[0],
527 result = lower_rcp(&bld, src);
530 result = lower_sqrt_rsq(&bld, src, true);
533 result = lower_sqrt_rsq(&bld, src, false);
536 result = lower_trunc(&bld, src);
539 result = lower_floor(&bld, src);
542 result = lower_ceil(&bld, src);
545 result = lower_fract(&bld, src);
548 result = lower_round_even(&bld, src);
552 nir_ssa_def *src1 = nir_fmov_alu(&bld, instr->src[1],
554 result = lower_mod(&bld, src, src1);