From 500dcbb1aa991d4c92200fcacd6eb288bb2638d7 Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Tue, 8 May 2012 20:40:32 +0200 Subject: glsl: New unary opcodes for ARB_shader_bit_encoding support. The opcodes are bitcast_f2u, bitcast_f2i, bitcast_i2f and bitcast_u2f. Signed-off-by: Olivier Galibert Reviewed-by: Kenneth Graunke --- src/glsl/builtins/ir/floatBitsToInt.ir | 21 +++++++++++++++++++++ src/glsl/builtins/ir/floatBitsToUint.ir | 21 +++++++++++++++++++++ src/glsl/builtins/ir/intBitsToFloat.ir | 21 +++++++++++++++++++++ src/glsl/builtins/ir/uintBitsToFloat.ir | 21 +++++++++++++++++++++ .../builtins/profiles/ARB_shader_bit_encoding.glsl | 22 ++++++++++++++++++++++ 5 files changed, 106 insertions(+) create mode 100644 src/glsl/builtins/ir/floatBitsToInt.ir create mode 100644 src/glsl/builtins/ir/floatBitsToUint.ir create mode 100644 src/glsl/builtins/ir/intBitsToFloat.ir create mode 100644 src/glsl/builtins/ir/uintBitsToFloat.ir create mode 100644 src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl (limited to 'src/glsl/builtins') diff --git a/src/glsl/builtins/ir/floatBitsToInt.ir b/src/glsl/builtins/ir/floatBitsToInt.ir new file mode 100644 index 00000000000..a5db4b3269a --- /dev/null +++ b/src/glsl/builtins/ir/floatBitsToInt.ir @@ -0,0 +1,21 @@ +((function floatBitsToInt + (signature int + (parameters + (declare (in) float arg)) + ((return (expression int bitcast_f2i (var_ref arg))))) + + (signature ivec2 + (parameters + (declare (in) vec2 arg)) + ((return (expression ivec2 bitcast_f2i (var_ref arg))))) + + (signature ivec3 + (parameters + (declare (in) vec3 arg)) + ((return (expression ivec3 bitcast_f2i (var_ref arg))))) + + (signature ivec4 + (parameters + (declare (in) vec4 arg)) + ((return (expression ivec4 bitcast_f2i (var_ref arg))))) +)) diff --git a/src/glsl/builtins/ir/floatBitsToUint.ir b/src/glsl/builtins/ir/floatBitsToUint.ir new file mode 100644 index 00000000000..09463bd9a75 --- /dev/null +++ b/src/glsl/builtins/ir/floatBitsToUint.ir @@ -0,0 +1,21 @@ +((function floatBitsToUint + (signature uint + (parameters + (declare (in) float arg)) + ((return (expression uint bitcast_f2u (var_ref arg))))) + + (signature uvec2 + (parameters + (declare (in) vec2 arg)) + ((return (expression uvec2 bitcast_f2u (var_ref arg))))) + + (signature uvec3 + (parameters + (declare (in) vec3 arg)) + ((return (expression uvec3 bitcast_f2u (var_ref arg))))) + + (signature uvec4 + (parameters + (declare (in) vec4 arg)) + ((return (expression uvec4 bitcast_f2u (var_ref arg))))) +)) diff --git a/src/glsl/builtins/ir/intBitsToFloat.ir b/src/glsl/builtins/ir/intBitsToFloat.ir new file mode 100644 index 00000000000..cc6aafe1adc --- /dev/null +++ b/src/glsl/builtins/ir/intBitsToFloat.ir @@ -0,0 +1,21 @@ +((function intBitsToFloat + (signature float + (parameters + (declare (in) int arg)) + ((return (expression float bitcast_i2f (var_ref arg))))) + + (signature vec2 + (parameters + (declare (in) ivec2 arg)) + ((return (expression vec2 bitcast_i2f (var_ref arg))))) + + (signature vec3 + (parameters + (declare (in) ivec3 arg)) + ((return (expression vec3 bitcast_i2f (var_ref arg))))) + + (signature vec4 + (parameters + (declare (in) ivec4 arg)) + ((return (expression vec4 bitcast_i2f (var_ref arg))))) +)) diff --git a/src/glsl/builtins/ir/uintBitsToFloat.ir b/src/glsl/builtins/ir/uintBitsToFloat.ir new file mode 100644 index 00000000000..1073d761898 --- /dev/null +++ b/src/glsl/builtins/ir/uintBitsToFloat.ir @@ -0,0 +1,21 @@ +((function uintBitsToFloat + (signature float + (parameters + (declare (in) uint arg)) + ((return (expression float bitcast_u2f (var_ref arg))))) + + (signature vec2 + (parameters + (declare (in) uvec2 arg)) + ((return (expression vec2 bitcast_u2f (var_ref arg))))) + + (signature vec3 + (parameters + (declare (in) uvec3 arg)) + ((return (expression vec3 bitcast_u2f (var_ref arg))))) + + (signature vec4 + (parameters + (declare (in) uvec4 arg)) + ((return (expression vec4 bitcast_u2f (var_ref arg))))) +)) diff --git a/src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl b/src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl new file mode 100644 index 00000000000..e0345940157 --- /dev/null +++ b/src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl @@ -0,0 +1,22 @@ +#version 130 +#extension GL_ARB_shader_bit_encoding : enable + +int floatBitsToInt(float value); +ivec2 floatBitsToInt(vec2 value); +ivec3 floatBitsToInt(vec3 value); +ivec4 floatBitsToInt(vec4 value); + +uint floatBitsToUint(float value); +uvec2 floatBitsToUint(vec2 value); +uvec3 floatBitsToUint(vec3 value); +uvec4 floatBitsToUint(vec4 value); + +float intBitsToFloat(int value); +vec2 intBitsToFloat(ivec2 value); +vec3 intBitsToFloat(ivec3 value); +vec4 intBitsToFloat(ivec4 value); + +float uintBitsToFloat(uint value); +vec2 uintBitsToFloat(uvec2 value); +vec3 uintBitsToFloat(uvec3 value); +vec4 uintBitsToFloat(uvec4 value); -- cgit v1.2.3