This implements round() via the ir_unop_round_even opcode, rather than
adding a new opcode. We may wish to add one in the future, since it
might enable a small performance increase on some hardware, but for now,
this should suffice.
--- /dev/null
+((function round
+ (signature float
+ (parameters
+ (declare (in) float arg0))
+ ((return (expression float round_even (var_ref arg0)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 arg0))
+ ((return (expression vec2 round_even (var_ref arg0)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 arg0))
+ ((return (expression vec3 round_even (var_ref arg0)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 arg0))
+ ((return (expression vec4 round_even (var_ref arg0)))))
+))
vec3 trunc(vec3 x);
vec4 trunc(vec4 x);
+float round(float x);
+vec2 round(vec2 x);
+vec3 round(vec3 x);
+vec4 round(vec4 x);
+
float roundEven(float x);
vec2 roundEven(vec2 x);
vec3 roundEven(vec3 x);
vec3 trunc(vec3 x);
vec4 trunc(vec4 x);
+float round(float x);
+vec2 round(vec2 x);
+vec3 round(vec3 x);
+vec4 round(vec4 x);
+
float roundEven(float x);
vec2 roundEven(vec2 x);
vec3 roundEven(vec3 x);