summaryrefslogtreecommitdiffstats
path: root/src/glsl
diff options
context:
space:
mode:
authorDave Airlie <airlied@gmail.com>2015-02-05 11:54:39 +0200
committerIlia Mirkin <imirkin@alum.mit.edu>2015-02-19 00:28:34 -0500
commit41e9adfd83a35d3c147768b80b6b4c0b10c3a379 (patch)
tree851db9c801b2d31db12373ad1bd30378cc3932fc /src/glsl
parenteeae6251be7bddf3040f14a2782ee8d5d17f7914 (diff)
downloadexternal_mesa3d-41e9adfd83a35d3c147768b80b6b4c0b10c3a379.zip
external_mesa3d-41e9adfd83a35d3c147768b80b6b4c0b10c3a379.tar.gz
external_mesa3d-41e9adfd83a35d3c147768b80b6b4c0b10c3a379.tar.bz2
glsl/ir: Add builder support for functions with double floats
Signed-off-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Diffstat (limited to 'src/glsl')
-rw-r--r--src/glsl/ir_builder.cpp23
-rw-r--r--src/glsl/ir_builder.h5
2 files changed, 28 insertions, 0 deletions
diff --git a/src/glsl/ir_builder.cpp b/src/glsl/ir_builder.cpp
index 2872c51..e44b05c 100644
--- a/src/glsl/ir_builder.cpp
+++ b/src/glsl/ir_builder.cpp
@@ -256,6 +256,11 @@ 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)
{
@@ -520,6 +525,24 @@ interpolate_at_sample(operand a, operand 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)
{
return expr(ir_triop_fma, a, b, c);
diff --git a/src/glsl/ir_builder.h b/src/glsl/ir_builder.h
index 514275e..8702658 100644
--- a/src/glsl/ir_builder.h
+++ b/src/glsl/ir_builder.h
@@ -139,6 +139,7 @@ ir_expression *carry(operand a, operand b);
ir_expression *borrow(operand a, operand b);
ir_expression *trunc(operand a);
ir_expression *round_even(operand a);
+ir_expression *fract(operand a);
ir_expression *dot(operand a, operand b);
ir_expression *clamp(operand a, operand b, operand c);
ir_expression *saturate(operand a);
@@ -184,6 +185,10 @@ ir_expression *i2b(operand a);
ir_expression *f2b(operand a);
ir_expression *b2f(operand a);
+ir_expression *f2d(operand a);
+ir_expression *i2d(operand a);
+ir_expression *u2d(operand a);
+
ir_expression *min2(operand a, operand b);
ir_expression *max2(operand a, operand b);