((function cross
   (signature vec3
     (parameters
       (declare (in) vec3 a)
       (declare (in) vec3 b))
     ((return (expression vec3 -
        (expression vec3 * (swiz yzx (var_ref a)) (swiz zxy (var_ref b)))
        (expression vec3 * (swiz zxy (var_ref a)) (swiz yzx (var_ref b)))))))
))