X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglsl%2Fir_builder.cpp;h=c9cf1240dfebca5baefb02ac72b90f4e2b065ae1;hb=10f97718c353e101c64fa60fcde91e1550e39957;hp=f4a1c6efa0ba1c4ddf6aecaa65822823013853ef;hpb=c049dd4396d1639859810d6124faa863dae61d1b;p=mesa.git diff --git a/src/glsl/ir_builder.cpp b/src/glsl/ir_builder.cpp index f4a1c6efa0b..c9cf1240dfe 100644 --- a/src/glsl/ir_builder.cpp +++ b/src/glsl/ir_builder.cpp @@ -246,11 +246,21 @@ ir_expression *borrow(operand a, operand b) return expr(ir_binop_borrow, a, b); } +ir_expression *trunc(operand a) +{ + return expr(ir_unop_trunc, a); +} + ir_expression *round_even(operand a) { return expr(ir_unop_round_even, a); } +ir_expression *fract(operand a) +{ + return expr(ir_unop_fract, a); +} + /* dot for vectors, mul for scalars */ ir_expression *dot(operand a, operand b) { @@ -271,11 +281,7 @@ clamp(operand a, operand b, operand c) ir_expression * saturate(operand a) { - void *mem_ctx = ralloc_parent(a.val); - - return expr(ir_binop_max, - expr(ir_binop_min, a, new(mem_ctx) ir_constant(1.0f)), - new(mem_ctx) ir_constant(0.0f)); + return expr(ir_unop_saturate, a); } ir_expression * @@ -332,6 +338,12 @@ sign(operand a) return expr(ir_unop_sign, a); } +ir_expression * +subr_to_int(operand a) +{ + return expr(ir_unop_subroutine_to_int, a); +} + ir_expression* equal(operand a, operand b) { @@ -500,6 +512,42 @@ b2f(operand a) return expr(ir_unop_b2f, a); } +ir_expression * +interpolate_at_centroid(operand a) +{ + return expr(ir_unop_interpolate_at_centroid, a); +} + +ir_expression * +interpolate_at_offset(operand a, operand b) +{ + return expr(ir_binop_interpolate_at_offset, a, b); +} + +ir_expression * +interpolate_at_sample(operand a, operand b) +{ + return expr(ir_binop_interpolate_at_sample, a, b); +} + +ir_expression * +f2d(operand a) +{ + return expr(ir_unop_f2d, a); +} + +ir_expression * +i2d(operand a) +{ + return expr(ir_unop_i2d, a); +} + +ir_expression * +u2d(operand a) +{ + return expr(ir_unop_u2d, a); +} + ir_expression * fma(operand a, operand b, operand c) { @@ -518,6 +566,12 @@ csel(operand a, operand b, operand c) return expr(ir_triop_csel, a, b, c); } +ir_expression * +bitfield_extract(operand a, operand b, operand c) +{ + return expr(ir_triop_bitfield_extract, a, b, c); +} + ir_expression * bitfield_insert(operand a, operand b, operand c, operand d) {