glsl/builtins: Switch comparison functions to just return an expression.
diff --git a/src/glsl/builtin_function.cpp b/src/glsl/builtin_function.cpp
index e7f0070..c904f46 100644
--- a/src/glsl/builtin_function.cpp
+++ b/src/glsl/builtin_function.cpp
@@ -1044,91 +1044,55 @@
    "     (parameters\n"
    "       (declare (in) vec2 arg0)\n"
    "       (declare (in) vec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 > (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) vec3 arg0)\n"
    "       (declare (in) vec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 > (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) vec4 arg0)\n"
    "       (declare (in) vec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 > (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec2\n"
    "     (parameters\n"
    "       (declare (in) ivec2 arg0)\n"
    "       (declare (in) ivec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 > (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) ivec3 arg0)\n"
    "       (declare (in) ivec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 > (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) ivec4 arg0)\n"
    "       (declare (in) ivec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 > (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec2\n"
    "     (parameters\n"
    "       (declare (in) uvec2 arg0)\n"
    "       (declare (in) uvec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 > (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) uvec3 arg0)\n"
    "       (declare (in) uvec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 > (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) uvec4 arg0)\n"
    "       (declare (in) uvec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 > (var_ref arg0) (var_ref arg1)))))\n"
    "))\n"
    ""
 ;
@@ -1138,91 +1102,55 @@
    "     (parameters\n"
    "       (declare (in) vec2 arg0)\n"
    "       (declare (in) vec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) vec3 arg0)\n"
    "       (declare (in) vec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) vec4 arg0)\n"
    "       (declare (in) vec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec2\n"
    "     (parameters\n"
    "       (declare (in) ivec2 arg0)\n"
    "       (declare (in) ivec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) ivec3 arg0)\n"
    "       (declare (in) ivec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) ivec4 arg0)\n"
    "       (declare (in) ivec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec2\n"
    "     (parameters\n"
    "       (declare (in) uvec2 arg0)\n"
    "       (declare (in) uvec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) uvec3 arg0)\n"
    "       (declare (in) uvec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) uvec4 arg0)\n"
    "       (declare (in) uvec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1)))))\n"
    "))\n"
    ""
 ;
@@ -1280,91 +1208,55 @@
    "     (parameters\n"
    "       (declare (in) vec2 arg0)\n"
    "       (declare (in) vec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 < (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) vec3 arg0)\n"
    "       (declare (in) vec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 < (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) vec4 arg0)\n"
    "       (declare (in) vec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 < (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec2\n"
    "     (parameters\n"
    "       (declare (in) ivec2 arg0)\n"
    "       (declare (in) ivec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 < (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) ivec3 arg0)\n"
    "       (declare (in) ivec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 < (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) ivec4 arg0)\n"
    "       (declare (in) ivec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 < (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec2\n"
    "     (parameters\n"
    "       (declare (in) uvec2 arg0)\n"
    "       (declare (in) uvec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 < (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) uvec3 arg0)\n"
    "       (declare (in) uvec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 < (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) uvec4 arg0)\n"
    "       (declare (in) uvec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 < (var_ref arg0) (var_ref arg1)))))\n"
    "))\n"
    ""
 ;
@@ -1374,91 +1266,55 @@
    "     (parameters\n"
    "       (declare (in) vec2 arg0)\n"
    "       (declare (in) vec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) vec3 arg0)\n"
    "       (declare (in) vec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) vec4 arg0)\n"
    "       (declare (in) vec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec2\n"
    "     (parameters\n"
    "       (declare (in) ivec2 arg0)\n"
    "       (declare (in) ivec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) ivec3 arg0)\n"
    "       (declare (in) ivec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) ivec4 arg0)\n"
    "       (declare (in) ivec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec2\n"
    "     (parameters\n"
    "       (declare (in) uvec2 arg0)\n"
    "       (declare (in) uvec2 arg1))\n"
-   "     ((declare () bvec2 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec3\n"
    "     (parameters\n"
    "       (declare (in) uvec3 arg0)\n"
    "       (declare (in) uvec3 arg1))\n"
-   "     ((declare () bvec3 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1)))))\n"
    "\n"
    "   (signature bvec4\n"
    "     (parameters\n"
    "       (declare (in) uvec4 arg0)\n"
    "       (declare (in) uvec4 arg1))\n"
-   "     ((declare () bvec4 temp)\n"
-   "      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
-   "      (assign (constant bool (1)) (w) (var_ref temp) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))\n"
-   "      (return (var_ref temp))))\n"
+   "     ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1)))))\n"
    "))\n"
    ""
 ;
diff --git a/src/glsl/builtins/ir/greaterThan b/src/glsl/builtins/ir/greaterThan
index f548900..18af865 100644
--- a/src/glsl/builtins/ir/greaterThan
+++ b/src/glsl/builtins/ir/greaterThan
@@ -3,89 +3,53 @@
      (parameters
        (declare (in) vec2 arg0)
        (declare (in) vec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 > (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) vec3 arg0)
        (declare (in) vec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 > (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) vec4 arg0)
        (declare (in) vec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 > (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec2
      (parameters
        (declare (in) ivec2 arg0)
        (declare (in) ivec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 > (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) ivec3 arg0)
        (declare (in) ivec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 > (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) ivec4 arg0)
        (declare (in) ivec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 > (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec2
      (parameters
        (declare (in) uvec2 arg0)
        (declare (in) uvec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 > (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) uvec3 arg0)
        (declare (in) uvec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 > (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) uvec4 arg0)
        (declare (in) uvec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 > (var_ref arg0) (var_ref arg1)))))
 ))
diff --git a/src/glsl/builtins/ir/greaterThanEqual b/src/glsl/builtins/ir/greaterThanEqual
index d003540..6d3bc89 100644
--- a/src/glsl/builtins/ir/greaterThanEqual
+++ b/src/glsl/builtins/ir/greaterThanEqual
@@ -3,89 +3,53 @@
      (parameters
        (declare (in) vec2 arg0)
        (declare (in) vec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) vec3 arg0)
        (declare (in) vec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) vec4 arg0)
        (declare (in) vec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec2
      (parameters
        (declare (in) ivec2 arg0)
        (declare (in) ivec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) ivec3 arg0)
        (declare (in) ivec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) ivec4 arg0)
        (declare (in) ivec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec2
      (parameters
        (declare (in) uvec2 arg0)
        (declare (in) uvec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) uvec3 arg0)
        (declare (in) uvec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) uvec4 arg0)
        (declare (in) uvec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1)))))
 ))
diff --git a/src/glsl/builtins/ir/lessThan b/src/glsl/builtins/ir/lessThan
index e29288a..8401fe9 100644
--- a/src/glsl/builtins/ir/lessThan
+++ b/src/glsl/builtins/ir/lessThan
@@ -3,89 +3,53 @@
      (parameters
        (declare (in) vec2 arg0)
        (declare (in) vec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 < (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) vec3 arg0)
        (declare (in) vec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 < (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) vec4 arg0)
        (declare (in) vec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 < (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec2
      (parameters
        (declare (in) ivec2 arg0)
        (declare (in) ivec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 < (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) ivec3 arg0)
        (declare (in) ivec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 < (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) ivec4 arg0)
        (declare (in) ivec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 < (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec2
      (parameters
        (declare (in) uvec2 arg0)
        (declare (in) uvec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 < (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) uvec3 arg0)
        (declare (in) uvec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 < (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) uvec4 arg0)
        (declare (in) uvec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 < (var_ref arg0) (var_ref arg1)))))
 ))
diff --git a/src/glsl/builtins/ir/lessThanEqual b/src/glsl/builtins/ir/lessThanEqual
index 669f234..c1cdd3f 100644
--- a/src/glsl/builtins/ir/lessThanEqual
+++ b/src/glsl/builtins/ir/lessThanEqual
@@ -3,89 +3,53 @@
      (parameters
        (declare (in) vec2 arg0)
        (declare (in) vec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) vec3 arg0)
        (declare (in) vec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) vec4 arg0)
        (declare (in) vec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec2
      (parameters
        (declare (in) ivec2 arg0)
        (declare (in) ivec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) ivec3 arg0)
        (declare (in) ivec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) ivec4 arg0)
        (declare (in) ivec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec2
      (parameters
        (declare (in) uvec2 arg0)
        (declare (in) uvec2 arg1))
-     ((declare () bvec2 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec3
      (parameters
        (declare (in) uvec3 arg0)
        (declare (in) uvec3 arg1))
-     ((declare () bvec3 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1)))))
 
    (signature bvec4
      (parameters
        (declare (in) uvec4 arg0)
        (declare (in) uvec4 arg1))
-     ((declare () bvec4 temp)
-      (assign (constant bool (1)) (x) (var_ref temp) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
-      (assign (constant bool (1)) (y) (var_ref temp) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
-      (assign (constant bool (1)) (z) (var_ref temp) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
-      (assign (constant bool (1)) (w) (var_ref temp) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
-      (return (var_ref temp))))
+     ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1)))))
 ))